diff options
Diffstat (limited to 'Zend')
47 files changed, 2843 insertions, 2127 deletions
diff --git a/Zend/acinclude.m4 b/Zend/acinclude.m4 index efd9cc97e..554858341 100644 --- a/Zend/acinclude.m4 +++ b/Zend/acinclude.m4 @@ -1,10 +1,10 @@ -dnl $Id: acinclude.m4 304193 2010-10-07 21:44:41Z felipe $ +dnl $Id: acinclude.m4 312109 2011-06-12 17:26:45Z felipe $ dnl dnl This file contains local autoconf functions. AC_DEFUN([LIBZEND_BISON_CHECK],[ # we only support certain bison versions - bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3" + bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5" # for standalone build of Zend Engine test -z "$SED" && SED=sed diff --git a/Zend/tests/bug45742.phpt b/Zend/tests/bug45742.phpt index b21e09304..bde690b39 100644 --- a/Zend/tests/bug45742.phpt +++ b/Zend/tests/bug45742.phpt @@ -20,5 +20,5 @@ var_dump( ArrayProperty::$array ); --EXPECT-- array(1) { [1]=> - int(23) + int(42) } diff --git a/Zend/tests/bug50816.phpt b/Zend/tests/bug50816.phpt new file mode 100644 index 000000000..98a89380c --- /dev/null +++ b/Zend/tests/bug50816.phpt @@ -0,0 +1,48 @@ +--TEST-- +Bug #50816 (Using class constants in array definition fails) +--FILE-- +<?php +define("ONE", 1); +define("TWO", 1); + +class Foo { + const ONE = 1; + const TWO = 1; + + public static $mapWithConst = array(self::ONE => 'one', self::TWO => 'two',); + + public static $mapWithConst1 = array(1 => 'one', self::TWO => 'two',); + public static $mapWithConst2 = array(self::ONE => 'one', 1 => 'two',); + + public static $mapWithoutConst = array(1 => 'one', 1 => 'two',); +} + +$mapWithConst = array(1 => 'one', 1 => 'two',); + +$mapWithoutConst = array(Foo::ONE => 'one', Foo::TWO => 'two',); +$mapWithoutConst0 = array(1 => 'one', 1 => 'two',); +$mapWithoutConst1 = array(ONE => 'one', 1 => 'two',); +$mapWithoutConst2 = array(1 => 'one', TWO => 'two',); +$mapWithoutConst3 = array(ONE => 'one', TWO => 'two',); + +var_dump(Foo::$mapWithConst[1]); +var_dump(Foo::$mapWithConst1[1]); +var_dump(Foo::$mapWithConst2[1]); +var_dump(Foo::$mapWithoutConst[1]); +var_dump($mapWithConst[1]); +var_dump($mapWithoutConst[1]); +var_dump($mapWithoutConst0[1]); +var_dump($mapWithoutConst1[1]); +var_dump($mapWithoutConst2[1]); +var_dump($mapWithoutConst3[1]); +--EXPECT-- +string(3) "two" +string(3) "two" +string(3) "two" +string(3) "two" +string(3) "two" +string(3) "two" +string(3) "two" +string(3) "two" +string(3) "two" +string(3) "two" diff --git a/Zend/tests/bug53727.phpt b/Zend/tests/bug53727.phpt new file mode 100644 index 000000000..22cd5232c --- /dev/null +++ b/Zend/tests/bug53727.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #53727 (Inconsistent behavior of is_subclass_of with interfaces) +--FILE-- +<?php +interface MyInterface { + const TEST_CONSTANT = true; +} + +class ParentClass implements MyInterface { } + +class ChildClass extends ParentClass { } + +echo (is_subclass_of('ChildClass', 'MyInterface') ? 'true' : 'false') . "\n"; +echo (defined('ChildClass::TEST_CONSTANT') ? 'true' : 'false') . "\n"; + +echo (is_subclass_of('ParentClass', 'MyInterface') ? 'true' : 'false') . "\n"; +echo (defined('ParentClass::TEST_CONSTANT') ? 'true' : 'false') . "\n"; +--EXPECT-- +true +true +true +true diff --git a/Zend/tests/bug54039.phpt b/Zend/tests/bug54039.phpt new file mode 100644 index 000000000..ccdfe9430 --- /dev/null +++ b/Zend/tests/bug54039.phpt @@ -0,0 +1,58 @@ +--TEST-- +Bug #54039 (use() of static variables in lambda functions can break staticness) +--FILE-- +<?php +function test_1() { + static $v = 0; + ++$v; + echo "Outer function increments \$v to $v\n"; + $f = function() use($v) { + echo "Inner function reckons \$v is $v\n"; + }; + return $f; +} + +$f = test_1(); $f(); +$f = test_1(); $f(); + +function test_2() { + static $v = 0; + $f = function() use($v) { + echo "Inner function reckons \$v is $v\n"; + }; + ++$v; + echo "Outer function increments \$v to $v\n"; + return $f; +} + +$f = test_2(); $f(); +$f = test_2(); $f(); + +function test_3() { + static $v = ""; + $v .= 'b'; + echo "Outer function catenates 'b' onto \$v to give $v\n"; + $f = function() use($v) { + echo "Inner function reckons \$v is $v\n"; + }; + $v .= 'a'; + echo "Outer function catenates 'a' onto \$v to give $v\n"; + return $f; +} +$f = test_3(); $f(); +$f = test_3(); $f(); +--EXPECT-- +Outer function increments $v to 1 +Inner function reckons $v is 1 +Outer function increments $v to 2 +Inner function reckons $v is 2 +Outer function increments $v to 1 +Inner function reckons $v is 0 +Outer function increments $v to 2 +Inner function reckons $v is 1 +Outer function catenates 'b' onto $v to give b +Outer function catenates 'a' onto $v to give ba +Inner function reckons $v is b +Outer function catenates 'b' onto $v to give bab +Outer function catenates 'a' onto $v to give baba +Inner function reckons $v is bab diff --git a/Zend/tests/bug54265.phpt b/Zend/tests/bug54265.phpt new file mode 100644 index 000000000..43db028a2 --- /dev/null +++ b/Zend/tests/bug54265.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #54265 (crash when variable gets reassigned in error handler) +--FILE-- +<?php +function my_errorhandler($errno,$errormsg) { + global $my_var; + $my_var = 0; + echo "EROOR: $errormsg\n"; +} +set_error_handler("my_errorhandler"); +$my_var = str_repeat("A",$my_var[0]->errormsg = "xyz"); +echo "ok\n"; +?> +--EXPECT-- +EROOR: Creating default object from empty value +ok + diff --git a/Zend/tests/bug54268.phpt b/Zend/tests/bug54268.phpt new file mode 100644 index 000000000..b544cd882 --- /dev/null +++ b/Zend/tests/bug54268.phpt @@ -0,0 +1,35 @@ +--TEST-- +Bug #54268 (Double free when destroy_zend_class fails) +--INI-- +memory_limit=8M +--SKIPIF-- +<?php +$zend_mm_enabled = getenv("USE_ZEND_ALLOC"); +if ($zend_mm_enabled === "0") { + die("skip Zend MM disabled"); +} +?> +--FILE-- +<?php +class DestructableObject +{ + public function __destruct() + { + DestructableObject::__destruct(); + } +} +class DestructorCreator +{ + public function __destruct() + { + $this->test = new DestructableObject; + } +} +class Test +{ + public static $mystatic; +} +$x = new Test(); +Test::$mystatic = new DestructorCreator(); +--EXPECTF-- +Fatal error: Allowed memory size of %s bytes exhausted%s(tried to allocate %s bytes) in %s on line %d diff --git a/Zend/tests/bug54305.phpt b/Zend/tests/bug54305.phpt new file mode 100644 index 000000000..8e85d2be5 --- /dev/null +++ b/Zend/tests/bug54305.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #54305 (Crash in gc_remove_zval_from_buffer) +--FILE-- +<?php +class TestClass { + public function methodWithArgs($a, $b) { + } +} +abstract class AbstractClass { +} +$methodWithArgs = new ReflectionMethod('TestClass', 'methodWithArgs'); +echo $methodWithArgs++; +?> +--EXPECTF-- +Method [ <user> public method methodWithArgs ] { + @@ %sbug54305.php %d - %d + + - Parameters [2] { + Parameter #0 [ <required> $a ] + Parameter #1 [ <required> $b ] + } +} diff --git a/Zend/tests/bug54358.phpt b/Zend/tests/bug54358.phpt new file mode 100644 index 000000000..faeeeacc5 --- /dev/null +++ b/Zend/tests/bug54358.phpt @@ -0,0 +1,39 @@ +--TEST-- +Bug #54358 (Closure, use and reference) +--FILE-- +<?php +class asserter { + public function call($function) { + } +} + +$asserter = new asserter(); + +$closure = function() use ($asserter, &$function) { + $asserter->call($function = 'md5'); +}; + +$closure(); + +var_dump($function); + +$closure = function() use ($asserter, $function) { + $asserter->call($function); +}; + +$closure(); + +var_dump($function); + +$closure = function() use ($asserter, $function) { + $asserter->call($function); +}; + +$closure(); + +var_dump($function); +?> +--EXPECT-- +string(3) "md5" +string(3) "md5" +string(3) "md5" diff --git a/Zend/tests/bug54367.phpt b/Zend/tests/bug54367.phpt new file mode 100644 index 000000000..1ca6ad425 --- /dev/null +++ b/Zend/tests/bug54367.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #54367 (Use of closure causes problem in ArrayAccess) +--FILE-- +<?php +class MyObjet implements ArrayAccess +{ + public function offsetSet($offset, $value) { } + public function offsetExists($offset) { } + public function offsetUnset($offset) { } + + public function offsetGet ($offset) + { + return function ($var) use ($offset) { // here is the problem + var_dump($offset, $var); + }; + } +} + +$a = new MyObjet(); +echo $a['p']('foo'); +?> +--EXPECT-- +string(1) "p" +string(3) "foo" diff --git a/Zend/tests/bug54372.phpt b/Zend/tests/bug54372.phpt new file mode 100644 index 000000000..e2e9911f8 --- /dev/null +++ b/Zend/tests/bug54372.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #54372 (Crash accessing global object itself returned from its __get() handle) +--FILE-- +<?php +class test_class +{ + public function __get($name) + { + return $this; + } + + public function b() + { + echo "ok\n"; + } +} + +global $test3; +$test3 = new test_class(); +$test3->a->b(); +?> +--EXPECT-- +ok diff --git a/Zend/tests/bug54585.phpt b/Zend/tests/bug54585.phpt new file mode 100644 index 000000000..2ca11f3e6 --- /dev/null +++ b/Zend/tests/bug54585.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #54585 (track_errors causes segfault) +--INI-- +track_errors=On +--FILE-- +<?php +function testing($source) { + unset($source[$cos]); +} +testing($_GET); +echo "ok\n"; +?> +--EXPECTF-- +Notice: Undefined variable: cos in %sbug54585.php on line 3 +ok diff --git a/Zend/tests/bug54624.phpt b/Zend/tests/bug54624.phpt new file mode 100644 index 000000000..1d0c1ce87 --- /dev/null +++ b/Zend/tests/bug54624.phpt @@ -0,0 +1,26 @@ +--TEST-- +Bug #54624 (class_alias and type hint) +--FILE-- +<?php +class A +{ + function foo(A $param) { + } + +} + +class_alias('A', 'AliasA'); + +eval(' + class B extends A + { + function foo(AliasA $param) { + } + + } +'); + +echo "DONE\n"; +?> +--EXPECTF-- +DONE diff --git a/Zend/tests/bug54804.inc b/Zend/tests/bug54804.inc new file mode 100644 index 000000000..74b7a1681 --- /dev/null +++ b/Zend/tests/bug54804.inc @@ -0,0 +1,3 @@ +<?php +namespace b\c {} +namespace b\d {} diff --git a/Zend/tests/bug54804.phpt b/Zend/tests/bug54804.phpt new file mode 100644 index 000000000..c68e94698 --- /dev/null +++ b/Zend/tests/bug54804.phpt @@ -0,0 +1,11 @@ +--TEST-- +Bug #54804 (__halt_compiler and imported namespaces) +--FILE-- +<?php +namespace a; +require __DIR__ . '/bug54804.inc'; +echo 'DONE'; +__halt_compiler(); +?> +--EXPECT-- +DONE diff --git a/Zend/tests/bug54910.phpt b/Zend/tests/bug54910.phpt new file mode 100644 index 000000000..8808cd060 --- /dev/null +++ b/Zend/tests/bug54910.phpt @@ -0,0 +1,28 @@ +--TEST-- +Bug #54910 (Crash when calling call_user_func with unknown function name) +--FILE-- +<?php +class A { + public function __call($method, $args) { + if (stripos($method, 'get') === 0) { + return $this->get(); + } + die("No such method - '$method'\n"); + } + + protected function get() { + $class = get_class($this); + $call = array($class, 'noSuchMethod'); + + if (is_callable($call)) { + call_user_func($call); + } + } +} + +class B extends A {} + +$input = new B(); +echo $input->getEmail(); +--EXPECT-- +No such method - 'noSuchMethod' diff --git a/Zend/tests/bug55007.phpt b/Zend/tests/bug55007.phpt new file mode 100644 index 000000000..12fbf120a --- /dev/null +++ b/Zend/tests/bug55007.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #55007 (compiler fail after previous fail) +--FILE-- +<?php + +function __autoload($classname) { + if ('CompileErrorClass'==$classname) eval('class CompileErrorClass { function foo() { $a[] } }'); + if ('MyErrorHandler'==$classname) eval('class MyErrorHandler { function __construct() { print "My error handler runs.\n"; } }'); +} + +function shutdown() { + new MyErrorHandler(); +} + + +register_shutdown_function('shutdown'); + +new CompileErrorClass(); + +?> +--EXPECTF-- +Fatal error: Cannot use [] for reading in %s(%d) : eval()'d code on line %d +My error handler runs. diff --git a/Zend/tests/bug55156.phpt b/Zend/tests/bug55156.phpt new file mode 100644 index 000000000..6c0ff768d --- /dev/null +++ b/Zend/tests/bug55156.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #55156 (ReflectionClass::getDocComment() returns comment even though the class has none) +--FILE-- +<?php + +/** test */ +namespace foo { + function test() { } + + $x = new \ReflectionFunction('foo\test'); + var_dump($x->getDocComment()); + + /** test1 */ + class bar { } + + /** test2 */ + class foo extends namespace\bar { } + + $x = new \ReflectionClass('foo\bar'); + var_dump($x->getDocComment()); + + $x = new \ReflectionClass('foo\foo'); + var_dump($x->getDocComment()); +} + +?> +--EXPECTF-- +bool(false) +string(12) "/** test1 */" +string(12) "/** test2 */" diff --git a/Zend/tests/bug55339.phpt b/Zend/tests/bug55339.phpt new file mode 100644 index 000000000..7d5ab4a78 --- /dev/null +++ b/Zend/tests/bug55339.phpt @@ -0,0 +1,31 @@ +--TEST-- +Bug #55339 (Segfault with allow_call_time_pass_reference = Off) +--INI-- +allow_call_time_pass_reference=off +--FILE-- +<?php +function error_handler($errno, $errstr, $errfile, $errline) { + eval(';'); +} + +set_error_handler('error_handler'); + +eval(<<<'EOF' +function foo() +{ + $array = array(); + foreach ($array as $key => $value) { + bar($key, &$value); + } +} + +function bar() +{ + +} +EOF +); + +echo "OK\n"; +--EXPECT-- +OK diff --git a/Zend/tests/concat_001.phpt b/Zend/tests/concat_001.phpt index be1297655..d7bc525c4 100644 --- a/Zend/tests/concat_001.phpt +++ b/Zend/tests/concat_001.phpt @@ -1,5 +1,5 @@ --TEST-- -concat difffent types +concat different types --INI-- precision=14 --FILE-- diff --git a/Zend/tests/constants_005.phpt b/Zend/tests/constants_005.phpt index 097be97e1..55f90fd94 100755 --- a/Zend/tests/constants_005.phpt +++ b/Zend/tests/constants_005.phpt @@ -1,5 +1,5 @@ --TEST-- -Persistent case insensetive and user defined constants +Persistent case insensitive and user defined constants --FILE-- <?php var_dump(ZEND_THREAD_safe); diff --git a/Zend/tests/function_arguments_001.phpt b/Zend/tests/function_arguments_001.phpt new file mode 100644 index 000000000..bf0cd4a20 --- /dev/null +++ b/Zend/tests/function_arguments_001.phpt @@ -0,0 +1,9 @@ +--TEST-- +Argument parsing error #001 +--FILE-- +<?php +function foo($arg1 string) {} +?> +--EXPECTF-- +Parse error: syntax error, unexpected T_STRING, expecting ')' in %sfunction_arguments_001.php on line %d + diff --git a/Zend/tests/function_arguments_002.phpt b/Zend/tests/function_arguments_002.phpt new file mode 100644 index 000000000..79dd31f33 --- /dev/null +++ b/Zend/tests/function_arguments_002.phpt @@ -0,0 +1,9 @@ +--TEST-- +Argument parsing error #002 +--FILE-- +<?php +function foo($arg1/) {} +?> +--EXPECTF-- +Parse error: syntax error, unexpected '/', expecting ')' in %sfunction_arguments_002.php on line %d + diff --git a/Zend/tests/is_a.phpt b/Zend/tests/is_a.phpt index a074194c4..0a01eb756 100755 --- a/Zend/tests/is_a.phpt +++ b/Zend/tests/is_a.phpt @@ -38,6 +38,6 @@ bool(true) bool(false) bool(false) bool(true) -bool(false) +bool(true) AUTOLOAD 'X1' bool(false) diff --git a/Zend/zend.c b/Zend/zend.c index dc7fba5f4..440b211e0 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend.c 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: zend.c 314457 2011-08-08 03:08:59Z pierrick $ */ #include "zend.h" #include "zend_extensions.h" @@ -808,6 +808,7 @@ ZEND_API void _zend_bailout(char *filename, uint lineno) /* {{{ */ exit(-1); } CG(unclean_shutdown) = 1; + CG(active_class_entry) = NULL; CG(in_compilation) = EG(in_execution) = 0; EG(current_execute_data) = NULL; LONGJMP(*EG(bailout), FAILURE); @@ -820,7 +821,7 @@ void zend_append_version_info(const zend_extension *extension) /* {{{ */ char *new_info; uint new_info_length; - new_info_length = sizeof(" with v, by \n") + new_info_length = sizeof(" with v, , by \n") + strlen(extension->name) + strlen(extension->version) + strlen(extension->copyright) @@ -828,10 +829,10 @@ void zend_append_version_info(const zend_extension *extension) /* {{{ */ new_info = (char *) malloc(new_info_length + 1); - sprintf(new_info, " with %s v%s, %s, by %s\n", extension->name, extension->version, extension->copyright, extension->author); + snprintf(new_info, new_info_length, " with %s v%s, %s, by %s\n", extension->name, extension->version, extension->copyright, extension->author); zend_version_info = (char *) realloc(zend_version_info, zend_version_info_length+new_info_length + 1); - strcat(zend_version_info, new_info); + strncat(zend_version_info, new_info, new_info_length); zend_version_info_length += new_info_length; free(new_info); } @@ -957,6 +958,23 @@ ZEND_API int zend_get_configuration_directive(const char *name, uint name_length } /* }}} */ +#define SAVE_STACK(stack) do { \ + if (CG(stack).top) { \ + memcpy(&stack, &CG(stack), sizeof(zend_stack)); \ + CG(stack).top = CG(stack).max = 0; \ + CG(stack).elements = NULL; \ + } else { \ + stack.top = 0; \ + } \ + } while (0) + +#define RESTORE_STACK(stack) do { \ + if (stack.top) { \ + zend_stack_destroy(&CG(stack)); \ + memcpy(&CG(stack), &stack, sizeof(zend_stack)); \ + } \ + } while (0) + ZEND_API void zend_error(int type, const char *format, ...) /* {{{ */ { va_list args; @@ -969,6 +987,14 @@ ZEND_API void zend_error(int type, const char *format, ...) /* {{{ */ zval *orig_user_error_handler; zend_bool in_compilation; zend_class_entry *saved_class_entry; + zend_stack bp_stack; + zend_stack function_call_stack; + zend_stack switch_cond_stack; + zend_stack foreach_copy_stack; + zend_stack object_stack; + zend_stack declare_stack; + zend_stack list_stack; + zend_stack labels_stack; TSRMLS_FETCH(); /* Obtain relevant filename and lineno */ @@ -1096,6 +1122,14 @@ ZEND_API void zend_error(int type, const char *format, ...) /* {{{ */ if (in_compilation) { saved_class_entry = CG(active_class_entry); CG(active_class_entry) = NULL; + SAVE_STACK(bp_stack); + SAVE_STACK(function_call_stack); + SAVE_STACK(switch_cond_stack); + SAVE_STACK(foreach_copy_stack); + SAVE_STACK(object_stack); + SAVE_STACK(declare_stack); + SAVE_STACK(list_stack); + SAVE_STACK(labels_stack); } if (call_user_function_ex(CG(function_table), NULL, orig_user_error_handler, &retval, 5, params, 1, NULL TSRMLS_CC) == SUCCESS) { @@ -1112,6 +1146,14 @@ ZEND_API void zend_error(int type, const char *format, ...) /* {{{ */ if (in_compilation) { CG(active_class_entry) = saved_class_entry; + RESTORE_STACK(bp_stack); + RESTORE_STACK(function_call_stack); + RESTORE_STACK(switch_cond_stack); + RESTORE_STACK(foreach_copy_stack); + RESTORE_STACK(object_stack); + RESTORE_STACK(declare_stack); + RESTORE_STACK(list_stack); + RESTORE_STACK(labels_stack); } if (!EG(user_error_handler)) { diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 6d99c4d39..341a586e6 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_API.c 307424 2011-01-12 22:17:10Z felipe $ */ +/* $Id: zend_API.c 314352 2011-08-06 01:22:27Z felipe $ */ #include "zend.h" #include "zend_execute.h" @@ -941,6 +941,7 @@ ZEND_API int zend_parse_method_parameters_ex(int flags, int num_args TSRMLS_DC, zend_error(E_CORE_ERROR, "%s::%s() must be derived from %s::%s", ce->name, get_active_function_name(TSRMLS_C), Z_OBJCE_P(this_ptr)->name, get_active_function_name(TSRMLS_C)); } + va_end(va); return FAILURE; } @@ -2082,6 +2083,22 @@ ZEND_API int zend_get_module_started(const char *module_name) /* {{{ */ } /* }}} */ +static int clean_module_class(const zend_class_entry **ce, int *module_number TSRMLS_DC) /* {{{ */ +{ + if ((*ce)->type == ZEND_INTERNAL_CLASS && (*ce)->module->module_number == *module_number) { + return ZEND_HASH_APPLY_REMOVE; + } else { + return ZEND_HASH_APPLY_KEEP; + } +} +/* }}} */ + +static void clean_module_classes(int module_number TSRMLS_DC) /* {{{ */ +{ + zend_hash_apply_with_argument(EG(class_table), (apply_func_arg_t) clean_module_class, (void *) &module_number TSRMLS_CC); +} +/* }}} */ + void module_destructor(zend_module_entry *module) /* {{{ */ { TSRMLS_FETCH(); @@ -2089,6 +2106,7 @@ void module_destructor(zend_module_entry *module) /* {{{ */ if (module->type == MODULE_TEMPORARY) { zend_clean_module_rsrc_dtors(module->module_number TSRMLS_CC); clean_module_constants(module->module_number TSRMLS_CC); + clean_module_classes(module->module_number TSRMLS_CC); } if (module->module_started && module->module_shutdown_func) { @@ -2290,7 +2308,7 @@ ZEND_API ZEND_FUNCTION(display_disabled_function) static zend_function_entry disabled_function[] = { ZEND_FE(display_disabled_function, NULL) - { NULL, NULL, NULL } + ZEND_FE_END }; ZEND_API int zend_disable_function(char *function_name, uint function_name_length TSRMLS_DC) /* {{{ */ @@ -2316,7 +2334,7 @@ static zend_object_value display_disabled_class(zend_class_entry *class_type TSR /* }}} */ static const zend_function_entry disabled_class_new[] = { - { NULL, NULL, NULL } + ZEND_FE_END }; ZEND_API int zend_disable_class(char *class_name, uint class_name_length TSRMLS_DC) /* {{{ */ @@ -2573,6 +2591,11 @@ get_function_via_handler: if (fcc->function_handler) { retval = 1; call_via_handler = (fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_HANDLER) != 0; + if (call_via_handler && !fcc->object_ptr && EG(This) && + Z_OBJ_HT_P(EG(This))->get_class_entry && + instanceof_function(Z_OBJCE_P(EG(This)), fcc->calling_scope TSRMLS_CC)) { + fcc->object_ptr = EG(This); + } } } } diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 725927313..de395cd39 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_API.h 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: zend_API.h 313662 2011-07-25 11:30:53Z felipe $ */ #ifndef ZEND_API_H #define ZEND_API_H @@ -96,6 +96,8 @@ typedef struct _zend_fcall_info_cache { #define ZEND_NS_FALIAS(ns, name, alias, arg_info) ZEND_NS_FENTRY(ns, name, ZEND_FN(alias), arg_info, 0) #define ZEND_NS_DEP_FALIAS(ns, name, alias, arg_info) ZEND_NS_FENTRY(ns, name, ZEND_FN(alias), arg_info, ZEND_ACC_DEPRECATED) +#define ZEND_FE_END { NULL, NULL, NULL, 0, 0 } + #define ZEND_ARG_INFO(pass_by_ref, name) { #name, sizeof(#name)-1, NULL, 0, 0, 0, pass_by_ref, 0, 0 }, #define ZEND_ARG_PASS_INFO(pass_by_ref) { NULL, 0, NULL, 0, 0, 0, pass_by_ref, 0, 0 }, #define ZEND_ARG_OBJ_INFO(pass_by_ref, name, classname, allow_null) { #name, sizeof(#name)-1, #classname, sizeof(#classname)-1, 0, allow_null, pass_by_ref, 0, 0 }, diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index c63869852..8423ae38a 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_builtin_functions.c 307522 2011-01-16 20:39:22Z stas $ */ +/* $Id: zend_builtin_functions.c 314527 2011-08-08 14:54:50Z colder $ */ #include "zend.h" #include "zend_API.h" @@ -283,7 +283,7 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */ ZEND_FE(gc_enabled, arginfo_zend__void) ZEND_FE(gc_enable, arginfo_zend__void) ZEND_FE(gc_disable, arginfo_zend__void) - { NULL, NULL, NULL } + ZEND_FE_END }; /* }}} */ @@ -822,45 +822,25 @@ static void is_a_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool only_subclass) return; } - if (only_subclass && Z_TYPE_P(obj) == IS_STRING) { + if (Z_TYPE_P(obj) == IS_STRING) { zend_class_entry **the_ce; if (zend_lookup_class(Z_STRVAL_P(obj), Z_STRLEN_P(obj), &the_ce TSRMLS_CC) == FAILURE) { - zend_error(E_WARNING, "Unknown class passed as parameter"); RETURN_FALSE; } instance_ce = *the_ce; - } else if (Z_TYPE_P(obj) != IS_OBJECT) { - RETURN_FALSE; + } else if (Z_TYPE_P(obj) == IS_OBJECT && HAS_CLASS_ENTRY(*obj)) { + instance_ce = Z_OBJCE_P(obj); } else { - instance_ce = NULL; - } - - /* TBI!! new object handlers */ - if (Z_TYPE_P(obj) == IS_OBJECT && !HAS_CLASS_ENTRY(*obj)) { RETURN_FALSE; } if (zend_lookup_class_ex(class_name, class_name_len, 0, &ce TSRMLS_CC) == FAILURE) { retval = 0; } else { - if (only_subclass) { - if (!instance_ce) { - instance_ce = Z_OBJCE_P(obj)->parent; - } else { - instance_ce = instance_ce->parent; - } - } else { - instance_ce = Z_OBJCE_P(obj); - } - - if (!instance_ce) { - RETURN_FALSE; - } - - if (instanceof_function(instance_ce, *ce TSRMLS_CC)) { - retval = 1; - } else { + if (only_subclass && instance_ce == *ce) { retval = 0; + } else { + retval = instanceof_function(instance_ce, *ce TSRMLS_CC); } } @@ -1733,7 +1713,7 @@ ZEND_FUNCTION(create_function) function_name[0] = '\0'; do { - function_name_length = 1 + sprintf(function_name + 1, "lambda_%d", ++EG(lambda_count)); + function_name_length = 1 + snprintf(function_name + 1, sizeof("lambda_")+MAX_LENGTH_OF_LONG, "lambda_%d", ++EG(lambda_count)); } while (zend_hash_add(EG(function_table), function_name, function_name_length+1, &new_function, sizeof(zend_function), NULL)==FAILURE); zend_hash_del(EG(function_table), LAMBDA_TEMP_FUNCNAME, sizeof(LAMBDA_TEMP_FUNCNAME)); RETURN_STRINGL(function_name, function_name_length, 0); @@ -2067,7 +2047,7 @@ ZEND_FUNCTION(debug_print_backtrace) ZEND_PUTS(class_name); ZEND_PUTS(call_type); } - zend_printf("%s(", function_name?function_name:"main"); + zend_printf("%s(", function_name); if (arg_array) { debug_print_backtrace_args(arg_array TSRMLS_CC); zval_ptr_dtor(&arg_array); diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c index 32f3bb9cf..6787471c2 100644 --- a/Zend/zend_closures.c +++ b/Zend/zend_closures.c @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_closures.c 308320 2011-02-14 10:52:16Z dmitry $ */ +/* $Id: zend_closures.c 310389 2011-04-20 12:59:18Z dmitry $ */ #include "zend.h" #include "zend_API.h" @@ -347,6 +347,7 @@ static int zval_copy_static_var(zval **p TSRMLS_DC, int num_args, va_list args, } else if (Z_ISREF_PP(p)) { ALLOC_INIT_ZVAL(tmp); *tmp = **p; + zval_copy_ctor(tmp); Z_SET_REFCOUNT_P(tmp, 0); Z_UNSET_ISREF_P(tmp); } else { @@ -372,6 +373,7 @@ ZEND_API void zend_create_closure(zval *res, zend_function *func TSRMLS_DC) /* { closure = (zend_closure *)zend_object_store_get_object(res TSRMLS_CC); closure->func = *func; + closure->func.common.prototype = NULL; if (closure->func.type == ZEND_USER_FUNCTION) { if (closure->func.op_array.static_variables) { diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 4e05be7d3..c325a7e45 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_compile.c 308443 2011-02-17 23:24:50Z felipe $ */ +/* $Id: zend_compile.c 313073 2011-07-08 16:29:33Z felipe $ */ #include <zend_language_parser.h> #include "zend.h" @@ -2529,7 +2529,7 @@ static void do_inherit_method(zend_function *function) /* {{{ */ } /* }}} */ -static zend_bool zend_do_perform_implementation_check(const zend_function *fe, const zend_function *proto) /* {{{ */ +static zend_bool zend_do_perform_implementation_check(const zend_function *fe, const zend_function *proto TSRMLS_DC) /* {{{ */ { zend_uint i; @@ -2572,11 +2572,24 @@ static zend_bool zend_do_perform_implementation_check(const zend_function *fe, c && strcasecmp(fe->common.arg_info[i].class_name, proto->common.arg_info[i].class_name)!=0) { char *colon; - if (fe->common.type != ZEND_USER_FUNCTION || - strchr(proto->common.arg_info[i].class_name, '\\') != NULL || - (colon = zend_memrchr(fe->common.arg_info[i].class_name, '\\', fe->common.arg_info[i].class_name_len)) == NULL || - strcasecmp(colon+1, proto->common.arg_info[i].class_name) != 0) { + if (fe->common.type != ZEND_USER_FUNCTION) { return 0; + } else if (strchr(proto->common.arg_info[i].class_name, '\\') != NULL || + (colon = zend_memrchr(fe->common.arg_info[i].class_name, '\\', fe->common.arg_info[i].class_name_len)) == NULL || + strcasecmp(colon+1, proto->common.arg_info[i].class_name) != 0) { + zend_class_entry **fe_ce, **proto_ce; + int found, found2; + + found = zend_lookup_class(fe->common.arg_info[i].class_name, fe->common.arg_info[i].class_name_len, &fe_ce TSRMLS_CC); + found2 = zend_lookup_class(proto->common.arg_info[i].class_name, proto->common.arg_info[i].class_name_len, &proto_ce TSRMLS_CC); + + /* Check for class alias */ + if (found != SUCCESS || found2 != SUCCESS || + (*fe_ce)->type == ZEND_INTERNAL_CLASS || + (*proto_ce)->type == ZEND_INTERNAL_CLASS || + *fe_ce != *proto_ce) { + return 0; + } } } if (fe->common.arg_info[i].array_type_hint != proto->common.arg_info[i].array_type_hint) { @@ -2668,11 +2681,11 @@ static zend_bool do_inherit_method_check(HashTable *child_function_table, zend_f } if (child->common.prototype && (child->common.prototype->common.fn_flags & ZEND_ACC_ABSTRACT)) { - if (!zend_do_perform_implementation_check(child, child->common.prototype)) { + 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 that of %s::%s()", ZEND_FN_SCOPE_NAME(child), child->common.function_name, ZEND_FN_SCOPE_NAME(child->common.prototype), child->common.prototype->common.function_name); } } 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)) { + if (!zend_do_perform_implementation_check(child, parent TSRMLS_CC)) { zend_error(E_STRICT, "Declaration of %s::%s() should be compatible with that of %s::%s()", ZEND_FN_SCOPE_NAME(child), child->common.function_name, ZEND_FN_SCOPE_NAME(parent), parent->common.function_name); } } @@ -3749,6 +3762,10 @@ void zend_do_halt_compiler_register(TSRMLS_D) /* {{{ */ 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); + } } /* }}} */ @@ -4897,14 +4914,12 @@ void zend_do_extended_fcall_end(TSRMLS_D) /* {{{ */ void zend_do_ticks(TSRMLS_D) /* {{{ */ { - if (Z_LVAL(CG(declarables).ticks)) { - zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC); + zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC); - opline->opcode = ZEND_TICKS; - opline->op1.u.constant = CG(declarables).ticks; - opline->op1.op_type = IS_CONST; - SET_UNUSED(opline->op2); - } + opline->opcode = ZEND_TICKS; + opline->op1.u.constant = CG(declarables).ticks; + opline->op1.op_type = IS_CONST; + SET_UNUSED(opline->op2); } /* }}} */ @@ -5305,6 +5320,12 @@ void zend_do_end_namespace(TSRMLS_D) /* {{{ */ efree(CG(current_import)); CG(current_import) = NULL; } + + if (CG(doc_comment)) { + efree(CG(doc_comment)); + CG(doc_comment) = NULL; + CG(doc_comment_len) = 0; + } } /* }}} */ diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index dac8b9fa0..15f24dfef 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_compile.h 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: zend_compile.h 312076 2011-06-12 01:43:10Z felipe $ */ #ifndef ZEND_COMPILE_H #define ZEND_COMPILE_H @@ -39,6 +39,7 @@ #define INC_BPC(op_array) if (op_array->fn_flags & ZEND_ACC_INTERACTIVE) { ((op_array)->backpatch_count++); } #define DEC_BPC(op_array) if (op_array->fn_flags & ZEND_ACC_INTERACTIVE) { ((op_array)->backpatch_count--); } #define HANDLE_INTERACTIVE() if (CG(active_op_array)->fn_flags & ZEND_ACC_INTERACTIVE) { execute_new_code(TSRMLS_C); } +#define DO_TICKS() if (Z_LVAL(CG(declarables).ticks)) { zend_do_ticks(TSRMLS_C); } #define RESET_DOC_COMMENT() \ { \ diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index e16cb3f33..7ed9274d2 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_execute.c 309328 2011-03-17 07:46:57Z johannes $ */ +/* $Id: zend_execute.c 309342 2011-03-17 11:49:18Z johannes $ */ #define ZEND_INTENSIVE_DEBUGGING 0 @@ -536,10 +536,22 @@ static inline void zend_assign_to_object(znode *result, zval **object_ptr, zval (Z_TYPE_P(object) == IS_BOOL && Z_LVAL_P(object) == 0) || (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0)) { SEPARATE_ZVAL_IF_NOT_REF(object_ptr); - zval_dtor(*object_ptr); - object_init(*object_ptr); object = *object_ptr; + Z_ADDREF_P(object); zend_error(E_STRICT, "Creating default object from empty value"); + if (Z_REFCOUNT_P(object) == 1) { + /* object was removed by error handler, nothing to assign to */ + zval_ptr_dtor(&object); + if (retval) { + *retval = &EG(uninitialized_zval); + PZVAL_LOCK(*retval); + } + FREE_OP(free_value); + return; + } + Z_DELREF_P(object); + zval_dtor(object); + object_init(object); } else { zend_error(E_WARNING, "Attempt to assign property of non-object"); if (!RETURN_VALUE_UNUSED(result)) { diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 32c3fc301..547352c07 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_execute_API.c 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: zend_execute_API.c 310938 2011-05-11 06:58:33Z dmitry $ */ #include <stdio.h> #include <signal.h> @@ -296,7 +296,9 @@ void shutdown_executor(TSRMLS_D) /* {{{ */ zend_hash_reverse_apply(EG(function_table), (apply_func_t) zend_cleanup_function_data TSRMLS_CC); } zend_hash_apply(EG(class_table), (apply_func_t) zend_cleanup_class_data TSRMLS_CC); + } zend_end_try(); + zend_try { zend_vm_stack_destroy(TSRMLS_C); zend_objects_store_free_object_storage(&EG(objects_store) TSRMLS_CC); @@ -431,26 +433,28 @@ ZEND_API zend_bool zend_is_executing(TSRMLS_D) /* {{{ */ ZEND_API void _zval_ptr_dtor(zval **zval_ptr ZEND_FILE_LINE_DC) /* {{{ */ { + zval *zv = *zval_ptr; + #if DEBUG_ZEND>=2 printf("Reducing refcount for %x (%x): %d->%d\n", *zval_ptr, zval_ptr, Z_REFCOUNT_PP(zval_ptr), Z_REFCOUNT_PP(zval_ptr) - 1); #endif - Z_DELREF_PP(zval_ptr); - if (Z_REFCOUNT_PP(zval_ptr) == 0) { + Z_DELREF_P(zv); + if (Z_REFCOUNT_P(zv) == 0) { TSRMLS_FETCH(); - if (*zval_ptr != &EG(uninitialized_zval)) { - GC_REMOVE_ZVAL_FROM_BUFFER(*zval_ptr); - zval_dtor(*zval_ptr); - efree_rel(*zval_ptr); + if (zv != &EG(uninitialized_zval)) { + GC_REMOVE_ZVAL_FROM_BUFFER(zv); + zval_dtor(zv); + efree_rel(zv); } } else { TSRMLS_FETCH(); - if (Z_REFCOUNT_PP(zval_ptr) == 1) { - Z_UNSET_ISREF_PP(zval_ptr); + if (Z_REFCOUNT_P(zv) == 1) { + Z_UNSET_ISREF_P(zv); } - GC_ZVAL_CHECK_POSSIBLE_ROOT(*zval_ptr); + GC_ZVAL_CHECK_POSSIBLE_ROOT(zv); } } /* }}} */ diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 1c9aa5e2c..80485001a 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_hash.c 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: zend_hash.c 314482 2011-08-08 11:30:56Z pierrick $ */ #include "zend.h" @@ -545,9 +545,15 @@ ZEND_API void zend_hash_clean(HashTable *ht) IS_CONSISTENT(ht); - SET_INCONSISTENT(HT_CLEANING); - p = ht->pListHead; + + memset(ht->arBuckets, 0, ht->nTableSize*sizeof(Bucket *)); + ht->pListHead = NULL; + ht->pListTail = NULL; + ht->nNumOfElements = 0; + ht->nNextFreeElement = 0; + ht->pInternalPointer = NULL; + while (p != NULL) { q = p; p = p->pListNext; @@ -559,14 +565,6 @@ ZEND_API void zend_hash_clean(HashTable *ht) } pefree(q, ht->persistent); } - memset(ht->arBuckets, 0, ht->nTableSize*sizeof(Bucket *)); - ht->pListHead = NULL; - ht->pListTail = NULL; - ht->nNumOfElements = 0; - ht->nNextFreeElement = 0; - ht->pInternalPointer = NULL; - - SET_INCONSISTENT(HT_OK); } /* This function is used by the various apply() functions. @@ -737,6 +735,7 @@ ZEND_API void zend_hash_apply_with_arguments(HashTable *ht TSRMLS_DC, apply_func p = p->pListNext; } if (result & ZEND_HASH_APPLY_STOP) { + va_end(args); break; } va_end(args); @@ -1170,12 +1169,12 @@ ZEND_API int zend_hash_get_current_data_ex(HashTable *ht, void **pData, HashPosi } } -/* This function changes key of currevt element without changing elements' +/* This function changes key of current element without changing elements' * order. If element with target key already exists, it will be deleted first. */ ZEND_API int zend_hash_update_current_key_ex(HashTable *ht, int key_type, const char *str_index, uint str_length, ulong num_index, int mode, HashPosition *pos) { - Bucket *p; + Bucket *p, *q; p = pos ? (*pos) : ht->pInternalPointer; @@ -1188,100 +1187,124 @@ ZEND_API int zend_hash_update_current_key_ex(HashTable *ht, int key_type, const return SUCCESS; } - if (mode != HASH_UPDATE_KEY_ANYWAY) { - Bucket *q = ht->arBuckets[num_index & ht->nTableMask]; - int found = 0; - - while (q != NULL) { - if (q == p) { - found = 1; - } else if (!q->nKeyLength && q->h == num_index) { - if (found) { - if (mode & HASH_UPDATE_KEY_IF_BEFORE) { - break; - } else { - if (p->nKeyLength) { - zend_hash_del(ht, p->arKey, p->nKeyLength); - } else { - zend_hash_index_del(ht, p->h); - } - return FAILURE; - } - } else { - if (mode & HASH_UPDATE_KEY_IF_AFTER) { - break; - } else { - if (p->nKeyLength) { - zend_hash_del(ht, p->arKey, p->nKeyLength); - } else { - zend_hash_index_del(ht, p->h); - } - return FAILURE; - } - } - } - q = q->pNext; + q = ht->arBuckets[num_index & ht->nTableMask]; + while (q != NULL) { + if (!q->nKeyLength && q->h == num_index) { + break; } + q = q->pNext; } - - zend_hash_index_del(ht, num_index); } else if (key_type == HASH_KEY_IS_STRING) { + ulong h; + if (p->nKeyLength == str_length && memcmp(p->arKey, str_index, str_length) == 0) { return SUCCESS; } - if (mode != HASH_UPDATE_KEY_ANYWAY) { - ulong h = zend_inline_hash_func(str_index, str_length); - Bucket *q = ht->arBuckets[h & ht->nTableMask]; - int found = 0; - - while (q != NULL) { - if (q == p) { - found = 1; - } else if (q->h == h && q->nKeyLength == str_length && - memcmp(q->arKey, str_index, str_length) == 0) { - if (found) { - if (mode & HASH_UPDATE_KEY_IF_BEFORE) { - break; - } else { - if (p->nKeyLength) { - zend_hash_del(ht, p->arKey, p->nKeyLength); - } else { - zend_hash_index_del(ht, p->h); - } - return FAILURE; - } - } else { - if (mode & HASH_UPDATE_KEY_IF_AFTER) { - break; - } else { - if (p->nKeyLength) { - zend_hash_del(ht, p->arKey, p->nKeyLength); - } else { - zend_hash_index_del(ht, p->h); - } - return FAILURE; - } - } - } - q = q->pNext; + h = zend_inline_hash_func(str_index, str_length); + q = ht->arBuckets[h & ht->nTableMask]; + + while (q != NULL) { + if (q->h == h && q->nKeyLength == str_length && + memcmp(q->arKey, str_index, str_length) == 0) { + break; } + q = q->pNext; } - - zend_hash_del(ht, str_index, str_length); } else { return FAILURE; } HANDLE_BLOCK_INTERRUPTIONS(); + if (q) { + if (mode != HASH_UPDATE_KEY_ANYWAY) { + Bucket *r = p->pListLast; + int found = HASH_UPDATE_KEY_IF_BEFORE; + + while (r) { + if (r == q) { + found = HASH_UPDATE_KEY_IF_AFTER; + break; + } + r = r->pListLast; + } + if (mode & found) { + /* delete current bucket */ + if (p == ht->arBuckets[p->h & ht->nTableMask]) { + ht->arBuckets[p->h & ht->nTableMask] = p->pNext; + } else { + p->pLast->pNext = p->pNext; + } + if (p->pNext) { + p->pNext->pLast = p->pLast; + } + if (p->pListLast != NULL) { + p->pListLast->pListNext = p->pListNext; + } else { + /* Deleting the head of the list */ + ht->pListHead = p->pListNext; + } + if (p->pListNext != NULL) { + p->pListNext->pListLast = p->pListLast; + } else { + ht->pListTail = p->pListLast; + } + if (ht->pInternalPointer == p) { + ht->pInternalPointer = p->pListNext; + } + if (ht->pDestructor) { + ht->pDestructor(p->pData); + } + if (p->pData != &p->pDataPtr) { + pefree(p->pData, ht->persistent); + } + pefree(p, ht->persistent); + ht->nNumOfElements--; + HANDLE_UNBLOCK_INTERRUPTIONS(); + return FAILURE; + } + } + /* delete another bucket with the same key */ + if (q == ht->arBuckets[q->h & ht->nTableMask]) { + ht->arBuckets[q->h & ht->nTableMask] = q->pNext; + } else { + q->pLast->pNext = q->pNext; + } + if (q->pNext) { + q->pNext->pLast = q->pLast; + } + if (q->pListLast != NULL) { + q->pListLast->pListNext = q->pListNext; + } else { + /* Deleting the head of the list */ + ht->pListHead = q->pListNext; + } + if (q->pListNext != NULL) { + q->pListNext->pListLast = q->pListLast; + } else { + ht->pListTail = q->pListLast; + } + if (ht->pInternalPointer == q) { + ht->pInternalPointer = q->pListNext; + } + if (ht->pDestructor) { + ht->pDestructor(q->pData); + } + if (q->pData != &q->pDataPtr) { + pefree(q->pData, ht->persistent); + } + pefree(q, ht->persistent); + ht->nNumOfElements--; + } + if (p->pNext) { p->pNext->pLast = p->pLast; } if (p->pLast) { p->pLast->pNext = p->pNext; - } else{ + } else { ht->arBuckets[p->h & ht->nTableMask] = p->pNext; } diff --git a/Zend/zend_ini_parser.c b/Zend/zend_ini_parser.c index c64d03672..337b844cd 100644 --- a/Zend/zend_ini_parser.c +++ b/Zend/zend_ini_parser.c @@ -1,24 +1,23 @@ -/* A Bison parser, made by GNU Bison 2.3. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C +/* A Bison parser, made by GNU Bison 2.4.1. */ - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +/* 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 + + 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 +28,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 +46,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "2.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -55,58 +54,23 @@ /* Pure parsers. */ #define YYPURE 1 +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 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 - - +#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,6 +323,7 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s + /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -377,20 +342,59 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s # define YYTOKEN_TABLE 0 #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 - /* Copy the second part of user declarations. */ -/* Line 216 of yacc.c. */ - #ifdef short # undef short @@ -465,14 +469,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 @@ -553,9 +557,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) @@ -589,12 +593,12 @@ union yyalloc 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); \ } \ @@ -705,7 +709,7 @@ 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", @@ -1020,17 +1024,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 +1071,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"); } } @@ -1348,10 +1355,8 @@ yydestruct (yymsg, yytype, yyvaluep) break; } } - /* Prevent warnings from -Wmissing-prototypes. */ - #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); @@ -1370,10 +1375,9 @@ int yyparse (); - -/*----------. -| yyparse. | -`----------*/ +/*-------------------------. +| yyparse or yypush_parse. | +`-------------------------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ @@ -1397,74 +1401,75 @@ 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 + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + 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; + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; - - - -#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; @@ -1494,7 +1499,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 +1506,6 @@ int yynerrs; yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); yyss = yyss1; @@ -1525,9 +1528,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 +1540,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 +1549,9 @@ int yynerrs; YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + if (yystate == YYFINAL) + YYACCEPT; + goto yybackup; /*-----------. @@ -1556,16 +1560,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) 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: ")); @@ -1597,20 +1601,16 @@ yybackup: 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,7 +1891,6 @@ yyreduce: break; -/* Line 1267 of yacc.c. */ default: break; } @@ -1903,7 +1902,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. */ @@ -1968,7 +1966,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 +1983,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; @@ -2042,9 +2040,6 @@ yyerrlab1: YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - *++yyvsp = yylval; @@ -2069,7 +2064,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#ifndef yyoverflow +#if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -2080,7 +2075,7 @@ yyexhaustedlab: #endif yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) + if (yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered diff --git a/Zend/zend_ini_parser.h b/Zend/zend_ini_parser.h index d883f9d40..1e0c9a96d 100644 --- a/Zend/zend_ini_parser.h +++ b/Zend/zend_ini_parser.h @@ -1,24 +1,23 @@ -/* A Bison parser, made by GNU Bison 2.3. */ -/* Skeleton interface for Bison's Yacc-like parsers in C +/* A Bison parser, made by GNU Bison 2.4.1. */ - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +/* 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 + + 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 +28,11 @@ 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. */ + /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE @@ -76,10 +76,11 @@ #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 + 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 c5ba987f2..0499ad4b6 100644 --- a/Zend/zend_language_parser.c +++ b/Zend/zend_language_parser.c @@ -1,24 +1,23 @@ -/* A Bison parser, made by GNU Bison 2.3. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C +/* A Bison parser, made by GNU Bison 2.4.1. */ - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +/* 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 + + 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 +28,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 +46,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "2.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -55,17 +54,93 @@ /* Pure parsers. */ #define YYPURE 1 +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + /* Using locations. */ #define YYLSP_NEEDED 0 /* 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-2011 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: zend_language_parser.y 312076 2011-06-12 01:43:10Z felipe $ */ + +/* + * 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 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 /* Tokens. */ @@ -327,88 +402,17 @@ -/* Copy the first part of user declarations. */ - - -/* - +----------------------------------------------------------------------+ - | Zend Engine | - +----------------------------------------------------------------------+ - | Copyright (c) 1998-2011 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: zend_language_parser.y 306939 2011-01-01 02:19:59Z felipe $ */ - -/* - * 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 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 - /* Copy the second part of user declarations. */ -/* Line 216 of yacc.c. */ - #ifdef short # undef short @@ -483,14 +487,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 @@ -571,9 +575,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) @@ -607,12 +611,12 @@ union yyalloc 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); \ } \ @@ -984,52 +988,53 @@ static const char *const yytname[] = "T_DOLLAR_OPEN_CURLY_BRACES", "T_CURLY_OPEN", "T_PAAMAYIM_NEKUDOTAYIM", "T_NAMESPACE", "T_NS_C", "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", "@24", "@25", "@26", "additional_catches", - "non_empty_additional_catches", "additional_catch", "@27", "@28", + "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", "$@24", "$@25", "$@26", "additional_catches", + "non_empty_additional_catches", "additional_catch", "@27", "$@28", "unset_variables", "unset_variable", "function_declaration_statement", "class_declaration_statement", "is_reference", - "unticked_function_declaration_statement", "@29", - "unticked_class_declaration_statement", "@30", "@31", "class_entry_type", - "extends_from", "interface_entry", "interface_extends_list", - "implements_list", "interface_list", "foreach_optional_arg", - "foreach_variable", "for_statement", "foreach_statement", - "declare_statement", "declare_list", "switch_case_list", "case_list", - "@32", "@33", "case_separator", "while_statement", "elseif_list", "@34", - "new_elseif_list", "@35", "else_single", "new_else_single", - "parameter_list", "non_empty_parameter_list", "optional_class_type", + "unticked_function_declaration_statement", "$@29", + "unticked_class_declaration_statement", "$@30", "$@31", + "class_entry_type", "extends_from", "interface_entry", + "interface_extends_list", "implements_list", "interface_list", + "foreach_optional_arg", "foreach_variable", "for_statement", + "foreach_statement", "declare_statement", "declare_list", + "switch_case_list", "case_list", "$@32", "$@33", "case_separator", + "while_statement", "elseif_list", "$@34", "new_elseif_list", "$@35", + "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", "@36", "@37", "method_body", + "class_statement_list", "class_statement", "$@36", "$@37", "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", "@38", "expr_without_variable", "@39", "@40", - "@41", "@42", "@43", "@44", "@45", "@46", "@47", "@48", "@49", "@50", - "function", "lexical_vars", "lexical_var_list", "function_call", "@51", - "@52", "@53", "@54", "@55", "@56", "@57", "@58", "class_name", - "fully_qualified_class_name", "class_name_reference", - "dynamic_class_name_reference", "@59", "@60", + "non_empty_for_expr", "$@38", "expr_without_variable", "$@39", "$@40", + "$@41", "$@42", "$@43", "$@44", "$@45", "$@46", "$@47", "$@48", "$@49", + "@50", "function", "lexical_vars", "lexical_var_list", "function_call", + "$@51", "$@52", "$@53", "$@54", "$@55", "$@56", "$@57", "$@58", + "class_name", "fully_qualified_class_name", "class_name_reference", + "dynamic_class_name_reference", "$@59", "$@60", "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", - "r_variable", "w_variable", "rw_variable", "variable", "@61", "@62", - "variable_properties", "variable_property", "@63", "method_or_not", - "@64", "variable_without_objects", "static_member", + "r_variable", "w_variable", "rw_variable", "variable", "$@61", "$@62", + "variable_properties", "variable_property", "$@63", "method_or_not", + "$@64", "variable_without_objects", "static_member", "variable_class_name", "base_variable_with_function_calls", "base_variable", "reference_variable", "compound_variable", "dim_offset", - "object_property", "@65", "object_dim_list", "variable_name", + "object_property", "$@65", "object_dim_list", "variable_name", "simple_indirect_reference", "assignment_list", - "assignment_list_element", "@66", "array_pair_list", - "non_empty_array_pair_list", "encaps_list", "encaps_var", "@67", + "assignment_list_element", "$@66", "array_pair_list", + "non_empty_array_pair_list", "encaps_list", "encaps_var", "$@67", "encaps_var_offset", "internal_functions_in_yacc", "isset_variables", - "@68", "class_constant", 0 + "$@68", "class_constant", 0 }; #endif @@ -2728,17 +2733,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"); } @@ -2772,11 +2780,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"); } } @@ -3056,10 +3064,8 @@ yydestruct (yymsg, yytype, yyvaluep) break; } } - /* Prevent warnings from -Wmissing-prototypes. */ - #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); @@ -3078,10 +3084,9 @@ int yyparse (); - -/*----------. -| yyparse. | -`----------*/ +/*-------------------------. +| yyparse or yypush_parse. | +`-------------------------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ @@ -3105,74 +3110,75 @@ 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 thru 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; @@ -3202,7 +3208,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 @@ -3210,7 +3215,6 @@ int yynerrs; yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); yyss = yyss1; @@ -3233,9 +3237,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); @@ -3246,7 +3249,6 @@ int yynerrs; yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); @@ -3256,6 +3258,9 @@ int yynerrs; YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + if (yystate == YYFINAL) + YYACCEPT; + goto yybackup; /*-----------. @@ -3264,16 +3269,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) 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: ")); @@ -3305,20 +3310,16 @@ yybackup: 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; @@ -3484,7 +3485,7 @@ yyreduce: case 34: - { zend_do_ticks(TSRMLS_C); } + { DO_TICKS(); } break; case 35: @@ -3749,12 +3750,12 @@ yyreduce: case 95: - { zend_do_ticks(TSRMLS_C); } + { DO_TICKS(); } break; case 96: - { zend_do_ticks(TSRMLS_C); } + { DO_TICKS(); } break; case 97: @@ -5431,7 +5432,6 @@ yyreduce: break; -/* Line 1267 of yacc.c. */ default: break; } @@ -5443,7 +5443,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. */ @@ -5508,7 +5507,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) @@ -5525,7 +5524,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; @@ -5582,9 +5581,6 @@ yyerrlab1: YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - *++yyvsp = yylval; @@ -5609,7 +5605,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#ifndef yyoverflow +#if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -5620,7 +5616,7 @@ yyexhaustedlab: #endif yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) + if (yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered diff --git a/Zend/zend_language_parser.h b/Zend/zend_language_parser.h index 32ff2d931..be6c758ad 100644 --- a/Zend/zend_language_parser.h +++ b/Zend/zend_language_parser.h @@ -1,24 +1,23 @@ -/* A Bison parser, made by GNU Bison 2.3. */ -/* Skeleton interface for Bison's Yacc-like parsers in C +/* A Bison parser, made by GNU Bison 2.4.1. */ - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +/* 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 + + 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 +28,11 @@ 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. */ + /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE @@ -294,10 +294,11 @@ #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 + diff --git a/Zend/zend_language_parser.output b/Zend/zend_language_parser.output index 71dcb30d5..1034fdce6 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 @@ -19,9 +19,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: T_STRING @@ -33,13 +33,13 @@ Grammar 10 | T_HALT_COMPILER '(' ')' ';' 11 | T_NAMESPACE namespace_name ';' - 12 @2: /* empty */ + 12 $@2: /* empty */ - 13 top_statement: T_NAMESPACE namespace_name '{' @2 top_statement_list '}' + 13 top_statement: T_NAMESPACE namespace_name '{' $@2 top_statement_list '}' - 14 @3: /* empty */ + 14 $@3: /* empty */ - 15 top_statement: T_NAMESPACE '{' @3 top_statement_list '}' + 15 top_statement: T_NAMESPACE '{' $@3 top_statement_list '}' 16 | T_USE use_declarations ';' 17 | constant_declaration ';' @@ -54,9 +54,9 @@ Grammar 24 constant_declaration: constant_declaration ',' T_STRING '=' static_scalar 25 | T_CONST 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 @@ -69,41 +69,41 @@ Grammar 35 unticked_statement: '{' inner_statement_list '}' - 36 @5: /* empty */ + 36 $@5: /* empty */ - 37 @6: /* empty */ + 37 $@6: /* empty */ - 38 unticked_statement: T_IF '(' expr ')' @5 statement @6 elseif_list else_single + 38 unticked_statement: T_IF '(' expr ')' $@5 statement $@6 elseif_list else_single - 39 @7: /* empty */ + 39 $@7: /* empty */ - 40 @8: /* empty */ + 40 $@8: /* empty */ - 41 unticked_statement: T_IF '(' expr ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single T_ENDIF ';' + 41 unticked_statement: T_IF '(' expr ')' ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single T_ENDIF ';' - 42 @9: /* empty */ + 42 $@9: /* empty */ - 43 @10: /* empty */ + 43 $@10: /* empty */ - 44 unticked_statement: T_WHILE '(' @9 expr ')' @10 while_statement + 44 unticked_statement: T_WHILE '(' $@9 expr ')' $@10 while_statement - 45 @11: /* empty */ + 45 $@11: /* empty */ - 46 @12: /* empty */ + 46 $@12: /* empty */ - 47 unticked_statement: T_DO @11 statement T_WHILE '(' @12 expr ')' ';' + 47 unticked_statement: T_DO $@11 statement T_WHILE '(' $@12 expr ')' ';' - 48 @13: /* empty */ + 48 $@13: /* empty */ - 49 @14: /* empty */ + 49 $@14: /* empty */ - 50 @15: /* empty */ + 50 $@15: /* empty */ - 51 unticked_statement: T_FOR '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: T_FOR '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement - 52 @16: /* empty */ + 52 $@16: /* empty */ - 53 unticked_statement: T_SWITCH '(' expr ')' @16 switch_case_list + 53 unticked_statement: T_SWITCH '(' expr ')' $@16 switch_case_list 54 | T_BREAK ';' 55 | T_BREAK expr ';' 56 | T_CONTINUE ';' @@ -118,34 +118,34 @@ Grammar 65 | expr ';' 66 | T_UNSET '(' unset_variables ')' ';' - 67 @17: /* empty */ + 67 $@17: /* empty */ - 68 @18: /* empty */ + 68 $@18: /* empty */ - 69 unticked_statement: T_FOREACH '(' variable T_AS @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement + 69 unticked_statement: T_FOREACH '(' variable T_AS $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement - 70 @19: /* empty */ + 70 $@19: /* empty */ - 71 @20: /* empty */ + 71 $@20: /* empty */ - 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS @19 variable foreach_optional_arg ')' @20 foreach_statement + 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS $@19 variable foreach_optional_arg ')' $@20 foreach_statement - 73 @21: /* empty */ + 73 $@21: /* empty */ - 74 unticked_statement: T_DECLARE @21 '(' declare_list ')' declare_statement + 74 unticked_statement: T_DECLARE $@21 '(' declare_list ')' declare_statement 75 | ';' - 76 @22: /* empty */ + 76 $@22: /* empty */ - 77 @23: /* empty */ + 77 $@23: /* empty */ - 78 @24: /* empty */ + 78 $@24: /* empty */ - 79 @25: /* empty */ + 79 $@25: /* empty */ - 80 @26: /* empty */ + 80 $@26: /* empty */ - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches 82 | T_THROW expr ';' 83 | T_GOTO T_STRING ';' @@ -157,9 +157,9 @@ Grammar 88 @27: /* empty */ - 89 @28: /* empty */ + 89 $@28: /* empty */ - 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' @28 '{' inner_statement_list '}' + 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' $@28 '{' inner_statement_list '}' 91 unset_variables: unset_variable 92 | unset_variables ',' unset_variable @@ -173,17 +173,17 @@ Grammar 96 is_reference: /* empty */ 97 | '&' - 98 @29: /* empty */ + 98 $@29: /* empty */ - 99 unticked_function_declaration_statement: function is_reference T_STRING @29 '(' parameter_list ')' '{' inner_statement_list '}' + 99 unticked_function_declaration_statement: function is_reference T_STRING $@29 '(' parameter_list ')' '{' inner_statement_list '}' - 100 @30: /* empty */ + 100 $@30: /* empty */ - 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from @30 implements_list '{' class_statement_list '}' + 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from $@30 implements_list '{' class_statement_list '}' - 102 @31: /* empty */ + 102 $@31: /* empty */ - 103 unticked_class_declaration_statement: interface_entry T_STRING @31 interface_extends_list '{' class_statement_list '}' + 103 unticked_class_declaration_statement: interface_entry T_STRING $@31 interface_extends_list '{' class_statement_list '}' 104 class_entry_type: T_CLASS 105 | T_ABSTRACT T_CLASS @@ -228,13 +228,13 @@ Grammar 132 case_list: /* empty */ - 133 @32: /* empty */ + 133 $@32: /* empty */ - 134 case_list: case_list T_CASE expr case_separator @32 inner_statement_list + 134 case_list: case_list T_CASE expr case_separator $@32 inner_statement_list - 135 @33: /* empty */ + 135 $@33: /* empty */ - 136 case_list: case_list T_DEFAULT case_separator @33 inner_statement_list + 136 case_list: case_list T_DEFAULT case_separator $@33 inner_statement_list 137 case_separator: ':' 138 | ';' @@ -244,15 +244,15 @@ Grammar 141 elseif_list: /* empty */ - 142 @34: /* empty */ + 142 $@34: /* empty */ - 143 elseif_list: elseif_list T_ELSEIF '(' expr ')' @34 statement + 143 elseif_list: elseif_list T_ELSEIF '(' expr ')' $@34 statement 144 new_elseif_list: /* empty */ - 145 @35: /* empty */ + 145 $@35: /* empty */ - 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr ')' ':' @35 inner_statement_list + 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr ')' ':' $@35 inner_statement_list 147 else_single: /* empty */ 148 | T_ELSE statement @@ -301,14 +301,14 @@ Grammar 181 class_statement_list: class_statement_list class_statement 182 | /* empty */ - 183 @36: /* empty */ + 183 $@36: /* empty */ - 184 class_statement: variable_modifiers @36 class_variable_declaration ';' + 184 class_statement: variable_modifiers $@36 class_variable_declaration ';' 185 | class_constant_declaration ';' - 186 @37: /* empty */ + 186 $@37: /* empty */ - 187 class_statement: method_modifiers function is_reference T_STRING @37 '(' parameter_list ')' method_body + 187 class_statement: method_modifiers function is_reference T_STRING $@37 '(' parameter_list ')' method_body 188 method_body: ';' 189 | '{' inner_statement_list '}' @@ -343,24 +343,24 @@ Grammar 210 for_expr: /* empty */ 211 | non_empty_for_expr - 212 @38: /* empty */ + 212 $@38: /* empty */ - 213 non_empty_for_expr: non_empty_for_expr ',' @38 expr + 213 non_empty_for_expr: non_empty_for_expr ',' $@38 expr 214 | expr - 215 @39: /* empty */ + 215 $@39: /* empty */ - 216 expr_without_variable: T_LIST '(' @39 assignment_list ')' '=' expr + 216 expr_without_variable: T_LIST '(' $@39 assignment_list ')' '=' expr 217 | variable '=' expr 218 | variable '=' '&' variable - 219 @40: /* empty */ + 219 $@40: /* empty */ - 220 expr_without_variable: variable '=' '&' T_NEW class_name_reference @40 ctor_arguments + 220 expr_without_variable: variable '=' '&' T_NEW class_name_reference $@40 ctor_arguments - 221 @41: /* empty */ + 221 $@41: /* empty */ - 222 expr_without_variable: T_NEW class_name_reference @41 ctor_arguments + 222 expr_without_variable: T_NEW class_name_reference $@41 ctor_arguments 223 | T_CLONE expr 224 | variable T_PLUS_EQUAL expr 225 | variable T_MINUS_EQUAL expr @@ -378,21 +378,21 @@ Grammar 237 | rw_variable T_DEC 238 | T_DEC rw_variable - 239 @42: /* empty */ + 239 $@42: /* empty */ - 240 expr_without_variable: expr T_BOOLEAN_OR @42 expr + 240 expr_without_variable: expr T_BOOLEAN_OR $@42 expr - 241 @43: /* empty */ + 241 $@43: /* empty */ - 242 expr_without_variable: expr T_BOOLEAN_AND @43 expr + 242 expr_without_variable: expr T_BOOLEAN_AND $@43 expr - 243 @44: /* empty */ + 243 $@44: /* empty */ - 244 expr_without_variable: expr T_LOGICAL_OR @44 expr + 244 expr_without_variable: expr T_LOGICAL_OR $@44 expr - 245 @45: /* empty */ + 245 $@45: /* empty */ - 246 expr_without_variable: expr T_LOGICAL_AND @45 expr + 246 expr_without_variable: expr T_LOGICAL_AND $@45 expr 247 | expr T_LOGICAL_XOR expr 248 | expr '|' expr 249 | expr '&' expr @@ -420,15 +420,15 @@ Grammar 271 | expr T_INSTANCEOF class_name_reference 272 | '(' expr ')' - 273 @46: /* empty */ + 273 $@46: /* empty */ - 274 @47: /* empty */ + 274 $@47: /* empty */ - 275 expr_without_variable: expr '?' @46 expr ':' @47 expr + 275 expr_without_variable: expr '?' $@46 expr ':' $@47 expr - 276 @48: /* empty */ + 276 $@48: /* empty */ - 277 expr_without_variable: expr '?' ':' @48 expr + 277 expr_without_variable: expr '?' ':' $@48 expr 278 | internal_functions_in_yacc 279 | T_INT_CAST expr 280 | T_DOUBLE_CAST expr @@ -439,9 +439,9 @@ Grammar 285 | T_UNSET_CAST expr 286 | T_EXIT exit_expr - 287 @49: /* empty */ + 287 $@49: /* empty */ - 288 expr_without_variable: '@' @49 expr + 288 expr_without_variable: '@' $@49 expr 289 | scalar 290 | T_ARRAY '(' array_pair_list ')' 291 | '`' backticks_expr '`' @@ -461,37 +461,37 @@ Grammar 300 | T_VARIABLE 301 | '&' T_VARIABLE - 302 @51: /* empty */ + 302 $@51: /* empty */ - 303 function_call: namespace_name '(' @51 function_call_parameter_list ')' + 303 function_call: namespace_name '(' $@51 function_call_parameter_list ')' - 304 @52: /* empty */ + 304 $@52: /* empty */ - 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name '(' @52 function_call_parameter_list ')' + 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name '(' $@52 function_call_parameter_list ')' - 306 @53: /* empty */ + 306 $@53: /* empty */ - 307 function_call: T_NS_SEPARATOR namespace_name '(' @53 function_call_parameter_list ')' + 307 function_call: T_NS_SEPARATOR namespace_name '(' $@53 function_call_parameter_list ')' - 308 @54: /* empty */ + 308 $@54: /* empty */ - 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @54 function_call_parameter_list ')' + 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@54 function_call_parameter_list ')' - 310 @55: /* empty */ + 310 $@55: /* empty */ - 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @55 function_call_parameter_list ')' + 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@55 function_call_parameter_list ')' - 312 @56: /* empty */ + 312 $@56: /* empty */ - 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @56 function_call_parameter_list ')' + 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@56 function_call_parameter_list ')' - 314 @57: /* empty */ + 314 $@57: /* empty */ - 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @57 function_call_parameter_list ')' + 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@57 function_call_parameter_list ')' - 316 @58: /* empty */ + 316 $@58: /* empty */ - 317 function_call: variable_without_objects '(' @58 function_call_parameter_list ')' + 317 function_call: variable_without_objects '(' $@58 function_call_parameter_list ')' 318 class_name: T_STATIC 319 | namespace_name @@ -505,11 +505,11 @@ Grammar 325 class_name_reference: class_name 326 | dynamic_class_name_reference - 327 @59: /* empty */ + 327 $@59: /* empty */ - 328 @60: /* empty */ + 328 $@60: /* empty */ - 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR @59 object_property @60 dynamic_class_name_variable_properties + 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR $@59 object_property $@60 dynamic_class_name_variable_properties 330 | base_variable 331 dynamic_class_name_variable_properties: dynamic_class_name_variable_properties dynamic_class_name_variable_property @@ -581,23 +581,23 @@ Grammar 383 rw_variable: variable - 384 @61: /* empty */ + 384 $@61: /* empty */ - 385 @62: /* empty */ + 385 $@62: /* empty */ - 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR @61 object_property @62 method_or_not variable_properties + 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR $@61 object_property $@62 method_or_not variable_properties 387 | base_variable_with_function_calls 388 variable_properties: variable_properties variable_property 389 | /* empty */ - 390 @63: /* empty */ + 390 $@63: /* empty */ - 391 variable_property: T_OBJECT_OPERATOR object_property @63 method_or_not + 391 variable_property: T_OBJECT_OPERATOR object_property $@63 method_or_not - 392 @64: /* empty */ + 392 $@64: /* empty */ - 393 method_or_not: '(' @64 function_call_parameter_list ')' + 393 method_or_not: '(' $@64 function_call_parameter_list ')' 394 | /* empty */ 395 variable_without_objects: reference_variable @@ -627,9 +627,9 @@ Grammar 412 object_property: object_dim_list - 413 @65: /* empty */ + 413 $@65: /* empty */ - 414 object_property: variable_without_objects @65 + 414 object_property: variable_without_objects $@65 415 object_dim_list: object_dim_list '[' dim_offset ']' 416 | object_dim_list '{' expr '}' @@ -646,9 +646,9 @@ Grammar 424 assignment_list_element: variable - 425 @66: /* empty */ + 425 $@66: /* empty */ - 426 assignment_list_element: T_LIST '(' @66 assignment_list ')' + 426 assignment_list_element: T_LIST '(' $@66 assignment_list ')' 427 | /* empty */ 428 array_pair_list: /* empty */ @@ -670,9 +670,9 @@ Grammar 442 encaps_var: T_VARIABLE - 443 @67: /* empty */ + 443 $@67: /* empty */ - 444 encaps_var: T_VARIABLE '[' @67 encaps_var_offset ']' + 444 encaps_var: T_VARIABLE '[' $@67 encaps_var_offset ']' 445 | T_VARIABLE T_OBJECT_OPERATOR T_STRING 446 | T_DOLLAR_OPEN_CURLY_BRACES expr '}' 447 | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' @@ -692,9 +692,9 @@ Grammar 459 isset_variables: variable - 460 @68: /* empty */ + 460 $@68: /* empty */ - 461 isset_variables: isset_variables ',' @68 variable + 461 isset_variables: isset_variables ',' $@68 variable 462 class_constant: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING 463 | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING @@ -877,16 +877,16 @@ start (155) on left: 1, on right: 0 top_statement_list (156) on left: 3 4, on right: 1 3 13 15 -@1 (157) +$@1 (157) on left: 2, on right: 3 namespace_name (158) on left: 5 6, on right: 6 11 13 20 21 22 23 303 305 307 319 320 321 322 323 324 355 356 357 365 366 367 top_statement (159) on left: 7 8 9 10 11 13 15 16 17, on right: 3 -@2 (160) +$@2 (160) on left: 12, on right: 13 -@3 (161) +$@3 (161) on left: 14, on right: 15 use_declarations (162) on left: 18 19, on right: 16 18 @@ -897,7 +897,7 @@ constant_declaration (164) inner_statement_list (165) on left: 27 28, on right: 27 35 41 81 90 99 121 123 125 134 136 140 146 150 189 294 -@4 (166) +$@4 (166) on left: 26, on right: 27 inner_statement (167) on left: 29 30 31 32, on right: 27 @@ -906,49 +906,49 @@ statement (168) unticked_statement (169) on left: 35 38 41 44 47 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 69 72 74 75 81 82 83, on right: 33 -@5 (170) +$@5 (170) on left: 36, on right: 38 -@6 (171) +$@6 (171) on left: 37, on right: 38 -@7 (172) +$@7 (172) on left: 39, on right: 41 -@8 (173) +$@8 (173) on left: 40, on right: 41 -@9 (174) +$@9 (174) on left: 42, on right: 44 -@10 (175) +$@10 (175) on left: 43, on right: 44 -@11 (176) +$@11 (176) on left: 45, on right: 47 -@12 (177) +$@12 (177) on left: 46, on right: 47 -@13 (178) +$@13 (178) on left: 48, on right: 51 -@14 (179) +$@14 (179) on left: 49, on right: 51 -@15 (180) +$@15 (180) on left: 50, on right: 51 -@16 (181) +$@16 (181) on left: 52, on right: 53 -@17 (182) +$@17 (182) on left: 67, on right: 69 -@18 (183) +$@18 (183) on left: 68, on right: 69 -@19 (184) +$@19 (184) on left: 70, on right: 72 -@20 (185) +$@20 (185) on left: 71, on right: 72 -@21 (186) +$@21 (186) on left: 73, on right: 74 -@22 (187) +$@22 (187) on left: 76, on right: 81 -@23 (188) +$@23 (188) on left: 77, on right: 81 -@24 (189) +$@24 (189) on left: 78, on right: 81 -@25 (190) +$@25 (190) on left: 79, on right: 81 -@26 (191) +$@26 (191) on left: 80, on right: 81 additional_catches (192) on left: 84 85, on right: 81 @@ -958,7 +958,7 @@ additional_catch (194) on left: 90, on right: 86 87 @27 (195) on left: 88, on right: 90 -@28 (196) +$@28 (196) on left: 89, on right: 90 unset_variables (197) on left: 91 92, on right: 66 92 @@ -972,13 +972,13 @@ is_reference (201) on left: 96 97, on right: 99 187 294 unticked_function_declaration_statement (202) on left: 99, on right: 94 -@29 (203) +$@29 (203) on left: 98, on right: 99 unticked_class_declaration_statement (204) on left: 101 103, on right: 95 -@30 (205) +$@30 (205) on left: 100, on right: 101 -@31 (206) +$@31 (206) on left: 102, on right: 103 class_entry_type (207) on left: 104 105 106, on right: 101 @@ -1008,9 +1008,9 @@ switch_case_list (219) on left: 128 129 130 131, on right: 53 case_list (220) on left: 132 134 136, on right: 128 129 130 131 134 136 -@32 (221) +$@32 (221) on left: 133, on right: 134 -@33 (222) +$@33 (222) on left: 135, on right: 136 case_separator (223) on left: 137 138, on right: 134 136 @@ -1018,11 +1018,11 @@ while_statement (224) on left: 139 140, on right: 44 elseif_list (225) on left: 141 143, on right: 38 143 -@34 (226) +$@34 (226) on left: 142, on right: 143 new_elseif_list (227) on left: 144 146, on right: 41 146 -@35 (228) +$@35 (228) on left: 145, on right: 146 else_single (229) on left: 147 148, on right: 38 @@ -1050,9 +1050,9 @@ class_statement_list (239) on left: 181 182, on right: 101 103 181 class_statement (240) on left: 184 185 187, on right: 181 -@36 (241) +$@36 (241) on left: 183, on right: 184 -@37 (242) +$@37 (242) on left: 186, on right: 187 method_body (243) on left: 188 189, on right: 187 @@ -1074,7 +1074,7 @@ for_expr (251) on left: 210 211, on right: 51 non_empty_for_expr (252) on left: 213 214, on right: 211 213 -@38 (253) +$@38 (253) on left: 212, on right: 213 expr_without_variable (254) on left: 216 217 218 220 222 223 224 225 226 227 228 229 230 231 @@ -1082,27 +1082,27 @@ expr_without_variable (254) 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 275 277 278 279 280 281 282 283 284 285 286 288 289 290 291 292 294, on right: 59 72 166 169 380 -@39 (255) +$@39 (255) on left: 215, on right: 216 -@40 (256) +$@40 (256) on left: 219, on right: 220 -@41 (257) +$@41 (257) on left: 221, on right: 222 -@42 (258) +$@42 (258) on left: 239, on right: 240 -@43 (259) +$@43 (259) on left: 241, on right: 242 -@44 (260) +$@44 (260) on left: 243, on right: 244 -@45 (261) +$@45 (261) on left: 245, on right: 246 -@46 (262) +$@46 (262) on left: 273, on right: 275 -@47 (263) +$@47 (263) on left: 274, on right: 275 -@48 (264) +$@48 (264) on left: 276, on right: 277 -@49 (265) +$@49 (265) on left: 287, on right: 288 @50 (266) on left: 293, on right: 294 @@ -1114,21 +1114,21 @@ lexical_var_list (269) on left: 298 299 300 301, on right: 297 298 299 function_call (270) on left: 303 305 307 309 311 313 315 317, on right: 401 -@51 (271) +$@51 (271) on left: 302, on right: 303 -@52 (272) +$@52 (272) on left: 304, on right: 305 -@53 (273) +$@53 (273) on left: 306, on right: 307 -@54 (274) +$@54 (274) on left: 308, on right: 309 -@55 (275) +$@55 (275) on left: 310, on right: 311 -@56 (276) +$@56 (276) on left: 312, on right: 313 -@57 (277) +$@57 (277) on left: 314, on right: 315 -@58 (278) +$@58 (278) on left: 316, on right: 317 class_name (279) on left: 318 319 320 321, on right: 309 311 325 362 397 462 @@ -1138,9 +1138,9 @@ class_name_reference (281) on left: 325 326, on right: 220 222 271 dynamic_class_name_reference (282) on left: 329 330, on right: 326 -@59 (283) +$@59 (283) on left: 327, on right: 329 -@60 (284) +$@60 (284) on left: 328, on right: 329 dynamic_class_name_variable_properties (285) on left: 331 332, on right: 329 331 @@ -1153,8 +1153,8 @@ backticks_expr (288) ctor_arguments (289) on left: 340 341, on right: 220 222 common_scalar (290) - on left: 342 343 344 345 346 347 348 349 350 351 352 353, - on right: 354 368 + on left: 342 343 344 345 346 347 348 349 350 351 352 353, on right: + 354 368 static_scalar (291) on left: 354 355 356 357 358 359 360 361, on right: 24 25 126 127 155 156 159 160 178 180 203 205 206 207 358 359 375 376 377 378 @@ -1185,19 +1185,19 @@ variable (301) on left: 386 387, on right: 60 69 72 93 118 119 167 170 217 218 220 224 225 226 227 228 229 230 231 232 233 234 381 382 383 424 448 453 459 461 -@61 (302) +$@61 (302) on left: 384, on right: 386 -@62 (303) +$@62 (303) on left: 385, on right: 386 variable_properties (304) on left: 388 389, on right: 386 388 variable_property (305) on left: 391, on right: 388 -@63 (306) +$@63 (306) on left: 390, on right: 391 method_or_not (307) on left: 393 394, on right: 386 391 -@64 (308) +$@64 (308) on left: 392, on right: 393 variable_without_objects (309) on left: 395 396, on right: 311 315 317 397 398 414 @@ -1217,7 +1217,7 @@ dim_offset (316) on left: 410 411, on right: 405 415 object_property (317) on left: 412 414, on right: 329 333 386 391 -@65 (318) +$@65 (318) on left: 413, on right: 414 object_dim_list (319) on left: 415 416 417, on right: 412 415 416 @@ -1229,7 +1229,7 @@ assignment_list (322) on left: 422 423, on right: 216 422 426 assignment_list_element (323) on left: 424 426 427, on right: 422 423 -@66 (324) +$@66 (324) on left: 425, on right: 426 array_pair_list (325) on left: 428 429, on right: 290 @@ -1240,7 +1240,7 @@ encaps_list (327) on left: 438 439 440 441, on right: 339 369 370 438 439 encaps_var (328) on left: 442 444 445 446 447 448, on right: 438 440 441 -@67 (329) +$@67 (329) on left: 443, on right: 444 encaps_var_offset (330) on left: 449 450 451, on right: 444 @@ -1248,7 +1248,7 @@ internal_functions_in_yacc (331) on left: 452 453 454 455 456 457 458, on right: 278 isset_variables (332) on left: 459 461, on right: 452 461 -@68 (333) +$@68 (333) on left: 460, on right: 461 class_constant (334) on left: 462 463, on right: 364 @@ -1274,12 +1274,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 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 @@ -1291,7 +1291,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 T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -2104,11 +2104,11 @@ state 14 state 15 - 288 expr_without_variable: '@' . @49 expr + 288 expr_without_variable: '@' . $@49 expr - $default reduce using rule 287 (@49) + $default reduce using rule 287 ($@49) - @49 go to state 125 + $@49 go to state 125 state 16 @@ -2781,7 +2781,7 @@ state 25 state 26 - 222 expr_without_variable: T_NEW . class_name_reference @41 ctor_arguments + 222 expr_without_variable: T_NEW . class_name_reference $@41 ctor_arguments T_STRING shift, and go to state 111 T_VARIABLE shift, and go to state 33 @@ -2815,8 +2815,8 @@ state 27 state 28 - 38 unticked_statement: T_IF . '(' expr ')' @5 statement @6 elseif_list else_single - 41 | T_IF . '(' expr ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single T_ENDIF ';' + 38 unticked_statement: T_IF . '(' expr ')' $@5 statement $@6 elseif_list else_single + 41 | T_IF . '(' expr ')' ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single T_ENDIF ';' '(' shift, and go to state 154 @@ -2953,47 +2953,47 @@ state 36 state 37 - 47 unticked_statement: T_DO . @11 statement T_WHILE '(' @12 expr ')' ';' + 47 unticked_statement: T_DO . $@11 statement T_WHILE '(' $@12 expr ')' ';' - $default reduce using rule 45 (@11) + $default reduce using rule 45 ($@11) - @11 go to state 158 + $@11 go to state 158 state 38 - 44 unticked_statement: T_WHILE . '(' @9 expr ')' @10 while_statement + 44 unticked_statement: T_WHILE . '(' $@9 expr ')' $@10 while_statement '(' shift, and go to state 159 state 39 - 51 unticked_statement: T_FOR . '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: T_FOR . '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement '(' shift, and go to state 160 state 40 - 69 unticked_statement: T_FOREACH . '(' variable T_AS @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement - 72 | T_FOREACH . '(' expr_without_variable T_AS @19 variable foreach_optional_arg ')' @20 foreach_statement + 69 unticked_statement: T_FOREACH . '(' variable T_AS $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement + 72 | T_FOREACH . '(' expr_without_variable T_AS $@19 variable foreach_optional_arg ')' $@20 foreach_statement '(' shift, and go to state 161 state 41 - 74 unticked_statement: T_DECLARE . @21 '(' declare_list ')' declare_statement + 74 unticked_statement: T_DECLARE . $@21 '(' declare_list ')' declare_statement - $default reduce using rule 73 (@21) + $default reduce using rule 73 ($@21) - @21 go to state 162 + $@21 go to state 162 state 42 - 53 unticked_statement: T_SWITCH . '(' expr ')' @16 switch_case_list + 53 unticked_statement: T_SWITCH . '(' expr ')' $@16 switch_case_list '(' shift, and go to state 163 @@ -3259,11 +3259,11 @@ state 48 state 49 - 81 unticked_statement: T_TRY . @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY . $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches - $default reduce using rule 76 (@22) + $default reduce using rule 76 ($@22) - @22 go to state 174 + $@22 go to state 174 state 50 @@ -3436,7 +3436,7 @@ state 61 state 62 - 216 expr_without_variable: T_LIST . '(' @39 assignment_list ')' '=' expr + 216 expr_without_variable: T_LIST . '(' $@39 assignment_list ')' '=' expr '(' shift, and go to state 192 @@ -3502,9 +3502,9 @@ state 69 state 70 11 top_statement: T_NAMESPACE . namespace_name ';' - 13 | T_NAMESPACE . namespace_name '{' @2 top_statement_list '}' - 15 | T_NAMESPACE . '{' @3 top_statement_list '}' - 305 function_call: T_NAMESPACE . T_NS_SEPARATOR namespace_name '(' @52 function_call_parameter_list ')' + 13 | T_NAMESPACE . namespace_name '{' $@2 top_statement_list '}' + 15 | T_NAMESPACE . '{' $@3 top_statement_list '}' + 305 function_call: T_NAMESPACE . T_NS_SEPARATOR namespace_name '(' $@52 function_call_parameter_list ')' 320 class_name: T_NAMESPACE . T_NS_SEPARATOR namespace_name 366 scalar: T_NAMESPACE . T_NS_SEPARATOR namespace_name @@ -3531,7 +3531,7 @@ state 72 state 73 - 307 function_call: T_NS_SEPARATOR . namespace_name '(' @53 function_call_parameter_list ')' + 307 function_call: T_NS_SEPARATOR . namespace_name '(' $@53 function_call_parameter_list ')' 321 class_name: T_NS_SEPARATOR . namespace_name 367 scalar: T_NS_SEPARATOR . namespace_name @@ -3675,7 +3675,7 @@ state 79 state 80 6 namespace_name: namespace_name . T_NS_SEPARATOR T_STRING - 303 function_call: namespace_name . '(' @51 function_call_parameter_list ')' + 303 function_call: namespace_name . '(' $@51 function_call_parameter_list ')' 319 class_name: namespace_name . 365 scalar: namespace_name . @@ -3688,7 +3688,7 @@ state 80 state 81 - 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) @@ -3746,14 +3746,14 @@ state 88 state 89 - 101 unticked_class_declaration_statement: class_entry_type . T_STRING extends_from @30 implements_list '{' class_statement_list '}' + 101 unticked_class_declaration_statement: class_entry_type . T_STRING extends_from $@30 implements_list '{' class_statement_list '}' T_STRING shift, and go to state 217 state 90 - 103 unticked_class_declaration_statement: interface_entry . T_STRING @31 interface_extends_list '{' class_statement_list '}' + 103 unticked_class_declaration_statement: interface_entry . T_STRING $@31 interface_extends_list '{' class_statement_list '}' T_STRING shift, and go to state 218 @@ -3767,7 +3767,7 @@ state 91 state 92 - 99 unticked_function_declaration_statement: function . is_reference T_STRING @29 '(' parameter_list ')' '{' inner_statement_list '}' + 99 unticked_function_declaration_statement: function . is_reference T_STRING $@29 '(' parameter_list ')' '{' inner_statement_list '}' 294 expr_without_variable: function . is_reference '(' @50 parameter_list ')' lexical_vars '{' inner_statement_list '}' '&' shift, and go to state 219 @@ -3786,8 +3786,8 @@ state 93 state 94 - 309 function_call: class_name . T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @54 function_call_parameter_list ')' - 311 | class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @55 function_call_parameter_list ')' + 309 function_call: class_name . T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@54 function_call_parameter_list ')' + 311 | class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@55 function_call_parameter_list ')' 397 static_member: class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects 462 class_constant: class_name . T_PAAMAYIM_NEKUDOTAYIM T_STRING @@ -3811,10 +3811,10 @@ state 96 state 97 65 unticked_statement: expr . ';' - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -3836,8 +3836,8 @@ state 97 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -3888,7 +3888,7 @@ state 100 217 expr_without_variable: variable . '=' expr 218 | variable . '=' '&' variable - 220 | variable . '=' '&' T_NEW class_name_reference @40 ctor_arguments + 220 | variable . '=' '&' T_NEW class_name_reference $@40 ctor_arguments 224 | variable . T_PLUS_EQUAL expr 225 | variable . T_MINUS_EQUAL expr 226 | variable . T_MUL_EQUAL expr @@ -3923,7 +3923,7 @@ state 100 state 101 - 317 function_call: variable_without_objects . '(' @58 function_call_parameter_list ')' + 317 function_call: variable_without_objects . '(' $@58 function_call_parameter_list ')' '(' shift, and go to state 263 @@ -3937,8 +3937,8 @@ state 102 state 103 - 313 function_call: variable_class_name . T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @56 function_call_parameter_list ')' - 315 | variable_class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @57 function_call_parameter_list ')' + 313 function_call: variable_class_name . T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@56 function_call_parameter_list ')' + 315 | variable_class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@57 function_call_parameter_list ')' 398 static_member: variable_class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects 463 class_constant: variable_class_name . T_PAAMAYIM_NEKUDOTAYIM T_STRING @@ -3947,7 +3947,7 @@ state 103 state 104 - 386 variable: base_variable_with_function_calls . T_OBJECT_OPERATOR @61 object_property @62 method_or_not variable_properties + 386 variable: base_variable_with_function_calls . T_OBJECT_OPERATOR $@61 object_property $@62 method_or_not variable_properties 387 | base_variable_with_function_calls . T_OBJECT_OPERATOR shift, and go to state 265 @@ -4028,7 +4028,7 @@ state 112 state 113 - 305 function_call: T_NAMESPACE . T_NS_SEPARATOR namespace_name '(' @52 function_call_parameter_list ')' + 305 function_call: T_NAMESPACE . T_NS_SEPARATOR namespace_name '(' $@52 function_call_parameter_list ')' 320 class_name: T_NAMESPACE . T_NS_SEPARATOR namespace_name 366 scalar: T_NAMESPACE . T_NS_SEPARATOR namespace_name @@ -4048,10 +4048,10 @@ state 114 state 115 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4073,8 +4073,8 @@ state 115 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 458 internal_functions_in_yacc: T_REQUIRE_ONCE expr . T_LOGICAL_OR shift, and go to state 222 @@ -4109,10 +4109,10 @@ state 115 state 116 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4134,8 +4134,8 @@ state 116 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 457 internal_functions_in_yacc: T_REQUIRE expr . T_LOGICAL_OR shift, and go to state 222 @@ -4247,10 +4247,10 @@ state 117 state 118 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4272,8 +4272,8 @@ state 118 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 455 internal_functions_in_yacc: T_INCLUDE_ONCE expr . T_LOGICAL_OR shift, and go to state 222 @@ -4308,10 +4308,10 @@ state 118 state 119 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4333,8 +4333,8 @@ state 119 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 454 internal_functions_in_yacc: T_INCLUDE expr . T_LOGICAL_OR shift, and go to state 222 @@ -4369,10 +4369,10 @@ state 119 state 120 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4394,8 +4394,8 @@ state 120 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 292 | T_PRINT expr . '?' shift, and go to state 225 @@ -4427,10 +4427,10 @@ state 120 state 121 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4453,18 +4453,18 @@ state 121 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr $default reduce using rule 259 (expr_without_variable) state 122 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4487,18 +4487,18 @@ state 122 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr $default reduce using rule 260 (expr_without_variable) state 123 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4521,8 +4521,8 @@ state 123 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_INSTANCEOF shift, and go to state 247 @@ -4531,10 +4531,10 @@ state 123 state 124 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4557,15 +4557,15 @@ state 124 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr $default reduce using rule 262 (expr_without_variable) state 125 - 288 expr_without_variable: '@' @49 . expr + 288 expr_without_variable: '@' $@49 . expr T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -4642,10 +4642,10 @@ state 125 state 126 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4667,8 +4667,8 @@ state 126 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 285 | T_UNSET_CAST expr . $default reduce using rule 285 (expr_without_variable) @@ -4676,10 +4676,10 @@ state 126 state 127 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4701,8 +4701,8 @@ state 127 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 284 | T_BOOL_CAST expr . $default reduce using rule 284 (expr_without_variable) @@ -4710,10 +4710,10 @@ state 127 state 128 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4735,8 +4735,8 @@ state 128 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 283 | T_OBJECT_CAST expr . $default reduce using rule 283 (expr_without_variable) @@ -4744,10 +4744,10 @@ state 128 state 129 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4769,8 +4769,8 @@ state 129 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 282 | T_ARRAY_CAST expr . $default reduce using rule 282 (expr_without_variable) @@ -4778,10 +4778,10 @@ state 129 state 130 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4803,8 +4803,8 @@ state 130 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 281 | T_STRING_CAST expr . $default reduce using rule 281 (expr_without_variable) @@ -4812,10 +4812,10 @@ state 130 state 131 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4837,8 +4837,8 @@ state 131 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 280 | T_DOUBLE_CAST expr . $default reduce using rule 280 (expr_without_variable) @@ -4846,10 +4846,10 @@ state 131 state 132 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4871,8 +4871,8 @@ state 132 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 279 | T_INT_CAST expr . $default reduce using rule 279 (expr_without_variable) @@ -4880,7 +4880,7 @@ state 132 state 133 - 305 function_call: T_NAMESPACE . T_NS_SEPARATOR namespace_name '(' @52 function_call_parameter_list ')' + 305 function_call: T_NAMESPACE . T_NS_SEPARATOR namespace_name '(' $@52 function_call_parameter_list ')' 320 class_name: T_NAMESPACE . T_NS_SEPARATOR namespace_name T_NS_SEPARATOR shift, and go to state 273 @@ -4888,7 +4888,7 @@ state 133 state 134 - 307 function_call: T_NS_SEPARATOR . namespace_name '(' @53 function_call_parameter_list ')' + 307 function_call: T_NS_SEPARATOR . namespace_name '(' $@53 function_call_parameter_list ')' 321 class_name: T_NS_SEPARATOR . namespace_name T_STRING shift, and go to state 111 @@ -4899,7 +4899,7 @@ state 134 state 135 6 namespace_name: namespace_name . T_NS_SEPARATOR T_STRING - 303 function_call: namespace_name . '(' @51 function_call_parameter_list ')' + 303 function_call: namespace_name . '(' $@51 function_call_parameter_list ')' 319 class_name: namespace_name . T_NS_SEPARATOR shift, and go to state 213 @@ -4910,8 +4910,8 @@ state 135 state 136 - 309 function_call: class_name . T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @54 function_call_parameter_list ')' - 311 | class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @55 function_call_parameter_list ')' + 309 function_call: class_name . T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@54 function_call_parameter_list ')' + 311 | class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@55 function_call_parameter_list ')' 397 static_member: class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects T_PAAMAYIM_NEKUDOTAYIM shift, and go to state 275 @@ -4933,8 +4933,8 @@ state 138 state 139 - 313 function_call: variable_class_name . T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @56 function_call_parameter_list ')' - 315 | variable_class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @57 function_call_parameter_list ')' + 313 function_call: variable_class_name . T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@56 function_call_parameter_list ')' + 315 | variable_class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@57 function_call_parameter_list ')' 398 static_member: variable_class_name . T_PAAMAYIM_NEKUDOTAYIM variable_without_objects T_PAAMAYIM_NEKUDOTAYIM shift, and go to state 276 @@ -4950,10 +4950,10 @@ state 140 state 141 223 expr_without_variable: T_CLONE expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -4975,8 +4975,8 @@ state 141 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr $default reduce using rule 223 (expr_without_variable) @@ -5019,11 +5019,11 @@ state 145 state 146 - 222 expr_without_variable: T_NEW class_name_reference . @41 ctor_arguments + 222 expr_without_variable: T_NEW class_name_reference . $@41 ctor_arguments - $default reduce using rule 221 (@41) + $default reduce using rule 221 ($@41) - @41 go to state 280 + $@41 go to state 280 state 147 @@ -5042,7 +5042,7 @@ state 148 state 149 - 329 dynamic_class_name_reference: base_variable . T_OBJECT_OPERATOR @59 object_property @60 dynamic_class_name_variable_properties + 329 dynamic_class_name_reference: base_variable . T_OBJECT_OPERATOR $@59 object_property $@60 dynamic_class_name_variable_properties 330 | base_variable . T_OBJECT_OPERATOR shift, and go to state 282 @@ -5164,8 +5164,8 @@ state 153 state 154 - 38 unticked_statement: T_IF '(' . expr ')' @5 statement @6 elseif_list else_single - 41 | T_IF '(' . expr ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single T_ENDIF ';' + 38 unticked_statement: T_IF '(' . expr ')' $@5 statement $@6 elseif_list else_single + 41 | T_IF '(' . expr ')' ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single T_ENDIF ';' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -5259,10 +5259,10 @@ state 156 state 157 209 echo_expr_list: expr . - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -5284,8 +5284,8 @@ state 157 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -5319,7 +5319,7 @@ state 157 state 158 - 47 unticked_statement: T_DO @11 . statement T_WHILE '(' @12 expr ')' ';' + 47 unticked_statement: T_DO $@11 . statement T_WHILE '(' $@12 expr ')' ';' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -5417,16 +5417,16 @@ state 158 state 159 - 44 unticked_statement: T_WHILE '(' . @9 expr ')' @10 while_statement + 44 unticked_statement: T_WHILE '(' . $@9 expr ')' $@10 while_statement - $default reduce using rule 42 (@9) + $default reduce using rule 42 ($@9) - @9 go to state 290 + $@9 go to state 290 state 160 - 51 unticked_statement: T_FOR '(' . for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: T_FOR '(' . for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -5507,8 +5507,8 @@ state 160 state 161 - 69 unticked_statement: T_FOREACH '(' . variable T_AS @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement - 72 | T_FOREACH '(' . expr_without_variable T_AS @19 variable foreach_optional_arg ')' @20 foreach_statement + 69 unticked_statement: T_FOREACH '(' . variable T_AS $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement + 72 | T_FOREACH '(' . expr_without_variable T_AS $@19 variable foreach_optional_arg ')' $@20 foreach_statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -5585,14 +5585,14 @@ state 161 state 162 - 74 unticked_statement: T_DECLARE @21 . '(' declare_list ')' declare_statement + 74 unticked_statement: T_DECLARE $@21 . '(' declare_list ')' declare_statement '(' shift, and go to state 296 state 163 - 53 unticked_statement: T_SWITCH '(' . expr ')' @16 switch_case_list + 53 unticked_statement: T_SWITCH '(' . expr ')' $@16 switch_case_list T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -5677,10 +5677,10 @@ state 164 state 165 55 unticked_statement: T_BREAK expr . ';' - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -5702,8 +5702,8 @@ state 165 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -5744,10 +5744,10 @@ state 166 state 167 57 unticked_statement: T_CONTINUE expr . ';' - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -5769,8 +5769,8 @@ state 167 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -5834,10 +5834,10 @@ state 171 state 172 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -5859,8 +5859,8 @@ state 172 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -5895,7 +5895,7 @@ state 173 60 unticked_statement: T_RETURN variable . ';' 217 expr_without_variable: variable . '=' expr 218 | variable . '=' '&' variable - 220 | variable . '=' '&' T_NEW class_name_reference @40 ctor_arguments + 220 | variable . '=' '&' T_NEW class_name_reference $@40 ctor_arguments 224 | variable . T_PLUS_EQUAL expr 225 | variable . T_MINUS_EQUAL expr 226 | variable . T_MUL_EQUAL expr @@ -5931,7 +5931,7 @@ state 173 state 174 - 81 unticked_statement: T_TRY @22 . '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 . '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches '{' shift, and go to state 304 @@ -5939,10 +5939,10 @@ state 174 state 175 82 unticked_statement: T_THROW expr . ';' - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -5964,8 +5964,8 @@ state 175 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -6206,11 +6206,11 @@ state 191 state 192 - 216 expr_without_variable: T_LIST '(' . @39 assignment_list ')' '=' expr + 216 expr_without_variable: T_LIST '(' . $@39 assignment_list ')' '=' expr - $default reduce using rule 215 (@39) + $default reduce using rule 215 ($@39) - @39 go to state 325 + $@39 go to state 325 state 193 @@ -6298,7 +6298,7 @@ state 193 state 194 442 encaps_var: T_VARIABLE . - 444 | T_VARIABLE . '[' @67 encaps_var_offset ']' + 444 | T_VARIABLE . '[' $@67 encaps_var_offset ']' 445 | T_VARIABLE . T_OBJECT_OPERATOR T_STRING '[' shift, and go to state 330 @@ -6454,7 +6454,7 @@ state 200 state 201 - 305 function_call: T_NAMESPACE T_NS_SEPARATOR . namespace_name '(' @52 function_call_parameter_list ')' + 305 function_call: T_NAMESPACE T_NS_SEPARATOR . namespace_name '(' $@52 function_call_parameter_list ')' 320 class_name: T_NAMESPACE T_NS_SEPARATOR . namespace_name 366 scalar: T_NAMESPACE T_NS_SEPARATOR . namespace_name @@ -6465,18 +6465,18 @@ state 201 state 202 - 15 top_statement: T_NAMESPACE '{' . @3 top_statement_list '}' + 15 top_statement: T_NAMESPACE '{' . $@3 top_statement_list '}' - $default reduce using rule 14 (@3) + $default reduce using rule 14 ($@3) - @3 go to state 341 + $@3 go to state 341 state 203 6 namespace_name: namespace_name . T_NS_SEPARATOR T_STRING 11 top_statement: T_NAMESPACE namespace_name . ';' - 13 | T_NAMESPACE namespace_name . '{' @2 top_statement_list '}' + 13 | T_NAMESPACE namespace_name . '{' $@2 top_statement_list '}' T_NS_SEPARATOR shift, and go to state 213 ';' shift, and go to state 342 @@ -6486,7 +6486,7 @@ state 203 state 204 6 namespace_name: namespace_name . T_NS_SEPARATOR T_STRING - 307 function_call: T_NS_SEPARATOR namespace_name . '(' @53 function_call_parameter_list ')' + 307 function_call: T_NS_SEPARATOR namespace_name . '(' $@53 function_call_parameter_list ')' 321 class_name: T_NS_SEPARATOR namespace_name . 367 scalar: T_NS_SEPARATOR namespace_name . @@ -6499,10 +6499,10 @@ state 204 state 205 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -6525,8 +6525,8 @@ state 205 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference 272 | '(' expr . ')' - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -6559,14 +6559,14 @@ state 205 state 206 - 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 346 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 207 @@ -6718,11 +6718,11 @@ state 213 state 214 - 303 function_call: namespace_name '(' . @51 function_call_parameter_list ')' + 303 function_call: namespace_name '(' . $@51 function_call_parameter_list ')' - $default reduce using rule 302 (@51) + $default reduce using rule 302 ($@51) - @51 go to state 352 + $@51 go to state 352 state 215 @@ -6741,7 +6741,7 @@ state 216 state 217 - 101 unticked_class_declaration_statement: class_entry_type T_STRING . extends_from @30 implements_list '{' class_statement_list '}' + 101 unticked_class_declaration_statement: class_entry_type T_STRING . extends_from $@30 implements_list '{' class_statement_list '}' T_EXTENDS shift, and go to state 354 @@ -6752,11 +6752,11 @@ state 217 state 218 - 103 unticked_class_declaration_statement: interface_entry T_STRING . @31 interface_extends_list '{' class_statement_list '}' + 103 unticked_class_declaration_statement: interface_entry T_STRING . $@31 interface_extends_list '{' class_statement_list '}' - $default reduce using rule 102 (@31) + $default reduce using rule 102 ($@31) - @31 go to state 356 + $@31 go to state 356 state 219 @@ -6768,7 +6768,7 @@ state 219 state 220 - 99 unticked_function_declaration_statement: function is_reference . T_STRING @29 '(' parameter_list ')' '{' inner_statement_list '}' + 99 unticked_function_declaration_statement: function is_reference . T_STRING $@29 '(' parameter_list ')' '{' inner_statement_list '}' 294 expr_without_variable: function is_reference . '(' @50 parameter_list ')' lexical_vars '{' inner_statement_list '}' T_STRING shift, and go to state 357 @@ -6777,8 +6777,8 @@ state 220 state 221 - 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM . T_STRING '(' @54 function_call_parameter_list ')' - 311 | class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects '(' @55 function_call_parameter_list ')' + 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM . T_STRING '(' $@54 function_call_parameter_list ')' + 311 | class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects '(' $@55 function_call_parameter_list ')' 397 static_member: class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects 462 class_constant: class_name T_PAAMAYIM_NEKUDOTAYIM . T_STRING @@ -6794,11 +6794,11 @@ state 221 state 222 - 244 expr_without_variable: expr T_LOGICAL_OR . @44 expr + 244 expr_without_variable: expr T_LOGICAL_OR . $@44 expr - $default reduce using rule 243 (@44) + $default reduce using rule 243 ($@44) - @44 go to state 363 + $@44 go to state 363 state 223 @@ -6880,41 +6880,41 @@ state 223 state 224 - 246 expr_without_variable: expr T_LOGICAL_AND . @45 expr + 246 expr_without_variable: expr T_LOGICAL_AND . $@45 expr - $default reduce using rule 245 (@45) + $default reduce using rule 245 ($@45) - @45 go to state 365 + $@45 go to state 365 state 225 - 275 expr_without_variable: expr '?' . @46 expr ':' @47 expr - 277 | expr '?' . ':' @48 expr + 275 expr_without_variable: expr '?' . $@46 expr ':' $@47 expr + 277 | expr '?' . ':' $@48 expr ':' shift, and go to state 366 - $default reduce using rule 273 (@46) + $default reduce using rule 273 ($@46) - @46 go to state 367 + $@46 go to state 367 state 226 - 240 expr_without_variable: expr T_BOOLEAN_OR . @42 expr + 240 expr_without_variable: expr T_BOOLEAN_OR . $@42 expr - $default reduce using rule 239 (@42) + $default reduce using rule 239 ($@42) - @42 go to state 368 + $@42 go to state 368 state 227 - 242 expr_without_variable: expr T_BOOLEAN_AND . @43 expr + 242 expr_without_variable: expr T_BOOLEAN_AND . $@43 expr - $default reduce using rule 241 (@43) + $default reduce using rule 241 ($@43) - @43 go to state 369 + $@43 go to state 369 state 228 @@ -8428,7 +8428,7 @@ state 251 217 expr_without_variable: variable '=' . expr 218 | variable '=' . '&' variable - 220 | variable '=' . '&' T_NEW class_name_reference @40 ctor_arguments + 220 | variable '=' . '&' T_NEW class_name_reference $@40 ctor_arguments T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -9353,17 +9353,17 @@ state 262 state 263 - 317 function_call: variable_without_objects '(' . @58 function_call_parameter_list ')' + 317 function_call: variable_without_objects '(' . $@58 function_call_parameter_list ')' - $default reduce using rule 316 (@58) + $default reduce using rule 316 ($@58) - @58 go to state 403 + $@58 go to state 403 state 264 - 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM . T_STRING '(' @56 function_call_parameter_list ')' - 315 | variable_class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects '(' @57 function_call_parameter_list ')' + 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM . T_STRING '(' $@56 function_call_parameter_list ')' + 315 | variable_class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects '(' $@57 function_call_parameter_list ')' 398 static_member: variable_class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects 463 class_constant: variable_class_name T_PAAMAYIM_NEKUDOTAYIM . T_STRING @@ -9379,11 +9379,11 @@ state 264 state 265 - 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR . @61 object_property @62 method_or_not variable_properties + 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR . $@61 object_property $@62 method_or_not variable_properties - $default reduce using rule 384 (@61) + $default reduce using rule 384 ($@61) - @61 go to state 406 + $@61 go to state 406 state 266 @@ -9576,10 +9576,10 @@ state 270 state 271 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -9601,8 +9601,8 @@ state 271 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 456 internal_functions_in_yacc: T_EVAL '(' expr . ')' T_LOGICAL_OR shift, and go to state 222 @@ -9636,10 +9636,10 @@ state 271 state 272 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -9661,16 +9661,16 @@ state 272 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr - 288 | '@' @49 expr . + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr + 288 | '@' $@49 expr . $default reduce using rule 288 (expr_without_variable) state 273 - 305 function_call: T_NAMESPACE T_NS_SEPARATOR . namespace_name '(' @52 function_call_parameter_list ')' + 305 function_call: T_NAMESPACE T_NS_SEPARATOR . namespace_name '(' $@52 function_call_parameter_list ')' 320 class_name: T_NAMESPACE T_NS_SEPARATOR . namespace_name T_STRING shift, and go to state 111 @@ -9681,7 +9681,7 @@ state 273 state 274 6 namespace_name: namespace_name . T_NS_SEPARATOR T_STRING - 307 function_call: T_NS_SEPARATOR namespace_name . '(' @53 function_call_parameter_list ')' + 307 function_call: T_NS_SEPARATOR namespace_name . '(' $@53 function_call_parameter_list ')' 321 class_name: T_NS_SEPARATOR namespace_name . T_NS_SEPARATOR shift, and go to state 213 @@ -9692,8 +9692,8 @@ state 274 state 275 - 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM . T_STRING '(' @54 function_call_parameter_list ')' - 311 | class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects '(' @55 function_call_parameter_list ')' + 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM . T_STRING '(' $@54 function_call_parameter_list ')' + 311 | class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects '(' $@55 function_call_parameter_list ')' 397 static_member: class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects T_STRING shift, and go to state 412 @@ -9708,8 +9708,8 @@ state 275 state 276 - 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM . T_STRING '(' @56 function_call_parameter_list ')' - 315 | variable_class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects '(' @57 function_call_parameter_list ')' + 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM . T_STRING '(' $@56 function_call_parameter_list ')' + 315 | variable_class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects '(' $@57 function_call_parameter_list ')' 398 static_member: variable_class_name T_PAAMAYIM_NEKUDOTAYIM . variable_without_objects T_STRING shift, and go to state 413 @@ -9756,7 +9756,7 @@ state 279 state 280 - 222 expr_without_variable: T_NEW class_name_reference @41 . ctor_arguments + 222 expr_without_variable: T_NEW class_name_reference $@41 . ctor_arguments '(' shift, and go to state 416 @@ -9780,11 +9780,11 @@ state 281 state 282 - 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR . @59 object_property @60 dynamic_class_name_variable_properties + 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR . $@59 object_property $@60 dynamic_class_name_variable_properties - $default reduce using rule 327 (@59) + $default reduce using rule 327 ($@59) - @59 go to state 419 + $@59 go to state 419 state 283 @@ -9808,10 +9808,10 @@ state 284 state 285 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -9833,8 +9833,8 @@ state 285 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 336 exit_expr: '(' expr . ')' T_LOGICAL_OR shift, and go to state 222 @@ -9868,12 +9868,12 @@ state 285 state 286 - 38 unticked_statement: T_IF '(' expr . ')' @5 statement @6 elseif_list else_single - 41 | T_IF '(' expr . ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single T_ENDIF ';' - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 38 unticked_statement: T_IF '(' expr . ')' $@5 statement $@6 elseif_list else_single + 41 | T_IF '(' expr . ')' ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single T_ENDIF ';' + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -9895,8 +9895,8 @@ state 286 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -10013,14 +10013,14 @@ state 288 state 289 - 47 unticked_statement: T_DO @11 statement . T_WHILE '(' @12 expr ')' ';' + 47 unticked_statement: T_DO $@11 statement . T_WHILE '(' $@12 expr ')' ';' T_WHILE shift, and go to state 423 state 290 - 44 unticked_statement: T_WHILE '(' @9 . expr ')' @10 while_statement + 44 unticked_statement: T_WHILE '(' $@9 . expr ')' $@10 while_statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -10097,7 +10097,7 @@ state 290 state 291 - 51 unticked_statement: T_FOR '(' for_expr . ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: T_FOR '(' for_expr . ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement ';' shift, and go to state 425 @@ -10105,7 +10105,7 @@ state 291 state 292 211 for_expr: non_empty_for_expr . - 213 non_empty_for_expr: non_empty_for_expr . ',' @38 expr + 213 non_empty_for_expr: non_empty_for_expr . ',' $@38 expr ',' shift, and go to state 426 @@ -10115,10 +10115,10 @@ state 292 state 293 214 non_empty_for_expr: expr . - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -10140,8 +10140,8 @@ state 293 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -10175,7 +10175,7 @@ state 293 state 294 - 72 unticked_statement: T_FOREACH '(' expr_without_variable . T_AS @19 variable foreach_optional_arg ')' @20 foreach_statement + 72 unticked_statement: T_FOREACH '(' expr_without_variable . T_AS $@19 variable foreach_optional_arg ')' $@20 foreach_statement 380 expr: expr_without_variable . T_AS shift, and go to state 427 @@ -10185,10 +10185,10 @@ state 294 state 295 - 69 unticked_statement: T_FOREACH '(' variable . T_AS @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement + 69 unticked_statement: T_FOREACH '(' variable . T_AS $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement 217 expr_without_variable: variable . '=' expr 218 | variable . '=' '&' variable - 220 | variable . '=' '&' T_NEW class_name_reference @40 ctor_arguments + 220 | variable . '=' '&' T_NEW class_name_reference $@40 ctor_arguments 224 | variable . T_PLUS_EQUAL expr 225 | variable . T_MINUS_EQUAL expr 226 | variable . T_MUL_EQUAL expr @@ -10224,7 +10224,7 @@ state 295 state 296 - 74 unticked_statement: T_DECLARE @21 '(' . declare_list ')' declare_statement + 74 unticked_statement: T_DECLARE $@21 '(' . declare_list ')' declare_statement T_STRING shift, and go to state 429 @@ -10233,11 +10233,11 @@ state 296 state 297 - 53 unticked_statement: T_SWITCH '(' expr . ')' @16 switch_case_list - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 53 unticked_statement: T_SWITCH '(' expr . ')' $@16 switch_case_list + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -10259,8 +10259,8 @@ state 297 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -10358,7 +10358,7 @@ state 303 state 304 - 81 unticked_statement: T_TRY @22 '{' . inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' . inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches $default reduce using rule 28 (inner_statement_list) @@ -10595,7 +10595,7 @@ state 321 state 322 452 internal_functions_in_yacc: T_ISSET '(' isset_variables . ')' - 461 isset_variables: isset_variables . ',' @68 variable + 461 isset_variables: isset_variables . ',' $@68 variable ',' shift, and go to state 453 ')' shift, and go to state 454 @@ -10617,7 +10617,7 @@ state 324 state 325 - 216 expr_without_variable: T_LIST '(' @39 . assignment_list ')' '=' expr + 216 expr_without_variable: T_LIST '(' $@39 . assignment_list ')' '=' expr T_STRING shift, and go to state 111 T_VARIABLE shift, and go to state 33 @@ -10673,10 +10673,10 @@ state 326 state 327 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -10698,8 +10698,8 @@ state 327 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 432 non_empty_array_pair_list: expr . T_DOUBLE_ARROW expr 433 | expr . 436 | expr . T_DOUBLE_ARROW '&' w_variable @@ -10759,11 +10759,11 @@ state 329 state 330 - 444 encaps_var: T_VARIABLE '[' . @67 encaps_var_offset ']' + 444 encaps_var: T_VARIABLE '[' . $@67 encaps_var_offset ']' - $default reduce using rule 443 (@67) + $default reduce using rule 443 ($@67) - @67 go to state 467 + $@67 go to state 467 state 331 @@ -10799,10 +10799,10 @@ state 334 state 335 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -10824,8 +10824,8 @@ state 335 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 446 encaps_var: T_DOLLAR_OPEN_CURLY_BRACES expr . '}' T_LOGICAL_OR shift, and go to state 222 @@ -10888,7 +10888,7 @@ state 339 state 340 6 namespace_name: namespace_name . T_NS_SEPARATOR T_STRING - 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name . '(' @52 function_call_parameter_list ')' + 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name . '(' $@52 function_call_parameter_list ')' 320 class_name: T_NAMESPACE T_NS_SEPARATOR namespace_name . 366 scalar: T_NAMESPACE T_NS_SEPARATOR namespace_name . @@ -10901,7 +10901,7 @@ state 340 state 341 - 15 top_statement: T_NAMESPACE '{' @3 . top_statement_list '}' + 15 top_statement: T_NAMESPACE '{' $@3 . top_statement_list '}' $default reduce using rule 4 (top_statement_list) @@ -10917,20 +10917,20 @@ state 342 state 343 - 13 top_statement: T_NAMESPACE namespace_name '{' . @2 top_statement_list '}' + 13 top_statement: T_NAMESPACE namespace_name '{' . $@2 top_statement_list '}' - $default reduce using rule 12 (@2) + $default reduce using rule 12 ($@2) - @2 go to state 474 + $@2 go to state 474 state 344 - 307 function_call: T_NS_SEPARATOR namespace_name '(' . @53 function_call_parameter_list ')' + 307 function_call: T_NS_SEPARATOR namespace_name '(' . $@53 function_call_parameter_list ')' - $default reduce using rule 306 (@53) + $default reduce using rule 306 ($@53) - @53 go to state 475 + $@53 go to state 475 state 345 @@ -10949,7 +10949,7 @@ state 346 state 347 - 27 inner_statement_list: inner_statement_list @4 . inner_statement + 27 inner_statement_list: inner_statement_list $@4 . inner_statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -11059,10 +11059,10 @@ state 347 state 348 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -11084,8 +11084,8 @@ state 348 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 409 compound_variable: '$' '{' expr . '}' T_LOGICAL_OR shift, and go to state 222 @@ -11140,7 +11140,7 @@ state 351 state 352 - 303 function_call: namespace_name '(' @51 . function_call_parameter_list ')' + 303 function_call: namespace_name '(' $@51 . function_call_parameter_list ')' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -11241,16 +11241,16 @@ state 354 state 355 - 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from . @30 implements_list '{' class_statement_list '}' + 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from . $@30 implements_list '{' class_statement_list '}' - $default reduce using rule 100 (@30) + $default reduce using rule 100 ($@30) - @30 go to state 492 + $@30 go to state 492 state 356 - 103 unticked_class_declaration_statement: interface_entry T_STRING @31 . interface_extends_list '{' class_statement_list '}' + 103 unticked_class_declaration_statement: interface_entry T_STRING $@31 . interface_extends_list '{' class_statement_list '}' T_EXTENDS shift, and go to state 493 @@ -11261,11 +11261,11 @@ state 356 state 357 - 99 unticked_function_declaration_statement: function is_reference T_STRING . @29 '(' parameter_list ')' '{' inner_statement_list '}' + 99 unticked_function_declaration_statement: function is_reference T_STRING . $@29 '(' parameter_list ')' '{' inner_statement_list '}' - $default reduce using rule 98 (@29) + $default reduce using rule 98 ($@29) - @29 go to state 495 + $@29 go to state 495 state 358 @@ -11279,7 +11279,7 @@ state 358 state 359 - 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING . '(' @54 function_call_parameter_list ')' + 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING . '(' $@54 function_call_parameter_list ')' 462 class_constant: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING . '(' shift, and go to state 497 @@ -11289,7 +11289,7 @@ state 359 state 360 - 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects . '(' @55 function_call_parameter_list ')' + 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects . '(' $@55 function_call_parameter_list ')' 397 static_member: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects . '(' shift, and go to state 498 @@ -11323,7 +11323,7 @@ state 362 state 363 - 244 expr_without_variable: expr T_LOGICAL_OR @44 . expr + 244 expr_without_variable: expr T_LOGICAL_OR $@44 . expr T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -11400,10 +11400,10 @@ state 363 state 364 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 247 | expr T_LOGICAL_XOR expr . 248 | expr . '|' expr @@ -11426,8 +11426,8 @@ state 364 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_AND shift, and go to state 224 '?' shift, and go to state 225 @@ -11459,7 +11459,7 @@ state 364 state 365 - 246 expr_without_variable: expr T_LOGICAL_AND @45 . expr + 246 expr_without_variable: expr T_LOGICAL_AND $@45 . expr T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -11536,16 +11536,16 @@ state 365 state 366 - 277 expr_without_variable: expr '?' ':' . @48 expr + 277 expr_without_variable: expr '?' ':' . $@48 expr - $default reduce using rule 276 (@48) + $default reduce using rule 276 ($@48) - @48 go to state 502 + $@48 go to state 502 state 367 - 275 expr_without_variable: expr '?' @46 . expr ':' @47 expr + 275 expr_without_variable: expr '?' $@46 . expr ':' $@47 expr T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -11622,7 +11622,7 @@ state 367 state 368 - 240 expr_without_variable: expr T_BOOLEAN_OR @42 . expr + 240 expr_without_variable: expr T_BOOLEAN_OR $@42 . expr T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -11699,7 +11699,7 @@ state 368 state 369 - 242 expr_without_variable: expr T_BOOLEAN_AND @43 . expr + 242 expr_without_variable: expr T_BOOLEAN_AND $@43 . expr T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -11776,10 +11776,10 @@ state 369 state 370 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 248 | expr '|' expr . @@ -11802,8 +11802,8 @@ state 370 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '^' shift, and go to state 229 '&' shift, and go to state 230 @@ -11830,10 +11830,10 @@ state 370 state 371 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -11856,8 +11856,8 @@ state 371 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '&' shift, and go to state 230 T_IS_NOT_IDENTICAL shift, and go to state 231 @@ -11883,10 +11883,10 @@ state 371 state 372 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -11909,8 +11909,8 @@ state 372 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_IS_NOT_IDENTICAL shift, and go to state 231 T_IS_IDENTICAL shift, and go to state 232 @@ -11935,10 +11935,10 @@ state 372 state 373 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -11961,8 +11961,8 @@ state 373 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '<' shift, and go to state 235 '>' shift, and go to state 236 @@ -11988,10 +11988,10 @@ state 373 state 374 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12014,8 +12014,8 @@ state 374 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '<' shift, and go to state 235 '>' shift, and go to state 236 @@ -12041,10 +12041,10 @@ state 374 state 375 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12067,8 +12067,8 @@ state 375 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '<' shift, and go to state 235 '>' shift, and go to state 236 @@ -12094,10 +12094,10 @@ state 375 state 376 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12120,8 +12120,8 @@ state 376 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '<' shift, and go to state 235 '>' shift, and go to state 236 @@ -12147,10 +12147,10 @@ state 376 state 377 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12173,8 +12173,8 @@ state 377 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_SR shift, and go to state 239 T_SL shift, and go to state 240 @@ -12196,10 +12196,10 @@ state 377 state 378 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12222,8 +12222,8 @@ state 378 269 | expr '>' expr . 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_SR shift, and go to state 239 T_SL shift, and go to state 240 @@ -12245,10 +12245,10 @@ state 378 state 379 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12271,8 +12271,8 @@ state 379 270 | expr . T_IS_GREATER_OR_EQUAL expr 270 | expr T_IS_GREATER_OR_EQUAL expr . 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_SR shift, and go to state 239 T_SL shift, and go to state 240 @@ -12294,10 +12294,10 @@ state 379 state 380 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12320,8 +12320,8 @@ state 380 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_SR shift, and go to state 239 T_SL shift, and go to state 240 @@ -12343,10 +12343,10 @@ state 380 state 381 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12369,8 +12369,8 @@ state 381 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '+' shift, and go to state 241 '-' shift, and go to state 242 @@ -12385,10 +12385,10 @@ state 381 state 382 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12411,8 +12411,8 @@ state 382 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '+' shift, and go to state 241 '-' shift, and go to state 242 @@ -12427,10 +12427,10 @@ state 382 state 383 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12453,8 +12453,8 @@ state 383 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '*' shift, and go to state 244 '/' shift, and go to state 245 @@ -12466,10 +12466,10 @@ state 383 state 384 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12492,8 +12492,8 @@ state 384 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '*' shift, and go to state 244 '/' shift, and go to state 245 @@ -12505,10 +12505,10 @@ state 384 state 385 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12531,8 +12531,8 @@ state 385 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '*' shift, and go to state 244 '/' shift, and go to state 245 @@ -12544,10 +12544,10 @@ state 385 state 386 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12570,8 +12570,8 @@ state 386 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_INSTANCEOF shift, and go to state 247 @@ -12580,10 +12580,10 @@ state 386 state 387 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12606,8 +12606,8 @@ state 387 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_INSTANCEOF shift, and go to state 247 @@ -12616,10 +12616,10 @@ state 387 state 388 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12642,8 +12642,8 @@ state 388 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_INSTANCEOF shift, and go to state 247 @@ -12660,7 +12660,7 @@ state 389 state 390 218 expr_without_variable: variable '=' '&' . variable - 220 | variable '=' '&' . T_NEW class_name_reference @40 ctor_arguments + 220 | variable '=' '&' . T_NEW class_name_reference $@40 ctor_arguments T_NEW shift, and go to state 506 T_STRING shift, and go to state 111 @@ -12687,10 +12687,10 @@ state 390 state 391 217 expr_without_variable: variable '=' expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12712,8 +12712,8 @@ state 391 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -12745,10 +12745,10 @@ state 391 state 392 234 expr_without_variable: variable T_SR_EQUAL expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12770,8 +12770,8 @@ state 392 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -12803,10 +12803,10 @@ state 392 state 393 233 expr_without_variable: variable T_SL_EQUAL expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12828,8 +12828,8 @@ state 393 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -12861,10 +12861,10 @@ state 393 state 394 232 expr_without_variable: variable T_XOR_EQUAL expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12886,8 +12886,8 @@ state 394 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -12919,10 +12919,10 @@ state 394 state 395 231 expr_without_variable: variable T_OR_EQUAL expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -12944,8 +12944,8 @@ state 395 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -12977,10 +12977,10 @@ state 395 state 396 230 expr_without_variable: variable T_AND_EQUAL expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -13002,8 +13002,8 @@ state 396 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -13035,10 +13035,10 @@ state 396 state 397 229 expr_without_variable: variable T_MOD_EQUAL expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -13060,8 +13060,8 @@ state 397 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -13093,10 +13093,10 @@ state 397 state 398 228 expr_without_variable: variable T_CONCAT_EQUAL expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -13118,8 +13118,8 @@ state 398 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -13151,10 +13151,10 @@ state 398 state 399 227 expr_without_variable: variable T_DIV_EQUAL expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -13176,8 +13176,8 @@ state 399 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -13209,10 +13209,10 @@ state 399 state 400 226 expr_without_variable: variable T_MUL_EQUAL expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -13234,8 +13234,8 @@ state 400 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -13267,10 +13267,10 @@ state 400 state 401 225 expr_without_variable: variable T_MINUS_EQUAL expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -13292,8 +13292,8 @@ state 401 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -13325,10 +13325,10 @@ state 401 state 402 224 expr_without_variable: variable T_PLUS_EQUAL expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -13350,8 +13350,8 @@ state 402 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -13382,7 +13382,7 @@ state 402 state 403 - 317 function_call: variable_without_objects '(' @58 . function_call_parameter_list ')' + 317 function_call: variable_without_objects '(' $@58 . function_call_parameter_list ')' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -13464,7 +13464,7 @@ state 403 state 404 - 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING . '(' @56 function_call_parameter_list ')' + 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING . '(' $@56 function_call_parameter_list ')' 463 class_constant: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING . '(' shift, and go to state 509 @@ -13474,7 +13474,7 @@ state 404 state 405 - 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects . '(' @57 function_call_parameter_list ')' + 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects . '(' $@57 function_call_parameter_list ')' 398 static_member: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects . '(' shift, and go to state 510 @@ -13484,7 +13484,7 @@ state 405 state 406 - 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR @61 . object_property @62 method_or_not variable_properties + 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR $@61 . object_property $@62 method_or_not variable_properties T_STRING shift, and go to state 511 T_VARIABLE shift, and go to state 33 @@ -13502,10 +13502,10 @@ state 406 state 407 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -13527,8 +13527,8 @@ state 407 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 411 dim_offset: expr . T_LOGICAL_OR shift, and go to state 222 @@ -13570,10 +13570,10 @@ state 408 state 409 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -13595,8 +13595,8 @@ state 409 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 406 reference_variable: reference_variable '{' expr . '}' T_LOGICAL_OR shift, and go to state 222 @@ -13638,7 +13638,7 @@ state 410 state 411 6 namespace_name: namespace_name . T_NS_SEPARATOR T_STRING - 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name . '(' @52 function_call_parameter_list ')' + 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name . '(' $@52 function_call_parameter_list ')' 320 class_name: T_NAMESPACE T_NS_SEPARATOR namespace_name . T_NS_SEPARATOR shift, and go to state 213 @@ -13649,14 +13649,14 @@ state 411 state 412 - 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING . '(' @54 function_call_parameter_list ')' + 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING . '(' $@54 function_call_parameter_list ')' '(' shift, and go to state 497 state 413 - 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING . '(' @56 function_call_parameter_list ')' + 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING . '(' $@56 function_call_parameter_list ')' '(' shift, and go to state 509 @@ -13762,7 +13762,7 @@ state 416 state 417 - 222 expr_without_variable: T_NEW class_name_reference @41 ctor_arguments . + 222 expr_without_variable: T_NEW class_name_reference $@41 ctor_arguments . $default reduce using rule 222 (expr_without_variable) @@ -13776,7 +13776,7 @@ state 418 state 419 - 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR @59 . object_property @60 dynamic_class_name_variable_properties + 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR $@59 . object_property $@60 dynamic_class_name_variable_properties T_STRING shift, and go to state 511 T_VARIABLE shift, and go to state 33 @@ -13801,23 +13801,23 @@ state 420 state 421 - 38 unticked_statement: T_IF '(' expr ')' . @5 statement @6 elseif_list else_single - 41 | T_IF '(' expr ')' . ':' @7 inner_statement_list @8 new_elseif_list new_else_single T_ENDIF ';' + 38 unticked_statement: T_IF '(' expr ')' . $@5 statement $@6 elseif_list else_single + 41 | T_IF '(' expr ')' . ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single T_ENDIF ';' ':' shift, and go to state 521 - $default reduce using rule 36 (@5) + $default reduce using rule 36 ($@5) - @5 go to state 522 + $@5 go to state 522 state 422 208 echo_expr_list: echo_expr_list ',' expr . - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -13839,8 +13839,8 @@ state 422 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -13874,18 +13874,18 @@ state 422 state 423 - 47 unticked_statement: T_DO @11 statement T_WHILE . '(' @12 expr ')' ';' + 47 unticked_statement: T_DO $@11 statement T_WHILE . '(' $@12 expr ')' ';' '(' shift, and go to state 523 state 424 - 44 unticked_statement: T_WHILE '(' @9 expr . ')' @10 while_statement - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 44 unticked_statement: T_WHILE '(' $@9 expr . ')' $@10 while_statement + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -13907,8 +13907,8 @@ state 424 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -13941,38 +13941,38 @@ state 424 state 425 - 51 unticked_statement: T_FOR '(' for_expr ';' . @13 for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: 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 525 + $@13 go to state 525 state 426 - 213 non_empty_for_expr: non_empty_for_expr ',' . @38 expr + 213 non_empty_for_expr: non_empty_for_expr ',' . $@38 expr - $default reduce using rule 212 (@38) + $default reduce using rule 212 ($@38) - @38 go to state 526 + $@38 go to state 526 state 427 - 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS . @19 variable foreach_optional_arg ')' @20 foreach_statement + 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS . $@19 variable foreach_optional_arg ')' $@20 foreach_statement - $default reduce using rule 70 (@19) + $default reduce using rule 70 ($@19) - @19 go to state 527 + $@19 go to state 527 state 428 - 69 unticked_statement: T_FOREACH '(' variable T_AS . @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement + 69 unticked_statement: T_FOREACH '(' variable T_AS . $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement - $default reduce using rule 67 (@17) + $default reduce using rule 67 ($@17) - @17 go to state 528 + $@17 go to state 528 state 429 @@ -13984,7 +13984,7 @@ state 429 state 430 - 74 unticked_statement: T_DECLARE @21 '(' declare_list . ')' declare_statement + 74 unticked_statement: T_DECLARE $@21 '(' declare_list . ')' declare_statement 127 declare_list: declare_list . ',' T_STRING '=' static_scalar ',' shift, and go to state 530 @@ -13993,11 +13993,11 @@ state 430 state 431 - 53 unticked_statement: T_SWITCH '(' expr ')' . @16 switch_case_list + 53 unticked_statement: T_SWITCH '(' expr ')' . $@16 switch_case_list - $default reduce using rule 52 (@16) + $default reduce using rule 52 ($@16) - @16 go to state 532 + $@16 go to state 532 state 432 @@ -14136,14 +14136,14 @@ state 442 state 443 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 81 unticked_statement: T_TRY @22 '{' inner_statement_list . '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list . '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches '}' shift, and go to state 540 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 444 @@ -14170,10 +14170,10 @@ state 446 state 447 176 global_var: '$' '{' expr . '}' - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -14195,8 +14195,8 @@ state 447 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -14286,11 +14286,11 @@ state 452 state 453 - 461 isset_variables: isset_variables ',' . @68 variable + 461 isset_variables: isset_variables ',' . $@68 variable - $default reduce using rule 460 (@68) + $default reduce using rule 460 ($@68) - @68 go to state 546 + $@68 go to state 546 state 454 @@ -14316,7 +14316,7 @@ state 456 state 457 - 426 assignment_list_element: T_LIST . '(' @66 assignment_list ')' + 426 assignment_list_element: T_LIST . '(' $@66 assignment_list ')' '(' shift, and go to state 547 @@ -14330,7 +14330,7 @@ state 458 state 459 - 216 expr_without_variable: T_LIST '(' @39 assignment_list . ')' '=' expr + 216 expr_without_variable: T_LIST '(' $@39 assignment_list . ')' '=' expr 422 assignment_list: assignment_list . ',' assignment_list_element ',' shift, and go to state 548 @@ -14537,7 +14537,7 @@ state 466 state 467 - 444 encaps_var: T_VARIABLE '[' @67 . encaps_var_offset ']' + 444 encaps_var: T_VARIABLE '[' $@67 . encaps_var_offset ']' T_STRING shift, and go to state 554 T_VARIABLE shift, and go to state 555 @@ -14646,28 +14646,28 @@ state 471 state 472 - 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name '(' . @52 function_call_parameter_list ')' + 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name '(' . $@52 function_call_parameter_list ')' - $default reduce using rule 304 (@52) + $default reduce using rule 304 ($@52) - @52 go to state 559 + $@52 go to state 559 state 473 - 3 top_statement_list: top_statement_list . @1 top_statement - 15 top_statement: T_NAMESPACE '{' @3 top_statement_list . '}' + 3 top_statement_list: top_statement_list . $@1 top_statement + 15 top_statement: T_NAMESPACE '{' $@3 top_statement_list . '}' '}' shift, and go to state 560 - $default reduce using rule 2 (@1) + $default reduce using rule 2 ($@1) - @1 go to state 4 + $@1 go to state 4 state 474 - 13 top_statement: T_NAMESPACE namespace_name '{' @2 . top_statement_list '}' + 13 top_statement: T_NAMESPACE namespace_name '{' $@2 . top_statement_list '}' $default reduce using rule 4 (top_statement_list) @@ -14676,7 +14676,7 @@ state 474 state 475 - 307 function_call: T_NS_SEPARATOR namespace_name '(' @53 . function_call_parameter_list ')' + 307 function_call: T_NS_SEPARATOR namespace_name '(' $@53 . function_call_parameter_list ')' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -14765,7 +14765,7 @@ state 476 state 477 - 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) @@ -14826,7 +14826,7 @@ state 482 state 483 - 303 function_call: namespace_name '(' @51 function_call_parameter_list . ')' + 303 function_call: namespace_name '(' $@51 function_call_parameter_list . ')' ')' shift, and go to state 565 @@ -14858,7 +14858,7 @@ state 486 167 non_empty_function_call_parameter_list: variable . 217 expr_without_variable: variable . '=' expr 218 | variable . '=' '&' variable - 220 | variable . '=' '&' T_NEW class_name_reference @40 ctor_arguments + 220 | variable . '=' '&' T_NEW class_name_reference $@40 ctor_arguments 224 | variable . T_PLUS_EQUAL expr 225 | variable . T_MINUS_EQUAL expr 226 | variable . T_MUL_EQUAL expr @@ -14958,7 +14958,7 @@ state 491 state 492 - 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from @30 . implements_list '{' class_statement_list '}' + 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from $@30 . implements_list '{' class_statement_list '}' T_IMPLEMENTS shift, and go to state 570 @@ -14982,14 +14982,14 @@ state 493 state 494 - 103 unticked_class_declaration_statement: interface_entry T_STRING @31 interface_extends_list . '{' class_statement_list '}' + 103 unticked_class_declaration_statement: interface_entry T_STRING $@31 interface_extends_list . '{' class_statement_list '}' '{' shift, and go to state 574 state 495 - 99 unticked_function_declaration_statement: function is_reference T_STRING @29 . '(' parameter_list ')' '{' inner_statement_list '}' + 99 unticked_function_declaration_statement: function is_reference T_STRING $@29 . '(' parameter_list ')' '{' inner_statement_list '}' '(' shift, and go to state 575 @@ -15015,20 +15015,20 @@ state 496 state 497 - 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' . @54 function_call_parameter_list ')' + 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' . $@54 function_call_parameter_list ')' - $default reduce using rule 308 (@54) + $default reduce using rule 308 ($@54) - @54 go to state 581 + $@54 go to state 581 state 498 - 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' . @55 function_call_parameter_list ')' + 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' . $@55 function_call_parameter_list ')' - $default reduce using rule 310 (@55) + $default reduce using rule 310 ($@55) - @55 go to state 582 + $@55 go to state 582 state 499 @@ -15045,11 +15045,11 @@ state 499 state 500 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 244 | expr T_LOGICAL_OR @44 expr . - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 244 | expr T_LOGICAL_OR $@44 expr . + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -15071,8 +15071,8 @@ state 500 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_XOR shift, and go to state 223 T_LOGICAL_AND shift, and go to state 224 @@ -15105,11 +15105,11 @@ state 500 state 501 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr - 246 | expr T_LOGICAL_AND @45 expr . + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr + 246 | expr T_LOGICAL_AND $@45 expr . 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -15131,8 +15131,8 @@ state 501 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -15163,7 +15163,7 @@ state 501 state 502 - 277 expr_without_variable: expr '?' ':' @48 . expr + 277 expr_without_variable: expr '?' ':' $@48 . expr T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -15240,10 +15240,10 @@ state 502 state 503 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -15265,9 +15265,9 @@ state 503 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 275 | expr '?' @46 expr . ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 275 | expr '?' $@46 expr . ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -15300,11 +15300,11 @@ state 503 state 504 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 240 | expr T_BOOLEAN_OR @42 expr . - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 240 | expr T_BOOLEAN_OR $@42 expr . + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -15326,8 +15326,8 @@ state 504 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_BOOLEAN_AND shift, and go to state 227 '|' shift, and go to state 228 @@ -15356,11 +15356,11 @@ state 504 state 505 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 242 | expr T_BOOLEAN_AND @43 expr . - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 242 | expr T_BOOLEAN_AND $@43 expr . + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -15382,8 +15382,8 @@ state 505 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '|' shift, and go to state 228 '^' shift, and go to state 229 @@ -15411,7 +15411,7 @@ state 505 state 506 - 220 expr_without_variable: variable '=' '&' T_NEW . class_name_reference @40 ctor_arguments + 220 expr_without_variable: variable '=' '&' T_NEW . class_name_reference $@40 ctor_arguments T_STRING shift, and go to state 111 T_VARIABLE shift, and go to state 33 @@ -15441,27 +15441,27 @@ state 507 state 508 - 317 function_call: variable_without_objects '(' @58 function_call_parameter_list . ')' + 317 function_call: variable_without_objects '(' $@58 function_call_parameter_list . ')' ')' shift, and go to state 586 state 509 - 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' . @56 function_call_parameter_list ')' + 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' . $@56 function_call_parameter_list ')' - $default reduce using rule 312 (@56) + $default reduce using rule 312 ($@56) - @56 go to state 587 + $@56 go to state 587 state 510 - 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' . @57 function_call_parameter_list ')' + 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' . $@57 function_call_parameter_list ')' - $default reduce using rule 314 (@57) + $default reduce using rule 314 ($@57) - @57 go to state 588 + $@57 go to state 588 state 511 @@ -15550,20 +15550,20 @@ state 512 state 513 - 414 object_property: variable_without_objects . @65 + 414 object_property: variable_without_objects . $@65 - $default reduce using rule 413 (@65) + $default reduce using rule 413 ($@65) - @65 go to state 590 + $@65 go to state 590 state 514 - 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR @61 object_property . @62 method_or_not variable_properties + 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR $@61 object_property . $@62 method_or_not variable_properties - $default reduce using rule 385 (@62) + $default reduce using rule 385 ($@62) - @62 go to state 591 + $@62 go to state 591 state 515 @@ -15608,25 +15608,25 @@ state 519 state 520 - 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR @59 object_property . @60 dynamic_class_name_variable_properties + 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR $@59 object_property . $@60 dynamic_class_name_variable_properties - $default reduce using rule 328 (@60) + $default reduce using rule 328 ($@60) - @60 go to state 595 + $@60 go to state 595 state 521 - 41 unticked_statement: T_IF '(' expr ')' ':' . @7 inner_statement_list @8 new_elseif_list new_else_single T_ENDIF ';' + 41 unticked_statement: T_IF '(' expr ')' ':' . $@7 inner_statement_list $@8 new_elseif_list new_else_single T_ENDIF ';' - $default reduce using rule 39 (@7) + $default reduce using rule 39 ($@7) - @7 go to state 596 + $@7 go to state 596 state 522 - 38 unticked_statement: T_IF '(' expr ')' @5 . statement @6 elseif_list else_single + 38 unticked_statement: T_IF '(' expr ')' $@5 . statement $@6 elseif_list else_single T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -15724,25 +15724,25 @@ state 522 state 523 - 47 unticked_statement: T_DO @11 statement T_WHILE '(' . @12 expr ')' ';' + 47 unticked_statement: T_DO $@11 statement T_WHILE '(' . $@12 expr ')' ';' - $default reduce using rule 46 (@12) + $default reduce using rule 46 ($@12) - @12 go to state 598 + $@12 go to state 598 state 524 - 44 unticked_statement: T_WHILE '(' @9 expr ')' . @10 while_statement + 44 unticked_statement: T_WHILE '(' $@9 expr ')' . $@10 while_statement - $default reduce using rule 43 (@10) + $default reduce using rule 43 ($@10) - @10 go to state 599 + $@10 go to state 599 state 525 - 51 unticked_statement: T_FOR '(' for_expr ';' @13 . for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: T_FOR '(' for_expr ';' $@13 . for_expr ';' $@14 for_expr ')' $@15 for_statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -15823,7 +15823,7 @@ state 525 state 526 - 213 non_empty_for_expr: non_empty_for_expr ',' @38 . expr + 213 non_empty_for_expr: non_empty_for_expr ',' $@38 . expr T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -15900,7 +15900,7 @@ state 526 state 527 - 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS @19 . variable foreach_optional_arg ')' @20 foreach_statement + 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS $@19 . variable foreach_optional_arg ')' $@20 foreach_statement T_STRING shift, and go to state 111 T_VARIABLE shift, and go to state 33 @@ -15925,7 +15925,7 @@ state 527 state 528 - 69 unticked_statement: T_FOREACH '(' variable T_AS @17 . foreach_variable foreach_optional_arg ')' @18 foreach_statement + 69 unticked_statement: T_FOREACH '(' variable T_AS $@17 . foreach_variable foreach_optional_arg ')' $@18 foreach_statement '&' shift, and go to state 603 T_STRING shift, and go to state 111 @@ -15989,7 +15989,7 @@ state 530 state 531 - 74 unticked_statement: T_DECLARE @21 '(' declare_list ')' . declare_statement + 74 unticked_statement: T_DECLARE $@21 '(' declare_list ')' . declare_statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -16089,7 +16089,7 @@ state 531 state 532 - 53 unticked_statement: T_SWITCH '(' expr ')' @16 . switch_case_list + 53 unticked_statement: T_SWITCH '(' expr ')' $@16 . switch_case_list ':' shift, and go to state 611 '{' shift, and go to state 612 @@ -16183,7 +16183,7 @@ state 539 state 540 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' . T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' . T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches T_CATCH shift, and go to state 619 @@ -16248,7 +16248,7 @@ state 545 state 546 - 461 isset_variables: isset_variables ',' @68 . variable + 461 isset_variables: isset_variables ',' $@68 . variable T_STRING shift, and go to state 111 T_VARIABLE shift, and go to state 33 @@ -16273,11 +16273,11 @@ state 546 state 547 - 426 assignment_list_element: T_LIST '(' . @66 assignment_list ')' + 426 assignment_list_element: T_LIST '(' . $@66 assignment_list ')' - $default reduce using rule 425 (@66) + $default reduce using rule 425 ($@66) - @66 go to state 622 + $@66 go to state 622 state 548 @@ -16311,7 +16311,7 @@ state 548 state 549 - 216 expr_without_variable: T_LIST '(' @39 assignment_list ')' . '=' expr + 216 expr_without_variable: T_LIST '(' $@39 assignment_list ')' . '=' expr '=' shift, and go to state 624 @@ -16344,10 +16344,10 @@ state 550 state 551 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -16369,8 +16369,8 @@ state 551 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 432 non_empty_array_pair_list: expr T_DOUBLE_ARROW expr . T_LOGICAL_OR shift, and go to state 222 @@ -16431,10 +16431,10 @@ state 552 state 553 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -16456,8 +16456,8 @@ state 553 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 430 non_empty_array_pair_list: non_empty_array_pair_list ',' expr . T_DOUBLE_ARROW expr 431 | non_empty_array_pair_list ',' expr . 434 | non_empty_array_pair_list ',' expr . T_DOUBLE_ARROW '&' w_variable @@ -16516,17 +16516,17 @@ state 556 state 557 - 444 encaps_var: T_VARIABLE '[' @67 encaps_var_offset . ']' + 444 encaps_var: T_VARIABLE '[' $@67 encaps_var_offset . ']' ']' shift, and go to state 628 state 558 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -16548,8 +16548,8 @@ state 558 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 447 encaps_var: T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr . ']' '}' T_LOGICAL_OR shift, and go to state 222 @@ -16583,7 +16583,7 @@ state 558 state 559 - 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name '(' @52 . function_call_parameter_list ')' + 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name '(' $@52 . function_call_parameter_list ')' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -16665,26 +16665,26 @@ state 559 state 560 - 15 top_statement: T_NAMESPACE '{' @3 top_statement_list '}' . + 15 top_statement: T_NAMESPACE '{' $@3 top_statement_list '}' . $default reduce using rule 15 (top_statement) state 561 - 3 top_statement_list: top_statement_list . @1 top_statement - 13 top_statement: T_NAMESPACE namespace_name '{' @2 top_statement_list . '}' + 3 top_statement_list: top_statement_list . $@1 top_statement + 13 top_statement: T_NAMESPACE namespace_name '{' $@2 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 562 - 307 function_call: T_NS_SEPARATOR namespace_name '(' @53 function_call_parameter_list . ')' + 307 function_call: T_NS_SEPARATOR namespace_name '(' $@53 function_call_parameter_list . ')' ')' shift, and go to state 632 @@ -16705,7 +16705,7 @@ state 564 state 565 - 303 function_call: namespace_name '(' @51 function_call_parameter_list ')' . + 303 function_call: namespace_name '(' $@51 function_call_parameter_list ')' . $default reduce using rule 303 (function_call) @@ -16831,7 +16831,7 @@ state 570 state 571 - 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from @30 implements_list . '{' class_statement_list '}' + 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from $@30 implements_list . '{' class_statement_list '}' '{' shift, and go to state 639 @@ -16855,7 +16855,7 @@ state 573 state 574 - 103 unticked_class_declaration_statement: interface_entry T_STRING @31 interface_extends_list '{' . class_statement_list '}' + 103 unticked_class_declaration_statement: interface_entry T_STRING $@31 interface_extends_list '{' . class_statement_list '}' $default reduce using rule 182 (class_statement_list) @@ -16864,7 +16864,7 @@ state 574 state 575 - 99 unticked_function_declaration_statement: function is_reference T_STRING @29 '(' . parameter_list ')' '{' inner_statement_list '}' + 99 unticked_function_declaration_statement: function is_reference T_STRING $@29 '(' . parameter_list ')' '{' inner_statement_list '}' T_STRING shift, and go to state 111 T_ARRAY shift, and go to state 576 @@ -16928,7 +16928,7 @@ state 580 state 581 - 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @54 . function_call_parameter_list ')' + 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@54 . function_call_parameter_list ')' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -17010,7 +17010,7 @@ state 581 state 582 - 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @55 . function_call_parameter_list ')' + 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@55 . function_call_parameter_list ')' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -17092,10 +17092,10 @@ state 582 state 583 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -17117,9 +17117,9 @@ state 583 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr - 277 | expr '?' ':' @48 expr . + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr + 277 | expr '?' ':' $@48 expr . T_BOOLEAN_OR shift, and go to state 226 T_BOOLEAN_AND shift, and go to state 227 @@ -17149,32 +17149,32 @@ state 583 state 584 - 275 expr_without_variable: expr '?' @46 expr ':' . @47 expr + 275 expr_without_variable: expr '?' $@46 expr ':' . $@47 expr - $default reduce using rule 274 (@47) + $default reduce using rule 274 ($@47) - @47 go to state 649 + $@47 go to state 649 state 585 - 220 expr_without_variable: variable '=' '&' T_NEW class_name_reference . @40 ctor_arguments + 220 expr_without_variable: variable '=' '&' T_NEW class_name_reference . $@40 ctor_arguments - $default reduce using rule 219 (@40) + $default reduce using rule 219 ($@40) - @40 go to state 650 + $@40 go to state 650 state 586 - 317 function_call: variable_without_objects '(' @58 function_call_parameter_list ')' . + 317 function_call: variable_without_objects '(' $@58 function_call_parameter_list ')' . $default reduce using rule 317 (function_call) state 587 - 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @56 . function_call_parameter_list ')' + 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@56 . function_call_parameter_list ')' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -17256,7 +17256,7 @@ state 587 state 588 - 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @57 . function_call_parameter_list ')' + 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@57 . function_call_parameter_list ')' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -17338,10 +17338,10 @@ state 588 state 589 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -17363,8 +17363,8 @@ state 589 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 419 variable_name: '{' expr . '}' T_LOGICAL_OR shift, and go to state 222 @@ -17398,14 +17398,14 @@ state 589 state 590 - 414 object_property: variable_without_objects @65 . + 414 object_property: variable_without_objects $@65 . $default reduce using rule 414 (object_property) state 591 - 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR @61 object_property @62 . method_or_not variable_properties + 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR $@61 object_property $@62 . method_or_not variable_properties '(' shift, and go to state 654 @@ -17580,7 +17580,7 @@ state 594 state 595 - 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR @59 object_property @60 . dynamic_class_name_variable_properties + 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR $@59 object_property $@60 . dynamic_class_name_variable_properties $default reduce using rule 332 (dynamic_class_name_variable_properties) @@ -17589,7 +17589,7 @@ state 595 state 596 - 41 unticked_statement: T_IF '(' expr ')' ':' @7 . inner_statement_list @8 new_elseif_list new_else_single T_ENDIF ';' + 41 unticked_statement: T_IF '(' expr ')' ':' $@7 . inner_statement_list $@8 new_elseif_list new_else_single T_ENDIF ';' $default reduce using rule 28 (inner_statement_list) @@ -17598,16 +17598,16 @@ state 596 state 597 - 38 unticked_statement: T_IF '(' expr ')' @5 statement . @6 elseif_list else_single + 38 unticked_statement: T_IF '(' expr ')' $@5 statement . $@6 elseif_list else_single - $default reduce using rule 37 (@6) + $default reduce using rule 37 ($@6) - @6 go to state 660 + $@6 go to state 660 state 598 - 47 unticked_statement: T_DO @11 statement T_WHILE '(' @12 . expr ')' ';' + 47 unticked_statement: T_DO $@11 statement T_WHILE '(' $@12 . expr ')' ';' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -17684,7 +17684,7 @@ state 598 state 599 - 44 unticked_statement: T_WHILE '(' @9 expr ')' @10 . while_statement + 44 unticked_statement: T_WHILE '(' $@9 expr ')' $@10 . while_statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -17784,18 +17784,18 @@ state 599 state 600 - 51 unticked_statement: T_FOR '(' for_expr ';' @13 for_expr . ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: T_FOR '(' for_expr ';' $@13 for_expr . ';' $@14 for_expr ')' $@15 for_statement ';' shift, and go to state 665 state 601 - 213 non_empty_for_expr: non_empty_for_expr ',' @38 expr . - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 213 non_empty_for_expr: non_empty_for_expr ',' $@38 expr . + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -17817,8 +17817,8 @@ state 601 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -17852,7 +17852,7 @@ state 601 state 602 - 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS @19 variable . foreach_optional_arg ')' @20 foreach_statement + 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS $@19 variable . foreach_optional_arg ')' $@20 foreach_statement T_DOUBLE_ARROW shift, and go to state 666 @@ -17888,7 +17888,7 @@ state 603 state 604 - 69 unticked_statement: T_FOREACH '(' variable T_AS @17 foreach_variable . foreach_optional_arg ')' @18 foreach_statement + 69 unticked_statement: T_FOREACH '(' variable T_AS $@17 foreach_variable . foreach_optional_arg ')' $@18 foreach_statement T_DOUBLE_ARROW shift, and go to state 666 @@ -17936,7 +17936,7 @@ state 609 state 610 - 74 unticked_statement: T_DECLARE @21 '(' declare_list ')' declare_statement . + 74 unticked_statement: T_DECLARE $@21 '(' declare_list ')' declare_statement . $default reduce using rule 74 (unticked_statement) @@ -17967,7 +17967,7 @@ state 612 state 613 - 53 unticked_statement: T_SWITCH '(' expr ')' @16 switch_case_list . + 53 unticked_statement: T_SWITCH '(' expr ')' $@16 switch_case_list . $default reduce using rule 53 (unticked_statement) @@ -18023,7 +18023,7 @@ state 618 state 619 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH . '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH . '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches '(' shift, and go to state 680 @@ -18037,14 +18037,14 @@ state 620 state 621 - 461 isset_variables: isset_variables ',' @68 variable . + 461 isset_variables: isset_variables ',' $@68 variable . $default reduce using rule 461 (isset_variables) state 622 - 426 assignment_list_element: T_LIST '(' @66 . assignment_list ')' + 426 assignment_list_element: T_LIST '(' $@66 . assignment_list ')' T_STRING shift, and go to state 111 T_VARIABLE shift, and go to state 33 @@ -18081,7 +18081,7 @@ state 623 state 624 - 216 expr_without_variable: T_LIST '(' @39 assignment_list ')' '=' . expr + 216 expr_without_variable: T_LIST '(' $@39 assignment_list ')' '=' . expr T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -18251,7 +18251,7 @@ state 627 state 628 - 444 encaps_var: T_VARIABLE '[' @67 encaps_var_offset ']' . + 444 encaps_var: T_VARIABLE '[' $@67 encaps_var_offset ']' . $default reduce using rule 444 (encaps_var) @@ -18265,21 +18265,21 @@ state 629 state 630 - 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name '(' @52 function_call_parameter_list . ')' + 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name '(' $@52 function_call_parameter_list . ')' ')' shift, and go to state 686 state 631 - 13 top_statement: T_NAMESPACE namespace_name '{' @2 top_statement_list '}' . + 13 top_statement: T_NAMESPACE namespace_name '{' $@2 top_statement_list '}' . $default reduce using rule 13 (top_statement) state 632 - 307 function_call: T_NS_SEPARATOR namespace_name '(' @53 function_call_parameter_list ')' . + 307 function_call: T_NS_SEPARATOR namespace_name '(' $@53 function_call_parameter_list ')' . $default reduce using rule 307 (function_call) @@ -18332,7 +18332,7 @@ state 636 170 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' variable . 217 expr_without_variable: variable . '=' expr 218 | variable . '=' '&' variable - 220 | variable . '=' '&' T_NEW class_name_reference @40 ctor_arguments + 220 | variable . '=' '&' T_NEW class_name_reference $@40 ctor_arguments 224 | variable . T_PLUS_EQUAL expr 225 | variable . T_MINUS_EQUAL expr 226 | variable . T_MUL_EQUAL expr @@ -18389,7 +18389,7 @@ state 638 state 639 - 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from @30 implements_list '{' . class_statement_list '}' + 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from $@30 implements_list '{' . class_statement_list '}' $default reduce using rule 182 (class_statement_list) @@ -18410,7 +18410,7 @@ state 640 state 641 - 103 unticked_class_declaration_statement: interface_entry T_STRING @31 interface_extends_list '{' class_statement_list . '}' + 103 unticked_class_declaration_statement: interface_entry T_STRING $@31 interface_extends_list '{' class_statement_list . '}' 181 class_statement_list: class_statement_list . class_statement T_CONST shift, and go to state 691 @@ -18435,7 +18435,7 @@ state 641 state 642 - 99 unticked_function_declaration_statement: function is_reference T_STRING @29 '(' parameter_list . ')' '{' inner_statement_list '}' + 99 unticked_function_declaration_statement: function is_reference T_STRING $@29 '(' parameter_list . ')' '{' inner_statement_list '}' ')' shift, and go to state 706 @@ -18490,21 +18490,21 @@ state 646 state 647 - 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @54 function_call_parameter_list . ')' + 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@54 function_call_parameter_list . ')' ')' shift, and go to state 712 state 648 - 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @55 function_call_parameter_list . ')' + 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@55 function_call_parameter_list . ')' ')' shift, and go to state 713 state 649 - 275 expr_without_variable: expr '?' @46 expr ':' @47 . expr + 275 expr_without_variable: expr '?' $@46 expr ':' $@47 . expr T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -18581,7 +18581,7 @@ state 649 state 650 - 220 expr_without_variable: variable '=' '&' T_NEW class_name_reference @40 . ctor_arguments + 220 expr_without_variable: variable '=' '&' T_NEW class_name_reference $@40 . ctor_arguments '(' shift, and go to state 416 @@ -18592,14 +18592,14 @@ state 650 state 651 - 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @56 function_call_parameter_list . ')' + 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@56 function_call_parameter_list . ')' ')' shift, and go to state 716 state 652 - 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @57 function_call_parameter_list . ')' + 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@57 function_call_parameter_list . ')' ')' shift, and go to state 717 @@ -18613,16 +18613,16 @@ state 653 state 654 - 393 method_or_not: '(' . @64 function_call_parameter_list ')' + 393 method_or_not: '(' . $@64 function_call_parameter_list ')' - $default reduce using rule 392 (@64) + $default reduce using rule 392 ($@64) - @64 go to state 718 + $@64 go to state 718 state 655 - 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR @61 object_property @62 method_or_not . variable_properties + 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR $@61 object_property $@62 method_or_not . variable_properties $default reduce using rule 389 (variable_properties) @@ -18638,10 +18638,10 @@ state 656 state 657 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -18663,8 +18663,8 @@ state 657 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 416 object_dim_list: object_dim_list '{' expr . '}' T_LOGICAL_OR shift, and go to state 222 @@ -18698,7 +18698,7 @@ state 657 state 658 - 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR @59 object_property @60 dynamic_class_name_variable_properties . + 329 dynamic_class_name_reference: base_variable T_OBJECT_OPERATOR $@59 object_property $@60 dynamic_class_name_variable_properties . 331 dynamic_class_name_variable_properties: dynamic_class_name_variable_properties . dynamic_class_name_variable_property T_OBJECT_OPERATOR shift, and go to state 722 @@ -18710,21 +18710,21 @@ state 658 state 659 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 41 unticked_statement: T_IF '(' expr ')' ':' @7 inner_statement_list . @8 new_elseif_list new_else_single T_ENDIF ';' + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 41 unticked_statement: T_IF '(' expr ')' ':' $@7 inner_statement_list . $@8 new_elseif_list new_else_single T_ENDIF ';' - T_ELSEIF reduce using rule 40 (@8) - T_ELSE reduce using rule 40 (@8) - T_ENDIF reduce using rule 40 (@8) - $default reduce using rule 26 (@4) + T_ELSEIF reduce using rule 40 ($@8) + T_ELSE reduce using rule 40 ($@8) + T_ENDIF reduce using rule 40 ($@8) + $default reduce using rule 26 ($@4) - @4 go to state 347 - @8 go to state 724 + $@4 go to state 347 + $@8 go to state 724 state 660 - 38 unticked_statement: T_IF '(' expr ')' @5 statement @6 . elseif_list else_single + 38 unticked_statement: T_IF '(' expr ')' $@5 statement $@6 . elseif_list else_single $default reduce using rule 141 (elseif_list) @@ -18733,11 +18733,11 @@ state 660 state 661 - 47 unticked_statement: T_DO @11 statement T_WHILE '(' @12 expr . ')' ';' - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 47 unticked_statement: T_DO $@11 statement T_WHILE '(' $@12 expr . ')' ';' + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -18759,8 +18759,8 @@ state 661 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -18809,18 +18809,18 @@ state 663 state 664 - 44 unticked_statement: T_WHILE '(' @9 expr ')' @10 while_statement . + 44 unticked_statement: T_WHILE '(' $@9 expr ')' $@10 while_statement . $default reduce using rule 44 (unticked_statement) state 665 - 51 unticked_statement: T_FOR '(' for_expr ';' @13 for_expr ';' . @14 for_expr ')' @15 for_statement + 51 unticked_statement: 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 728 + $@14 go to state 728 state 666 @@ -18852,7 +18852,7 @@ state 666 state 667 - 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS @19 variable foreach_optional_arg . ')' @20 foreach_statement + 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS $@19 variable foreach_optional_arg . ')' $@20 foreach_statement ')' shift, and go to state 730 @@ -18866,7 +18866,7 @@ state 668 state 669 - 69 unticked_statement: T_FOREACH '(' variable T_AS @17 foreach_variable foreach_optional_arg . ')' @18 foreach_statement + 69 unticked_statement: T_FOREACH '(' variable T_AS $@17 foreach_variable foreach_optional_arg . ')' $@18 foreach_statement ')' shift, and go to state 731 @@ -18903,14 +18903,14 @@ state 670 state 671 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 125 declare_statement: ':' inner_statement_list . T_ENDDECLARE ';' T_ENDDECLARE shift, and go to state 733 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 672 @@ -18925,8 +18925,8 @@ state 672 state 673 130 switch_case_list: ':' case_list . T_ENDSWITCH ';' - 134 case_list: case_list . T_CASE expr case_separator @32 inner_statement_list - 136 | case_list . T_DEFAULT case_separator @33 inner_statement_list + 134 case_list: case_list . T_CASE expr case_separator $@32 inner_statement_list + 136 | case_list . T_DEFAULT case_separator $@33 inner_statement_list T_ENDSWITCH shift, and go to state 735 T_CASE shift, and go to state 736 @@ -18945,8 +18945,8 @@ state 674 state 675 128 switch_case_list: '{' case_list . '}' - 134 case_list: case_list . T_CASE expr case_separator @32 inner_statement_list - 136 | case_list . T_DEFAULT case_separator @33 inner_statement_list + 134 case_list: case_list . T_CASE expr case_separator $@32 inner_statement_list + 136 | case_list . T_DEFAULT case_separator $@33 inner_statement_list T_CASE shift, and go to state 736 T_DEFAULT shift, and go to state 737 @@ -19033,17 +19033,17 @@ state 679 state 680 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' . @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' . $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches - $default reduce using rule 77 (@23) + $default reduce using rule 77 ($@23) - @23 go to state 742 + $@23 go to state 742 state 681 422 assignment_list: assignment_list . ',' assignment_list_element - 426 assignment_list_element: T_LIST '(' @66 assignment_list . ')' + 426 assignment_list_element: T_LIST '(' $@66 assignment_list . ')' ',' shift, and go to state 548 ')' shift, and go to state 743 @@ -19051,11 +19051,11 @@ state 681 state 682 - 216 expr_without_variable: T_LIST '(' @39 assignment_list ')' '=' expr . - 240 | expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 216 expr_without_variable: T_LIST '(' $@39 assignment_list ')' '=' expr . + 240 | expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -19077,8 +19077,8 @@ state 682 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr '?' shift, and go to state 225 T_BOOLEAN_OR shift, and go to state 226 @@ -19135,10 +19135,10 @@ state 683 state 684 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -19160,8 +19160,8 @@ state 684 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr 430 non_empty_array_pair_list: non_empty_array_pair_list ',' expr T_DOUBLE_ARROW expr . T_LOGICAL_OR shift, and go to state 222 @@ -19203,7 +19203,7 @@ state 685 state 686 - 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name '(' @52 function_call_parameter_list ')' . + 305 function_call: T_NAMESPACE T_NS_SEPARATOR namespace_name '(' $@52 function_call_parameter_list ')' . $default reduce using rule 305 (function_call) @@ -19224,7 +19224,7 @@ state 688 state 689 - 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from @30 implements_list '{' class_statement_list . '}' + 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from $@30 implements_list '{' class_statement_list . '}' 181 class_statement_list: class_statement_list . class_statement T_CONST shift, and go to state 691 @@ -19312,7 +19312,7 @@ state 698 state 699 - 103 unticked_class_declaration_statement: interface_entry T_STRING @31 interface_extends_list '{' class_statement_list '}' . + 103 unticked_class_declaration_statement: interface_entry T_STRING $@31 interface_extends_list '{' class_statement_list '}' . $default reduce using rule 103 (unticked_class_declaration_statement) @@ -19326,16 +19326,16 @@ state 700 state 701 - 184 class_statement: variable_modifiers . @36 class_variable_declaration ';' + 184 class_statement: variable_modifiers . $@36 class_variable_declaration ';' - $default reduce using rule 183 (@36) + $default reduce using rule 183 ($@36) - @36 go to state 747 + $@36 go to state 747 state 702 - 187 class_statement: method_modifiers . function is_reference T_STRING @37 '(' parameter_list ')' method_body + 187 class_statement: method_modifiers . function is_reference T_STRING $@37 '(' parameter_list ')' method_body T_FUNCTION shift, and go to state 46 @@ -19379,7 +19379,7 @@ state 705 state 706 - 99 unticked_function_declaration_statement: function is_reference T_STRING @29 '(' parameter_list ')' . '{' inner_statement_list '}' + 99 unticked_function_declaration_statement: function is_reference T_STRING $@29 '(' parameter_list ')' . '{' inner_statement_list '}' '{' shift, and go to state 752 @@ -19451,24 +19451,24 @@ state 711 state 712 - 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @54 function_call_parameter_list ')' . + 309 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@54 function_call_parameter_list ')' . $default reduce using rule 309 (function_call) state 713 - 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @55 function_call_parameter_list ')' . + 311 function_call: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@55 function_call_parameter_list ')' . $default reduce using rule 311 (function_call) state 714 - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -19490,9 +19490,9 @@ state 714 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 275 | expr '?' @46 expr ':' @47 expr . - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 275 | expr '?' $@46 expr ':' $@47 expr . + 277 | expr . '?' ':' $@48 expr T_BOOLEAN_OR shift, and go to state 226 T_BOOLEAN_AND shift, and go to state 227 @@ -19522,28 +19522,28 @@ state 714 state 715 - 220 expr_without_variable: variable '=' '&' T_NEW class_name_reference @40 ctor_arguments . + 220 expr_without_variable: variable '=' '&' T_NEW class_name_reference $@40 ctor_arguments . $default reduce using rule 220 (expr_without_variable) state 716 - 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' @56 function_call_parameter_list ')' . + 313 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' $@56 function_call_parameter_list ')' . $default reduce using rule 313 (function_call) state 717 - 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' @57 function_call_parameter_list ')' . + 315 function_call: variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' $@57 function_call_parameter_list ')' . $default reduce using rule 315 (function_call) state 718 - 393 method_or_not: '(' @64 . function_call_parameter_list ')' + 393 method_or_not: '(' $@64 . function_call_parameter_list ')' T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -19625,7 +19625,7 @@ state 718 state 719 - 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR @61 object_property @62 method_or_not variable_properties . + 386 variable: base_variable_with_function_calls T_OBJECT_OPERATOR $@61 object_property $@62 method_or_not variable_properties . 388 variable_properties: variable_properties . variable_property T_OBJECT_OPERATOR shift, and go to state 760 @@ -19676,7 +19676,7 @@ state 723 state 724 - 41 unticked_statement: T_IF '(' expr ')' ':' @7 inner_statement_list @8 . new_elseif_list new_else_single T_ENDIF ';' + 41 unticked_statement: T_IF '(' expr ')' ':' $@7 inner_statement_list $@8 . new_elseif_list new_else_single T_ENDIF ';' $default reduce using rule 144 (new_elseif_list) @@ -19685,8 +19685,8 @@ state 724 state 725 - 38 unticked_statement: T_IF '(' expr ')' @5 statement @6 elseif_list . else_single - 143 elseif_list: elseif_list . T_ELSEIF '(' expr ')' @34 statement + 38 unticked_statement: T_IF '(' expr ')' $@5 statement $@6 elseif_list . else_single + 143 elseif_list: elseif_list . T_ELSEIF '(' expr ')' $@34 statement T_ELSEIF shift, and go to state 764 T_ELSE shift, and go to state 765 @@ -19700,26 +19700,26 @@ state 725 state 726 - 47 unticked_statement: T_DO @11 statement T_WHILE '(' @12 expr ')' . ';' + 47 unticked_statement: T_DO $@11 statement T_WHILE '(' $@12 expr ')' . ';' ';' shift, and go to state 767 state 727 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 140 while_statement: ':' inner_statement_list . T_ENDWHILE ';' T_ENDWHILE shift, and go to state 768 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 728 - 51 unticked_statement: T_FOR '(' for_expr ';' @13 for_expr ';' @14 . for_expr ')' @15 for_statement + 51 unticked_statement: T_FOR '(' for_expr ';' $@13 for_expr ';' $@14 . for_expr ')' $@15 for_statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -19807,20 +19807,20 @@ state 729 state 730 - 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS @19 variable foreach_optional_arg ')' . @20 foreach_statement + 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS $@19 variable foreach_optional_arg ')' . $@20 foreach_statement - $default reduce using rule 71 (@20) + $default reduce using rule 71 ($@20) - @20 go to state 770 + $@20 go to state 770 state 731 - 69 unticked_statement: T_FOREACH '(' variable T_AS @17 foreach_variable foreach_optional_arg ')' . @18 foreach_statement + 69 unticked_statement: T_FOREACH '(' variable T_AS $@17 foreach_variable foreach_optional_arg ')' . $@18 foreach_statement - $default reduce using rule 68 (@18) + $default reduce using rule 68 ($@18) - @18 go to state 771 + $@18 go to state 771 state 732 @@ -19840,8 +19840,8 @@ state 733 state 734 131 switch_case_list: ':' ';' case_list . T_ENDSWITCH ';' - 134 case_list: case_list . T_CASE expr case_separator @32 inner_statement_list - 136 | case_list . T_DEFAULT case_separator @33 inner_statement_list + 134 case_list: case_list . T_CASE expr case_separator $@32 inner_statement_list + 136 | case_list . T_DEFAULT case_separator $@33 inner_statement_list T_ENDSWITCH shift, and go to state 773 T_CASE shift, and go to state 736 @@ -19857,7 +19857,7 @@ state 735 state 736 - 134 case_list: case_list T_CASE . expr case_separator @32 inner_statement_list + 134 case_list: case_list T_CASE . expr case_separator $@32 inner_statement_list T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -19934,7 +19934,7 @@ state 736 state 737 - 136 case_list: case_list T_DEFAULT . case_separator @33 inner_statement_list + 136 case_list: case_list T_DEFAULT . case_separator $@33 inner_statement_list ':' shift, and go to state 776 ';' shift, and go to state 777 @@ -19945,8 +19945,8 @@ state 737 state 738 129 switch_case_list: '{' ';' case_list . '}' - 134 case_list: case_list . T_CASE expr case_separator @32 inner_statement_list - 136 | case_list . T_DEFAULT case_separator @33 inner_statement_list + 134 case_list: case_list . T_CASE expr case_separator $@32 inner_statement_list + 136 | case_list . T_DEFAULT case_separator $@33 inner_statement_list T_CASE shift, and go to state 736 T_DEFAULT shift, and go to state 737 @@ -19979,7 +19979,7 @@ state 741 state 742 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 . fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 . fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches T_STRING shift, and go to state 111 T_NAMESPACE shift, and go to state 488 @@ -19991,7 +19991,7 @@ state 742 state 743 - 426 assignment_list_element: T_LIST '(' @66 assignment_list ')' . + 426 assignment_list_element: T_LIST '(' $@66 assignment_list ')' . $default reduce using rule 426 (assignment_list_element) @@ -20005,7 +20005,7 @@ state 744 state 745 - 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from @30 implements_list '{' class_statement_list '}' . + 101 unticked_class_declaration_statement: class_entry_type T_STRING extends_from $@30 implements_list '{' class_statement_list '}' . $default reduce using rule 101 (unticked_class_declaration_statement) @@ -20019,7 +20019,7 @@ state 746 state 747 - 184 class_statement: variable_modifiers @36 . class_variable_declaration ';' + 184 class_statement: variable_modifiers $@36 . class_variable_declaration ';' T_VARIABLE shift, and go to state 783 @@ -20028,7 +20028,7 @@ state 747 state 748 - 187 class_statement: method_modifiers function . is_reference T_STRING @37 '(' parameter_list ')' method_body + 187 class_statement: method_modifiers function . is_reference T_STRING $@37 '(' parameter_list ')' method_body '&' shift, and go to state 219 @@ -20060,7 +20060,7 @@ state 751 state 752 - 99 unticked_function_declaration_statement: function is_reference T_STRING @29 '(' parameter_list ')' '{' . inner_statement_list '}' + 99 unticked_function_declaration_statement: function is_reference T_STRING $@29 '(' parameter_list ')' '{' . inner_statement_list '}' $default reduce using rule 28 (inner_statement_list) @@ -20143,14 +20143,14 @@ state 758 state 759 - 393 method_or_not: '(' @64 function_call_parameter_list . ')' + 393 method_or_not: '(' $@64 function_call_parameter_list . ')' ')' shift, and go to state 795 state 760 - 391 variable_property: T_OBJECT_OPERATOR . object_property @63 method_or_not + 391 variable_property: T_OBJECT_OPERATOR . object_property $@63 method_or_not T_STRING shift, and go to state 511 T_VARIABLE shift, and go to state 33 @@ -20182,8 +20182,8 @@ state 762 state 763 - 41 unticked_statement: T_IF '(' expr ')' ':' @7 inner_statement_list @8 new_elseif_list . new_else_single T_ENDIF ';' - 146 new_elseif_list: new_elseif_list . T_ELSEIF '(' expr ')' ':' @35 inner_statement_list + 41 unticked_statement: T_IF '(' expr ')' ':' $@7 inner_statement_list $@8 new_elseif_list . new_else_single T_ENDIF ';' + 146 new_elseif_list: new_elseif_list . T_ELSEIF '(' expr ')' ':' $@35 inner_statement_list T_ELSEIF shift, and go to state 797 T_ELSE shift, and go to state 798 @@ -20195,7 +20195,7 @@ state 763 state 764 - 143 elseif_list: elseif_list T_ELSEIF . '(' expr ')' @34 statement + 143 elseif_list: elseif_list T_ELSEIF . '(' expr ')' $@34 statement '(' shift, and go to state 800 @@ -20300,14 +20300,14 @@ state 765 state 766 - 38 unticked_statement: T_IF '(' expr ')' @5 statement @6 elseif_list else_single . + 38 unticked_statement: T_IF '(' expr ')' $@5 statement $@6 elseif_list else_single . $default reduce using rule 38 (unticked_statement) state 767 - 47 unticked_statement: T_DO @11 statement T_WHILE '(' @12 expr ')' ';' . + 47 unticked_statement: T_DO $@11 statement T_WHILE '(' $@12 expr ')' ';' . $default reduce using rule 47 (unticked_statement) @@ -20321,14 +20321,14 @@ state 768 state 769 - 51 unticked_statement: T_FOR '(' for_expr ';' @13 for_expr ';' @14 for_expr . ')' @15 for_statement + 51 unticked_statement: T_FOR '(' for_expr ';' $@13 for_expr ';' $@14 for_expr . ')' $@15 for_statement ')' shift, and go to state 803 state 770 - 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS @19 variable foreach_optional_arg ')' @20 . foreach_statement + 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS $@19 variable foreach_optional_arg ')' $@20 . foreach_statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -20428,7 +20428,7 @@ state 770 state 771 - 69 unticked_statement: T_FOREACH '(' variable T_AS @17 foreach_variable foreach_optional_arg ')' @18 . foreach_statement + 69 unticked_statement: T_FOREACH '(' variable T_AS $@17 foreach_variable foreach_optional_arg ')' $@18 . foreach_statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -20549,11 +20549,11 @@ state 774 state 775 - 134 case_list: case_list T_CASE expr . case_separator @32 inner_statement_list - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 134 case_list: case_list T_CASE expr . case_separator $@32 inner_statement_list + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -20575,8 +20575,8 @@ state 775 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -20626,11 +20626,11 @@ state 777 state 778 - 136 case_list: case_list T_DEFAULT case_separator . @33 inner_statement_list + 136 case_list: case_list T_DEFAULT case_separator . $@33 inner_statement_list - $default reduce using rule 135 (@33) + $default reduce using rule 135 ($@33) - @33 go to state 810 + $@33 go to state 810 state 779 @@ -20672,11 +20672,11 @@ state 780 state 781 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name . @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name . $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches - $default reduce using rule 78 (@24) + $default reduce using rule 78 ($@24) - @24 go to state 812 + $@24 go to state 812 state 782 @@ -20721,7 +20721,7 @@ state 783 state 784 - 184 class_statement: variable_modifiers @36 class_variable_declaration . ';' + 184 class_statement: variable_modifiers $@36 class_variable_declaration . ';' 202 class_variable_declaration: class_variable_declaration . ',' T_VARIABLE 203 | class_variable_declaration . ',' T_VARIABLE '=' static_scalar @@ -20731,7 +20731,7 @@ state 784 state 785 - 187 class_statement: method_modifiers function is_reference . T_STRING @37 '(' parameter_list ')' method_body + 187 class_statement: method_modifiers function is_reference . T_STRING $@37 '(' parameter_list ')' method_body T_STRING shift, and go to state 817 @@ -20745,14 +20745,14 @@ state 786 state 787 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 99 unticked_function_declaration_statement: function is_reference T_STRING @29 '(' parameter_list ')' '{' inner_statement_list . '}' + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 99 unticked_function_declaration_statement: function is_reference T_STRING $@29 '(' parameter_list ')' '{' inner_statement_list . '}' '}' shift, and go to state 819 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 788 @@ -20781,14 +20781,14 @@ state 790 state 791 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 294 expr_without_variable: function is_reference '(' @50 parameter_list ')' lexical_vars '{' inner_statement_list . '}' '}' shift, and go to state 823 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 792 @@ -20840,23 +20840,23 @@ state 794 state 795 - 393 method_or_not: '(' @64 function_call_parameter_list ')' . + 393 method_or_not: '(' $@64 function_call_parameter_list ')' . $default reduce using rule 393 (method_or_not) state 796 - 391 variable_property: T_OBJECT_OPERATOR object_property . @63 method_or_not + 391 variable_property: T_OBJECT_OPERATOR object_property . $@63 method_or_not - $default reduce using rule 390 (@63) + $default reduce using rule 390 ($@63) - @63 go to state 826 + $@63 go to state 826 state 797 - 146 new_elseif_list: new_elseif_list T_ELSEIF . '(' expr ')' ':' @35 inner_statement_list + 146 new_elseif_list: new_elseif_list T_ELSEIF . '(' expr ')' ':' $@35 inner_statement_list '(' shift, and go to state 827 @@ -20870,14 +20870,14 @@ state 798 state 799 - 41 unticked_statement: T_IF '(' expr ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single . T_ENDIF ';' + 41 unticked_statement: T_IF '(' expr ')' ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single . T_ENDIF ';' T_ENDIF shift, and go to state 829 state 800 - 143 elseif_list: elseif_list T_ELSEIF '(' . expr ')' @34 statement + 143 elseif_list: elseif_list T_ELSEIF '(' . expr ')' $@34 statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -20968,11 +20968,11 @@ state 802 state 803 - 51 unticked_statement: T_FOR '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' . @15 for_statement + 51 unticked_statement: 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 831 + $@15 go to state 831 state 804 @@ -20993,14 +20993,14 @@ state 805 state 806 - 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS @19 variable foreach_optional_arg ')' @20 foreach_statement . + 72 unticked_statement: T_FOREACH '(' expr_without_variable T_AS $@19 variable foreach_optional_arg ')' $@20 foreach_statement . $default reduce using rule 72 (unticked_statement) state 807 - 69 unticked_statement: T_FOREACH '(' variable T_AS @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement . + 69 unticked_statement: T_FOREACH '(' variable T_AS $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement . $default reduce using rule 69 (unticked_statement) @@ -21014,16 +21014,16 @@ state 808 state 809 - 134 case_list: case_list T_CASE expr case_separator . @32 inner_statement_list + 134 case_list: case_list T_CASE expr case_separator . $@32 inner_statement_list - $default reduce using rule 133 (@32) + $default reduce using rule 133 ($@32) - @32 go to state 833 + $@32 go to state 833 state 810 - 136 case_list: case_list T_DEFAULT case_separator @33 . inner_statement_list + 136 case_list: case_list T_DEFAULT case_separator $@33 . inner_statement_list $default reduce using rule 28 (inner_statement_list) @@ -21039,7 +21039,7 @@ state 811 state 812 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 . T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 . T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches T_VARIABLE shift, and go to state 835 @@ -21091,18 +21091,18 @@ state 815 state 816 - 184 class_statement: variable_modifiers @36 class_variable_declaration ';' . + 184 class_statement: variable_modifiers $@36 class_variable_declaration ';' . $default reduce using rule 184 (class_statement) state 817 - 187 class_statement: method_modifiers function is_reference T_STRING . @37 '(' parameter_list ')' method_body + 187 class_statement: method_modifiers function is_reference T_STRING . $@37 '(' parameter_list ')' method_body - $default reduce using rule 186 (@37) + $default reduce using rule 186 ($@37) - @37 go to state 838 + $@37 go to state 838 state 818 @@ -21137,7 +21137,7 @@ state 818 state 819 - 99 unticked_function_declaration_statement: function is_reference T_STRING @29 '(' parameter_list ')' '{' inner_statement_list '}' . + 99 unticked_function_declaration_statement: function is_reference T_STRING $@29 '(' parameter_list ')' '{' inner_statement_list '}' . $default reduce using rule 99 (unticked_function_declaration_statement) @@ -21211,7 +21211,7 @@ state 825 state 826 - 391 variable_property: T_OBJECT_OPERATOR object_property @63 . method_or_not + 391 variable_property: T_OBJECT_OPERATOR object_property $@63 . method_or_not '(' shift, and go to state 654 @@ -21222,7 +21222,7 @@ state 826 state 827 - 146 new_elseif_list: new_elseif_list T_ELSEIF '(' . expr ')' ':' @35 inner_statement_list + 146 new_elseif_list: new_elseif_list T_ELSEIF '(' . expr ')' ':' $@35 inner_statement_list T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -21308,18 +21308,18 @@ state 828 state 829 - 41 unticked_statement: T_IF '(' expr ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single T_ENDIF . ';' + 41 unticked_statement: T_IF '(' expr ')' ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single T_ENDIF . ';' ';' shift, and go to state 846 state 830 - 143 elseif_list: elseif_list T_ELSEIF '(' expr . ')' @34 statement - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 143 elseif_list: elseif_list T_ELSEIF '(' expr . ')' $@34 statement + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -21341,8 +21341,8 @@ state 830 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -21375,7 +21375,7 @@ state 830 state 831 - 51 unticked_statement: T_FOR '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 . for_statement + 51 unticked_statement: T_FOR '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 . for_statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -21475,19 +21475,19 @@ state 831 state 832 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 123 foreach_statement: ':' inner_statement_list . T_ENDFOREACH ';' T_ENDFOREACH shift, and go to state 851 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 833 - 134 case_list: case_list T_CASE expr case_separator @32 . inner_statement_list + 134 case_list: case_list T_CASE expr case_separator $@32 . inner_statement_list $default reduce using rule 28 (inner_statement_list) @@ -21496,21 +21496,21 @@ state 833 state 834 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 136 case_list: case_list T_DEFAULT case_separator @33 inner_statement_list . + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 136 case_list: case_list T_DEFAULT case_separator $@33 inner_statement_list . T_ENDSWITCH reduce using rule 136 (case_list) T_CASE reduce using rule 136 (case_list) T_DEFAULT reduce using rule 136 (case_list) '}' reduce using rule 136 (case_list) - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 835 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE . ')' @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE . ')' $@25 '{' inner_statement_list '}' $@26 additional_catches ')' shift, and go to state 853 @@ -21534,7 +21534,7 @@ state 837 state 838 - 187 class_statement: method_modifiers function is_reference T_STRING @37 . '(' parameter_list ')' method_body + 187 class_statement: method_modifiers function is_reference T_STRING $@37 . '(' parameter_list ')' method_body '(' shift, and go to state 855 @@ -21569,18 +21569,18 @@ state 842 state 843 - 391 variable_property: T_OBJECT_OPERATOR object_property @63 method_or_not . + 391 variable_property: T_OBJECT_OPERATOR object_property $@63 method_or_not . $default reduce using rule 391 (variable_property) state 844 - 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr . ')' ':' @35 inner_statement_list - 240 expr_without_variable: expr . T_BOOLEAN_OR @42 expr - 242 | expr . T_BOOLEAN_AND @43 expr - 244 | expr . T_LOGICAL_OR @44 expr - 246 | expr . T_LOGICAL_AND @45 expr + 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr . ')' ':' $@35 inner_statement_list + 240 expr_without_variable: expr . T_BOOLEAN_OR $@42 expr + 242 | expr . T_BOOLEAN_AND $@43 expr + 244 | expr . T_LOGICAL_OR $@44 expr + 246 | expr . T_LOGICAL_AND $@45 expr 247 | expr . T_LOGICAL_XOR expr 248 | expr . '|' expr 249 | expr . '&' expr @@ -21602,8 +21602,8 @@ state 844 269 | expr . '>' expr 270 | expr . T_IS_GREATER_OR_EQUAL expr 271 | expr . T_INSTANCEOF class_name_reference - 275 | expr . '?' @46 expr ':' @47 expr - 277 | expr . '?' ':' @48 expr + 275 | expr . '?' $@46 expr ':' $@47 expr + 277 | expr . '?' ':' $@48 expr T_LOGICAL_OR shift, and go to state 222 T_LOGICAL_XOR shift, and go to state 223 @@ -21636,29 +21636,29 @@ state 844 state 845 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 150 new_else_single: T_ELSE ':' inner_statement_list . T_ENDIF reduce using rule 150 (new_else_single) - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 846 - 41 unticked_statement: T_IF '(' expr ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single T_ENDIF ';' . + 41 unticked_statement: T_IF '(' expr ')' ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single T_ENDIF ';' . $default reduce using rule 41 (unticked_statement) state 847 - 143 elseif_list: elseif_list T_ELSEIF '(' expr ')' . @34 statement + 143 elseif_list: elseif_list T_ELSEIF '(' expr ')' . $@34 statement - $default reduce using rule 142 (@34) + $default reduce using rule 142 ($@34) - @34 go to state 858 + $@34 go to state 858 state 848 @@ -21679,7 +21679,7 @@ state 849 state 850 - 51 unticked_statement: T_FOR '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement . + 51 unticked_statement: T_FOR '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement . $default reduce using rule 51 (unticked_statement) @@ -21693,25 +21693,25 @@ state 851 state 852 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 134 case_list: case_list T_CASE expr case_separator @32 inner_statement_list . + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 134 case_list: case_list T_CASE expr case_separator $@32 inner_statement_list . T_ENDSWITCH reduce using rule 134 (case_list) T_CASE reduce using rule 134 (case_list) T_DEFAULT reduce using rule 134 (case_list) '}' reduce using rule 134 (case_list) - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 853 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' . @25 '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' . $@25 '{' inner_statement_list '}' $@26 additional_catches - $default reduce using rule 79 (@25) + $default reduce using rule 79 ($@25) - @25 go to state 861 + $@25 go to state 861 state 854 @@ -21746,7 +21746,7 @@ state 854 state 855 - 187 class_statement: method_modifiers function is_reference T_STRING @37 '(' . parameter_list ')' method_body + 187 class_statement: method_modifiers function is_reference T_STRING $@37 '(' . parameter_list ')' method_body T_STRING shift, and go to state 111 T_ARRAY shift, and go to state 576 @@ -21772,14 +21772,14 @@ state 856 state 857 - 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr ')' . ':' @35 inner_statement_list + 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr ')' . ':' $@35 inner_statement_list ':' shift, and go to state 864 state 858 - 143 elseif_list: elseif_list T_ELSEIF '(' expr ')' @34 . statement + 143 elseif_list: elseif_list T_ELSEIF '(' expr ')' $@34 . statement T_REQUIRE_ONCE shift, and go to state 5 T_REQUIRE shift, and go to state 6 @@ -21877,14 +21877,14 @@ state 858 state 859 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 121 for_statement: ':' inner_statement_list . T_ENDFOR ';' T_ENDFOR shift, and go to state 866 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 860 @@ -21896,7 +21896,7 @@ state 860 state 861 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 . '{' inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 . '{' inner_statement_list '}' $@26 additional_catches '{' shift, and go to state 867 @@ -21910,23 +21910,23 @@ state 862 state 863 - 187 class_statement: method_modifiers function is_reference T_STRING @37 '(' parameter_list . ')' method_body + 187 class_statement: method_modifiers function is_reference T_STRING $@37 '(' parameter_list . ')' method_body ')' shift, and go to state 868 state 864 - 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr ')' ':' . @35 inner_statement_list + 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr ')' ':' . $@35 inner_statement_list - $default reduce using rule 145 (@35) + $default reduce using rule 145 ($@35) - @35 go to state 869 + $@35 go to state 869 state 865 - 143 elseif_list: elseif_list T_ELSEIF '(' expr ')' @34 statement . + 143 elseif_list: elseif_list T_ELSEIF '(' expr ')' $@34 statement . $default reduce using rule 143 (elseif_list) @@ -21940,7 +21940,7 @@ state 866 state 867 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' . inner_statement_list '}' @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' . inner_statement_list '}' $@26 additional_catches $default reduce using rule 28 (inner_statement_list) @@ -21949,7 +21949,7 @@ state 867 state 868 - 187 class_statement: method_modifiers function is_reference T_STRING @37 '(' parameter_list ')' . method_body + 187 class_statement: method_modifiers function is_reference T_STRING $@37 '(' parameter_list ')' . method_body ';' shift, and go to state 872 '{' shift, and go to state 873 @@ -21959,7 +21959,7 @@ state 868 state 869 - 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr ')' ':' @35 . inner_statement_list + 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr ')' ':' $@35 . inner_statement_list $default reduce using rule 28 (inner_statement_list) @@ -21975,14 +21975,14 @@ state 870 state 871 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list . '}' @26 additional_catches + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list . '}' $@26 additional_catches '}' shift, and go to state 876 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 872 @@ -22003,48 +22003,48 @@ state 873 state 874 - 187 class_statement: method_modifiers function is_reference T_STRING @37 '(' parameter_list ')' method_body . + 187 class_statement: method_modifiers function is_reference T_STRING $@37 '(' parameter_list ')' method_body . $default reduce using rule 187 (class_statement) state 875 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr ')' ':' @35 inner_statement_list . + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 146 new_elseif_list: new_elseif_list T_ELSEIF '(' expr ')' ':' $@35 inner_statement_list . T_ELSEIF reduce using rule 146 (new_elseif_list) T_ELSE reduce using rule 146 (new_elseif_list) T_ENDIF reduce using rule 146 (new_elseif_list) - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 876 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' . @26 additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' . $@26 additional_catches - $default reduce using rule 80 (@26) + $default reduce using rule 80 ($@26) - @26 go to state 878 + $@26 go to state 878 state 877 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 189 method_body: '{' inner_statement_list . '}' '}' shift, and go to state 879 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 878 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 . additional_catches + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 . additional_catches T_CATCH shift, and go to state 880 @@ -22064,14 +22064,14 @@ state 879 state 880 - 90 additional_catch: T_CATCH . '(' fully_qualified_class_name @27 T_VARIABLE ')' @28 '{' inner_statement_list '}' + 90 additional_catch: T_CATCH . '(' fully_qualified_class_name @27 T_VARIABLE ')' $@28 '{' inner_statement_list '}' '(' shift, and go to state 884 state 881 - 81 unticked_statement: T_TRY @22 '{' inner_statement_list '}' T_CATCH '(' @23 fully_qualified_class_name @24 T_VARIABLE ')' @25 '{' inner_statement_list '}' @26 additional_catches . + 81 unticked_statement: T_TRY $@22 '{' inner_statement_list '}' T_CATCH '(' $@23 fully_qualified_class_name $@24 T_VARIABLE ')' $@25 '{' inner_statement_list '}' $@26 additional_catches . $default reduce using rule 81 (unticked_statement) @@ -22097,7 +22097,7 @@ state 883 state 884 - 90 additional_catch: T_CATCH '(' . fully_qualified_class_name @27 T_VARIABLE ')' @28 '{' inner_statement_list '}' + 90 additional_catch: T_CATCH '(' . fully_qualified_class_name @27 T_VARIABLE ')' $@28 '{' inner_statement_list '}' T_STRING shift, and go to state 111 T_NAMESPACE shift, and go to state 488 @@ -22116,7 +22116,7 @@ state 885 state 886 - 90 additional_catch: T_CATCH '(' fully_qualified_class_name . @27 T_VARIABLE ')' @28 '{' inner_statement_list '}' + 90 additional_catch: T_CATCH '(' fully_qualified_class_name . @27 T_VARIABLE ')' $@28 '{' inner_statement_list '}' $default reduce using rule 88 (@27) @@ -22125,37 +22125,37 @@ state 886 state 887 - 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 . T_VARIABLE ')' @28 '{' inner_statement_list '}' + 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 . T_VARIABLE ')' $@28 '{' inner_statement_list '}' T_VARIABLE shift, and go to state 888 state 888 - 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE . ')' @28 '{' inner_statement_list '}' + 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE . ')' $@28 '{' inner_statement_list '}' ')' shift, and go to state 889 state 889 - 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' . @28 '{' inner_statement_list '}' + 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' . $@28 '{' inner_statement_list '}' - $default reduce using rule 89 (@28) + $default reduce using rule 89 ($@28) - @28 go to state 890 + $@28 go to state 890 state 890 - 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' @28 . '{' inner_statement_list '}' + 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' $@28 . '{' inner_statement_list '}' '{' shift, and go to state 891 state 891 - 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' @28 '{' . inner_statement_list '}' + 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' $@28 '{' . inner_statement_list '}' $default reduce using rule 28 (inner_statement_list) @@ -22164,18 +22164,18 @@ state 891 state 892 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' @28 '{' inner_statement_list . '}' + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' $@28 '{' inner_statement_list . '}' '}' shift, and go to state 893 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 347 + $@4 go to state 347 state 893 - 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' @28 '{' inner_statement_list '}' . + 90 additional_catch: T_CATCH '(' fully_qualified_class_name @27 T_VARIABLE ')' $@28 '{' inner_statement_list '}' . $default reduce using rule 90 (additional_catch) diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index b43841d6f..1753e9794 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_language_parser.y 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: zend_language_parser.y 312076 2011-06-12 01:43:10Z felipe $ */ /* * LALR shift/reduce conflicts and how they are resolved: @@ -211,7 +211,7 @@ inner_statement: statement: - unticked_statement { zend_do_ticks(TSRMLS_C); } + unticked_statement { DO_TICKS(); } | T_STRING ':' { zend_do_label(&$1 TSRMLS_CC); } ; @@ -291,11 +291,11 @@ unset_variable: ; function_declaration_statement: - unticked_function_declaration_statement { zend_do_ticks(TSRMLS_C); } + unticked_function_declaration_statement { DO_TICKS(); } ; class_declaration_statement: - unticked_class_declaration_statement { zend_do_ticks(TSRMLS_C); } + unticked_class_declaration_statement { DO_TICKS(); } ; diff --git a/Zend/zend_modules.h b/Zend/zend_modules.h index 3ca4344ce..4c7e477bb 100644 --- a/Zend/zend_modules.h +++ b/Zend/zend_modules.h @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_modules.h 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: zend_modules.h 314376 2011-08-06 14:47:44Z felipe $ */ #ifndef MODULES_H #define MODULES_H @@ -113,6 +113,8 @@ struct _zend_module_entry { #define ZEND_MOD_CONFLICTS(name) ZEND_MOD_CONFLICTS_EX(name, NULL, NULL) #define ZEND_MOD_OPTIONAL(name) ZEND_MOD_OPTIONAL_EX(name, NULL, NULL) +#define ZEND_MOD_END { NULL, NULL, NULL, 0 } + struct _zend_module_dep { const char *name; /* module name */ const char *rel; /* version relationship: NULL (exists), lt|le|eq|ge|gt (to given version) */ diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index 866fae180..8571d72d0 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_object_handlers.c 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: zend_object_handlers.c 310009 2011-04-07 13:35:27Z dmitry $ */ #include "zend.h" #include "zend_globals.h" @@ -374,7 +374,11 @@ zval *zend_std_read_property(zval *object, zval *member, int type TSRMLS_DC) /* } else { retval = &EG(uninitialized_zval_ptr); } - zval_ptr_dtor(&object); + if (EXPECTED(*retval != object)) { + zval_ptr_dtor(&object); + } else { + Z_DELREF_P(object); + } } else { if (zobj->ce->__get && guard && guard->in_get == 1) { if (Z_STRVAL_P(member)[0] == '\0') { diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index c09b8a0fb..2b0cbdb73 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_vm_def.h 309300 2011-03-16 11:14:33Z dmitry $ */ +/* $Id: zend_vm_def.h 313129 2011-07-11 10:31:49Z dmitry $ */ /* If you change this file, please regenerate the zend_vm_execute.h and * zend_vm_opcodes.h files by running: @@ -900,10 +900,16 @@ ZEND_VM_HANDLER(40, ZEND_ECHO, CONST|TMP|VAR|CV, ANY) zval *z = GET_OP1_ZVAL_PTR(BP_VAR_R); if (OP1_TYPE != IS_CONST && - Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL && - zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) { - zend_print_variable(&z_copy); - zval_dtor(&z_copy); + 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); } @@ -2087,14 +2093,20 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV) } else { function_name = GET_OP2_ZVAL_PTR(BP_VAR_R); - if (OP2_TYPE != IS_CONST && + if (OP2_TYPE != IS_CONST && OP2_TYPE != IS_TMP_VAR && Z_TYPE_P(function_name) == IS_OBJECT && Z_OBJ_HANDLER_P(function_name, get_closure) && Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) { if (EX(object)) { Z_ADDREF_P(EX(object)); } - FREE_OP2(); + if (OP2_TYPE == IS_VAR && OP2_FREE && + EX(fbc)->common.fn_flags & ZEND_ACC_CLOSURE) { + /* Delay closure destruction until its invocation */ + EX(fbc)->common.prototype = (zend_function*)function_name; + } else { + FREE_OP2(); + } ZEND_VM_NEXT_OPCODE(); } @@ -2159,6 +2171,10 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY) } } + if ((op_array->fn_flags & ZEND_ACC_CLOSURE) && op_array->prototype) { + zval_ptr_dtor((zval**)&op_array->prototype); + } + nested = EX(nested); zend_vm_stack_free(execute_data TSRMLS_CC); @@ -3219,59 +3235,67 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMP|VAR|CV, ANY) } return_value_used = RETURN_VALUE_USED(opline); + + if (Z_LVAL(opline->op2.u.constant) != ZEND_EVAL && strlen(Z_STRVAL_P(inc_filename)) != Z_STRLEN_P(inc_filename)) { + if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE || Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE) { + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } else { + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } + } else { + switch (Z_LVAL(opline->op2.u.constant)) { + case ZEND_INCLUDE_ONCE: + case ZEND_REQUIRE_ONCE: { + zend_file_handle file_handle; + char *resolved_path; + + resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC); + if (resolved_path) { + failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1); + } else { + resolved_path = Z_STRVAL_P(inc_filename); + } - switch (Z_LVAL(opline->op2.u.constant)) { - case ZEND_INCLUDE_ONCE: - case ZEND_REQUIRE_ONCE: { - zend_file_handle file_handle; - char *resolved_path; - - resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC); - if (resolved_path) { - failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1); - } else { - resolved_path = Z_STRVAL_P(inc_filename); - } - - if (failure_retval) { - /* do nothing, file already included */ - } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) { + if (failure_retval) { + /* do nothing, file already included */ + } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) { - if (!file_handle.opened_path) { - file_handle.opened_path = estrdup(resolved_path); - } + if (!file_handle.opened_path) { + file_handle.opened_path = estrdup(resolved_path); + } - if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) { - new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC); - zend_destroy_file_handle(&file_handle TSRMLS_CC); + if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) { + new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC); + zend_destroy_file_handle(&file_handle TSRMLS_CC); + } else { + zend_file_handle_dtor(&file_handle TSRMLS_CC); + failure_retval=1; + } } else { - zend_file_handle_dtor(&file_handle TSRMLS_CC); - failure_retval=1; + if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) { + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } else { + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } } - } else { - if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) { - zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); - } else { - zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + if (resolved_path != Z_STRVAL_P(inc_filename)) { + efree(resolved_path); } } - if (resolved_path != Z_STRVAL_P(inc_filename)) { - efree(resolved_path); - } - } - break; - case ZEND_INCLUDE: - case ZEND_REQUIRE: - new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC); - break; - case ZEND_EVAL: { - char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); + break; + case ZEND_INCLUDE: + case ZEND_REQUIRE: + new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC); + break; + case ZEND_EVAL: { + char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); - new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); - efree(eval_desc); - } - break; - EMPTY_SWITCH_DEFAULT_CASE() + new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); + efree(eval_desc); + } + break; + EMPTY_SWITCH_DEFAULT_CASE() + } } if (inc_filename==&tmp_inc_filename) { zval_dtor(&tmp_inc_filename); @@ -3420,12 +3444,14 @@ ZEND_VM_HANDLER(75, ZEND_UNSET_DIM, VAR|UNUSED|CV, CONST|TMP|VAR|CV) zend_op *opline = EX(opline); zend_free_op free_op1, free_op2; zval **container = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_UNSET); - zval *offset = GET_OP2_ZVAL_PTR(BP_VAR_R); + zval *offset; + + if (OP1_TYPE == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = GET_OP2_ZVAL_PTR(BP_VAR_R); if (OP1_TYPE != IS_VAR || container) { - if (OP1_TYPE == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 7e377902b..3892c8a9e 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) | + | Copyright (c) 1998-2011 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 | @@ -163,6 +163,10 @@ static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS) } } + if ((op_array->fn_flags & ZEND_ACC_CLOSURE) && op_array->prototype) { + zval_ptr_dtor((zval**)&op_array->prototype); + } + nested = EX(nested); zend_vm_stack_free(execute_data TSRMLS_CC); @@ -750,14 +754,20 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE } else { function_name = &opline->op2.u.constant; - if (IS_CONST != IS_CONST && + if (IS_CONST != IS_CONST && IS_CONST != IS_TMP_VAR && Z_TYPE_P(function_name) == IS_OBJECT && Z_OBJ_HANDLER_P(function_name, get_closure) && Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) { if (EX(object)) { Z_ADDREF_P(EX(object)); } + if (IS_CONST == IS_VAR && 0 && + EX(fbc)->common.fn_flags & ZEND_ACC_CLOSURE) { + /* Delay closure destruction until its invocation */ + EX(fbc)->common.prototype = (zend_function*)function_name; + } else { + } ZEND_VM_NEXT_OPCODE(); } @@ -944,14 +954,20 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H } else { function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); - if (IS_TMP_VAR != IS_CONST && + if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_TMP_VAR && Z_TYPE_P(function_name) == IS_OBJECT && Z_OBJ_HANDLER_P(function_name, get_closure) && Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) { if (EX(object)) { Z_ADDREF_P(EX(object)); } - zval_dtor(free_op2.var); + if (IS_TMP_VAR == IS_VAR && 1 && + EX(fbc)->common.fn_flags & ZEND_ACC_CLOSURE) { + /* Delay closure destruction until its invocation */ + EX(fbc)->common.prototype = (zend_function*)function_name; + } else { + zval_dtor(free_op2.var); + } ZEND_VM_NEXT_OPCODE(); } @@ -1045,14 +1061,20 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H } else { function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); - if (IS_VAR != IS_CONST && + if (IS_VAR != IS_CONST && IS_VAR != IS_TMP_VAR && Z_TYPE_P(function_name) == IS_OBJECT && Z_OBJ_HANDLER_P(function_name, get_closure) && Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) { if (EX(object)) { Z_ADDREF_P(EX(object)); } - if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + if (IS_VAR == IS_VAR && (free_op2.var != NULL) && + EX(fbc)->common.fn_flags & ZEND_ACC_CLOSURE) { + /* Delay closure destruction until its invocation */ + EX(fbc)->common.prototype = (zend_function*)function_name; + } else { + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + } ZEND_VM_NEXT_OPCODE(); } @@ -1169,14 +1191,20 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA } else { function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); - if (IS_CV != IS_CONST && + if (IS_CV != IS_CONST && IS_CV != IS_TMP_VAR && Z_TYPE_P(function_name) == IS_OBJECT && Z_OBJ_HANDLER_P(function_name, get_closure) && Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) { if (EX(object)) { Z_ADDREF_P(EX(object)); } + if (IS_CV == IS_VAR && 0 && + EX(fbc)->common.fn_flags & ZEND_ACC_CLOSURE) { + /* Delay closure destruction until its invocation */ + EX(fbc)->common.prototype = (zend_function*)function_name; + } else { + } ZEND_VM_NEXT_OPCODE(); } @@ -1296,10 +1324,16 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval *z = &opline->op1.u.constant; if (IS_CONST != IS_CONST && - Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL && - zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) { - zend_print_variable(&z_copy); - zval_dtor(&z_copy); + 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); } @@ -1880,58 +1914,66 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA return_value_used = RETURN_VALUE_USED(opline); - switch (Z_LVAL(opline->op2.u.constant)) { - case ZEND_INCLUDE_ONCE: - case ZEND_REQUIRE_ONCE: { - zend_file_handle file_handle; - char *resolved_path; + if (Z_LVAL(opline->op2.u.constant) != ZEND_EVAL && strlen(Z_STRVAL_P(inc_filename)) != Z_STRLEN_P(inc_filename)) { + if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE || Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE) { + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } else { + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } + } else { + switch (Z_LVAL(opline->op2.u.constant)) { + case ZEND_INCLUDE_ONCE: + case ZEND_REQUIRE_ONCE: { + zend_file_handle file_handle; + char *resolved_path; - resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC); - if (resolved_path) { - failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1); - } else { - resolved_path = Z_STRVAL_P(inc_filename); - } + resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC); + if (resolved_path) { + failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1); + } else { + resolved_path = Z_STRVAL_P(inc_filename); + } - if (failure_retval) { - /* do nothing, file already included */ - } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) { + if (failure_retval) { + /* do nothing, file already included */ + } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) { - if (!file_handle.opened_path) { - file_handle.opened_path = estrdup(resolved_path); - } + if (!file_handle.opened_path) { + file_handle.opened_path = estrdup(resolved_path); + } - if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) { - new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC); - zend_destroy_file_handle(&file_handle TSRMLS_CC); + if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) { + new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC); + zend_destroy_file_handle(&file_handle TSRMLS_CC); + } else { + zend_file_handle_dtor(&file_handle TSRMLS_CC); + failure_retval=1; + } } else { - zend_file_handle_dtor(&file_handle TSRMLS_CC); - failure_retval=1; + if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) { + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } else { + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } } - } else { - if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) { - zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); - } else { - zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + if (resolved_path != Z_STRVAL_P(inc_filename)) { + efree(resolved_path); } } - if (resolved_path != Z_STRVAL_P(inc_filename)) { - efree(resolved_path); - } - } - break; - case ZEND_INCLUDE: - case ZEND_REQUIRE: - new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC); - break; - case ZEND_EVAL: { - char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); + break; + case ZEND_INCLUDE: + case ZEND_REQUIRE: + new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC); + break; + case ZEND_EVAL: { + char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); - new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); - efree(eval_desc); - } - break; - EMPTY_SWITCH_DEFAULT_CASE() + new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); + efree(eval_desc); + } + break; + EMPTY_SWITCH_DEFAULT_CASE() + } } if (inc_filename==&tmp_inc_filename) { zval_dtor(&tmp_inc_filename); @@ -4578,10 +4620,16 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval *z = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); if (IS_TMP_VAR != IS_CONST && - Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL && - zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) { - zend_print_variable(&z_copy); - zval_dtor(&z_copy); + 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); } @@ -5154,58 +5202,66 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HAND return_value_used = RETURN_VALUE_USED(opline); - switch (Z_LVAL(opline->op2.u.constant)) { - case ZEND_INCLUDE_ONCE: - case ZEND_REQUIRE_ONCE: { - zend_file_handle file_handle; - char *resolved_path; + if (Z_LVAL(opline->op2.u.constant) != ZEND_EVAL && strlen(Z_STRVAL_P(inc_filename)) != Z_STRLEN_P(inc_filename)) { + if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE || Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE) { + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } else { + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } + } else { + switch (Z_LVAL(opline->op2.u.constant)) { + case ZEND_INCLUDE_ONCE: + case ZEND_REQUIRE_ONCE: { + zend_file_handle file_handle; + char *resolved_path; - resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC); - if (resolved_path) { - failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1); - } else { - resolved_path = Z_STRVAL_P(inc_filename); - } + resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC); + if (resolved_path) { + failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1); + } else { + resolved_path = Z_STRVAL_P(inc_filename); + } - if (failure_retval) { - /* do nothing, file already included */ - } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) { + if (failure_retval) { + /* do nothing, file already included */ + } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) { - if (!file_handle.opened_path) { - file_handle.opened_path = estrdup(resolved_path); - } + if (!file_handle.opened_path) { + file_handle.opened_path = estrdup(resolved_path); + } - if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) { - new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC); - zend_destroy_file_handle(&file_handle TSRMLS_CC); + if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) { + new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC); + zend_destroy_file_handle(&file_handle TSRMLS_CC); + } else { + zend_file_handle_dtor(&file_handle TSRMLS_CC); + failure_retval=1; + } } else { - zend_file_handle_dtor(&file_handle TSRMLS_CC); - failure_retval=1; + if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) { + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } else { + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } } - } else { - if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) { - zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); - } else { - zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + if (resolved_path != Z_STRVAL_P(inc_filename)) { + efree(resolved_path); } } - if (resolved_path != Z_STRVAL_P(inc_filename)) { - efree(resolved_path); - } - } - break; - case ZEND_INCLUDE: - case ZEND_REQUIRE: - new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC); - break; - case ZEND_EVAL: { - char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); + break; + case ZEND_INCLUDE: + case ZEND_REQUIRE: + new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC); + break; + case ZEND_EVAL: { + char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); - new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); - efree(eval_desc); - } - break; - EMPTY_SWITCH_DEFAULT_CASE() + new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); + efree(eval_desc); + } + break; + EMPTY_SWITCH_DEFAULT_CASE() + } } if (inc_filename==&tmp_inc_filename) { zval_dtor(&tmp_inc_filename); @@ -7826,10 +7882,16 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval *z = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); if (IS_VAR != IS_CONST && - Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL && - zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) { - zend_print_variable(&z_copy); - zval_dtor(&z_copy); + 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); } @@ -8523,58 +8585,66 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND return_value_used = RETURN_VALUE_USED(opline); - switch (Z_LVAL(opline->op2.u.constant)) { - case ZEND_INCLUDE_ONCE: - case ZEND_REQUIRE_ONCE: { - zend_file_handle file_handle; - char *resolved_path; + if (Z_LVAL(opline->op2.u.constant) != ZEND_EVAL && strlen(Z_STRVAL_P(inc_filename)) != Z_STRLEN_P(inc_filename)) { + if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE || Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE) { + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } else { + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } + } else { + switch (Z_LVAL(opline->op2.u.constant)) { + case ZEND_INCLUDE_ONCE: + case ZEND_REQUIRE_ONCE: { + zend_file_handle file_handle; + char *resolved_path; - resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC); - if (resolved_path) { - failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1); - } else { - resolved_path = Z_STRVAL_P(inc_filename); - } + resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC); + if (resolved_path) { + failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1); + } else { + resolved_path = Z_STRVAL_P(inc_filename); + } - if (failure_retval) { - /* do nothing, file already included */ - } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) { + if (failure_retval) { + /* do nothing, file already included */ + } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) { - if (!file_handle.opened_path) { - file_handle.opened_path = estrdup(resolved_path); - } + if (!file_handle.opened_path) { + file_handle.opened_path = estrdup(resolved_path); + } - if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) { - new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC); - zend_destroy_file_handle(&file_handle TSRMLS_CC); + if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) { + new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC); + zend_destroy_file_handle(&file_handle TSRMLS_CC); + } else { + zend_file_handle_dtor(&file_handle TSRMLS_CC); + failure_retval=1; + } } else { - zend_file_handle_dtor(&file_handle TSRMLS_CC); - failure_retval=1; + if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) { + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } else { + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } } - } else { - if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) { - zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); - } else { - zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + if (resolved_path != Z_STRVAL_P(inc_filename)) { + efree(resolved_path); } } - if (resolved_path != Z_STRVAL_P(inc_filename)) { - efree(resolved_path); - } - } - break; - case ZEND_INCLUDE: - case ZEND_REQUIRE: - new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC); - break; - case ZEND_EVAL: { - char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); + break; + case ZEND_INCLUDE: + case ZEND_REQUIRE: + new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC); + break; + case ZEND_EVAL: { + char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); - new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); - efree(eval_desc); - } - break; - EMPTY_SWITCH_DEFAULT_CASE() + new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); + efree(eval_desc); + } + break; + EMPTY_SWITCH_DEFAULT_CASE() + } } if (inc_filename==&tmp_inc_filename) { zval_dtor(&tmp_inc_filename); @@ -10697,12 +10767,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HAND zend_op *opline = EX(opline); zend_free_op free_op1; zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); - zval *offset = &opline->op2.u.constant; + zval *offset; + + if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = &opline->op2.u.constant; if (IS_VAR != IS_VAR || container) { - if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); @@ -12446,12 +12518,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLE zend_op *opline = EX(opline); zend_free_op free_op1, free_op2; zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); - zval *offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); + zval *offset; + + if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (IS_VAR != IS_VAR || container) { - if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); @@ -14246,12 +14320,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLE zend_op *opline = EX(opline); zend_free_op free_op1, free_op2; zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); - zval *offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); + zval *offset; + + if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (IS_VAR != IS_VAR || container) { - if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); @@ -16632,12 +16708,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER zend_op *opline = EX(opline); zend_free_op free_op1; zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); - zval *offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); + zval *offset; + + if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); if (IS_VAR != IS_VAR || container) { - if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); @@ -17824,12 +17902,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_H zend_op *opline = EX(opline); zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); - zval *offset = &opline->op2.u.constant; + zval *offset; + + if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = &opline->op2.u.constant; if (IS_UNUSED != IS_VAR || container) { - if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); @@ -18881,12 +18961,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HAN zend_op *opline = EX(opline); zend_free_op free_op2; zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); - zval *offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); + zval *offset; + + if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (IS_UNUSED != IS_VAR || container) { - if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); @@ -19938,12 +20020,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HAN zend_op *opline = EX(opline); zend_free_op free_op2; zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); - zval *offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); + zval *offset; + + if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (IS_UNUSED != IS_VAR || container) { - if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); @@ -21254,12 +21338,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HAND zend_op *opline = EX(opline); zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); - zval *offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); + zval *offset; + + if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); if (IS_UNUSED != IS_VAR || container) { - if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); @@ -21699,10 +21785,16 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval *z = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC); if (IS_CV != IS_CONST && - Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL && - zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) { - zend_print_variable(&z_copy); - zval_dtor(&z_copy); + 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); } @@ -22385,58 +22477,66 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL return_value_used = RETURN_VALUE_USED(opline); - switch (Z_LVAL(opline->op2.u.constant)) { - case ZEND_INCLUDE_ONCE: - case ZEND_REQUIRE_ONCE: { - zend_file_handle file_handle; - char *resolved_path; + if (Z_LVAL(opline->op2.u.constant) != ZEND_EVAL && strlen(Z_STRVAL_P(inc_filename)) != Z_STRLEN_P(inc_filename)) { + if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE || Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE) { + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } else { + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } + } else { + switch (Z_LVAL(opline->op2.u.constant)) { + case ZEND_INCLUDE_ONCE: + case ZEND_REQUIRE_ONCE: { + zend_file_handle file_handle; + char *resolved_path; - resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC); - if (resolved_path) { - failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1); - } else { - resolved_path = Z_STRVAL_P(inc_filename); - } + resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC); + if (resolved_path) { + failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1); + } else { + resolved_path = Z_STRVAL_P(inc_filename); + } - if (failure_retval) { - /* do nothing, file already included */ - } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) { + if (failure_retval) { + /* do nothing, file already included */ + } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) { - if (!file_handle.opened_path) { - file_handle.opened_path = estrdup(resolved_path); - } + if (!file_handle.opened_path) { + file_handle.opened_path = estrdup(resolved_path); + } - if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) { - new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC); - zend_destroy_file_handle(&file_handle TSRMLS_CC); + if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) { + new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC); + zend_destroy_file_handle(&file_handle TSRMLS_CC); + } else { + zend_file_handle_dtor(&file_handle TSRMLS_CC); + failure_retval=1; + } } else { - zend_file_handle_dtor(&file_handle TSRMLS_CC); - failure_retval=1; + if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) { + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } else { + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + } } - } else { - if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) { - zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); - } else { - zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC); + if (resolved_path != Z_STRVAL_P(inc_filename)) { + efree(resolved_path); } } - if (resolved_path != Z_STRVAL_P(inc_filename)) { - efree(resolved_path); - } - } - break; - case ZEND_INCLUDE: - case ZEND_REQUIRE: - new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC); - break; - case ZEND_EVAL: { - char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); + break; + case ZEND_INCLUDE: + case ZEND_REQUIRE: + new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC); + break; + case ZEND_EVAL: { + char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); - new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); - efree(eval_desc); - } - break; - EMPTY_SWITCH_DEFAULT_CASE() + new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); + efree(eval_desc); + } + break; + EMPTY_SWITCH_DEFAULT_CASE() + } } if (inc_filename==&tmp_inc_filename) { zval_dtor(&tmp_inc_filename); @@ -24252,12 +24352,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDL zend_op *opline = EX(opline); zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC); - zval *offset = &opline->op2.u.constant; + zval *offset; + + if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = &opline->op2.u.constant; if (IS_CV != IS_VAR || container) { - if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); @@ -25892,12 +25994,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER zend_op *opline = EX(opline); zend_free_op free_op2; zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC); - zval *offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); + zval *offset; + + if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (IS_CV != IS_VAR || container) { - if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); @@ -27582,12 +27686,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER zend_op *opline = EX(opline); zend_free_op free_op2; zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC); - zval *offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); + zval *offset; + + if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (IS_CV != IS_VAR || container) { - if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); @@ -29759,12 +29865,14 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ zend_op *opline = EX(opline); zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC); - zval *offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); + zval *offset; + + if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) { + SEPARATE_ZVAL_IF_NOT_REF(container); + } + offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); if (IS_CV != IS_VAR || container) { - if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_IF_NOT_REF(container); - } switch (Z_TYPE_PP(container)) { case IS_ARRAY: { HashTable *ht = Z_ARRVAL_PP(container); diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php index 0481b3fd0..537e13966 100644 --- a/Zend/zend_vm_gen.php +++ b/Zend/zend_vm_gen.php @@ -3,7 +3,7 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) | + | Copyright (c) 1998-2011 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 | @@ -16,7 +16,7 @@ | Authors: Dmitry Stogov <dmitry@zend.com> | +----------------------------------------------------------------------+ - $Id: zend_vm_gen.php 300264 2010-06-07 23:04:30Z felipe $ + $Id: zend_vm_gen.php 313107 2011-07-10 13:05:32Z felipe $ */ $header_text = <<< DATA @@ -24,7 +24,7 @@ $header_text = <<< DATA +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) | + | Copyright (c) 1998-2011 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 | diff --git a/Zend/zend_vm_opcodes.h b/Zend/zend_vm_opcodes.h index d048a8576..f36e3b567 100644 --- a/Zend/zend_vm_opcodes.h +++ b/Zend/zend_vm_opcodes.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) | + | Copyright (c) 1998-2011 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 | |
