summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2013-02-25 16:29:09 +0100
committerOndřej Surý <ondrej@sury.org>2013-02-25 16:29:09 +0100
commit7ad1f708d5748e36de4b51088b377907e5ea01e7 (patch)
tree3f8a4c034747c921baf3b4118e2cc6ccc875fe43 /Zend
parent54098cf044025ec5965b8ea9c84750f9631d85b6 (diff)
downloadphp-7ad1f708d5748e36de4b51088b377907e5ea01e7.tar.gz
Imported Upstream version 5.5.0~alpha5upstream/5.5.0_alpha5
Diffstat (limited to 'Zend')
-rw-r--r--Zend/tests/bug51394.phpt8
-rw-r--r--Zend/tests/bug60833.phpt40
-rw-r--r--Zend/tests/bug61767.phpt12
-rw-r--r--Zend/tests/bug64135.phpt17
-rw-r--r--Zend/tests/exception_before_fatal.phpt64
-rw-r--r--Zend/tests/generators/clone_with_properties.phpt18
-rw-r--r--Zend/tests/generators/finally/run_on_dtor.phpt22
-rw-r--r--Zend/tests/generators/nested_calls_with_die.phpt30
-rw-r--r--Zend/tests/traits/bug64070.phpt36
-rw-r--r--Zend/zend_API.h6
-rw-r--r--Zend/zend_alloc.c55
-rw-r--r--Zend/zend_compile.c206
-rw-r--r--Zend/zend_generators.c117
-rw-r--r--Zend/zend_ini.h2
-rw-r--r--Zend/zend_ini_parser.c835
-rw-r--r--Zend/zend_ini_parser.h54
-rw-r--r--Zend/zend_ini_parser.output6
-rw-r--r--Zend/zend_language_parser.c956
-rw-r--r--Zend/zend_language_parser.h54
-rw-r--r--Zend/zend_language_parser.output2401
-rw-r--r--Zend/zend_multiply.h45
-rw-r--r--Zend/zend_operators.h95
-rw-r--r--Zend/zend_vm_def.h41
-rw-r--r--Zend/zend_vm_execute.h272
24 files changed, 3025 insertions, 2367 deletions
diff --git a/Zend/tests/bug51394.phpt b/Zend/tests/bug51394.phpt
index 406de13a9..b0dddffaf 100644
--- a/Zend/tests/bug51394.phpt
+++ b/Zend/tests/bug51394.phpt
@@ -13,10 +13,8 @@ function eh()
set_error_handler("eh");
$a = $empty($b);
--EXPECTF--
-Warning: Uncaught exception 'Exception' with message 'error!' in %sbug51394.php:4
+Fatal error: Uncaught exception 'Exception' with message 'error!' in %sbug51394.php:%d
Stack trace:
-#0 %sbug51394.php(9): eh(8, 'Undefined varia...', '%s', 9, Array)
+#0 %sbug51394.php(%d): eh(8, 'Undefined varia%s', '%s', %d, Array)
#1 {main}
- thrown in %sbug51394.php on line 4
-
-Fatal error: Function name must be a string in %sbug51394.php on line 9 \ No newline at end of file
+ thrown in %sbug51394.php on line %d
diff --git a/Zend/tests/bug60833.phpt b/Zend/tests/bug60833.phpt
new file mode 100644
index 000000000..deb6c0f69
--- /dev/null
+++ b/Zend/tests/bug60833.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Bug #60833 (self, parent, static behave inconsistently case-sensitive)
+--FILE--
+<?php
+class A {
+ static $x = "A";
+ function testit() {
+ $this->v1 = new sELF;
+ $this->v2 = new SELF;
+ }
+}
+
+class B extends A {
+ static $x = "B";
+ function testit() {
+ PARENT::testit();
+ $this->v3 = new sELF;
+ $this->v4 = new PARENT;
+ $this->v4 = STATIC::$x;
+ }
+}
+$t = new B();
+$t->testit();
+var_dump($t);
+?>
+--EXPECTF--
+object(B)#%d (4) {
+ ["v1"]=>
+ object(A)#%d (0) {
+ }
+ ["v2"]=>
+ object(A)#%d (0) {
+ }
+ ["v3"]=>
+ object(B)#%d (0) {
+ }
+ ["v4"]=>
+ string(1) "B"
+}
+
diff --git a/Zend/tests/bug61767.phpt b/Zend/tests/bug61767.phpt
index 5270872e5..9bd9c907b 100644
--- a/Zend/tests/bug61767.phpt
+++ b/Zend/tests/bug61767.phpt
@@ -17,18 +17,16 @@ $undefined->foo();
--EXPECTF--
Error handler called (Undefined variable: undefined)
-Warning: Uncaught exception 'ErrorException' with message 'Undefined variable: undefined' in %sbug61767.php:13
+Fatal error: Uncaught exception 'ErrorException' with message 'Undefined variable: undefined' in %sbug61767.php:%d
Stack trace:
-#0 %sbug61767.php(13): {closure}(8, 'Undefined varia...', '%s', 13, Array)
+#0 %sbug61767.php(%d): {closure}(%s, 'Undefined varia...', '%s', %d, Array)
#1 {main}
- thrown in %sbug61767.php on line 13
-
-Fatal error: Call to a member function foo() on a non-object in %sbug61767.php on line 13
+ thrown in %sbug61767.php on line %d
Shutting down
Array
(
[type] => 1
- [message] => Call to a member function foo() on a non-object
+ [message] => %a
[file] => %sbug61767.php
- [line] => 13
+ [line] => %d
)
diff --git a/Zend/tests/bug64135.phpt b/Zend/tests/bug64135.phpt
new file mode 100644
index 000000000..1c7b1500a
--- /dev/null
+++ b/Zend/tests/bug64135.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Bug #64135 (Exceptions from set_error_handler are not always propagated)
+--FILE--
+<?php
+
+function exception_error_handler() {
+ throw new Exception();
+}
+
+set_error_handler("exception_error_handler");
+try {
+ $undefined->undefined();
+} catch(Exception $e) {
+ echo "Exception is thrown";
+}
+--EXPECT--
+Exception is thrown
diff --git a/Zend/tests/exception_before_fatal.phpt b/Zend/tests/exception_before_fatal.phpt
new file mode 100644
index 000000000..608d65094
--- /dev/null
+++ b/Zend/tests/exception_before_fatal.phpt
@@ -0,0 +1,64 @@
+--TEST--
+Exceptions before fatal error
+--FILE--
+<?php
+function exception_error_handler($code, $msg) {
+ throw new Exception($msg);
+}
+
+set_error_handler("exception_error_handler");
+
+try {
+ $foo->a();
+} catch(Exception $e) {
+ var_dump($e->getMessage());
+}
+
+try {
+ new $foo();
+} catch(Exception $e) {
+ var_dump($e->getMessage());
+}
+
+try {
+ throw $foo;
+} catch(Exception $e) {
+ var_dump($e->getMessage());
+}
+
+try {
+ $foo();
+} catch(Exception $e) {
+ var_dump($e->getMessage());
+}
+
+try {
+ $foo::b();
+} catch(Exception $e) {
+ var_dump($e->getMessage());
+}
+
+
+try {
+ $b = clone $foo;
+} catch(Exception $e) {
+ var_dump($e->getMessage());
+}
+
+class b {
+}
+
+try {
+ b::$foo();
+} catch(Exception $e) {
+ var_dump($e->getMessage());
+}
+?>
+--EXPECT--
+string(23) "Undefined variable: foo"
+string(23) "Undefined variable: foo"
+string(23) "Undefined variable: foo"
+string(23) "Undefined variable: foo"
+string(23) "Undefined variable: foo"
+string(23) "Undefined variable: foo"
+string(23) "Undefined variable: foo"
diff --git a/Zend/tests/generators/clone_with_properties.phpt b/Zend/tests/generators/clone_with_properties.phpt
new file mode 100644
index 000000000..900253c68
--- /dev/null
+++ b/Zend/tests/generators/clone_with_properties.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Tests cloning a generator with properties
+--FILE--
+<?php
+
+function gen() { yield; }
+
+$g1 = gen();
+$g1->prop = 'val';
+
+$g2 = clone $g1;
+unset($g1);
+
+var_dump($g2->prop);
+
+?>
+--EXPECT--
+string(3) "val"
diff --git a/Zend/tests/generators/finally/run_on_dtor.phpt b/Zend/tests/generators/finally/run_on_dtor.phpt
new file mode 100644
index 000000000..35f8f4e0d
--- /dev/null
+++ b/Zend/tests/generators/finally/run_on_dtor.phpt
@@ -0,0 +1,22 @@
+--TEST--
+finally is run on object dtor, not free
+--FILE--
+<?php
+
+function gen() {
+ try {
+ yield;
+ } finally {
+ var_dump($_GET);
+ }
+}
+
+$gen = gen();
+$gen->rewind();
+
+set_error_handler(function() use($gen) {});
+
+?>
+--EXPECT--
+array(0) {
+}
diff --git a/Zend/tests/generators/nested_calls_with_die.phpt b/Zend/tests/generators/nested_calls_with_die.phpt
new file mode 100644
index 000000000..f43d89ba2
--- /dev/null
+++ b/Zend/tests/generators/nested_calls_with_die.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test nested calls with die() in a generator
+--FILE--
+<?php
+
+function gen() {
+ die('Test');
+ yield; // force generator
+}
+
+function function_with_3_args() {
+ $gen = gen();
+ $gen->rewind();
+}
+
+function function_with_4_args() {
+ function_with_3_args(4, 5, 6);
+}
+
+function outerGen() {
+ function_with_4_args(0, 1, 2, 3);
+ yield; // force generator
+}
+
+$outerGen = outerGen();
+$outerGen->rewind();
+
+?>
+--EXPECT--
+Test
diff --git a/Zend/tests/traits/bug64070.phpt b/Zend/tests/traits/bug64070.phpt
new file mode 100644
index 000000000..a5ee3b6a5
--- /dev/null
+++ b/Zend/tests/traits/bug64070.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Bug #64070 (Inheritance with Traits failed with error)
+--FILE--
+<?php
+trait first_trait
+{
+ function first_function()
+ {
+ echo "From First Trait\n";
+ }
+}
+
+trait second_trait
+{
+ use first_trait {
+ first_trait::first_function as second_function;
+ }
+
+ function first_function()
+ {
+ echo "From Second Trait\n";
+ }
+}
+
+class first_class
+{
+ use second_trait;
+}
+
+$obj = new first_class();
+$obj->first_function();
+$obj->second_function();
+?>
+--EXPECT--
+From Second Trait
+From First Trait
diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index 8574f90eb..fb642c147 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -60,7 +60,7 @@ typedef struct _zend_fcall_info_cache {
zval *object_ptr;
} zend_fcall_info_cache;
-#define ZEND_NS_NAME(ns, name) ns"\\"name
+#define ZEND_NS_NAME(ns, name) ns "\\" name
#define ZEND_FN(name) zif_##name
#define ZEND_MN(name) zim_##name
@@ -281,9 +281,9 @@ ZEND_API void zend_class_implements(zend_class_entry *class_entry TSRMLS_DC, int
ZEND_API int zend_register_class_alias_ex(const char *name, int name_len, zend_class_entry *ce TSRMLS_DC);
#define zend_register_class_alias(name, ce) \
- zend_register_class_alias_ex(name, sizeof(name)-1, ce TSRMLS_DC)
+ zend_register_class_alias_ex(name, sizeof(name)-1, ce TSRMLS_CC)
#define zend_register_ns_class_alias(ns, name, ce) \
- zend_register_class_alias_ex(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, ce TSRMLS_DC)
+ zend_register_class_alias_ex(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, ce TSRMLS_CC)
ZEND_API int zend_disable_function(char *function_name, uint function_name_length TSRMLS_DC);
ZEND_API int zend_disable_class(char *class_name, uint class_name_length TSRMLS_DC);
diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c
index 1cc2c6783..1c76bd403 100644
--- a/Zend/zend_alloc.c
+++ b/Zend/zend_alloc.c
@@ -667,17 +667,19 @@ static inline unsigned int zend_mm_high_bit(size_t _size)
#if defined(__GNUC__) && (defined(__native_client__) || defined(i386))
unsigned int n;
- __asm__("bsrl %1,%0\n\t" : "=r" (n) : "rm" (_size));
+ __asm__("bsrl %1,%0\n\t" : "=r" (n) : "rm" (_size) : "cc");
return n;
#elif defined(__GNUC__) && defined(__x86_64__)
unsigned long n;
- __asm__("bsrq %1,%0\n\t" : "=r" (n) : "rm" (_size));
+ __asm__("bsrq %1,%0\n\t" : "=r" (n) : "rm" (_size) : "cc");
return (unsigned int)n;
#elif defined(_MSC_VER) && defined(_M_IX86)
__asm {
bsr eax, _size
}
+#elif defined(__GNUC__) && (defined(__arm__) || defined(__aarch64__))
+ return (8 * SIZEOF_SIZE_T - 1) - __builtin_clzl(_size);
#else
unsigned int n = 0;
while (_size != 0) {
@@ -693,17 +695,19 @@ static inline unsigned int zend_mm_low_bit(size_t _size)
#if defined(__GNUC__) && (defined(__native_client__) || defined(i386))
unsigned int n;
- __asm__("bsfl %1,%0\n\t" : "=r" (n) : "rm" (_size));
+ __asm__("bsfl %1,%0\n\t" : "=r" (n) : "rm" (_size) : "cc");
return n;
#elif defined(__GNUC__) && defined(__x86_64__)
unsigned long n;
- __asm__("bsfq %1,%0\n\t" : "=r" (n) : "rm" (_size));
+ __asm__("bsfq %1,%0\n\t" : "=r" (n) : "rm" (_size) : "cc");
return (unsigned int)n;
#elif defined(_MSC_VER) && defined(_M_IX86)
__asm {
bsf eax, _size
- }
+ }
+#elif defined(__GNUC__) && (defined(__arm__) || defined(__aarch64__))
+ return __builtin_ctzl(_size);
#else
static const int offset[16] = {4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0};
unsigned int n;
@@ -2494,6 +2498,47 @@ static inline size_t safe_address(size_t nmemb, size_t size, size_t offset)
return res;
}
+#elif defined(__GNUC__) && defined(__arm__)
+
+static inline size_t safe_address(size_t nmemb, size_t size, size_t offset)
+{
+ size_t res;
+ unsigned long overflow;
+
+ __asm__ ("umlal %0,%1,%2,%3"
+ : "=r"(res), "=r"(overflow)
+ : "r"(nmemb),
+ "r"(size),
+ "0"(offset),
+ "1"(0));
+
+ if (UNEXPECTED(overflow)) {
+ zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset);
+ return 0;
+ }
+ return res;
+}
+
+#elif defined(__GNUC__) && defined(__aarch64__)
+
+static inline size_t safe_address(size_t nmemb, size_t size, size_t offset)
+{
+ size_t res;
+ unsigned long overflow;
+
+ __asm__ ("mul %0,%2,%3\n\tumulh %1,%2,%3\n\tadds %0,%0,%4\n\tadc %1,%1,%1"
+ : "=&r"(res), "=&r"(overflow)
+ : "r"(nmemb),
+ "r"(size),
+ "r"(offset));
+
+ if (UNEXPECTED(overflow)) {
+ zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset);
+ return 0;
+ }
+ return res;
+}
+
#elif SIZEOF_SIZE_T == 4 && defined(HAVE_ZEND_LONG64)
static inline size_t safe_address(size_t nmemb, size_t size, size_t offset)
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 10eac2d94..701151106 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -5,7 +5,7 @@
| Copyright (c) 1998-2013 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
- | that is bundled with this package in the file LICENSE, and is |
+ | that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.zend.com/license/2_00.txt. |
| If you did not receive a copy of the Zend license and are unable to |
@@ -107,7 +107,7 @@ ZEND_API zend_executor_globals executor_globals;
static void zend_duplicate_property_info(zend_property_info *property_info) /* {{{ */
{
- if (!IS_INTERNED(property_info->name)) {
+ if (!IS_INTERNED(property_info->name)) {
property_info->name = estrndup(property_info->name, property_info->name_length);
}
if (property_info->doc_comment) {
@@ -118,7 +118,7 @@ static void zend_duplicate_property_info(zend_property_info *property_info) /* {
static void zend_duplicate_property_info_internal(zend_property_info *property_info) /* {{{ */
{
- if (!IS_INTERNED(property_info->name)) {
+ if (!IS_INTERNED(property_info->name)) {
property_info->name = zend_strndup(property_info->name, property_info->name_length);
}
}
@@ -383,7 +383,7 @@ int zend_add_func_name_literal(zend_op_array *op_array, const zval *zv TSRMLS_DC
zval c;
int lc_literal;
- if (op_array->last_literal > 0 &&
+ if (op_array->last_literal > 0 &&
&op_array->literals[op_array->last_literal - 1].constant == zv &&
op_array->literals[op_array->last_literal - 1].cache_slot == -1) {
/* we already have function name as last literal (do nothing) */
@@ -391,7 +391,7 @@ int zend_add_func_name_literal(zend_op_array *op_array, const zval *zv TSRMLS_DC
} else {
ret = zend_add_literal(op_array, zv TSRMLS_CC);
}
-
+
lc_name = zend_str_tolower_dup(Z_STRVAL_P(zv), Z_STRLEN_P(zv));
ZVAL_STRINGL(&c, lc_name, Z_STRLEN_P(zv), 0);
lc_literal = zend_add_literal(CG(active_op_array), &c TSRMLS_CC);
@@ -410,7 +410,7 @@ int zend_add_ns_func_name_literal(zend_op_array *op_array, const zval *zv TSRMLS
zval c;
int lc_literal;
- if (op_array->last_literal > 0 &&
+ if (op_array->last_literal > 0 &&
&op_array->literals[op_array->last_literal - 1].constant == zv &&
op_array->literals[op_array->last_literal - 1].cache_slot == -1) {
/* we already have function name as last literal (do nothing) */
@@ -443,7 +443,7 @@ int zend_add_class_name_literal(zend_op_array *op_array, const zval *zv TSRMLS_D
zval c;
int lc_literal;
- if (op_array->last_literal > 0 &&
+ if (op_array->last_literal > 0 &&
&op_array->literals[op_array->last_literal - 1].constant == zv &&
op_array->literals[op_array->last_literal - 1].cache_slot == -1) {
/* we already have function name as last literal (do nothing) */
@@ -477,7 +477,7 @@ int zend_add_const_name_literal(zend_op_array *op_array, const zval *zv, int unq
int name_len, ns_len;
zval c;
- if (op_array->last_literal > 0 &&
+ if (op_array->last_literal > 0 &&
&op_array->literals[op_array->last_literal - 1].constant == zv &&
op_array->literals[op_array->last_literal - 1].cache_slot == -1) {
/* we already have function name as last literal (do nothing) */
@@ -486,7 +486,7 @@ int zend_add_const_name_literal(zend_op_array *op_array, const zval *zv, int unq
ret = zend_add_literal(op_array, zv TSRMLS_CC);
}
- /* skip leading '\\' */
+ /* skip leading '\\' */
if (Z_STRVAL_P(zv)[0] == '\\') {
name_len = Z_STRLEN_P(zv) - 1;
name = Z_STRVAL_P(zv) + 1;
@@ -816,7 +816,7 @@ void fetch_array_dim(znode *result, const znode *parent, const znode *dim TSRMLS
opline.result.var = opline.op1.var;
zend_llist_add_element(fetch_list_ptr, &opline);
}
-
+
init_op(&opline TSRMLS_CC);
opline.opcode = ZEND_FETCH_DIM_W; /* the backpatching routine assumes W */
opline.result_type = IS_VAR;
@@ -830,12 +830,12 @@ void fetch_array_dim(znode *result, const znode *parent, const znode *dim TSRMLS
ZEND_HANDLE_NUMERIC_EX(Z_STRVAL(CONSTANT(opline.op2.constant)), Z_STRLEN(CONSTANT(opline.op2.constant))+1, index, numeric = 1);
if (numeric) {
zval_dtor(&CONSTANT(opline.op2.constant));
- ZVAL_LONG(&CONSTANT(opline.op2.constant), index);
+ ZVAL_LONG(&CONSTANT(opline.op2.constant), index);
} else {
CALCULATE_LITERAL_HASH(opline.op2.constant);
}
}
-
+
GET_NODE(result, opline.result);
zend_llist_add_element(fetch_list_ptr, &opline);
@@ -940,7 +940,7 @@ void zend_do_assign(znode *result, znode *variable, znode *value TSRMLS_DC) /* {
opline->result.var = get_temporary_variable(CG(active_op_array));
opline->op1_type = IS_CONST;
LITERAL_STRINGL(opline->op1,
- CG(active_op_array)->vars[value->u.op.var].name,
+ CG(active_op_array)->vars[value->u.op.var].name,
CG(active_op_array)->vars[value->u.op.var].name_len, 1);
CALCULATE_LITERAL_HASH(opline->op1.constant);
SET_UNUSED(opline->op2);
@@ -1569,7 +1569,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n
if (is_method) {
int result;
-
+
lcname = zend_new_interned_string(zend_str_tolower_dup(name, name_len), name_len + 1, 1 TSRMLS_CC);
if (IS_INTERNED(lcname)) {
@@ -1624,7 +1624,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n
}
} else {
char *class_lcname;
-
+
class_lcname = do_alloca(CG(active_class_entry)->name_length + 1, use_heap);
zend_str_tolower_copy(class_lcname, CG(active_class_entry)->name, CG(active_class_entry)->name_length);
/* Improve after RC: cache the lowercase class name */
@@ -1675,7 +1675,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n
} else if ((name_len == sizeof(ZEND_TOSTRING_FUNC_NAME)-1) && (!memcmp(lcname, ZEND_TOSTRING_FUNC_NAME, sizeof(ZEND_TOSTRING_FUNC_NAME)-1))) {
if (fn_flags & ((ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC) ^ ZEND_ACC_PUBLIC)) {
zend_error(E_WARNING, "The magic method __toString() must have public visibility and cannot be static");
- }
+ }
CG(active_class_entry)->__tostring = (zend_function *) CG(active_op_array);
} else if (!(fn_flags & ZEND_ACC_STATIC)) {
CG(active_op_array)->fn_flags |= ZEND_ACC_ALLOW_STATIC;
@@ -1806,14 +1806,14 @@ void zend_do_end_function_declaration(const znode *function_token TSRMLS_DC) /*
if (CG(active_class_entry)) {
zend_check_magic_method_implementation(CG(active_class_entry), (zend_function*)CG(active_op_array), E_COMPILE_ERROR TSRMLS_CC);
} else {
- /* we don't care if the function name is longer, in fact lowercasing only
+ /* we don't care if the function name is longer, in fact lowercasing only
* the beginning of the name speeds up the check process */
name_len = strlen(CG(active_op_array)->function_name);
zend_str_tolower_copy(lcname, CG(active_op_array)->function_name, MIN(name_len, sizeof(lcname)-1));
lcname[sizeof(lcname)-1] = '\0'; /* zend_str_tolower_copy won't necessarily set the zero byte */
if (name_len == sizeof(ZEND_AUTOLOAD_FUNC_NAME) - 1 && !memcmp(lcname, ZEND_AUTOLOAD_FUNC_NAME, sizeof(ZEND_AUTOLOAD_FUNC_NAME)) && CG(active_op_array)->num_args != 1) {
zend_error(E_COMPILE_ERROR, "%s() must take exactly 1 argument", ZEND_AUTOLOAD_FUNC_NAME);
- }
+ }
}
CG(active_op_array)->line_end = zend_get_compiled_lineno(TSRMLS_C);
@@ -1939,7 +1939,7 @@ int zend_do_begin_function_call(znode *function_name, zend_bool check_namespace
internal function with short name */
zend_do_begin_dynamic_function_call(function_name, 1 TSRMLS_CC);
return 1;
- }
+ }
lcname = zend_str_tolower_dup(function_name->u.constant.value.str.val, function_name->u.constant.value.str.len);
if ((zend_hash_find(CG(function_table), lcname, function_name->u.constant.value.str.len+1, (void **) &function)==FAILURE) ||
@@ -1948,10 +1948,10 @@ int zend_do_begin_function_call(znode *function_name, zend_bool check_namespace
zend_do_begin_dynamic_function_call(function_name, 0 TSRMLS_CC);
efree(lcname);
return 1; /* Dynamic */
- }
+ }
efree(function_name->u.constant.value.str.val);
function_name->u.constant.value.str.val = lcname;
-
+
zend_stack_push(&CG(function_call_stack), (void *) &function, sizeof(zend_function *));
if (CG(context).nested_calls + 1 > CG(active_op_array)->nested_calls) {
CG(active_op_array)->nested_calls = CG(context).nested_calls + 1;
@@ -1984,7 +1984,7 @@ void zend_do_begin_method_call(znode *left_bracket TSRMLS_DC) /* {{{ */
name = CONSTANT(last_op->op2.constant);
if (Z_TYPE(name) != IS_STRING) {
zend_error(E_COMPILE_ERROR, "Method name must be a string");
- }
+ }
if (!IS_INTERNED(Z_STRVAL(name))) {
Z_STRVAL(name) = estrndup(Z_STRVAL(name), Z_STRLEN(name));
}
@@ -2188,7 +2188,7 @@ void zend_resolve_class_name(znode *class_name, ulong fetch_type, int check_ns_n
if (ZEND_FETCH_CLASS_DEFAULT != zend_get_class_fetch_type(Z_STRVAL(class_name->u.constant), Z_STRLEN(class_name->u.constant))) {
zend_error(E_COMPILE_ERROR, "'\\%s' is an invalid class name", Z_STRVAL(class_name->u.constant));
}
- } else {
+ } else {
if (CG(current_import)) {
len = compound - Z_STRVAL(class_name->u.constant);
lcname = zend_str_tolower_dup(Z_STRVAL(class_name->u.constant), len);
@@ -2553,8 +2553,8 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) /* {{
zend_error(E_COMPILE_ERROR, "Call-time pass-by-reference has been removed");
}
return;
- }
-
+ }
+
if (function_ptr) {
if (ARG_MAY_BE_SENT_BY_REF(function_ptr, (zend_uint) offset)) {
if (param->op_type & (IS_VAR|IS_CV) && original_op != ZEND_SEND_VAL) {
@@ -2725,7 +2725,7 @@ void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC) /* {{{ */
SET_UNUSED(opline->op1);
SET_UNUSED(opline->op2);
}
-
+
opline = get_next_op(CG(active_op_array) TSRMLS_CC);
opline->opcode = returns_reference ? ZEND_RETURN_BY_REF : ZEND_RETURN;
@@ -2940,10 +2940,10 @@ void zend_do_end_finally(znode *try_token, znode* catch_token, znode *finally_to
{
if (catch_token->op_type == IS_UNUSED && finally_token->op_type == IS_UNUSED) {
zend_error(E_COMPILE_ERROR, "Cannot use try without catch or finally");
- }
+ }
if (finally_token->op_type != IS_UNUSED) {
zend_op *opline;
-
+
CG(active_op_array)->try_catch_array[try_token->u.op.opline_num].finally_op = finally_token->u.op.opline_num + 1;
CG(active_op_array)->try_catch_array[try_token->u.op.opline_num].finally_end = get_next_op_number(CG(active_op_array));
CG(active_op_array)->has_finally_block = 1;
@@ -2952,11 +2952,11 @@ void zend_do_end_finally(znode *try_token, znode* catch_token, znode *finally_to
opline->opcode = ZEND_FAST_RET;
SET_UNUSED(opline->op1);
SET_UNUSED(opline->op2);
-
+
CG(active_op_array)->opcodes[finally_token->u.op.opline_num].op1.opline_num = get_next_op_number(CG(active_op_array));
CG(context).in_finally--;
- }
+ }
}
/* }}} */
@@ -3063,7 +3063,7 @@ static void do_inherit_parent_constructor(zend_class_entry *ce) /* {{{ */
lc_class_name = zend_str_tolower_dup(ce->name, ce->name_length);
if (!zend_hash_exists(&ce->function_table, lc_class_name, ce->name_length+1)) {
lc_parent_class_name = zend_str_tolower_dup(ce->parent->name, ce->parent->name_length);
- if (!zend_hash_exists(&ce->function_table, lc_parent_class_name, ce->parent->name_length+1) &&
+ if (!zend_hash_exists(&ce->function_table, lc_parent_class_name, ce->parent->name_length+1) &&
zend_hash_find(&ce->parent->function_table, lc_parent_class_name, ce->parent->name_length+1, (void **)&function)==SUCCESS) {
if (function->common.fn_flags & ZEND_ACC_CTOR) {
/* inherit parent's constructor */
@@ -3202,8 +3202,8 @@ static zend_bool zend_do_perform_implementation_check(const zend_function *fe, c
return 0;
}
}
- }
- }
+ }
+ }
if (fe->common.arg_info[i].type_hint != proto->common.arg_info[i].type_hint) {
/* Incompatible type hint */
return 0;
@@ -3232,7 +3232,7 @@ static zend_bool zend_do_perform_implementation_check(const zend_function *fe, c
buf = erealloc(buf, length); \
}
-static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{{ */
+static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{{ */
{
char *offset, *buf;
zend_uint length = 1024;
@@ -3249,7 +3249,7 @@ static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{
*(offset++) = ':';
*(offset++) = ':';
}
-
+
{
size_t name_len = strlen(fptr->common.function_name);
REALLOC_BUF_IF_EXCEED(buf, offset, length, name_len);
@@ -3290,7 +3290,7 @@ static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{
offset += type_name_len;
*(offset++) = ' ';
}
-
+
if (arg_info->pass_by_reference) {
*(offset++) = '&';
}
@@ -3392,7 +3392,7 @@ static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{
*offset = '\0';
return buf;
-}
+}
/* }}} */
static void do_inheritance_check_on_method(zend_function *child, zend_function *parent TSRMLS_DC) /* {{{ */
@@ -3404,7 +3404,7 @@ static void do_inheritance_check_on_method(zend_function *child, zend_function *
&& parent->common.fn_flags & ZEND_ACC_ABSTRACT
&& parent->common.scope != (child->common.prototype ? child->common.prototype->common.scope : child->common.scope)
&& child->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_IMPLEMENTED_ABSTRACT)) {
- zend_error(E_COMPILE_ERROR, "Can't inherit abstract function %s::%s() (previously declared abstract in %s)",
+ zend_error(E_COMPILE_ERROR, "Can't inherit abstract function %s::%s() (previously declared abstract in %s)",
parent->common.scope->name,
child->common.function_name,
child->common.prototype ? child->common.prototype->common.scope->name : child->common.scope->name);
@@ -3444,7 +3444,7 @@ static void do_inheritance_check_on_method(zend_function *child, zend_function *
}
if (parent_flags & ZEND_ACC_PRIVATE) {
- child->common.prototype = NULL;
+ child->common.prototype = NULL;
} else if (parent_flags & ZEND_ACC_ABSTRACT) {
child->common.fn_flags |= ZEND_ACC_IMPLEMENTED_ABSTRACT;
child->common.prototype = parent;
@@ -3455,12 +3455,12 @@ static void do_inheritance_check_on_method(zend_function *child, zend_function *
if (child->common.prototype && (child->common.prototype->common.fn_flags & ZEND_ACC_ABSTRACT)) {
if (!zend_do_perform_implementation_check(child, child->common.prototype TSRMLS_CC)) {
- zend_error(E_COMPILE_ERROR, "Declaration of %s::%s() must be compatible with %s", ZEND_FN_SCOPE_NAME(child), child->common.function_name, zend_get_function_declaration(child->common.prototype? child->common.prototype : parent TSRMLS_CC));
+ zend_error(E_COMPILE_ERROR, "Declaration of %s::%s() must be compatible with %s", ZEND_FN_SCOPE_NAME(child), child->common.function_name, zend_get_function_declaration(child->common.prototype? child->common.prototype : parent TSRMLS_CC));
}
} else if (EG(error_reporting) & E_STRICT || EG(user_error_handler)) { /* Check E_STRICT (or custom error handler) before the check so that we save some time */
if (!zend_do_perform_implementation_check(child, parent TSRMLS_CC)) {
char *method_prototype = zend_get_function_declaration(child->common.prototype? child->common.prototype : parent TSRMLS_CC);
- zend_error(E_STRICT, "Declaration of %s::%s() should be compatible with %s", ZEND_FN_SCOPE_NAME(child), child->common.function_name, method_prototype);
+ zend_error(E_STRICT, "Declaration of %s::%s() should be compatible with %s", ZEND_FN_SCOPE_NAME(child), child->common.function_name, method_prototype);
efree(method_prototype);
}
}
@@ -3479,9 +3479,9 @@ static zend_bool do_inherit_method_check(HashTable *child_function_table, zend_f
}
return 1; /* method doesn't exist in child, copy from parent */
}
-
+
do_inheritance_check_on_method(child, parent TSRMLS_CC);
-
+
return 0;
}
/* }}} */
@@ -3512,7 +3512,7 @@ static zend_bool do_inherit_property_access_check(HashTable *target_ht, zend_pro
zend_error(E_COMPILE_ERROR, "Cannot redeclare %s%s::$%s as %s%s::$%s",
(parent_info->flags & ZEND_ACC_STATIC) ? "static " : "non static ", parent_ce->name, hash_key->arKey,
(child_info->flags & ZEND_ACC_STATIC) ? "static " : "non static ", ce->name, hash_key->arKey);
-
+
}
if(parent_info->flags & ZEND_ACC_CHANGED) {
@@ -3778,10 +3778,10 @@ ZEND_API void zend_do_implement_interface(zend_class_entry *ce, zend_class_entry
}
}
ce->interfaces[ce->num_interfaces++] = iface;
-
+
zend_hash_merge_ex(&ce->constants_table, &iface->constants_table, (copy_ctor_func_t) zval_add_ref, sizeof(zval *), (merge_checker_func_t) do_inherit_constant_check, iface);
zend_hash_merge_ex(&ce->function_table, &iface->function_table, (copy_ctor_func_t) do_inherit_method, sizeof(zend_function), (merge_checker_func_t) do_inherit_method_check, ce);
-
+
do_implement_interface(ce, iface TSRMLS_CC);
zend_do_inherit_interfaces(ce, iface TSRMLS_CC);
}
@@ -3821,10 +3821,10 @@ static zend_bool zend_traits_method_compatibility_check(zend_function *fn, zend_
{
zend_uint fn_flags = fn->common.scope->ce_flags;
zend_uint other_flags = other_fn->common.scope->ce_flags;
-
+
return zend_do_perform_implementation_check(fn, other_fn TSRMLS_CC)
&& zend_do_perform_implementation_check(other_fn, fn TSRMLS_CC)
- && ((fn_flags & (ZEND_ACC_FINAL|ZEND_ACC_STATIC)) ==
+ && ((fn_flags & (ZEND_ACC_FINAL|ZEND_ACC_STATIC)) ==
(other_flags & (ZEND_ACC_FINAL|ZEND_ACC_STATIC))); /* equal final and static qualifier */
}
/* }}} */
@@ -3837,7 +3837,7 @@ static void zend_add_magic_methods(zend_class_entry* ce, const char* mname, uint
if (ce->constructor) {
zend_error(E_COMPILE_ERROR, "%s has colliding constructor definitions coming from traits", ce->name);
}
- ce->constructor = fe; fe->common.fn_flags |= ZEND_ACC_CTOR;
+ ce->constructor = fe; fe->common.fn_flags |= ZEND_ACC_CTOR;
} else if (!strncmp(mname, ZEND_DESTRUCTOR_FUNC_NAME, mname_len)) {
ce->destructor = fe; fe->common.fn_flags |= ZEND_ACC_DTOR;
} else if (!strncmp(mname, ZEND_GET_FUNC_NAME, mname_len)) {
@@ -3974,8 +3974,8 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args,
ce = va_arg(args, zend_class_entry*);
overriden = va_arg(args, HashTable**);
exclude_table = va_arg(args, HashTable*);
-
- fnname_len = strlen(fn->common.function_name);
+
+ fnname_len = hash_key->nKeyLength - 1;
/* apply aliases which are qualified with a class name, there should not be any ambiguity */
if (ce->trait_aliases) {
@@ -3986,11 +3986,11 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args,
if (alias->alias != NULL
&& (!alias->trait_method->ce || fn->common.scope == alias->trait_method->ce)
&& alias->trait_method->mname_len == fnname_len
- && (zend_binary_strcasecmp(alias->trait_method->method_name, alias->trait_method->mname_len, fn->common.function_name, fnname_len) == 0)) {
+ && (zend_binary_strcasecmp(alias->trait_method->method_name, alias->trait_method->mname_len, hash_key->arKey, fnname_len) == 0)) {
fn_copy = *fn;
-
+
/* if it is 0, no modifieres has been changed */
- if (alias->modifiers) {
+ if (alias->modifiers) {
fn_copy.common.fn_flags = alias->modifiers | (fn->common.fn_flags ^ (fn->common.fn_flags & ZEND_ACC_PPP_MASK));
}
@@ -4008,7 +4008,7 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args,
}
}
- lcname = zend_str_tolower_dup(fn->common.function_name, fnname_len);
+ lcname = hash_key->arKey;
if (exclude_table == NULL || zend_hash_find(exclude_table, lcname, fnname_len, &dummy) == FAILURE) {
/* is not in hashtable, thus, function is not to be excluded */
@@ -4023,7 +4023,7 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args,
if (alias->alias == NULL && alias->modifiers != 0
&& (!alias->trait_method->ce || fn->common.scope == alias->trait_method->ce)
&& (alias->trait_method->mname_len == fnname_len)
- && (zend_binary_strcasecmp(alias->trait_method->method_name, alias->trait_method->mname_len, fn->common.function_name, fnname_len) == 0)) {
+ && (zend_binary_strcasecmp(alias->trait_method->method_name, alias->trait_method->mname_len, lcname, fnname_len) == 0)) {
fn_copy.common.fn_flags = alias->modifiers | (fn->common.fn_flags ^ (fn->common.fn_flags & ZEND_ACC_PPP_MASK));
@@ -4040,8 +4040,6 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args,
zend_add_trait_method(ce, fn->common.function_name, lcname, fnname_len+1, &fn_copy, overriden TSRMLS_CC);
}
- efree(lcname);
-
return ZEND_HASH_APPLY_KEEP;
}
/* }}} */
@@ -4093,7 +4091,7 @@ static void zend_traits_init_trait_structures(zend_class_entry *ce TSRMLS_DC) /*
cur_method_ref->ce->name,
cur_method_ref->method_name);
}
-
+
/** With the other traits, we are more permissive.
We do not give errors for those. This allows to be more
defensive in such definitions.
@@ -4107,20 +4105,20 @@ static void zend_traits_init_trait_structures(zend_class_entry *ce TSRMLS_DC) /*
if (!(cur_precedence->exclude_from_classes[j] = zend_fetch_class(class_name, name_length, ZEND_FETCH_CLASS_TRAIT |ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC))) {
zend_error(E_COMPILE_ERROR, "Could not find trait %s", class_name);
- }
+ }
zend_check_trait_usage(ce, cur_precedence->exclude_from_classes[j] TSRMLS_CC);
/* make sure that the trait method is not from a class mentioned in
exclude_from_classes, for consistency */
if (cur_precedence->trait_method->ce == cur_precedence->exclude_from_classes[i]) {
zend_error(E_COMPILE_ERROR,
- "Inconsistent insteadof definition. "
+ "Inconsistent insteadof definition. "
"The method %s is to be used from %s, but %s is also on the exclude list",
cur_method_ref->method_name,
cur_precedence->trait_method->ce->name,
cur_precedence->trait_method->ce->name);
}
-
+
efree(class_name);
j++;
}
@@ -4160,7 +4158,7 @@ static void zend_traits_init_trait_structures(zend_class_entry *ce TSRMLS_DC) /*
static void zend_traits_compile_exclude_table(HashTable* exclude_table, zend_trait_precedence **precedences, zend_class_entry *trait) /* {{{ */
{
size_t i = 0, j;
-
+
if (!precedences) {
return;
}
@@ -4171,7 +4169,7 @@ static void zend_traits_compile_exclude_table(HashTable* exclude_table, zend_tra
if (precedences[i]->exclude_from_classes[j] == trait) {
zend_uint lcname_len = precedences[i]->trait_method->mname_len;
char *lcname = zend_str_tolower_dup(precedences[i]->trait_method->method_name, lcname_len);
-
+
if (zend_hash_add(exclude_table, lcname, lcname_len, NULL, 0, NULL) == FAILURE) {
efree(lcname);
zend_error(E_COMPILE_ERROR, "Failed to evaluate a trait precedence (%s). Method of trait %s was defined to be excluded multiple times", precedences[i]->trait_method->method_name, trait->name);
@@ -4208,7 +4206,7 @@ static void zend_do_traits_method_binding(zend_class_entry *ce TSRMLS_DC) /* {{{
zend_hash_apply_with_arguments(&ce->traits[i]->function_table TSRMLS_CC, (apply_func_args_t)zend_traits_copy_functions, 3, ce, &overriden, NULL);
}
}
-
+
zend_hash_apply_with_argument(&ce->function_table, (apply_func_arg_t)zend_fixup_trait_method, ce TSRMLS_CC);
if (overriden) {
@@ -4246,7 +4244,7 @@ static void zend_do_traits_property_binding(zend_class_entry *ce TSRMLS_DC) /* {
const char* class_name_unused;
zend_bool not_compatible;
zval* prop_value;
- char* doc_comment;
+ char* doc_comment;
zend_uint flags;
/* In the following steps the properties are inserted into the property table
@@ -4275,10 +4273,10 @@ static void zend_do_traits_property_binding(zend_class_entry *ce TSRMLS_DC) /* {
/* next: check for conflicts with current class */
if (zend_hash_quick_find(&ce->properties_info, prop_name, prop_name_length+1, prop_hash, (void **) &coliding_prop) == SUCCESS) {
- if (coliding_prop->flags & ZEND_ACC_SHADOW) {
+ if (coliding_prop->flags & ZEND_ACC_SHADOW) {
zend_hash_quick_del(&ce->properties_info, prop_name, prop_name_length+1, prop_hash);
flags |= ZEND_ACC_CHANGED;
- } else {
+ } else {
if ((coliding_prop->flags & (ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC))
== (flags & (ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC))) {
/* flags are identical, now the value needs to be checked */
@@ -4299,14 +4297,14 @@ static void zend_do_traits_property_binding(zend_class_entry *ce TSRMLS_DC) /* {
}
if (not_compatible) {
- zend_error(E_COMPILE_ERROR,
+ zend_error(E_COMPILE_ERROR,
"%s and %s define the same property ($%s) in the composition of %s. However, the definition differs and is considered incompatible. Class was composed",
find_first_definition(ce, i, prop_name, prop_name_length, prop_hash, coliding_prop->ce)->name,
property_info->ce->name,
prop_name,
ce->name);
} else {
- zend_error(E_STRICT,
+ zend_error(E_STRICT,
"%s and %s define the same property ($%s) in the composition of %s. This might be incompatible, to improve maintainability consider using accessor methods in traits instead. Class was composed",
find_first_definition(ce, i, prop_name, prop_name_length, prop_hash, coliding_prop->ce)->name,
property_info->ce->name,
@@ -4326,8 +4324,8 @@ static void zend_do_traits_property_binding(zend_class_entry *ce TSRMLS_DC) /* {
Z_ADDREF_P(prop_value);
doc_comment = property_info->doc_comment ? estrndup(property_info->doc_comment, property_info->doc_comment_len) : NULL;
- zend_declare_property_ex(ce, prop_name, prop_name_length,
- prop_value, flags,
+ zend_declare_property_ex(ce, prop_name, prop_name_length,
+ prop_value, flags,
doc_comment, property_info->doc_comment_len TSRMLS_CC);
}
}
@@ -4339,7 +4337,7 @@ static void zend_do_check_for_inconsistent_traits_aliasing(zend_class_entry *ce
int i = 0;
zend_trait_alias* cur_alias;
char* lc_method_name;
-
+
if (ce->trait_aliases) {
while (ce->trait_aliases[i]) {
cur_alias = ce->trait_aliases[i];
@@ -4360,7 +4358,7 @@ static void zend_do_check_for_inconsistent_traits_aliasing(zend_class_entry *ce
we check against it and abort.
2) it is just a plain old inconsitency/typo/bug
as in the case where alias is set. */
-
+
lc_method_name = zend_str_tolower_dup(cur_alias->trait_method->method_name,
cur_alias->trait_method->mname_len);
if (zend_hash_exists(&ce->function_table,
@@ -4397,7 +4395,7 @@ ZEND_API void zend_do_bind_traits(zend_class_entry *ce TSRMLS_DC) /* {{{ */
/* first care about all methods to be flattened into the class */
zend_do_traits_method_binding(ce TSRMLS_CC);
-
+
/* Aliases which have not been applied indicate typos/bugs. */
zend_do_check_for_inconsistent_traits_aliasing(ce TSRMLS_CC);
@@ -4406,7 +4404,7 @@ ZEND_API void zend_do_bind_traits(zend_class_entry *ce TSRMLS_DC) /* {{{ */
/* verify that all abstract methods from traits have been implemented */
zend_verify_abstract_class(ce TSRMLS_CC);
-
+
/* now everything should be fine and an added ZEND_ACC_IMPLICIT_ABSTRACT_CLASS should be removed */
if (ce->ce_flags & ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
ce->ce_flags -= ZEND_ACC_IMPLICIT_ABSTRACT_CLASS;
@@ -4456,7 +4454,7 @@ void zend_prepare_reference(znode *result, znode *class_name, znode *method_name
zend_trait_method_reference *method_ref = emalloc(sizeof(zend_trait_method_reference));
method_ref->ce = NULL;
- /* REM: There should not be a need for copying,
+ /* REM: There should not be a need for copying,
zend_do_begin_class_declaration is also just using that string */
if (class_name) {
zend_resolve_class_name(class_name, ZEND_FETCH_CLASS_GLOBAL, 1 TSRMLS_CC);
@@ -5030,7 +5028,7 @@ void zend_do_begin_class_declaration(const znode *class_token, znode *class_name
build_runtime_defined_function_key(&key, lcname, new_class_entry->name_length TSRMLS_CC);
opline->op1.constant = zend_add_literal(CG(active_op_array), &key TSRMLS_CC);
Z_HASH_P(&CONSTANT(opline->op1.constant)) = zend_hash_func(Z_STRVAL(CONSTANT(opline->op1.constant)), Z_STRLEN(CONSTANT(opline->op1.constant)));
-
+
opline->op2_type = IS_CONST;
if (doing_inheritance) {
@@ -5047,7 +5045,7 @@ void zend_do_begin_class_declaration(const znode *class_token, znode *class_name
LITERAL_STRINGL(opline->op2, lcname, new_class_entry->name_length, 0);
CALCULATE_LITERAL_HASH(opline->op2.constant);
-
+
zend_hash_quick_update(CG(class_table), Z_STRVAL(key), Z_STRLEN(key), Z_HASH_P(&CONSTANT(opline->op1.constant)), &new_class_entry, sizeof(zend_class_entry *), NULL);
CG(active_class_entry) = new_class_entry;
@@ -5098,7 +5096,7 @@ void zend_do_end_class_declaration(const znode *class_token, const znode *parent
}
ce->info.user.line_end = zend_get_compiled_lineno(TSRMLS_C);
-
+
/* Check for traits and proceed like with interfaces.
* The only difference will be a combined handling of them in the end.
* Thus, we need another opcode here. */
@@ -5123,7 +5121,7 @@ void zend_do_end_class_declaration(const znode *class_token, const znode *parent
}
}
/* Inherit interfaces; reset number to zero, we need it for above check and
- * will restore it during actual implementation.
+ * will restore it during actual implementation.
* The ZEND_ACC_IMPLEMENT_INTERFACES flag disables double call to
* zend_verify_abstract_class() */
if (ce->num_interfaces > 0) {
@@ -5325,7 +5323,7 @@ void zend_do_declare_class_constant(znode *var_name, const znode *value TSRMLS_D
ALLOC_ZVAL(property);
*property = value->u.constant;
-
+
cname = zend_new_interned_string(var_name->u.constant.value.str.val, var_name->u.constant.value.str.len+1, 0 TSRMLS_CC);
if (IS_INTERNED(cname)) {
@@ -5338,7 +5336,7 @@ void zend_do_declare_class_constant(znode *var_name, const znode *value TSRMLS_D
zend_error(E_COMPILE_ERROR, "Cannot redefine class constant %s::%s", CG(active_class_entry)->name, var_name->u.constant.value.str.val);
}
FREE_PNODE(var_name);
-
+
if (CG(doc_comment)) {
efree(CG(doc_comment));
CG(doc_comment) = NULL;
@@ -5427,17 +5425,17 @@ void zend_do_halt_compiler_register(TSRMLS_D) /* {{{ */
char *name, *cfilename;
char haltoff[] = "__COMPILER_HALT_OFFSET__";
int len, clen;
-
+
if (CG(has_bracketed_namespaces) && CG(in_namespace)) {
zend_error(E_COMPILE_ERROR, "__HALT_COMPILER() can only be used from the outermost scope");
}
-
+
cfilename = zend_get_compiled_filename(TSRMLS_C);
clen = strlen(cfilename);
zend_mangle_property_name(&name, &len, haltoff, sizeof(haltoff) - 1, cfilename, clen, 0);
zend_register_long_constant(name, len+1, zend_get_scanned_file_offset(TSRMLS_C), CONST_CS, 0 TSRMLS_CC);
pefree(name, 0);
-
+
if (CG(in_namespace)) {
zend_do_end_namespace(TSRMLS_C);
}
@@ -5514,7 +5512,7 @@ static zend_constant* zend_get_ct_const(const zval *const_name, int all_internal
}
} else if (zend_hash_find(EG(zend_constants), Z_STRVAL_P(const_name), Z_STRLEN_P(const_name)+1, (void **) &c) == FAILURE) {
char *lookup_name = zend_str_tolower_dup(Z_STRVAL_P(const_name), Z_STRLEN_P(const_name));
-
+
if (zend_hash_find(EG(zend_constants), lookup_name, Z_STRLEN_P(const_name)+1, (void **) &c)==SUCCESS) {
if ((c->flags & CONST_CT_SUBST) && !(c->flags & CONST_CS)) {
efree(lookup_name);
@@ -5567,7 +5565,7 @@ void zend_do_fetch_constant(znode *result, znode *constant_container, znode *con
case ZEND_CT:
/* this is a class constant */
type = zend_get_class_fetch_type(Z_STRVAL(constant_container->u.constant), Z_STRLEN(constant_container->u.constant));
-
+
if (ZEND_FETCH_CLASS_STATIC == type) {
zend_error(E_ERROR, "\"static::\" is not allowed in compile-time constants");
} else if (ZEND_FETCH_CLASS_DEFAULT == type) {
@@ -5631,7 +5629,7 @@ void zend_do_fetch_constant(znode *result, znode *constant_container, znode *con
compound = memchr(Z_STRVAL(constant_name->u.constant), '\\', Z_STRLEN(constant_name->u.constant));
zend_resolve_non_class_name(constant_name, check_namespace TSRMLS_CC);
-
+
if(zend_constant_ct_subst(result, &constant_name->u.constant, 1 TSRMLS_CC)) {
break;
}
@@ -5647,7 +5645,7 @@ void zend_do_fetch_constant(znode *result, znode *constant_container, znode *con
/* the name is unambiguous */
opline->extended_value = 0;
opline->op2.constant = zend_add_const_name_literal(CG(active_op_array), &constant_name->u.constant, 0 TSRMLS_CC);
- } else {
+ } else {
opline->extended_value = IS_CONSTANT_UNQUALIFIED;
if (CG(current_namespace)) {
opline->extended_value |= IS_CONSTANT_IN_NAMESPACE;
@@ -5721,7 +5719,7 @@ void zend_do_init_array(znode *result, const znode *expr, const znode *offset, z
ZEND_HANDLE_NUMERIC_EX(Z_STRVAL(CONSTANT(opline->op2.constant)), Z_STRLEN(CONSTANT(opline->op2.constant))+1, index, numeric = 1);
if (numeric) {
zval_dtor(&CONSTANT(opline->op2.constant));
- ZVAL_LONG(&CONSTANT(opline->op2.constant), index);
+ ZVAL_LONG(&CONSTANT(opline->op2.constant), index);
} else {
CALCULATE_LITERAL_HASH(opline->op2.constant);
}
@@ -5753,7 +5751,7 @@ void zend_do_add_array_element(znode *result, const znode *expr, const znode *of
ZEND_HANDLE_NUMERIC_EX(Z_STRVAL(CONSTANT(opline->op2.constant)), Z_STRLEN(CONSTANT(opline->op2.constant))+1, index, numeric = 1);
if (numeric) {
zval_dtor(&CONSTANT(opline->op2.constant));
- ZVAL_LONG(&CONSTANT(opline->op2.constant), index);
+ ZVAL_LONG(&CONSTANT(opline->op2.constant), index);
} else {
CALCULATE_LITERAL_HASH(opline->op2.constant);
}
@@ -6013,7 +6011,7 @@ void zend_do_fetch_lexical_variable(znode *varname, zend_bool is_ref TSRMLS_DC)
Z_TYPE(value.u.constant) |= is_ref ? IS_LEXICAL_REF : IS_LEXICAL_VAR;
Z_SET_REFCOUNT_P(&value.u.constant, 1);
Z_UNSET_ISREF_P(&value.u.constant);
-
+
zend_do_fetch_static_variable(varname, &value, is_ref ? ZEND_FETCH_STATIC : ZEND_FETCH_LEXICAL TSRMLS_CC);
}
/* }}} */
@@ -6529,7 +6527,7 @@ void zend_do_jmp_set(const znode *value, znode *jmp_token, znode *colon_token TS
opline->result.var = get_temporary_variable(CG(active_op_array));
SET_NODE(opline->op1, value);
SET_UNUSED(opline->op2);
-
+
GET_NODE(colon_token, opline->result);
jmp_token->u.op.opline_num = op_number;
@@ -6558,11 +6556,11 @@ void zend_do_jmp_set_else(znode *result, const znode *false_value, const znode *
opline->extended_value = 0;
SET_NODE(opline->op1, false_value);
SET_UNUSED(opline->op2);
-
+
GET_NODE(result, opline->result);
CG(active_op_array)->opcodes[jmp_token->u.op.opline_num].op2.opline_num = get_next_op_number(CG(active_op_array));
-
+
DEC_BPC(CG(active_op_array));
}
/* }}} */
@@ -6775,7 +6773,7 @@ again:
CG(increment_lineno) = 1;
}
if (CG(has_bracketed_namespaces) && !CG(in_namespace)) {
- goto again;
+ goto again;
}
retval = ';'; /* implicit ; */
break;
@@ -6865,13 +6863,13 @@ ZEND_API void zend_initialize_class_data(zend_class_entry *ce, zend_bool nullify
int zend_get_class_fetch_type(const char *class_name, uint class_name_len) /* {{{ */
{
if ((class_name_len == sizeof("self")-1) &&
- !memcmp(class_name, "self", sizeof("self")-1)) {
- return ZEND_FETCH_CLASS_SELF;
+ !strncasecmp(class_name, "self", sizeof("self")-1)) {
+ return ZEND_FETCH_CLASS_SELF;
} else if ((class_name_len == sizeof("parent")-1) &&
- !memcmp(class_name, "parent", sizeof("parent")-1)) {
+ !strncasecmp(class_name, "parent", sizeof("parent")-1)) {
return ZEND_FETCH_CLASS_PARENT;
} else if ((class_name_len == sizeof("static")-1) &&
- !memcmp(class_name, "static", sizeof("static")-1)) {
+ !strncasecmp(class_name, "static", sizeof("static")-1)) {
return ZEND_FETCH_CLASS_STATIC;
} else {
return ZEND_FETCH_CLASS_DEFAULT;
@@ -6984,7 +6982,7 @@ void zend_do_begin_namespace(const znode *name, zend_bool with_bracket TSRMLS_DC
efree(CG(current_import));
CG(current_import) = NULL;
}
-
+
if (CG(doc_comment)) {
efree(CG(doc_comment));
CG(doc_comment) = NULL;
@@ -7156,7 +7154,7 @@ ZEND_API size_t zend_dirname(char *path, size_t len)
len_adjust += 2;
if (2 == len) {
/* Return "c:" on Win32 for dirname("c:").
- * It would be more consistent to return "c:."
+ * It would be more consistent to return "c:."
* but that would require making the string *longer*.
*/
return len;
@@ -7164,7 +7162,7 @@ ZEND_API size_t zend_dirname(char *path, size_t len)
}
#elif defined(NETWARE)
/*
- * Find the first occurence of : from the left
+ * Find the first occurence of : from the left
* move the path pointer to the position just after :
* increment the len_adjust to the length of path till colon character(inclusive)
* If there is no character beyond : simple return len
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c
index c6c18a707..c1dbee124 100644
--- a/Zend/zend_generators.c
+++ b/Zend/zend_generators.c
@@ -27,6 +27,8 @@
ZEND_API zend_class_entry *zend_ce_generator;
static zend_object_handlers zend_generator_handlers;
+static zend_object_value zend_generator_create(zend_class_entry *class_type TSRMLS_DC);
+
ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished_execution TSRMLS_DC) /* {{{ */
{
if (generator->value) {
@@ -43,41 +45,6 @@ ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished
zend_execute_data *execute_data = generator->execute_data;
zend_op_array *op_array = execute_data->op_array;
- if (!finished_execution) {
- if (op_array->has_finally_block) {
- /* -1 required because we want the last run opcode, not the
- * next to-be-run one. */
- zend_uint op_num = execute_data->opline - op_array->opcodes - 1;
- zend_uint finally_op_num = 0;
-
- /* Find next finally block */
- int i;
- for (i = 0; i < op_array->last_try_catch; i++) {
- zend_try_catch_element *try_catch = &op_array->try_catch_array[i];
-
- if (op_num < try_catch->try_op) {
- break;
- }
-
- if (op_num < try_catch->finally_op) {
- finally_op_num = try_catch->finally_op;
- }
- }
-
- /* If a finally block was found we jump directly to it and
- * resume the generator. Furthermore we abort this close call
- * because the generator will already be closed somewhere in
- * the resume. */
- if (finally_op_num) {
- execute_data->opline = &op_array->opcodes[finally_op_num];
- execute_data->fast_ret = NULL;
- generator->flags |= ZEND_GENERATOR_FORCED_CLOSE;
- zend_generator_resume(generator TSRMLS_CC);
- return;
- }
- }
- }
-
if (!execute_data->symbol_table) {
zend_free_compiled_variables(execute_data);
} else {
@@ -127,10 +94,16 @@ ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished
/* Clear any backed up stack arguments */
if (generator->stack != EG(argument_stack)) {
- void **stack_frame = zend_vm_stack_frame_base(execute_data);
- while (generator->stack->top != stack_frame) {
- zval_ptr_dtor((zval**)stack_frame);
- stack_frame++;
+ void **ptr = generator->stack->top - 1;
+ void **end = zend_vm_stack_frame_base(execute_data);
+
+ /* If the top stack element is the argument count, skip it */
+ if (execute_data->function_state.arguments) {
+ ptr--;
+ }
+
+ for (; ptr >= end; --ptr) {
+ zval_ptr_dtor((zval**) ptr);
}
}
@@ -175,6 +148,45 @@ ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished
}
/* }}} */
+static void zend_generator_dtor_storage(zend_generator *generator, zend_object_handle handle TSRMLS_DC) /* {{{ */
+{
+ zend_execute_data *ex = generator->execute_data;
+ zend_uint op_num, finally_op_num;
+ int i;
+
+ if (!ex || !ex->op_array->has_finally_block) {
+ return;
+ }
+
+ /* -1 required because we want the last run opcode, not the
+ * next to-be-run one. */
+ op_num = ex->opline - ex->op_array->opcodes - 1;
+
+ /* Find next finally block */
+ finally_op_num = 0;
+ for (i = 0; i < ex->op_array->last_try_catch; i++) {
+ zend_try_catch_element *try_catch = &ex->op_array->try_catch_array[i];
+
+ if (op_num < try_catch->try_op) {
+ break;
+ }
+
+ if (op_num < try_catch->finally_op) {
+ finally_op_num = try_catch->finally_op;
+ }
+ }
+
+ /* If a finally block was found we jump directly to it and
+ * resume the generator. */
+ if (finally_op_num) {
+ ex->opline = &ex->op_array->opcodes[finally_op_num];
+ ex->fast_ret = NULL;
+ generator->flags |= ZEND_GENERATOR_FORCED_CLOSE;
+ zend_generator_resume(generator TSRMLS_CC);
+ }
+}
+/* }}} */
+
static void zend_generator_free_storage(zend_generator *generator TSRMLS_DC) /* {{{ */
{
zend_generator_close(generator, 0 TSRMLS_CC);
@@ -184,10 +196,19 @@ static void zend_generator_free_storage(zend_generator *generator TSRMLS_DC) /*
}
/* }}} */
-static void zend_generator_clone_storage(zend_generator *orig, zend_generator **clone_ptr TSRMLS_DC) /* {{{ */
+static zend_object_value zend_generator_clone(zval *object TSRMLS_DC) /* {{{ */
{
- zend_generator *clone = emalloc(sizeof(zend_generator));
- memcpy(clone, orig, sizeof(zend_generator));
+ zend_generator *orig = zend_object_store_get_object(object TSRMLS_CC);
+ zend_object_value clone_val = zend_generator_create(Z_OBJCE_P(object) TSRMLS_CC);
+ zend_generator *clone = zend_object_store_get_object_by_handle(clone_val.handle TSRMLS_CC);
+
+ zend_objects_clone_members(
+ &clone->std, clone_val, &orig->std, Z_OBJ_HANDLE_P(object) TSRMLS_CC
+ );
+
+ clone->execute_data = orig->execute_data;
+ clone->largest_used_integer_key = orig->largest_used_integer_key;
+ clone->flags = orig->flags;
if (orig->execute_data) {
/* Create a few shorter aliases to the old execution data */
@@ -331,14 +352,16 @@ static void zend_generator_clone_storage(zend_generator *orig, zend_generator **
/* The value and key are known not to be references, so simply add refs */
if (orig->value) {
+ clone->value = orig->value;
Z_ADDREF_P(orig->value);
}
if (orig->key) {
+ clone->key = orig->key;
Z_ADDREF_P(orig->key);
}
- *clone_ptr = clone;
+ return clone_val;
}
/* }}} */
@@ -355,10 +378,10 @@ static zend_object_value zend_generator_create(zend_class_entry *class_type TSRM
zend_object_std_init(&generator->std, class_type TSRMLS_CC);
- object.handle = zend_objects_store_put(generator, NULL,
+ object.handle = zend_objects_store_put(generator,
+ (zend_objects_store_dtor_t) zend_generator_dtor_storage,
(zend_objects_free_object_storage_t) zend_generator_free_storage,
- (zend_objects_store_clone_t) zend_generator_clone_storage
- TSRMLS_CC
+ NULL TSRMLS_CC
);
object.handlers = &zend_generator_handlers;
@@ -858,7 +881,7 @@ void zend_register_generator_ce(TSRMLS_D) /* {{{ */
memcpy(&zend_generator_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
zend_generator_handlers.get_constructor = zend_generator_get_constructor;
- zend_generator_handlers.clone_obj = zend_objects_store_clone_obj;
+ zend_generator_handlers.clone_obj = zend_generator_clone;
}
/* }}} */
diff --git a/Zend/zend_ini.h b/Zend/zend_ini.h
index 2773ebb6c..b27d3d4ad 100644
--- a/Zend/zend_ini.h
+++ b/Zend/zend_ini.h
@@ -28,7 +28,7 @@
#define ZEND_INI_ALL (ZEND_INI_USER|ZEND_INI_PERDIR|ZEND_INI_SYSTEM)
#ifndef XtOffsetOf
-# if defined(CRAY) || (defined(__arm) && !defined(LINUX))
+# if defined(CRAY) || (defined(__ARMCC_VERSION) && !defined(LINUX))
# ifdef __STDC__
# define XtOffset(p_type, field) _Offsetof(p_type, field)
# else
diff --git a/Zend/zend_ini_parser.c b/Zend/zend_ini_parser.c
index 4db9027cc..6270c6c86 100644
--- a/Zend/zend_ini_parser.c
+++ b/Zend/zend_ini_parser.c
@@ -1,24 +1,21 @@
-/* A Bison parser, made by GNU Bison 2.3. */
+/* A Bison parser, made by GNU Bison 2.6.1. */
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
+/* Bison implementation for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -29,7 +26,7 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
@@ -47,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.3"
+#define YYBISON_VERSION "2.6.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -55,59 +52,21 @@
/* Pure parsers. */
#define YYPURE 1
-/* Using locations. */
-#define YYLSP_NEEDED 0
-
-/* Substitute the variable and function names. */
-#define yyparse ini_parse
-#define yylex ini_lex
-#define yyerror ini_error
-#define yylval ini_lval
-#define yychar ini_char
-#define yydebug ini_debug
-#define yynerrs ini_nerrs
-
-
-/* Tokens. */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- TC_SECTION = 258,
- TC_RAW = 259,
- TC_CONSTANT = 260,
- TC_NUMBER = 261,
- TC_STRING = 262,
- TC_WHITESPACE = 263,
- TC_LABEL = 264,
- TC_OFFSET = 265,
- TC_DOLLAR_CURLY = 266,
- TC_VARNAME = 267,
- TC_QUOTED_STRING = 268,
- BOOL_TRUE = 269,
- BOOL_FALSE = 270,
- END_OF_LINE = 271
- };
-#endif
-/* Tokens. */
-#define TC_SECTION 258
-#define TC_RAW 259
-#define TC_CONSTANT 260
-#define TC_NUMBER 261
-#define TC_STRING 262
-#define TC_WHITESPACE 263
-#define TC_LABEL 264
-#define TC_OFFSET 265
-#define TC_DOLLAR_CURLY 266
-#define TC_VARNAME 267
-#define TC_QUOTED_STRING 268
-#define BOOL_TRUE 269
-#define BOOL_FALSE 270
-#define END_OF_LINE 271
+/* Push parsers. */
+#define YYPUSH 0
+/* Pull parsers. */
+#define YYPULL 1
+/* Substitute the variable and function names. */
+#define yyparse ini_parse
+#define yylex ini_lex
+#define yyerror ini_error
+#define yylval ini_lval
+#define yychar ini_char
+#define yydebug ini_debug
+#define yynerrs ini_nerrs
/* Copy the first part of user declarations. */
@@ -359,10 +318,14 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s
-/* Enabling traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
+
+# ifndef YY_NULL
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULL nullptr
+# else
+# define YY_NULL 0
+# endif
+# endif
/* Enabling verbose error messages. */
#ifdef YYERROR_VERBOSE
@@ -372,25 +335,85 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s
# define YYERROR_VERBOSE 0
#endif
-/* Enabling the token table. */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+/* In a future release of Bison, this section will be replaced
+ by #include "zend_ini_parser.h". */
+#ifndef INI_ZEND_ZEND_INI_PARSER_H
+# define INI_ZEND_ZEND_INI_PARSER_H
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int ini_debug;
+#endif
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ TC_SECTION = 258,
+ TC_RAW = 259,
+ TC_CONSTANT = 260,
+ TC_NUMBER = 261,
+ TC_STRING = 262,
+ TC_WHITESPACE = 263,
+ TC_LABEL = 264,
+ TC_OFFSET = 265,
+ TC_DOLLAR_CURLY = 266,
+ TC_VARNAME = 267,
+ TC_QUOTED_STRING = 268,
+ BOOL_TRUE = 269,
+ BOOL_FALSE = 270,
+ END_OF_LINE = 271
+ };
#endif
+/* Tokens. */
+#define TC_SECTION 258
+#define TC_RAW 259
+#define TC_CONSTANT 260
+#define TC_NUMBER 261
+#define TC_STRING 262
+#define TC_WHITESPACE 263
+#define TC_LABEL 264
+#define TC_OFFSET 265
+#define TC_DOLLAR_CURLY 266
+#define TC_VARNAME 267
+#define TC_QUOTED_STRING 268
+#define BOOL_TRUE 269
+#define BOOL_FALSE 270
+#define END_OF_LINE 271
+
+
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef int YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
#endif
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int ini_parse (void *YYPARSE_PARAM);
+#else
+int ini_parse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int ini_parse (void);
+#else
+int ini_parse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+#endif /* !INI_ZEND_ZEND_INI_PARSER_H */
/* Copy the second part of user declarations. */
-/* Line 216 of yacc.c. */
-
#ifdef short
# undef short
@@ -440,7 +463,7 @@ typedef short int yytype_int16;
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -465,14 +488,14 @@ typedef short int yytype_int16;
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static int
-YYID (int i)
+YYID (int yyi)
#else
static int
-YYID (i)
- int i;
+YYID (yyi)
+ int yyi;
#endif
{
- return i;
+ return yyi;
}
#endif
@@ -493,11 +516,12 @@ YYID (i)
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
# endif
# endif
# endif
@@ -520,24 +544,24 @@ YYID (i)
# ifndef YYSTACK_ALLOC_MAXIMUM
# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
# endif
-# if (defined __cplusplus && ! defined _STDLIB_H \
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
&& ! ((defined YYMALLOC || defined malloc) \
&& (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
# endif
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
@@ -553,9 +577,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
/* A type that is properly aligned for any stack member. */
union yyalloc
{
- yytype_int16 yyss;
- YYSTYPE yyvs;
- };
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+};
/* The size of the maximum gap between one aligned stack and the next. */
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
@@ -566,35 +590,19 @@ union yyalloc
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (YYID (0))
-# endif
-# endif
+# define YYCOPY_NEEDED 1
/* Relocate STACK from its old location to the new one. The
local variables YYSIZE and YYSTACKSIZE give the old and new number of
elements in the stack, and YYPTR gives the new location of the
stack. Advance YYPTR to a properly aligned location for the next
stack. */
-# define YYSTACK_RELOCATE(Stack) \
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
@@ -602,6 +610,26 @@ union yyalloc
#endif
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(Dst, Src, Count) \
+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+# else
+# define YYCOPY(Dst, Src, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (Dst)[yyi] = (Src)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 2
/* YYLAST -- Last index in YYTABLE. */
@@ -697,7 +725,7 @@ static const yytype_uint16 yyrline[] =
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 0
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
@@ -705,13 +733,13 @@ static const char *const yytname[] =
"$end", "error", "$undefined", "TC_SECTION", "TC_RAW", "TC_CONSTANT",
"TC_NUMBER", "TC_STRING", "TC_WHITESPACE", "TC_LABEL", "TC_OFFSET",
"TC_DOLLAR_CURLY", "TC_VARNAME", "TC_QUOTED_STRING", "BOOL_TRUE",
- "BOOL_FALSE", "END_OF_LINE", "'='", "':'", "','", "'.'", "'\"'", "'''",
+ "BOOL_FALSE", "END_OF_LINE", "'='", "':'", "','", "'.'", "'\"'", "'\\''",
"'^'", "'+'", "'-'", "'/'", "'*'", "'%'", "'$'", "'~'", "'<'", "'>'",
"'?'", "'@'", "'{'", "'}'", "'|'", "'&'", "'!'", "']'", "'('", "')'",
"$accept", "statement_list", "statement", "section_string_or_value",
"string_or_value", "option_offset", "encapsed_list",
"var_string_list_section", "var_string_list", "expr", "cfg_var_ref",
- "constant_literal", "constant_string", 0
+ "constant_literal", "constant_string", YY_NULL
};
#endif
@@ -748,8 +776,8 @@ static const yytype_uint8 yyr2[] =
1, 1, 1, 1, 1, 1, 1, 1, 1
};
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
@@ -792,8 +820,7 @@ static const yytype_int8 yypgoto[] =
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
- number is the opposite. If zero, do what YYDEFACT says.
- If YYTABLE_NINF, syntax error. */
+ number is the opposite. If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -1
static const yytype_uint8 yytable[] =
{
@@ -810,6 +837,12 @@ static const yytype_uint8 yytable[] =
0, 0, 4, 5, 0, 47, 0, 68, 0, 6
};
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-36))
+
+#define yytable_value_is_error(yytable_value) \
+ YYID (0)
+
static const yytype_int8 yycheck[] =
{
3, 25, 37, 38, 4, 5, 6, 7, 8, 33,
@@ -850,24 +883,33 @@ static const yytype_uint8 yystos[] =
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
+ Once GCC version 2 has supplanted version 1, this can go. However,
+ YYFAIL appears to be in use. Nevertheless, it is formally deprecated
+ in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+ discussed. */
#define YYFAIL goto yyerrlab
+#if defined YYFAIL
+ /* This is here to suppress warnings from the GCC cpp's
+ -Wunused-macros. Normally we don't worry about that warning, but
+ some users do, and we want to make it easy for users to remove
+ YYFAIL uses, which will produce warnings from Bison 2.5. */
+#endif
#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK (1); \
- goto yybackup; \
- } \
- else \
- { \
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
yyerror (YY_("syntax error: cannot back up")); \
YYERROR; \
} \
@@ -877,46 +919,38 @@ while (YYID (0))
#define YYTERROR 1
#define YYERRCODE 256
-
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
If N is 0, then set CURRENT to the empty location which ends
the previous symbol: RHS[0] (always defined). */
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- do \
- if (YYID (N)) \
- { \
- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
- } \
- else \
- { \
- (Current).first_line = (Current).last_line = \
- YYRHSLOC (Rhs, 0).last_line; \
- (Current).first_column = (Current).last_column = \
- YYRHSLOC (Rhs, 0).last_column; \
- } \
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
while (YYID (0))
#endif
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+
+
-/* YY_LOCATION_PRINT -- Print the location on the stream.
- This macro was not mandated originally: define only if we know
- we won't break user code: when these are the locations we know. */
+/* This macro is provided for backward compatibility. */
#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-# define YY_LOCATION_PRINT(File, Loc) \
- fprintf (File, "%d.%d-%d.%d", \
- (Loc).first_line, (Loc).first_column, \
- (Loc).last_line, (Loc).last_column)
-# else
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
#endif
@@ -971,6 +1005,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
YYSTYPE const * const yyvaluep;
#endif
{
+ FILE *yyo = yyoutput;
+ YYUSE (yyo);
if (!yyvaluep)
return;
# ifdef YYPRINT
@@ -1020,17 +1056,20 @@ yy_symbol_print (yyoutput, yytype, yyvaluep)
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
#else
static void
-yy_stack_print (bottom, top)
- yytype_int16 *bottom;
- yytype_int16 *top;
+yy_stack_print (yybottom, yytop)
+ yytype_int16 *yybottom;
+ yytype_int16 *yytop;
#endif
{
YYFPRINTF (stderr, "Stack now");
- for (; bottom <= top; ++bottom)
- YYFPRINTF (stderr, " %d", *bottom);
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
YYFPRINTF (stderr, "\n");
}
@@ -1064,11 +1103,11 @@ yy_reduce_print (yyvsp, yyrule)
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
- fprintf (stderr, " $%d = ", yyi + 1);
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
&(yyvsp[(yyi + 1) - (yynrhs)])
);
- fprintf (stderr, "\n");
+ YYFPRINTF (stderr, "\n");
}
}
@@ -1105,7 +1144,6 @@ int yydebug;
# define YYMAXDEPTH 10000
#endif
-
#if YYERROR_VERBOSE
@@ -1208,115 +1246,142 @@ yytnamerr (char *yyres, const char *yystr)
}
# endif
-/* Copy into YYRESULT an error message about the unexpected token
- YYCHAR while in state YYSTATE. Return the number of bytes copied,
- including the terminating null byte. If YYRESULT is null, do not
- copy anything; just return the number of bytes that would be
- copied. As a special case, return 0 if an ordinary "syntax error"
- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
- size calculation. */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
- int yyn = yypact[yystate];
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
- if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
- return 0;
- else
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = YY_NULL;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
+ - Assume YYFAIL is not used. It's too flawed to consider. See
+ <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+ for details. YYERROR is fine as it does not invoke this
+ function.
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
{
- int yytype = YYTRANSLATE (yychar);
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- int yysize_overflow = 0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- int yyx;
-
-# if 0
- /* This is so xgettext sees the translatable formats that are
- constructed on the fly. */
- YY_("syntax error, unexpected %s");
- YY_("syntax error, unexpected %s, expecting %s");
- YY_("syntax error, unexpected %s, expecting %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
- char *yyfmt;
- char const *yyf;
- static char const yyunexpected[] = "syntax error, unexpected %s";
- static char const yyexpecting[] = ", expecting %s";
- static char const yyor[] = " or %s";
- char yyformat[sizeof yyunexpected
- + sizeof yyexpecting - 1
- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
- * (sizeof yyor - 1))];
- char const *yyprefix = yyexpecting;
-
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
-
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yycount = 1;
-
- yyarg[0] = yytname[yytype];
- yyfmt = yystpcpy (yyformat, yyunexpected);
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- yyformat[sizeof yyunexpected - 1] = '\0';
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
- yyfmt = yystpcpy (yyfmt, yyprefix);
- yyprefix = yyor;
- }
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
- yyf = YY_(yyformat);
- yysize1 = yysize + yystrlen (yyf);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
- if (yysize_overflow)
- return YYSIZE_MAXIMUM;
+ yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
- if (yyresult)
- {
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- char *yyp = yyresult;
- int yyi = 0;
- while ((*yyp = *yyf) != '\0')
- {
- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyf += 2;
- }
- else
- {
- yyp++;
- yyf++;
- }
- }
- }
- return yysize;
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
}
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
}
#endif /* YYERROR_VERBOSE */
-
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
@@ -1348,25 +1413,6 @@ yydestruct (yymsg, yytype, yyvaluep)
break;
}
}
-
-
-/* Prevent warnings from -Wmissing-prototypes. */
-
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
-
@@ -1397,77 +1443,77 @@ yyparse ()
#endif
#endif
{
- /* The look-ahead symbol. */
+/* The lookahead symbol. */
int yychar;
-/* The semantic value of the look-ahead symbol. */
+/* The semantic value of the lookahead symbol. */
YYSTYPE yylval;
-/* Number of syntax errors so far. */
-int yynerrs;
-
- int yystate;
- int yyn;
- int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Look-ahead token as an internal (translated) token number. */
- int yytoken = 0;
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
-
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
+ /* Number of syntax errors so far. */
+ int yynerrs;
- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss = yyssa;
- yytype_int16 *yyssp;
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs = yyvsa;
- YYSTYPE *yyvsp;
+ /* The stacks and their tools:
+ `yyss': related to states.
+ `yyvs': related to semantic values.
+ Refer to the stacks through separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
-#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
- YYSIZE_T yystacksize = YYINITDEPTH;
+ YYSIZE_T yystacksize;
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
/* The number of symbols on the RHS of the reduced rule.
Keep to zero when no symbol should be popped. */
int yylen = 0;
+ yytoken = 0;
+ yyss = yyssa;
+ yyvs = yyvsa;
+ yystacksize = YYINITDEPTH;
+
YYDPRINTF ((stderr, "Starting parse\n"));
yystate = 0;
yyerrstatus = 0;
yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
+ yychar = YYEMPTY; /* Cause a token to be read. */
/* Initialize stack pointers.
Waste one element of value and location stack
so that they stay on the same level as the state stack.
The wasted elements are never initialized. */
-
yyssp = yyss;
yyvsp = yyvs;
-
goto yysetstate;
/*------------------------------------------------------------.
@@ -1494,7 +1540,6 @@ int yynerrs;
YYSTYPE *yyvs1 = yyvs;
yytype_int16 *yyss1 = yyss;
-
/* Each stack pointer address is followed by the size of the
data in use in that stack, in bytes. This used to be a
conditional around just the two extra args, but that might
@@ -1502,7 +1547,6 @@ int yynerrs;
yyoverflow (YY_("memory exhausted"),
&yyss1, yysize * sizeof (*yyssp),
&yyvs1, yysize * sizeof (*yyvsp),
-
&yystacksize);
yyss = yyss1;
@@ -1525,9 +1569,8 @@ int yynerrs;
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
if (! yyptr)
goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss);
- YYSTACK_RELOCATE (yyvs);
-
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
# undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
@@ -1538,7 +1581,6 @@ int yynerrs;
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
-
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
(unsigned long int) yystacksize));
@@ -1548,6 +1590,9 @@ int yynerrs;
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
goto yybackup;
/*-----------.
@@ -1556,16 +1601,16 @@ int yynerrs;
yybackup:
/* Do appropriate processing given the current state. Read a
- look-ahead token if we need one and don't already have one. */
+ lookahead token if we need one and don't already have one. */
- /* First try to decide what to do without reference to look-ahead token. */
+ /* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
- if (yyn == YYPACT_NINF)
+ if (yypact_value_is_default (yyn))
goto yydefault;
- /* Not known => get a look-ahead token if don't already have one. */
+ /* Not known => get a lookahead token if don't already have one. */
- /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
@@ -1591,26 +1636,22 @@ yybackup:
yyn = yytable[yyn];
if (yyn <= 0)
{
- if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
- if (yyn == YYFINAL)
- YYACCEPT;
-
/* Count tokens shifted since error; after three, turn off error
status. */
if (yyerrstatus)
yyerrstatus--;
- /* Shift the look-ahead token. */
+ /* Shift the lookahead token. */
YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
- /* Discard the shifted token unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
yystate = yyn;
*++yyvsp = yylval;
@@ -1891,10 +1932,20 @@ yyreduce:
break;
-/* Line 1267 of yacc.c. */
default: break;
}
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
YYPOPSTACK (yylen);
@@ -1903,7 +1954,6 @@ yyreduce:
*++yyvsp = yyval;
-
/* Now `shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
number reduced by. */
@@ -1923,6 +1973,10 @@ yyreduce:
| yyerrlab -- here on detecting error |
`------------------------------------*/
yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
@@ -1930,37 +1984,36 @@ yyerrlab:
#if ! YYERROR_VERBOSE
yyerror (YY_("syntax error"));
#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
{
- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
- {
- YYSIZE_T yyalloc = 2 * yysize;
- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
- yyalloc = YYSTACK_ALLOC_MAXIMUM;
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yyalloc);
- if (yymsg)
- yymsg_alloc = yyalloc;
- else
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- }
- }
-
- if (0 < yysize && yysize <= yymsg_alloc)
- {
- (void) yysyntax_error (yymsg, yystate, yychar);
- yyerror (yymsg);
- }
- else
- {
- yyerror (YY_("syntax error"));
- if (yysize != 0)
- goto yyexhaustedlab;
- }
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
}
+# undef YYSYNTAX_ERROR
#endif
}
@@ -1968,7 +2021,7 @@ yyerrlab:
if (yyerrstatus == 3)
{
- /* If just tried and failed to reuse look-ahead token after an
+ /* If just tried and failed to reuse lookahead token after an
error, discard it. */
if (yychar <= YYEOF)
@@ -1985,7 +2038,7 @@ yyerrlab:
}
}
- /* Else will try to reuse look-ahead token after shifting the error
+ /* Else will try to reuse lookahead token after shifting the error
token. */
goto yyerrlab1;
@@ -2019,7 +2072,7 @@ yyerrlab1:
for (;;)
{
yyn = yypact[yystate];
- if (yyn != YYPACT_NINF)
+ if (!yypact_value_is_default (yyn))
{
yyn += YYTERROR;
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
@@ -2042,9 +2095,6 @@ yyerrlab1:
YY_STACK_PRINT (yyss, yyssp);
}
- if (yyn == YYFINAL)
- YYACCEPT;
-
*++yyvsp = yylval;
@@ -2069,7 +2119,7 @@ yyabortlab:
yyresult = 1;
goto yyreturn;
-#ifndef yyoverflow
+#if !defined yyoverflow || YYERROR_VERBOSE
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
@@ -2080,9 +2130,14 @@ yyexhaustedlab:
#endif
yyreturn:
- if (yychar != YYEOF && yychar != YYEMPTY)
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval);
+ if (yychar != YYEMPTY)
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ }
/* Do not reclaim the symbols of the rule which action triggered
this YYABORT or YYACCEPT. */
YYPOPSTACK (yylen);
diff --git a/Zend/zend_ini_parser.h b/Zend/zend_ini_parser.h
index d883f9d40..870799a6e 100644
--- a/Zend/zend_ini_parser.h
+++ b/Zend/zend_ini_parser.h
@@ -1,24 +1,21 @@
-/* A Bison parser, made by GNU Bison 2.3. */
+/* A Bison parser, made by GNU Bison 2.6.1. */
-/* Skeleton interface for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
+/* Bison interface for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -29,10 +26,20 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+#ifndef INI_ZEND_ZEND_INI_PARSER_H
+# define INI_ZEND_ZEND_INI_PARSER_H
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int ini_debug;
+#endif
+
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
@@ -73,13 +80,26 @@
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef int YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
#endif
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int ini_parse (void *YYPARSE_PARAM);
+#else
+int ini_parse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int ini_parse (void);
+#else
+int ini_parse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+#endif /* !INI_ZEND_ZEND_INI_PARSER_H */
diff --git a/Zend/zend_ini_parser.output b/Zend/zend_ini_parser.output
index 9f7bcda21..fc6468a7f 100644
--- a/Zend/zend_ini_parser.output
+++ b/Zend/zend_ini_parser.output
@@ -1,9 +1,9 @@
-Terminals which are not used
+Terminals unused in grammar
':'
','
'.'
- '''
+ '\''
'^'
'+'
'-'
@@ -90,7 +90,7 @@ $end (0) 0
'$' (36)
'%' (37)
'&' (38) 33
-''' (39)
+'\'' (39)
'(' (40) 36
')' (41) 36
'*' (42)
diff --git a/Zend/zend_language_parser.c b/Zend/zend_language_parser.c
index aaf670b0d..e348dcb0f 100644
--- a/Zend/zend_language_parser.c
+++ b/Zend/zend_language_parser.c
@@ -1,24 +1,21 @@
-/* A Bison parser, made by GNU Bison 2.3. */
+/* A Bison parser, made by GNU Bison 2.6.1. */
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
+/* Bison implementation for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -29,7 +26,7 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
@@ -47,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.3"
+#define YYBISON_VERSION "2.6.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -55,19 +52,104 @@
/* Pure parsers. */
#define YYPURE 1
-/* Using locations. */
-#define YYLSP_NEEDED 0
+/* Push parsers. */
+#define YYPUSH 0
+
+/* Pull parsers. */
+#define YYPULL 1
+
/* Substitute the variable and function names. */
-#define yyparse zendparse
-#define yylex zendlex
-#define yyerror zenderror
-#define yylval zendlval
-#define yychar zendchar
-#define yydebug zenddebug
-#define yynerrs zendnerrs
+#define yyparse zendparse
+#define yylex zendlex
+#define yyerror zenderror
+#define yylval zendlval
+#define yychar zendchar
+#define yydebug zenddebug
+#define yynerrs zendnerrs
+
+/* Copy the first part of user declarations. */
+/*
+ +----------------------------------------------------------------------+
+ | Zend Engine |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1998-2013 Zend Technologies Ltd. (http://www.zend.com) |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 2.00 of the Zend license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+ | http://www.zend.com/license/2_00.txt. |
+ | If you did not receive a copy of the Zend license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@zend.com so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Authors: Andi Gutmans <andi@zend.com> |
+ | Zeev Suraski <zeev@zend.com> |
+ +----------------------------------------------------------------------+
+*/
+
+/* $Id$ */
+
+/*
+ * LALR shift/reduce conflicts and how they are resolved:
+ *
+ * - 2 shift/reduce conflicts due to the dangling elseif/else ambiguity. Solved by shift.
+ *
+ */
+
+
+#include "zend_compile.h"
+#include "zend.h"
+#include "zend_list.h"
+#include "zend_globals.h"
+#include "zend_API.h"
+#include "zend_constants.h"
+
+#define YYSIZE_T size_t
+#define yytnamerr zend_yytnamerr
+static YYSIZE_T zend_yytnamerr(char*, const char*);
+
+#define YYERROR_VERBOSE
+#define YYSTYPE znode
+#ifdef ZTS
+# define YYPARSE_PARAM tsrm_ls
+# define YYLEX_PARAM tsrm_ls
+#endif
+
+
+
+
+
+# ifndef YY_NULL
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULL nullptr
+# else
+# define YY_NULL 0
+# endif
+# endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* In a future release of Bison, this section will be replaced
+ by #include "zend_language_parser.h". */
+#ifndef ZEND_ZEND_ZEND_LANGUAGE_PARSER_H
+# define ZEND_ZEND_ZEND_LANGUAGE_PARSER_H
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int zenddebug;
+#endif
+
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
@@ -340,91 +422,32 @@
-
-/* Copy the first part of user declarations. */
-
-
-/*
- +----------------------------------------------------------------------+
- | Zend Engine |
- +----------------------------------------------------------------------+
- | Copyright (c) 1998-2013 Zend Technologies Ltd. (http://www.zend.com) |
- +----------------------------------------------------------------------+
- | This source file is subject to version 2.00 of the Zend license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.zend.com/license/2_00.txt. |
- | If you did not receive a copy of the Zend license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@zend.com so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Authors: Andi Gutmans <andi@zend.com> |
- | Zeev Suraski <zeev@zend.com> |
- +----------------------------------------------------------------------+
-*/
-
-/* $Id$ */
-
-/*
- * LALR shift/reduce conflicts and how they are resolved:
- *
- * - 2 shift/reduce conflicts due to the dangling elseif/else ambiguity. Solved by shift.
- *
- */
-
-
-#include "zend_compile.h"
-#include "zend.h"
-#include "zend_list.h"
-#include "zend_globals.h"
-#include "zend_API.h"
-#include "zend_constants.h"
-
-#define YYSIZE_T size_t
-#define yytnamerr zend_yytnamerr
-static YYSIZE_T zend_yytnamerr(char*, const char*);
-
-#define YYERROR_VERBOSE
-#define YYSTYPE znode
-#ifdef ZTS
-# define YYPARSE_PARAM tsrm_ls
-# define YYLEX_PARAM tsrm_ls
-#endif
-
-
-
-
-/* Enabling traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table. */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef int YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
#endif
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int zendparse (void *YYPARSE_PARAM);
+#else
+int zendparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int zendparse (void);
+#else
+int zendparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
-/* Copy the second part of user declarations. */
+#endif /* !ZEND_ZEND_ZEND_LANGUAGE_PARSER_H */
+/* Copy the second part of user declarations. */
-/* Line 216 of yacc.c. */
#ifdef short
@@ -475,7 +498,7 @@ typedef short int yytype_int16;
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -500,14 +523,14 @@ typedef short int yytype_int16;
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static int
-YYID (int i)
+YYID (int yyi)
#else
static int
-YYID (i)
- int i;
+YYID (yyi)
+ int yyi;
#endif
{
- return i;
+ return yyi;
}
#endif
@@ -528,11 +551,12 @@ YYID (i)
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
# endif
# endif
# endif
@@ -555,24 +579,24 @@ YYID (i)
# ifndef YYSTACK_ALLOC_MAXIMUM
# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
# endif
-# if (defined __cplusplus && ! defined _STDLIB_H \
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
&& ! ((defined YYMALLOC || defined malloc) \
&& (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
# endif
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
@@ -588,9 +612,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
/* A type that is properly aligned for any stack member. */
union yyalloc
{
- yytype_int16 yyss;
- YYSTYPE yyvs;
- };
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+};
/* The size of the maximum gap between one aligned stack and the next. */
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
@@ -601,35 +625,19 @@ union yyalloc
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (YYID (0))
-# endif
-# endif
+# define YYCOPY_NEEDED 1
/* Relocate STACK from its old location to the new one. The
local variables YYSIZE and YYSTACKSIZE give the old and new number of
elements in the stack, and YYPTR gives the new location of the
stack. Advance YYPTR to a properly aligned location for the next
stack. */
-# define YYSTACK_RELOCATE(Stack) \
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
@@ -637,6 +645,26 @@ union yyalloc
#endif
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(Dst, Src, Count) \
+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+# else
+# define YYCOPY(Dst, Src, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (Dst)[yyi] = (Src)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 3
/* YYLAST -- Last index in YYTABLE. */
@@ -1004,7 +1032,7 @@ static const yytype_uint16 yyrline[] =
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 0
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
@@ -1071,28 +1099,29 @@ static const char *const yytname[] =
"\":: (T_PAAMAYIM_NEKUDOTAYIM)\"", "\"namespace (T_NAMESPACE)\"",
"\"__NAMESPACE__ (T_NS_C)\"", "\"__DIR__ (T_DIR)\"",
"\"\\\\ (T_NS_SEPARATOR)\"", "'('", "')'", "';'", "'{'", "'}'", "'$'",
- "']'", "'`'", "'\"'", "$accept", "start", "top_statement_list", "@1",
- "namespace_name", "top_statement", "@2", "@3", "use_declarations",
- "use_declaration", "constant_declaration", "inner_statement_list", "@4",
- "inner_statement", "statement", "unticked_statement", "@5", "@6", "@7",
- "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15", "@16", "@17",
- "@18", "@19", "@20", "@21", "@22", "@23", "catch_statement", "@24",
- "@25", "@26", "@27", "finally_statement", "@28", "additional_catches",
- "non_empty_additional_catches", "additional_catch", "@29", "@30",
- "unset_variables", "unset_variable", "function_declaration_statement",
- "class_declaration_statement", "is_reference",
- "unticked_function_declaration_statement", "@31",
- "unticked_class_declaration_statement", "@32", "@33", "class_entry_type",
- "extends_from", "interface_entry", "interface_extends_list",
- "implements_list", "interface_list", "foreach_optional_arg",
- "foreach_variable", "@34", "for_statement", "foreach_statement",
- "declare_statement", "declare_list", "switch_case_list", "case_list",
- "@35", "@36", "case_separator", "while_statement", "elseif_list", "@37",
- "new_elseif_list", "@38", "else_single", "new_else_single",
- "parameter_list", "non_empty_parameter_list", "optional_class_type",
+ "']'", "'`'", "'\"'", "$accept", "start", "top_statement_list", "$@1",
+ "namespace_name", "top_statement", "$@2", "$@3", "use_declarations",
+ "use_declaration", "constant_declaration", "inner_statement_list", "$@4",
+ "inner_statement", "statement", "unticked_statement", "$@5", "$@6",
+ "$@7", "$@8", "$@9", "@10", "$@11", "$@12", "$@13", "$@14", "$@15",
+ "$@16", "$@17", "$@18", "$@19", "$@20", "$@21", "$@22", "$@23",
+ "catch_statement", "$@24", "$@25", "$@26", "$@27", "finally_statement",
+ "$@28", "additional_catches", "non_empty_additional_catches",
+ "additional_catch", "@29", "$@30", "unset_variables", "unset_variable",
+ "function_declaration_statement", "class_declaration_statement",
+ "is_reference", "unticked_function_declaration_statement", "$@31",
+ "unticked_class_declaration_statement", "$@32", "$@33",
+ "class_entry_type", "extends_from", "interface_entry",
+ "interface_extends_list", "implements_list", "interface_list",
+ "foreach_optional_arg", "foreach_variable", "$@34", "for_statement",
+ "foreach_statement", "declare_statement", "declare_list",
+ "switch_case_list", "case_list", "$@35", "$@36", "case_separator",
+ "while_statement", "elseif_list", "$@37", "new_elseif_list", "$@38",
+ "else_single", "new_else_single", "parameter_list",
+ "non_empty_parameter_list", "optional_class_type",
"function_call_parameter_list", "non_empty_function_call_parameter_list",
"global_var_list", "global_var", "static_var_list",
- "class_statement_list", "class_statement", "@39", "@40",
+ "class_statement_list", "class_statement", "$@39", "$@40",
"trait_use_statement", "trait_list", "trait_adaptations",
"trait_adaptation_list", "non_empty_trait_adaptation_list",
"trait_adaptation_statement", "trait_precedence", "trait_reference_list",
@@ -1100,33 +1129,35 @@ static const char *const yytname[] =
"trait_alias", "trait_modifiers", "method_body", "variable_modifiers",
"method_modifiers", "non_empty_member_modifiers", "member_modifier",
"class_variable_declaration", "class_constant_declaration",
- "echo_expr_list", "for_expr", "non_empty_for_expr", "@41",
+ "echo_expr_list", "for_expr", "non_empty_for_expr", "$@41",
"chaining_method_or_property", "chaining_dereference",
- "chaining_instance_call", "@42", "instance_call", "@43", "new_expr",
- "@44", "expr_without_variable", "@45", "@46", "@47", "@48", "@49", "@50",
- "@51", "@52", "@53", "@54", "@55", "@56", "@57", "yield_expr",
- "combined_scalar_offset", "combined_scalar", "function", "lexical_vars",
- "lexical_var_list", "function_call", "@58", "@59", "@60", "@61", "@62",
- "@63", "@64", "@65", "class_name", "fully_qualified_class_name",
- "class_name_reference", "dynamic_class_name_reference", "@66", "@67",
+ "chaining_instance_call", "$@42", "instance_call", "$@43", "new_expr",
+ "$@44", "expr_without_variable", "$@45", "$@46", "$@47", "$@48", "$@49",
+ "$@50", "@51", "$@52", "$@53", "$@54", "$@55", "@56", "@57",
+ "yield_expr", "combined_scalar_offset", "combined_scalar", "function",
+ "lexical_vars", "lexical_var_list", "function_call", "@58", "@59", "@60",
+ "@61", "$@62", "$@63", "$@64", "$@65", "class_name",
+ "fully_qualified_class_name", "class_name_reference",
+ "dynamic_class_name_reference", "$@66", "$@67",
"dynamic_class_name_variable_properties",
"dynamic_class_name_variable_property", "exit_expr", "backticks_expr",
"ctor_arguments", "common_scalar", "static_scalar",
"static_class_constant", "scalar", "static_array_pair_list",
"possible_comma", "non_empty_static_array_pair_list", "expr",
"parenthesis_expr", "r_variable", "w_variable", "rw_variable",
- "variable", "@68", "@69", "variable_properties", "variable_property",
- "@70", "array_method_dereference", "method", "@71", "method_or_not",
+ "variable", "$@68", "$@69", "variable_properties", "variable_property",
+ "$@70", "array_method_dereference", "method", "@71", "method_or_not",
"variable_without_objects", "static_member", "variable_class_name",
- "array_function_dereference", "@72", "base_variable_with_function_calls",
- "base_variable", "reference_variable", "compound_variable", "dim_offset",
- "object_property", "@73", "object_dim_list", "variable_name",
+ "array_function_dereference", "$@72",
+ "base_variable_with_function_calls", "base_variable",
+ "reference_variable", "compound_variable", "dim_offset",
+ "object_property", "$@73", "object_dim_list", "variable_name",
"simple_indirect_reference", "assignment_list",
- "assignment_list_element", "@74", "array_pair_list",
- "non_empty_array_pair_list", "encaps_list", "encaps_var", "@75",
+ "assignment_list_element", "$@74", "array_pair_list",
+ "non_empty_array_pair_list", "encaps_list", "encaps_var", "$@75",
"encaps_var_offset", "internal_functions_in_yacc", "isset_variables",
- "@76", "isset_variable", "class_constant", "static_class_name_scalar",
- "class_name_scalar", 0
+ "$@76", "isset_variable", "class_constant", "static_class_name_scalar",
+ "class_name_scalar", YY_NULL
};
#endif
@@ -1274,8 +1305,8 @@ static const yytype_uint8 yyr2[] =
1, 1, 3, 3, 3, 3
};
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
@@ -1546,8 +1577,7 @@ static const yytype_int16 yypgoto[] =
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
- number is the opposite. If zero, do what YYDEFACT says.
- If YYTABLE_NINF, syntax error. */
+ number is the opposite. If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -542
static const yytype_int16 yytable[] =
{
@@ -2066,6 +2096,12 @@ static const yytype_int16 yytable[] =
272, 273, 274, 275, 276, 0, 277
};
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-770))
+
+#define yytable_value_is_error(yytable_value) \
+ ((yytable_value) == (-542))
+
static const yytype_int16 yycheck[] =
{
24, 25, 4, 126, 28, 24, 25, 4, 11, 28,
@@ -2702,24 +2738,33 @@ static const yytype_uint16 yystos[] =
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
+ Once GCC version 2 has supplanted version 1, this can go. However,
+ YYFAIL appears to be in use. Nevertheless, it is formally deprecated
+ in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+ discussed. */
#define YYFAIL goto yyerrlab
+#if defined YYFAIL
+ /* This is here to suppress warnings from the GCC cpp's
+ -Wunused-macros. Normally we don't worry about that warning, but
+ some users do, and we want to make it easy for users to remove
+ YYFAIL uses, which will produce warnings from Bison 2.5. */
+#endif
#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK (1); \
- goto yybackup; \
- } \
- else \
- { \
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
yyerror (YY_("syntax error: cannot back up")); \
YYERROR; \
} \
@@ -2729,46 +2774,38 @@ while (YYID (0))
#define YYTERROR 1
#define YYERRCODE 256
-
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
If N is 0, then set CURRENT to the empty location which ends
the previous symbol: RHS[0] (always defined). */
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- do \
- if (YYID (N)) \
- { \
- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
- } \
- else \
- { \
- (Current).first_line = (Current).last_line = \
- YYRHSLOC (Rhs, 0).last_line; \
- (Current).first_column = (Current).last_column = \
- YYRHSLOC (Rhs, 0).last_column; \
- } \
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
while (YYID (0))
#endif
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+
+
-/* YY_LOCATION_PRINT -- Print the location on the stream.
- This macro was not mandated originally: define only if we know
- we won't break user code: when these are the locations we know. */
+/* This macro is provided for backward compatibility. */
#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-# define YY_LOCATION_PRINT(File, Loc) \
- fprintf (File, "%d.%d-%d.%d", \
- (Loc).first_line, (Loc).first_column, \
- (Loc).last_line, (Loc).last_column)
-# else
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
#endif
@@ -2823,6 +2860,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
YYSTYPE const * const yyvaluep;
#endif
{
+ FILE *yyo = yyoutput;
+ YYUSE (yyo);
if (!yyvaluep)
return;
# ifdef YYPRINT
@@ -2872,17 +2911,20 @@ yy_symbol_print (yyoutput, yytype, yyvaluep)
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
#else
static void
-yy_stack_print (bottom, top)
- yytype_int16 *bottom;
- yytype_int16 *top;
+yy_stack_print (yybottom, yytop)
+ yytype_int16 *yybottom;
+ yytype_int16 *yytop;
#endif
{
YYFPRINTF (stderr, "Stack now");
- for (; bottom <= top; ++bottom)
- YYFPRINTF (stderr, " %d", *bottom);
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
YYFPRINTF (stderr, "\n");
}
@@ -2916,11 +2958,11 @@ yy_reduce_print (yyvsp, yyrule)
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
- fprintf (stderr, " $%d = ", yyi + 1);
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
&(yyvsp[(yyi + 1) - (yynrhs)])
);
- fprintf (stderr, "\n");
+ YYFPRINTF (stderr, "\n");
}
}
@@ -2957,7 +2999,6 @@ int yydebug;
# define YYMAXDEPTH 10000
#endif
-
#if YYERROR_VERBOSE
@@ -3060,115 +3101,142 @@ yytnamerr (char *yyres, const char *yystr)
}
# endif
-/* Copy into YYRESULT an error message about the unexpected token
- YYCHAR while in state YYSTATE. Return the number of bytes copied,
- including the terminating null byte. If YYRESULT is null, do not
- copy anything; just return the number of bytes that would be
- copied. As a special case, return 0 if an ordinary "syntax error"
- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
- size calculation. */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
- int yyn = yypact[yystate];
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
- if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
- return 0;
- else
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = YY_NULL;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
+ - Assume YYFAIL is not used. It's too flawed to consider. See
+ <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+ for details. YYERROR is fine as it does not invoke this
+ function.
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
{
- int yytype = YYTRANSLATE (yychar);
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- int yysize_overflow = 0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- int yyx;
-
-# if 0
- /* This is so xgettext sees the translatable formats that are
- constructed on the fly. */
- YY_("syntax error, unexpected %s");
- YY_("syntax error, unexpected %s, expecting %s");
- YY_("syntax error, unexpected %s, expecting %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
- char *yyfmt;
- char const *yyf;
- static char const yyunexpected[] = "syntax error, unexpected %s";
- static char const yyexpecting[] = ", expecting %s";
- static char const yyor[] = " or %s";
- char yyformat[sizeof yyunexpected
- + sizeof yyexpecting - 1
- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
- * (sizeof yyor - 1))];
- char const *yyprefix = yyexpecting;
-
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
-
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yycount = 1;
-
- yyarg[0] = yytname[yytype];
- yyfmt = yystpcpy (yyformat, yyunexpected);
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- yyformat[sizeof yyunexpected - 1] = '\0';
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
- yyfmt = yystpcpy (yyfmt, yyprefix);
- yyprefix = yyor;
- }
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
- yyf = YY_(yyformat);
- yysize1 = yysize + yystrlen (yyf);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
- if (yysize_overflow)
- return YYSIZE_MAXIMUM;
+ yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
- if (yyresult)
- {
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- char *yyp = yyresult;
- int yyi = 0;
- while ((*yyp = *yyf) != '\0')
- {
- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyf += 2;
- }
- else
- {
- yyp++;
- yyf++;
- }
- }
- }
- return yysize;
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
}
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
}
#endif /* YYERROR_VERBOSE */
-
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
@@ -3200,25 +3268,6 @@ yydestruct (yymsg, yytype, yyvaluep)
break;
}
}
-
-
-/* Prevent warnings from -Wmissing-prototypes. */
-
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
-
@@ -3249,77 +3298,77 @@ yyparse ()
#endif
#endif
{
- /* The look-ahead symbol. */
+/* The lookahead symbol. */
int yychar;
-/* The semantic value of the look-ahead symbol. */
+/* The semantic value of the lookahead symbol. */
YYSTYPE yylval;
-/* Number of syntax errors so far. */
-int yynerrs;
+ /* Number of syntax errors so far. */
+ int yynerrs;
- int yystate;
- int yyn;
- int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Look-ahead token as an internal (translated) token number. */
- int yytoken = 0;
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
-
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss = yyssa;
- yytype_int16 *yyssp;
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs = yyvsa;
- YYSTYPE *yyvsp;
+ /* The stacks and their tools:
+ `yyss': related to states.
+ `yyvs': related to semantic values.
+ Refer to the stacks through separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
-#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
- YYSIZE_T yystacksize = YYINITDEPTH;
+ YYSIZE_T yystacksize;
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
/* The number of symbols on the RHS of the reduced rule.
Keep to zero when no symbol should be popped. */
int yylen = 0;
+ yytoken = 0;
+ yyss = yyssa;
+ yyvs = yyvsa;
+ yystacksize = YYINITDEPTH;
+
YYDPRINTF ((stderr, "Starting parse\n"));
yystate = 0;
yyerrstatus = 0;
yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
+ yychar = YYEMPTY; /* Cause a token to be read. */
/* Initialize stack pointers.
Waste one element of value and location stack
so that they stay on the same level as the state stack.
The wasted elements are never initialized. */
-
yyssp = yyss;
yyvsp = yyvs;
-
goto yysetstate;
/*------------------------------------------------------------.
@@ -3346,7 +3395,6 @@ int yynerrs;
YYSTYPE *yyvs1 = yyvs;
yytype_int16 *yyss1 = yyss;
-
/* Each stack pointer address is followed by the size of the
data in use in that stack, in bytes. This used to be a
conditional around just the two extra args, but that might
@@ -3354,7 +3402,6 @@ int yynerrs;
yyoverflow (YY_("memory exhausted"),
&yyss1, yysize * sizeof (*yyssp),
&yyvs1, yysize * sizeof (*yyvsp),
-
&yystacksize);
yyss = yyss1;
@@ -3377,9 +3424,8 @@ int yynerrs;
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
if (! yyptr)
goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss);
- YYSTACK_RELOCATE (yyvs);
-
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
# undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
@@ -3390,7 +3436,6 @@ int yynerrs;
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
-
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
(unsigned long int) yystacksize));
@@ -3400,6 +3445,9 @@ int yynerrs;
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
goto yybackup;
/*-----------.
@@ -3408,16 +3456,16 @@ int yynerrs;
yybackup:
/* Do appropriate processing given the current state. Read a
- look-ahead token if we need one and don't already have one. */
+ lookahead token if we need one and don't already have one. */
- /* First try to decide what to do without reference to look-ahead token. */
+ /* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
- if (yyn == YYPACT_NINF)
+ if (yypact_value_is_default (yyn))
goto yydefault;
- /* Not known => get a look-ahead token if don't already have one. */
+ /* Not known => get a lookahead token if don't already have one. */
- /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
@@ -3443,26 +3491,22 @@ yybackup:
yyn = yytable[yyn];
if (yyn <= 0)
{
- if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
- if (yyn == YYFINAL)
- YYACCEPT;
-
/* Count tokens shifted since error; after three, turn off error
status. */
if (yyerrstatus)
yyerrstatus--;
- /* Shift the look-ahead token. */
+ /* Shift the lookahead token. */
YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
- /* Discard the shifted token unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
yystate = yyn;
*++yyvsp = yylval;
@@ -5929,10 +5973,20 @@ yyreduce:
break;
-/* Line 1267 of yacc.c. */
default: break;
}
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
YYPOPSTACK (yylen);
@@ -5941,7 +5995,6 @@ yyreduce:
*++yyvsp = yyval;
-
/* Now `shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
number reduced by. */
@@ -5961,6 +6014,10 @@ yyreduce:
| yyerrlab -- here on detecting error |
`------------------------------------*/
yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
@@ -5968,37 +6025,36 @@ yyerrlab:
#if ! YYERROR_VERBOSE
yyerror (YY_("syntax error"));
#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
{
- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
- {
- YYSIZE_T yyalloc = 2 * yysize;
- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
- yyalloc = YYSTACK_ALLOC_MAXIMUM;
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yyalloc);
- if (yymsg)
- yymsg_alloc = yyalloc;
- else
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- }
- }
-
- if (0 < yysize && yysize <= yymsg_alloc)
- {
- (void) yysyntax_error (yymsg, yystate, yychar);
- yyerror (yymsg);
- }
- else
- {
- yyerror (YY_("syntax error"));
- if (yysize != 0)
- goto yyexhaustedlab;
- }
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
}
+# undef YYSYNTAX_ERROR
#endif
}
@@ -6006,7 +6062,7 @@ yyerrlab:
if (yyerrstatus == 3)
{
- /* If just tried and failed to reuse look-ahead token after an
+ /* If just tried and failed to reuse lookahead token after an
error, discard it. */
if (yychar <= YYEOF)
@@ -6023,7 +6079,7 @@ yyerrlab:
}
}
- /* Else will try to reuse look-ahead token after shifting the error
+ /* Else will try to reuse lookahead token after shifting the error
token. */
goto yyerrlab1;
@@ -6057,7 +6113,7 @@ yyerrlab1:
for (;;)
{
yyn = yypact[yystate];
- if (yyn != YYPACT_NINF)
+ if (!yypact_value_is_default (yyn))
{
yyn += YYTERROR;
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
@@ -6080,9 +6136,6 @@ yyerrlab1:
YY_STACK_PRINT (yyss, yyssp);
}
- if (yyn == YYFINAL)
- YYACCEPT;
-
*++yyvsp = yylval;
@@ -6107,7 +6160,7 @@ yyabortlab:
yyresult = 1;
goto yyreturn;
-#ifndef yyoverflow
+#if !defined yyoverflow || YYERROR_VERBOSE
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
@@ -6118,9 +6171,14 @@ yyexhaustedlab:
#endif
yyreturn:
- if (yychar != YYEOF && yychar != YYEMPTY)
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval);
+ if (yychar != YYEMPTY)
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ }
/* Do not reclaim the symbols of the rule which action triggered
this YYABORT or YYACCEPT. */
YYPOPSTACK (yylen);
diff --git a/Zend/zend_language_parser.h b/Zend/zend_language_parser.h
index 0918b80f3..074c954b8 100644
--- a/Zend/zend_language_parser.h
+++ b/Zend/zend_language_parser.h
@@ -1,24 +1,21 @@
-/* A Bison parser, made by GNU Bison 2.3. */
+/* A Bison parser, made by GNU Bison 2.6.1. */
-/* Skeleton interface for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
+/* Bison interface for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -29,10 +26,20 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+#ifndef ZEND_ZEND_ZEND_LANGUAGE_PARSER_H
+# define ZEND_ZEND_ZEND_LANGUAGE_PARSER_H
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int zenddebug;
+#endif
+
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
@@ -305,13 +312,26 @@
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef int YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
#endif
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int zendparse (void *YYPARSE_PARAM);
+#else
+int zendparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int zendparse (void);
+#else
+int zendparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+#endif /* !ZEND_ZEND_ZEND_LANGUAGE_PARSER_H */
diff --git a/Zend/zend_language_parser.output b/Zend/zend_language_parser.output
index 85387cb58..62983f56b 100644
--- a/Zend/zend_language_parser.output
+++ b/Zend/zend_language_parser.output
@@ -1,4 +1,4 @@
-Terminals which are not used
+Terminals unused in grammar
T_CHARACTER
T_BAD_CHARACTER
@@ -20,9 +20,9 @@ Grammar
1 start: top_statement_list
- 2 @1: /* empty */
+ 2 $@1: /* empty */
- 3 top_statement_list: top_statement_list @1 top_statement
+ 3 top_statement_list: top_statement_list $@1 top_statement
4 | /* empty */
5 namespace_name: "identifier (T_STRING)"
@@ -34,13 +34,13 @@ Grammar
10 | "__halt_compiler (T_HALT_COMPILER)" '(' ')' ';'
11 | "namespace (T_NAMESPACE)" namespace_name ';'
- 12 @2: /* empty */
+ 12 $@2: /* empty */
- 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' @2 top_statement_list '}'
+ 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' $@2 top_statement_list '}'
- 14 @3: /* empty */
+ 14 $@3: /* empty */
- 15 top_statement: "namespace (T_NAMESPACE)" '{' @3 top_statement_list '}'
+ 15 top_statement: "namespace (T_NAMESPACE)" '{' $@3 top_statement_list '}'
16 | "use (T_USE)" use_declarations ';'
17 | constant_declaration ';'
@@ -55,9 +55,9 @@ Grammar
24 constant_declaration: constant_declaration ',' "identifier (T_STRING)" '=' static_scalar
25 | "const (T_CONST)" "identifier (T_STRING)" '=' static_scalar
- 26 @4: /* empty */
+ 26 $@4: /* empty */
- 27 inner_statement_list: inner_statement_list @4 inner_statement
+ 27 inner_statement_list: inner_statement_list $@4 inner_statement
28 | /* empty */
29 inner_statement: statement
@@ -70,41 +70,41 @@ Grammar
35 unticked_statement: '{' inner_statement_list '}'
- 36 @5: /* empty */
+ 36 $@5: /* empty */
- 37 @6: /* empty */
+ 37 $@6: /* empty */
- 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 statement @6 elseif_list else_single
+ 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement $@6 elseif_list else_single
- 39 @7: /* empty */
+ 39 $@7: /* empty */
- 40 @8: /* empty */
+ 40 $@8: /* empty */
- 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
+ 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
- 42 @9: /* empty */
+ 42 $@9: /* empty */
43 @10: /* empty */
- 44 unticked_statement: "while (T_WHILE)" @9 parenthesis_expr @10 while_statement
+ 44 unticked_statement: "while (T_WHILE)" $@9 parenthesis_expr @10 while_statement
- 45 @11: /* empty */
+ 45 $@11: /* empty */
- 46 @12: /* empty */
+ 46 $@12: /* empty */
- 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" @12 parenthesis_expr ';'
+ 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" $@12 parenthesis_expr ';'
- 48 @13: /* empty */
+ 48 $@13: /* empty */
- 49 @14: /* empty */
+ 49 $@14: /* empty */
- 50 @15: /* empty */
+ 50 $@15: /* empty */
- 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement
+ 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement
- 52 @16: /* empty */
+ 52 $@16: /* empty */
- 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr @16 switch_case_list
+ 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr $@16 switch_case_list
54 | "break (T_BREAK)" ';'
55 | "break (T_BREAK)" expr ';'
56 | "continue (T_CONTINUE)" ';'
@@ -120,48 +120,48 @@ Grammar
66 | expr ';'
67 | "unset (T_UNSET)" '(' unset_variables ')' ';'
- 68 @17: /* empty */
+ 68 $@17: /* empty */
- 69 @18: /* empty */
+ 69 $@18: /* empty */
- 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement
+ 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement
- 71 @19: /* empty */
+ 71 $@19: /* empty */
- 72 @20: /* empty */
+ 72 $@20: /* empty */
- 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement
+ 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement
- 74 @21: /* empty */
+ 74 $@21: /* empty */
- 75 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list ')' declare_statement
+ 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list ')' declare_statement
76 | ';'
- 77 @22: /* empty */
+ 77 $@22: /* empty */
- 78 @23: /* empty */
+ 78 $@23: /* empty */
- 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' catch_statement @23 finally_statement
+ 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' catch_statement $@23 finally_statement
80 | "throw (T_THROW)" expr ';'
81 | "goto (T_GOTO)" "identifier (T_STRING)" ';'
82 catch_statement: /* empty */
- 83 @24: /* empty */
+ 83 $@24: /* empty */
- 84 @25: /* empty */
+ 84 $@25: /* empty */
- 85 @26: /* empty */
+ 85 $@26: /* empty */
- 86 @27: /* empty */
+ 86 $@27: /* empty */
- 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches
88 finally_statement: /* empty */
- 89 @28: /* empty */
+ 89 $@28: /* empty */
- 90 finally_statement: "finally (T_FINALLY)" @28 '{' inner_statement_list '}'
+ 90 finally_statement: "finally (T_FINALLY)" $@28 '{' inner_statement_list '}'
91 additional_catches: non_empty_additional_catches
92 | /* empty */
@@ -171,9 +171,9 @@ Grammar
95 @29: /* empty */
- 96 @30: /* empty */
+ 96 $@30: /* empty */
- 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}'
+ 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}'
98 unset_variables: unset_variable
99 | unset_variables ',' unset_variable
@@ -187,17 +187,17 @@ Grammar
103 is_reference: /* empty */
104 | '&'
- 105 @31: /* empty */
+ 105 $@31: /* empty */
- 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' '{' inner_statement_list '}'
+ 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list '}'
- 107 @32: /* empty */
+ 107 $@32: /* empty */
- 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 implements_list '{' class_statement_list '}'
+ 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list '{' class_statement_list '}'
- 109 @33: /* empty */
+ 109 $@33: /* empty */
- 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 interface_extends_list '{' class_statement_list '}'
+ 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list '{' class_statement_list '}'
111 class_entry_type: "class (T_CLASS)"
112 | "abstract (T_ABSTRACT)" "class (T_CLASS)"
@@ -224,9 +224,9 @@ Grammar
126 foreach_variable: variable
127 | '&' variable
- 128 @34: /* empty */
+ 128 $@34: /* empty */
- 129 foreach_variable: "list (T_LIST)" '(' @34 assignment_list ')'
+ 129 foreach_variable: "list (T_LIST)" '(' $@34 assignment_list ')'
130 for_statement: statement
131 | ':' inner_statement_list "endfor (T_ENDFOR)" ';'
@@ -247,13 +247,13 @@ Grammar
142 case_list: /* empty */
- 143 @35: /* empty */
+ 143 $@35: /* empty */
- 144 case_list: case_list "case (T_CASE)" expr case_separator @35 inner_statement_list
+ 144 case_list: case_list "case (T_CASE)" expr case_separator $@35 inner_statement_list
- 145 @36: /* empty */
+ 145 $@36: /* empty */
- 146 case_list: case_list "default (T_DEFAULT)" case_separator @36 inner_statement_list
+ 146 case_list: case_list "default (T_DEFAULT)" case_separator $@36 inner_statement_list
147 case_separator: ':'
148 | ';'
@@ -263,15 +263,15 @@ Grammar
151 elseif_list: /* empty */
- 152 @37: /* empty */
+ 152 $@37: /* empty */
- 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr @37 statement
+ 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr $@37 statement
154 new_elseif_list: /* empty */
- 155 @38: /* empty */
+ 155 $@38: /* empty */
- 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' @38 inner_statement_list
+ 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' $@38 inner_statement_list
157 else_single: /* empty */
158 | "else (T_ELSE)" statement
@@ -322,15 +322,15 @@ Grammar
193 class_statement_list: class_statement_list class_statement
194 | /* empty */
- 195 @39: /* empty */
+ 195 $@39: /* empty */
- 196 class_statement: variable_modifiers @39 class_variable_declaration ';'
+ 196 class_statement: variable_modifiers $@39 class_variable_declaration ';'
197 | class_constant_declaration ';'
198 | trait_use_statement
- 199 @40: /* empty */
+ 199 $@40: /* empty */
- 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 '(' parameter_list ')' method_body
+ 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body
201 trait_use_statement: "use (T_USE)" trait_list trait_adaptations
@@ -398,9 +398,9 @@ Grammar
244 for_expr: /* empty */
245 | non_empty_for_expr
- 246 @41: /* empty */
+ 246 $@41: /* empty */
- 247 non_empty_for_expr: non_empty_for_expr ',' @41 expr
+ 247 non_empty_for_expr: non_empty_for_expr ',' $@41 expr
248 | expr
249 chaining_method_or_property: chaining_method_or_property variable_property
@@ -409,31 +409,31 @@ Grammar
251 chaining_dereference: chaining_dereference '[' dim_offset ']'
252 | '[' dim_offset ']'
- 253 @42: /* empty */
+ 253 $@42: /* empty */
- 254 chaining_instance_call: chaining_dereference @42 chaining_method_or_property
+ 254 chaining_instance_call: chaining_dereference $@42 chaining_method_or_property
255 | chaining_dereference
256 | chaining_method_or_property
257 instance_call: /* empty */
- 258 @43: /* empty */
+ 258 $@43: /* empty */
- 259 instance_call: @43 chaining_instance_call
+ 259 instance_call: $@43 chaining_instance_call
- 260 @44: /* empty */
+ 260 $@44: /* empty */
- 261 new_expr: "new (T_NEW)" class_name_reference @44 ctor_arguments
+ 261 new_expr: "new (T_NEW)" class_name_reference $@44 ctor_arguments
- 262 @45: /* empty */
+ 262 $@45: /* empty */
- 263 expr_without_variable: "list (T_LIST)" '(' @45 assignment_list ')' '=' expr
+ 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list ')' '=' expr
264 | variable '=' expr
265 | variable '=' '&' variable
- 266 @46: /* empty */
+ 266 $@46: /* empty */
- 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments
268 | "clone (T_CLONE)" expr
269 | variable "+= (T_PLUS_EQUAL)" expr
270 | variable "-= (T_MINUS_EQUAL)" expr
@@ -451,21 +451,21 @@ Grammar
282 | rw_variable "-- (T_DEC)"
283 | "-- (T_DEC)" rw_variable
- 284 @47: /* empty */
+ 284 $@47: /* empty */
- 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" @47 expr
+ 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" $@47 expr
- 286 @48: /* empty */
+ 286 $@48: /* empty */
- 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" @48 expr
+ 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" $@48 expr
- 288 @49: /* empty */
+ 288 $@49: /* empty */
- 289 expr_without_variable: expr "or (T_LOGICAL_OR)" @49 expr
+ 289 expr_without_variable: expr "or (T_LOGICAL_OR)" $@49 expr
- 290 @50: /* empty */
+ 290 $@50: /* empty */
- 291 expr_without_variable: expr "and (T_LOGICAL_AND)" @50 expr
+ 291 expr_without_variable: expr "and (T_LOGICAL_AND)" $@50 expr
292 | expr "xor (T_LOGICAL_XOR)" expr
293 | expr '|' expr
294 | expr '&' expr
@@ -498,15 +498,15 @@ Grammar
320 expr_without_variable: '(' new_expr ')' @51 instance_call
- 321 @52: /* empty */
+ 321 $@52: /* empty */
- 322 @53: /* empty */
+ 322 $@53: /* empty */
- 323 expr_without_variable: expr '?' @52 expr ':' @53 expr
+ 323 expr_without_variable: expr '?' $@52 expr ':' $@53 expr
- 324 @54: /* empty */
+ 324 $@54: /* empty */
- 325 expr_without_variable: expr '?' ':' @54 expr
+ 325 expr_without_variable: expr '?' ':' $@54 expr
326 | internal_functions_in_yacc
327 | "(int) (T_INT_CAST)" expr
328 | "(double) (T_DOUBLE_CAST)" expr
@@ -517,9 +517,9 @@ Grammar
333 | "(unset) (T_UNSET_CAST)" expr
334 | "exit (T_EXIT)" exit_expr
- 335 @55: /* empty */
+ 335 $@55: /* empty */
- 336 expr_without_variable: '@' @55 expr
+ 336 expr_without_variable: '@' $@55 expr
337 | scalar
338 | combined_scalar_offset
339 | combined_scalar
@@ -573,21 +573,21 @@ Grammar
370 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @61 function_call_parameter_list
- 371 @62: /* empty */
+ 371 $@62: /* empty */
- 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @62 function_call_parameter_list
+ 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 function_call_parameter_list
- 373 @63: /* empty */
+ 373 $@63: /* empty */
- 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @63 function_call_parameter_list
+ 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 function_call_parameter_list
- 375 @64: /* empty */
+ 375 $@64: /* empty */
- 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @64 function_call_parameter_list
+ 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 function_call_parameter_list
- 377 @65: /* empty */
+ 377 $@65: /* empty */
- 378 function_call: variable_without_objects @65 function_call_parameter_list
+ 378 function_call: variable_without_objects $@65 function_call_parameter_list
379 class_name: "static (T_STATIC)"
380 | namespace_name
@@ -601,11 +601,11 @@ Grammar
386 class_name_reference: class_name
387 | dynamic_class_name_reference
- 388 @66: /* empty */
+ 388 $@66: /* empty */
- 389 @67: /* empty */
+ 389 $@67: /* empty */
- 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @66 object_property @67 dynamic_class_name_variable_properties
+ 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 object_property $@67 dynamic_class_name_variable_properties
391 | base_variable
392 dynamic_class_name_variable_properties: dynamic_class_name_variable_properties dynamic_class_name_variable_property
@@ -685,19 +685,19 @@ Grammar
451 rw_variable: variable
- 452 @68: /* empty */
+ 452 $@68: /* empty */
- 453 @69: /* empty */
+ 453 $@69: /* empty */
- 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 object_property @69 method_or_not variable_properties
+ 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not variable_properties
455 | base_variable_with_function_calls
456 variable_properties: variable_properties variable_property
457 | /* empty */
- 458 @70: /* empty */
+ 458 $@70: /* empty */
- 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property @70 method_or_not
+ 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property $@70 method_or_not
460 array_method_dereference: array_method_dereference '[' dim_offset ']'
461 | method '[' dim_offset ']'
@@ -720,9 +720,9 @@ Grammar
472 array_function_dereference: array_function_dereference '[' dim_offset ']'
- 473 @72: /* empty */
+ 473 $@72: /* empty */
- 474 array_function_dereference: function_call @72 '[' dim_offset ']'
+ 474 array_function_dereference: function_call $@72 '[' dim_offset ']'
475 base_variable_with_function_calls: base_variable
476 | array_function_dereference
@@ -744,9 +744,9 @@ Grammar
488 object_property: object_dim_list
- 489 @73: /* empty */
+ 489 $@73: /* empty */
- 490 object_property: variable_without_objects @73
+ 490 object_property: variable_without_objects $@73
491 object_dim_list: object_dim_list '[' dim_offset ']'
492 | object_dim_list '{' expr '}'
@@ -763,9 +763,9 @@ Grammar
500 assignment_list_element: variable
- 501 @74: /* empty */
+ 501 $@74: /* empty */
- 502 assignment_list_element: "list (T_LIST)" '(' @74 assignment_list ')'
+ 502 assignment_list_element: "list (T_LIST)" '(' $@74 assignment_list ')'
503 | /* empty */
504 array_pair_list: /* empty */
@@ -787,9 +787,9 @@ Grammar
518 encaps_var: "variable (T_VARIABLE)"
- 519 @75: /* empty */
+ 519 $@75: /* empty */
- 520 encaps_var: "variable (T_VARIABLE)" '[' @75 encaps_var_offset ']'
+ 520 encaps_var: "variable (T_VARIABLE)" '[' $@75 encaps_var_offset ']'
521 | "variable (T_VARIABLE)" "-> (T_OBJECT_OPERATOR)" "identifier (T_STRING)"
522 | "${ (T_DOLLAR_OPEN_CURLY_BRACES)" expr '}'
523 | "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr ']' '}'
@@ -810,9 +810,9 @@ Grammar
536 isset_variables: isset_variable
- 537 @76: /* empty */
+ 537 $@76: /* empty */
- 538 isset_variables: isset_variables ',' @76 isset_variable
+ 538 isset_variables: isset_variables ',' $@76 isset_variable
539 isset_variable: variable
540 | expr_without_variable
@@ -927,8 +927,8 @@ error (256)
T_INLINE_HTML (312) 65
T_CHARACTER (313)
T_BAD_CHARACTER (314)
-"quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)"
- (315) 399 413 515 517
+"quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" (315) 399
+ 413 515 517
"quoted-string (T_CONSTANT_ENCAPSED_STRING)" (316) 353 405
"echo (T_ECHO)" (317) 64
"do (T_DO)" (318) 47
@@ -1012,16 +1012,16 @@ start (161)
on left: 1, on right: 0
top_statement_list (162)
on left: 3 4, on right: 1 3 13 15
-@1 (163)
+$@1 (163)
on left: 2, on right: 3
namespace_name (164)
on left: 5 6, on right: 6 11 13 20 21 22 23 364 366 368 380 381
382 383 384 385 417 418 419 430 431 432
top_statement (165)
on left: 7 8 9 10 11 13 15 16 17, on right: 3
-@2 (166)
+$@2 (166)
on left: 12, on right: 13
-@3 (167)
+$@3 (167)
on left: 14, on right: 15
use_declarations (168)
on left: 18 19, on right: 16 18
@@ -1032,7 +1032,7 @@ constant_declaration (170)
inner_statement_list (171)
on left: 27 28, on right: 27 35 41 79 87 90 97 106 131 133 135
144 146 150 156 160 223 344 346
-@4 (172)
+$@4 (172)
on left: 26, on right: 27
inner_statement (173)
on left: 29 30 31 32, on right: 27
@@ -1041,57 +1041,57 @@ statement (174)
unticked_statement (175)
on left: 35 38 41 44 47 51 53 54 55 56 57 58 59 60 61 62 63 64
65 66 67 70 73 75 76 79 80 81, on right: 33
-@5 (176)
+$@5 (176)
on left: 36, on right: 38
-@6 (177)
+$@6 (177)
on left: 37, on right: 38
-@7 (178)
+$@7 (178)
on left: 39, on right: 41
-@8 (179)
+$@8 (179)
on left: 40, on right: 41
-@9 (180)
+$@9 (180)
on left: 42, on right: 44
@10 (181)
on left: 43, on right: 44
-@11 (182)
+$@11 (182)
on left: 45, on right: 47
-@12 (183)
+$@12 (183)
on left: 46, on right: 47
-@13 (184)
+$@13 (184)
on left: 48, on right: 51
-@14 (185)
+$@14 (185)
on left: 49, on right: 51
-@15 (186)
+$@15 (186)
on left: 50, on right: 51
-@16 (187)
+$@16 (187)
on left: 52, on right: 53
-@17 (188)
+$@17 (188)
on left: 68, on right: 70
-@18 (189)
+$@18 (189)
on left: 69, on right: 70
-@19 (190)
+$@19 (190)
on left: 71, on right: 73
-@20 (191)
+$@20 (191)
on left: 72, on right: 73
-@21 (192)
+$@21 (192)
on left: 74, on right: 75
-@22 (193)
+$@22 (193)
on left: 77, on right: 79
-@23 (194)
+$@23 (194)
on left: 78, on right: 79
catch_statement (195)
on left: 82 87, on right: 79
-@24 (196)
+$@24 (196)
on left: 83, on right: 87
-@25 (197)
+$@25 (197)
on left: 84, on right: 87
-@26 (198)
+$@26 (198)
on left: 85, on right: 87
-@27 (199)
+$@27 (199)
on left: 86, on right: 87
finally_statement (200)
on left: 88 90, on right: 79
-@28 (201)
+$@28 (201)
on left: 89, on right: 90
additional_catches (202)
on left: 91 92, on right: 87
@@ -1101,7 +1101,7 @@ additional_catch (204)
on left: 97, on right: 93 94
@29 (205)
on left: 95, on right: 97
-@30 (206)
+$@30 (206)
on left: 96, on right: 97
unset_variables (207)
on left: 98 99, on right: 67 99
@@ -1115,13 +1115,13 @@ is_reference (211)
on left: 103 104, on right: 106 200 344 346
unticked_function_declaration_statement (212)
on left: 106, on right: 101
-@31 (213)
+$@31 (213)
on left: 105, on right: 106
unticked_class_declaration_statement (214)
on left: 108 110, on right: 102
-@32 (215)
+$@32 (215)
on left: 107, on right: 108
-@33 (216)
+$@33 (216)
on left: 109, on right: 110
class_entry_type (217)
on left: 111 112 113 114, on right: 108
@@ -1139,7 +1139,7 @@ foreach_optional_arg (223)
on left: 124 125, on right: 70 73
foreach_variable (224)
on left: 126 127 129, on right: 70 73 125
-@34 (225)
+$@34 (225)
on left: 128, on right: 129
for_statement (226)
on left: 130 131, on right: 51
@@ -1153,9 +1153,9 @@ switch_case_list (230)
on left: 138 139 140 141, on right: 53
case_list (231)
on left: 142 144 146, on right: 138 139 140 141 144 146
-@35 (232)
+$@35 (232)
on left: 143, on right: 144
-@36 (233)
+$@36 (233)
on left: 145, on right: 146
case_separator (234)
on left: 147 148, on right: 144 146
@@ -1163,11 +1163,11 @@ while_statement (235)
on left: 149 150, on right: 44
elseif_list (236)
on left: 151 153, on right: 38 153
-@37 (237)
+$@37 (237)
on left: 152, on right: 153
new_elseif_list (238)
on left: 154 156, on right: 41 156
-@38 (239)
+$@38 (239)
on left: 155, on right: 156
else_single (240)
on left: 157 158, on right: 38
@@ -1196,9 +1196,9 @@ class_statement_list (250)
on left: 193 194, on right: 108 110 193
class_statement (251)
on left: 196 197 198 200, on right: 193
-@39 (252)
+$@39 (252)
on left: 195, on right: 196
-@40 (253)
+$@40 (253)
on left: 199, on right: 200
trait_use_statement (254)
on left: 201, on right: 198
@@ -1244,7 +1244,7 @@ for_expr (274)
on left: 244 245, on right: 51
non_empty_for_expr (275)
on left: 247 248, on right: 245 247
-@41 (276)
+$@41 (276)
on left: 246, on right: 247
chaining_method_or_property (277)
on left: 249 250, on right: 249 254 256
@@ -1252,15 +1252,15 @@ chaining_dereference (278)
on left: 251 252, on right: 251 254 255
chaining_instance_call (279)
on left: 254 255 256, on right: 259
-@42 (280)
+$@42 (280)
on left: 253, on right: 254
instance_call (281)
on left: 257 259, on right: 320
-@43 (282)
+$@43 (282)
on left: 258, on right: 259
new_expr (283)
on left: 261, on right: 318 320
-@44 (284)
+$@44 (284)
on left: 260, on right: 261
expr_without_variable (285)
on left: 263 264 265 267 268 269 270 271 272 273 274 275 276 277
@@ -1269,27 +1269,27 @@ expr_without_variable (285)
314 315 316 317 318 320 323 325 326 327 328 329 330 331 332 333
334 336 337 338 339 340 341 342 344 346, on right: 59 73 178 181
347 349 446 530 540
-@45 (286)
+$@45 (286)
on left: 262, on right: 263
-@46 (287)
+$@46 (287)
on left: 266, on right: 267
-@47 (288)
+$@47 (288)
on left: 284, on right: 285
-@48 (289)
+$@48 (289)
on left: 286, on right: 287
-@49 (290)
+$@49 (290)
on left: 288, on right: 289
-@50 (291)
+$@50 (291)
on left: 290, on right: 291
@51 (292)
on left: 319, on right: 320
-@52 (293)
+$@52 (293)
on left: 321, on right: 323
-@53 (294)
+$@53 (294)
on left: 322, on right: 323
-@54 (295)
+$@54 (295)
on left: 324, on right: 325
-@55 (296)
+$@55 (296)
on left: 335, on right: 336
@56 (297)
on left: 343, on right: 344
@@ -1317,13 +1317,13 @@ function_call (305)
on left: 367, on right: 368
@61 (309)
on left: 369, on right: 370
-@62 (310)
+$@62 (310)
on left: 371, on right: 372
-@63 (311)
+$@63 (311)
on left: 373, on right: 374
-@64 (312)
+$@64 (312)
on left: 375, on right: 376
-@65 (313)
+$@65 (313)
on left: 377, on right: 378
class_name (314)
on left: 379 380 381 382, on right: 370 372 386 426 469 541 543
@@ -1335,9 +1335,9 @@ class_name_reference (316)
on left: 386 387, on right: 261 267 316
dynamic_class_name_reference (317)
on left: 390 391, on right: 387
-@66 (318)
+$@66 (318)
on left: 388, on right: 390
-@67 (319)
+$@67 (319)
on left: 389, on right: 390
dynamic_class_name_variable_properties (320)
on left: 392 393, on right: 390 392
@@ -1350,17 +1350,16 @@ backticks_expr (323)
ctor_arguments (324)
on left: 401 402, on right: 261 267
common_scalar (325)
- on left: 403 404 405 406 407 408 409 410 411 412 413 414,
- on right: 415 433
+ on left: 403 404 405 406 407 408 409 410 411 412 413 414, on right:
+ 415 433
static_scalar (326)
- on left: 415 416 417 418 419 420 421 422 423 424 425,
- on right: 24 25 136 137 165 166 169 170 190 192 237 239 240 241
- 420 421 441 442 443 444
+ on left: 415 416 417 418 419 420 421 422 423 424 425, on right:
+ 24 25 136 137 165 166 169 170 190 192 237 239 240 241 420 421 441
+ 442 443 444
static_class_constant (327)
on left: 426, on right: 424
scalar (328)
- on left: 427 428 429 430 431 432 433 434 435 436,
- on right: 337
+ on left: 427 428 429 430 431 432 433 434 435 436, on right: 337
static_array_pair_list (329)
on left: 437 438, on right: 422 423
possible_comma (330)
@@ -1386,15 +1385,15 @@ variable (337)
on left: 454 455, on right: 60 70 100 126 127 179 182 264 265 267
269 270 271 272 273 274 275 276 277 278 279 348 350 449 450 451
500 524 529 539
-@68 (338)
+$@68 (338)
on left: 452, on right: 454
-@69 (339)
+$@69 (339)
on left: 453, on right: 454
variable_properties (340)
on left: 456 457, on right: 454 456
variable_property (341)
on left: 459, on right: 249 250 456
-@70 (342)
+$@70 (342)
on left: 458, on right: 459
array_method_dereference (343)
on left: 460 461, on right: 460 465
@@ -1412,7 +1411,7 @@ variable_class_name (349)
on left: 471, on right: 374 376 470 542
array_function_dereference (350)
on left: 472 474, on right: 472 476
-@72 (351)
+$@72 (351)
on left: 473, on right: 474
base_variable_with_function_calls (352)
on left: 475 476 477, on right: 454 455
@@ -1427,7 +1426,7 @@ dim_offset (356)
481 491
object_property (357)
on left: 488 490, on right: 390 394 454 459
-@73 (358)
+$@73 (358)
on left: 489, on right: 490
object_dim_list (359)
on left: 491 492 493, on right: 488 491 492
@@ -1439,7 +1438,7 @@ assignment_list (362)
on left: 498 499, on right: 129 263 498 502
assignment_list_element (363)
on left: 500 502 503, on right: 498 499
-@74 (364)
+$@74 (364)
on left: 501, on right: 502
array_pair_list (365)
on left: 504 505, on right: 354 355
@@ -1450,7 +1449,7 @@ encaps_list (367)
on left: 514 515 516 517, on right: 400 434 435 514 515
encaps_var (368)
on left: 518 520 521 522 523 524, on right: 514 516 517
-@75 (369)
+$@75 (369)
on left: 519, on right: 520
encaps_var_offset (370)
on left: 525 526 527, on right: 520
@@ -1458,7 +1457,7 @@ internal_functions_in_yacc (371)
on left: 528 529 530 531 532 533 534 535, on right: 326
isset_variables (372)
on left: 536 538, on right: 528 538
-@76 (373)
+$@76 (373)
on left: 537, on right: 538
isset_variable (374)
on left: 539 540, on right: 536 538
@@ -1490,12 +1489,12 @@ state 1
state 2
1 start: top_statement_list .
- 3 top_statement_list: top_statement_list . @1 top_statement
+ 3 top_statement_list: top_statement_list . $@1 top_statement
"end of file" reduce using rule 1 (start)
- $default reduce using rule 2 (@1)
+ $default reduce using rule 2 ($@1)
- @1 go to state 4
+ $@1 go to state 4
state 3
@@ -1507,7 +1506,7 @@ state 3
state 4
- 3 top_statement_list: top_statement_list @1 . top_statement
+ 3 top_statement_list: top_statement_list $@1 . top_statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -2504,11 +2503,11 @@ state 15
state 16
- 336 expr_without_variable: '@' . @55 expr
+ 336 expr_without_variable: '@' . $@55 expr
- $default reduce using rule 335 (@55)
+ $default reduce using rule 335 ($@55)
- @55 go to state 140
+ $@55 go to state 140
state 17
@@ -3346,7 +3345,7 @@ state 27
state 28
- 261 new_expr: "new (T_NEW)" . class_name_reference @44 ctor_arguments
+ 261 new_expr: "new (T_NEW)" . class_name_reference $@44 ctor_arguments
"identifier (T_STRING)" shift, and go to state 123
"variable (T_VARIABLE)" shift, and go to state 35
@@ -3381,8 +3380,8 @@ state 29
state 30
- 38 unticked_statement: "if (T_IF)" . parenthesis_expr @5 statement @6 elseif_list else_single
- 41 | "if (T_IF)" . parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
+ 38 unticked_statement: "if (T_IF)" . parenthesis_expr $@5 statement $@6 elseif_list else_single
+ 41 | "if (T_IF)" . parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
'(' shift, and go to state 175
@@ -3533,49 +3532,49 @@ state 38
state 39
- 47 unticked_statement: "do (T_DO)" . @11 statement "while (T_WHILE)" @12 parenthesis_expr ';'
+ 47 unticked_statement: "do (T_DO)" . $@11 statement "while (T_WHILE)" $@12 parenthesis_expr ';'
- $default reduce using rule 45 (@11)
+ $default reduce using rule 45 ($@11)
- @11 go to state 181
+ $@11 go to state 181
state 40
- 44 unticked_statement: "while (T_WHILE)" . @9 parenthesis_expr @10 while_statement
+ 44 unticked_statement: "while (T_WHILE)" . $@9 parenthesis_expr @10 while_statement
- $default reduce using rule 42 (@9)
+ $default reduce using rule 42 ($@9)
- @9 go to state 182
+ $@9 go to state 182
state 41
- 51 unticked_statement: "for (T_FOR)" . '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement
+ 51 unticked_statement: "for (T_FOR)" . '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement
'(' shift, and go to state 183
state 42
- 70 unticked_statement: "foreach (T_FOREACH)" . '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement
- 73 | "foreach (T_FOREACH)" . '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement
+ 70 unticked_statement: "foreach (T_FOREACH)" . '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement
+ 73 | "foreach (T_FOREACH)" . '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement
'(' shift, and go to state 184
state 43
- 75 unticked_statement: "declare (T_DECLARE)" . @21 '(' declare_list ')' declare_statement
+ 75 unticked_statement: "declare (T_DECLARE)" . $@21 '(' declare_list ')' declare_statement
- $default reduce using rule 74 (@21)
+ $default reduce using rule 74 ($@21)
- @21 go to state 185
+ $@21 go to state 185
state 44
- 53 unticked_statement: "switch (T_SWITCH)" . parenthesis_expr @16 switch_case_list
+ 53 unticked_statement: "switch (T_SWITCH)" . parenthesis_expr $@16 switch_case_list
'(' shift, and go to state 175
@@ -3870,11 +3869,11 @@ state 50
state 51
- 79 unticked_statement: "try (T_TRY)" . @22 '{' inner_statement_list '}' catch_statement @23 finally_statement
+ 79 unticked_statement: "try (T_TRY)" . $@22 '{' inner_statement_list '}' catch_statement $@23 finally_statement
- $default reduce using rule 77 (@22)
+ $default reduce using rule 77 ($@22)
- @22 go to state 197
+ $@22 go to state 197
state 52
@@ -4067,7 +4066,7 @@ state 64
state 65
- 263 expr_without_variable: "list (T_LIST)" . '(' @45 assignment_list ')' '=' expr
+ 263 expr_without_variable: "list (T_LIST)" . '(' $@45 assignment_list ')' '=' expr
'(' shift, and go to state 216
@@ -4140,8 +4139,8 @@ state 73
state 74
11 top_statement: "namespace (T_NAMESPACE)" . namespace_name ';'
- 13 | "namespace (T_NAMESPACE)" . namespace_name '{' @2 top_statement_list '}'
- 15 | "namespace (T_NAMESPACE)" . '{' @3 top_statement_list '}'
+ 13 | "namespace (T_NAMESPACE)" . namespace_name '{' $@2 top_statement_list '}'
+ 15 | "namespace (T_NAMESPACE)" . '{' $@3 top_statement_list '}'
366 function_call: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name @59 function_call_parameter_list
381 class_name: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name
431 scalar: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name
@@ -4340,7 +4339,7 @@ state 84
state 85
- 3 top_statement_list: top_statement_list @1 top_statement .
+ 3 top_statement_list: top_statement_list $@1 top_statement .
$default reduce using rule 3 (top_statement_list)
@@ -4398,14 +4397,14 @@ state 92
state 93
- 108 unticked_class_declaration_statement: class_entry_type . "identifier (T_STRING)" extends_from @32 implements_list '{' class_statement_list '}'
+ 108 unticked_class_declaration_statement: class_entry_type . "identifier (T_STRING)" extends_from $@32 implements_list '{' class_statement_list '}'
"identifier (T_STRING)" shift, and go to state 243
state 94
- 110 unticked_class_declaration_statement: interface_entry . "identifier (T_STRING)" @33 interface_extends_list '{' class_statement_list '}'
+ 110 unticked_class_declaration_statement: interface_entry . "identifier (T_STRING)" $@33 interface_extends_list '{' class_statement_list '}'
"identifier (T_STRING)" shift, and go to state 244
@@ -4453,7 +4452,7 @@ state 99
state 100
- 106 unticked_function_declaration_statement: function . is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' '{' inner_statement_list '}'
+ 106 unticked_function_declaration_statement: function . is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list '}'
344 expr_without_variable: function . is_reference @56 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}'
'&' shift, and go to state 248
@@ -4465,19 +4464,19 @@ state 100
state 101
- 474 array_function_dereference: function_call . @72 '[' dim_offset ']'
+ 474 array_function_dereference: function_call . $@72 '[' dim_offset ']'
477 base_variable_with_function_calls: function_call .
- '[' reduce using rule 473 (@72)
+ '[' reduce using rule 473 ($@72)
$default reduce using rule 477 (base_variable_with_function_calls)
- @72 go to state 250
+ $@72 go to state 250
state 102
370 function_call: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @61 function_call_parameter_list
- 372 | class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @62 function_call_parameter_list
+ 372 | class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 function_call_parameter_list
469 static_member: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects
541 class_constant: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)"
544 class_name_scalar: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "class (T_CLASS)"
@@ -4502,10 +4501,10 @@ state 104
state 105
66 unticked_statement: expr . ';'
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -4527,8 +4526,8 @@ state 105
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -4586,7 +4585,7 @@ state 109
264 expr_without_variable: variable . '=' expr
265 | variable . '=' '&' variable
- 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments
269 | variable . "+= (T_PLUS_EQUAL)" expr
270 | variable . "-= (T_MINUS_EQUAL)" expr
271 | variable . "*= (T_MUL_EQUAL)" expr
@@ -4621,11 +4620,11 @@ state 109
state 110
- 378 function_call: variable_without_objects . @65 function_call_parameter_list
+ 378 function_call: variable_without_objects . $@65 function_call_parameter_list
- $default reduce using rule 377 (@65)
+ $default reduce using rule 377 ($@65)
- @65 go to state 293
+ $@65 go to state 293
state 111
@@ -4637,8 +4636,8 @@ state 111
state 112
- 374 function_call: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @63 function_call_parameter_list
- 376 | variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @64 function_call_parameter_list
+ 374 function_call: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 function_call_parameter_list
+ 376 | variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 function_call_parameter_list
470 static_member: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects
542 class_constant: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)"
@@ -4657,7 +4656,7 @@ state 113
state 114
- 454 variable: base_variable_with_function_calls . "-> (T_OBJECT_OPERATOR)" @68 object_property @69 method_or_not variable_properties
+ 454 variable: base_variable_with_function_calls . "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not variable_properties
455 | base_variable_with_function_calls .
"-> (T_OBJECT_OPERATOR)" shift, and go to state 296
@@ -4777,10 +4776,10 @@ state 126
state 127
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -4802,8 +4801,8 @@ state 127
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
535 internal_functions_in_yacc: "require_once (T_REQUIRE_ONCE)" expr .
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -4838,10 +4837,10 @@ state 127
state 128
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -4863,8 +4862,8 @@ state 128
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
534 internal_functions_in_yacc: "require (T_REQUIRE)" expr .
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -4985,10 +4984,10 @@ state 129
state 130
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5010,8 +5009,8 @@ state 130
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
532 internal_functions_in_yacc: "include_once (T_INCLUDE_ONCE)" expr .
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -5046,10 +5045,10 @@ state 130
state 131
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5071,8 +5070,8 @@ state 131
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
531 internal_functions_in_yacc: "include (T_INCLUDE)" expr .
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -5107,10 +5106,10 @@ state 131
state 132
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5132,8 +5131,8 @@ state 132
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
341 | "print (T_PRINT)" expr .
'?' shift, and go to state 255
@@ -5175,10 +5174,10 @@ state 133
state 134
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5200,8 +5199,8 @@ state 134
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
349 yield_expr: "yield (T_YIELD)" expr . "=> (T_DOUBLE_ARROW)" expr_without_variable
350 | "yield (T_YIELD)" expr . "=> (T_DOUBLE_ARROW)" variable
@@ -5238,7 +5237,7 @@ state 135
264 expr_without_variable: variable . '=' expr
265 | variable . '=' '&' variable
- 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments
269 | variable . "+= (T_PLUS_EQUAL)" expr
270 | variable . "-= (T_MINUS_EQUAL)" expr
271 | variable . "*= (T_MUL_EQUAL)" expr
@@ -5276,10 +5275,10 @@ state 135
state 136
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5302,18 +5301,18 @@ state 136
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
$default reduce using rule 304 (expr_without_variable)
state 137
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5336,18 +5335,18 @@ state 137
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
$default reduce using rule 305 (expr_without_variable)
state 138
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5370,8 +5369,8 @@ state 138
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"instanceof (T_INSTANCEOF)" shift, and go to state 277
@@ -5380,10 +5379,10 @@ state 138
state 139
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5406,15 +5405,15 @@ state 139
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
$default reduce using rule 307 (expr_without_variable)
state 140
- 336 expr_without_variable: '@' @55 . expr
+ 336 expr_without_variable: '@' $@55 . expr
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -5500,10 +5499,10 @@ state 140
state 141
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5525,8 +5524,8 @@ state 141
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
333 | "(unset) (T_UNSET_CAST)" expr .
$default reduce using rule 333 (expr_without_variable)
@@ -5534,10 +5533,10 @@ state 141
state 142
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5559,8 +5558,8 @@ state 142
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
332 | "(bool) (T_BOOL_CAST)" expr .
$default reduce using rule 332 (expr_without_variable)
@@ -5568,10 +5567,10 @@ state 142
state 143
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5593,8 +5592,8 @@ state 143
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
331 | "(object) (T_OBJECT_CAST)" expr .
$default reduce using rule 331 (expr_without_variable)
@@ -5602,10 +5601,10 @@ state 143
state 144
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5627,8 +5626,8 @@ state 144
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
330 | "(array) (T_ARRAY_CAST)" expr .
$default reduce using rule 330 (expr_without_variable)
@@ -5636,10 +5635,10 @@ state 144
state 145
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5661,8 +5660,8 @@ state 145
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
329 | "(string) (T_STRING_CAST)" expr .
$default reduce using rule 329 (expr_without_variable)
@@ -5670,10 +5669,10 @@ state 145
state 146
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5695,8 +5694,8 @@ state 146
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
328 | "(double) (T_DOUBLE_CAST)" expr .
$default reduce using rule 328 (expr_without_variable)
@@ -5704,10 +5703,10 @@ state 146
state 147
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5729,8 +5728,8 @@ state 147
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
327 | "(int) (T_INT_CAST)" expr .
$default reduce using rule 327 (expr_without_variable)
@@ -5778,7 +5777,7 @@ state 151
state 152
370 function_call: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @61 function_call_parameter_list
- 372 | class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @62 function_call_parameter_list
+ 372 | class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 function_call_parameter_list
469 static_member: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects
":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 307
@@ -5800,8 +5799,8 @@ state 154
state 155
- 374 function_call: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @63 function_call_parameter_list
- 376 | variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @64 function_call_parameter_list
+ 374 function_call: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 function_call_parameter_list
+ 376 | variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 function_call_parameter_list
470 static_member: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects
":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 308
@@ -5843,10 +5842,10 @@ state 157
state 158
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5868,8 +5867,8 @@ state 158
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
508 non_empty_array_pair_list: expr . "=> (T_DOUBLE_ARROW)" expr
509 | expr .
512 | expr . "=> (T_DOUBLE_ARROW)" '&' w_variable
@@ -5930,10 +5929,10 @@ state 160
state 161
268 expr_without_variable: "clone (T_CLONE)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -5955,8 +5954,8 @@ state 161
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
$default reduce using rule 268 (expr_without_variable)
@@ -5999,11 +5998,11 @@ state 165
state 166
- 261 new_expr: "new (T_NEW)" class_name_reference . @44 ctor_arguments
+ 261 new_expr: "new (T_NEW)" class_name_reference . $@44 ctor_arguments
- $default reduce using rule 260 (@44)
+ $default reduce using rule 260 ($@44)
- @44 go to state 318
+ $@44 go to state 318
state 167
@@ -6022,7 +6021,7 @@ state 168
state 169
- 390 dynamic_class_name_reference: base_variable . "-> (T_OBJECT_OPERATOR)" @66 object_property @67 dynamic_class_name_variable_properties
+ 390 dynamic_class_name_reference: base_variable . "-> (T_OBJECT_OPERATOR)" $@66 object_property $@67 dynamic_class_name_variable_properties
391 | base_variable .
"-> (T_OBJECT_OPERATOR)" shift, and go to state 320
@@ -6250,14 +6249,14 @@ state 175
state 176
- 38 unticked_statement: "if (T_IF)" parenthesis_expr . @5 statement @6 elseif_list else_single
- 41 | "if (T_IF)" parenthesis_expr . ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
+ 38 unticked_statement: "if (T_IF)" parenthesis_expr . $@5 statement $@6 elseif_list else_single
+ 41 | "if (T_IF)" parenthesis_expr . ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
':' shift, and go to state 323
- $default reduce using rule 36 (@5)
+ $default reduce using rule 36 ($@5)
- @5 go to state 324
+ $@5 go to state 324
state 177
@@ -6368,10 +6367,10 @@ state 179
state 180
243 echo_expr_list: expr .
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -6393,8 +6392,8 @@ state 180
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -6428,7 +6427,7 @@ state 180
state 181
- 47 unticked_statement: "do (T_DO)" @11 . statement "while (T_WHILE)" @12 parenthesis_expr ';'
+ 47 unticked_statement: "do (T_DO)" $@11 . statement "while (T_WHILE)" $@12 parenthesis_expr ';'
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -6536,7 +6535,7 @@ state 181
state 182
- 44 unticked_statement: "while (T_WHILE)" @9 . parenthesis_expr @10 while_statement
+ 44 unticked_statement: "while (T_WHILE)" $@9 . parenthesis_expr @10 while_statement
'(' shift, and go to state 175
@@ -6545,7 +6544,7 @@ state 182
state 183
- 51 unticked_statement: "for (T_FOR)" '(' . for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement
+ 51 unticked_statement: "for (T_FOR)" '(' . for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -6635,8 +6634,8 @@ state 183
state 184
- 70 unticked_statement: "foreach (T_FOREACH)" '(' . variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement
- 73 | "foreach (T_FOREACH)" '(' . expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement
+ 70 unticked_statement: "foreach (T_FOREACH)" '(' . variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement
+ 73 | "foreach (T_FOREACH)" '(' . expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -6722,18 +6721,18 @@ state 184
state 185
- 75 unticked_statement: "declare (T_DECLARE)" @21 . '(' declare_list ')' declare_statement
+ 75 unticked_statement: "declare (T_DECLARE)" $@21 . '(' declare_list ')' declare_statement
'(' shift, and go to state 336
state 186
- 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr . @16 switch_case_list
+ 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr . $@16 switch_case_list
- $default reduce using rule 52 (@16)
+ $default reduce using rule 52 ($@16)
- @16 go to state 337
+ $@16 go to state 337
state 187
@@ -6746,10 +6745,10 @@ state 187
state 188
55 unticked_statement: "break (T_BREAK)" expr . ';'
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -6771,8 +6770,8 @@ state 188
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -6813,10 +6812,10 @@ state 189
state 190
57 unticked_statement: "continue (T_CONTINUE)" expr . ';'
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -6838,8 +6837,8 @@ state 190
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -6903,10 +6902,10 @@ state 194
state 195
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -6928,8 +6927,8 @@ state 195
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -6964,7 +6963,7 @@ state 196
60 unticked_statement: "return (T_RETURN)" variable . ';'
264 expr_without_variable: variable . '=' expr
265 | variable . '=' '&' variable
- 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments
269 | variable . "+= (T_PLUS_EQUAL)" expr
270 | variable . "-= (T_MINUS_EQUAL)" expr
271 | variable . "*= (T_MUL_EQUAL)" expr
@@ -7000,7 +6999,7 @@ state 196
state 197
- 79 unticked_statement: "try (T_TRY)" @22 . '{' inner_statement_list '}' catch_statement @23 finally_statement
+ 79 unticked_statement: "try (T_TRY)" $@22 . '{' inner_statement_list '}' catch_statement $@23 finally_statement
'{' shift, and go to state 344
@@ -7008,10 +7007,10 @@ state 197
state 198
80 unticked_statement: "throw (T_THROW)" expr . ';'
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -7033,8 +7032,8 @@ state 198
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -7412,11 +7411,11 @@ state 215
state 216
- 263 expr_without_variable: "list (T_LIST)" '(' . @45 assignment_list ')' '=' expr
+ 263 expr_without_variable: "list (T_LIST)" '(' . $@45 assignment_list ')' '=' expr
- $default reduce using rule 262 (@45)
+ $default reduce using rule 262 ($@45)
- @45 go to state 369
+ $@45 go to state 369
state 217
@@ -7513,7 +7512,7 @@ state 217
state 218
518 encaps_var: "variable (T_VARIABLE)" .
- 520 | "variable (T_VARIABLE)" . '[' @75 encaps_var_offset ']'
+ 520 | "variable (T_VARIABLE)" . '[' $@75 encaps_var_offset ']'
521 | "variable (T_VARIABLE)" . "-> (T_OBJECT_OPERATOR)" "identifier (T_STRING)"
'[' shift, and go to state 371
@@ -7690,18 +7689,18 @@ state 225
state 226
- 15 top_statement: "namespace (T_NAMESPACE)" '{' . @3 top_statement_list '}'
+ 15 top_statement: "namespace (T_NAMESPACE)" '{' . $@3 top_statement_list '}'
- $default reduce using rule 14 (@3)
+ $default reduce using rule 14 ($@3)
- @3 go to state 382
+ $@3 go to state 382
state 227
6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)"
11 top_statement: "namespace (T_NAMESPACE)" namespace_name . ';'
- 13 | "namespace (T_NAMESPACE)" namespace_name . '{' @2 top_statement_list '}'
+ 13 | "namespace (T_NAMESPACE)" namespace_name . '{' $@2 top_statement_list '}'
"\\ (T_NS_SEPARATOR)" shift, and go to state 239
';' shift, and go to state 383
@@ -7744,10 +7743,10 @@ state 230
state 231
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -7769,8 +7768,8 @@ state 231
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
447 parenthesis_expr: '(' expr . ')'
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -7804,14 +7803,14 @@ state 231
state 232
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
35 unticked_statement: '{' inner_statement_list . '}'
'}' shift, and go to state 389
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 233
@@ -7995,7 +7994,7 @@ state 242
state 243
- 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" . extends_from @32 implements_list '{' class_statement_list '}'
+ 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" . extends_from $@32 implements_list '{' class_statement_list '}'
"extends (T_EXTENDS)" shift, and go to state 398
@@ -8006,11 +8005,11 @@ state 243
state 244
- 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" . @33 interface_extends_list '{' class_statement_list '}'
+ 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" . $@33 interface_extends_list '{' class_statement_list '}'
- $default reduce using rule 109 (@33)
+ $default reduce using rule 109 ($@33)
- @33 go to state 400
+ $@33 go to state 400
state 245
@@ -8207,7 +8206,7 @@ state 248
state 249
- 106 unticked_function_declaration_statement: function is_reference . "identifier (T_STRING)" @31 '(' parameter_list ')' '{' inner_statement_list '}'
+ 106 unticked_function_declaration_statement: function is_reference . "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list '}'
344 expr_without_variable: function is_reference . @56 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}'
"identifier (T_STRING)" shift, and go to state 403
@@ -8219,7 +8218,7 @@ state 249
state 250
- 474 array_function_dereference: function_call @72 . '[' dim_offset ']'
+ 474 array_function_dereference: function_call $@72 . '[' dim_offset ']'
'[' shift, and go to state 405
@@ -8227,7 +8226,7 @@ state 250
state 251
370 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name @61 function_call_parameter_list
- 372 | class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects @62 function_call_parameter_list
+ 372 | class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects $@62 function_call_parameter_list
469 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects
541 class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)"
544 class_name_scalar: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "class (T_CLASS)"
@@ -8247,11 +8246,11 @@ state 251
state 252
- 289 expr_without_variable: expr "or (T_LOGICAL_OR)" . @49 expr
+ 289 expr_without_variable: expr "or (T_LOGICAL_OR)" . $@49 expr
- $default reduce using rule 288 (@49)
+ $default reduce using rule 288 ($@49)
- @49 go to state 413
+ $@49 go to state 413
state 253
@@ -8342,41 +8341,41 @@ state 253
state 254
- 291 expr_without_variable: expr "and (T_LOGICAL_AND)" . @50 expr
+ 291 expr_without_variable: expr "and (T_LOGICAL_AND)" . $@50 expr
- $default reduce using rule 290 (@50)
+ $default reduce using rule 290 ($@50)
- @50 go to state 415
+ $@50 go to state 415
state 255
- 323 expr_without_variable: expr '?' . @52 expr ':' @53 expr
- 325 | expr '?' . ':' @54 expr
+ 323 expr_without_variable: expr '?' . $@52 expr ':' $@53 expr
+ 325 | expr '?' . ':' $@54 expr
':' shift, and go to state 416
- $default reduce using rule 321 (@52)
+ $default reduce using rule 321 ($@52)
- @52 go to state 417
+ $@52 go to state 417
state 256
- 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" . @47 expr
+ 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" . $@47 expr
- $default reduce using rule 284 (@47)
+ $default reduce using rule 284 ($@47)
- @47 go to state 418
+ $@47 go to state 418
state 257
- 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" . @48 expr
+ 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" . $@48 expr
- $default reduce using rule 286 (@48)
+ $default reduce using rule 286 ($@48)
- @48 go to state 419
+ $@48 go to state 419
state 258
@@ -10061,7 +10060,7 @@ state 281
264 expr_without_variable: variable '=' . expr
265 | variable '=' . '&' variable
- 267 | variable '=' . '&' "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 | variable '=' . '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -11094,7 +11093,7 @@ state 292
state 293
- 378 function_call: variable_without_objects @65 . function_call_parameter_list
+ 378 function_call: variable_without_objects $@65 . function_call_parameter_list
'(' shift, and go to state 395
@@ -11103,8 +11102,8 @@ state 293
state 294
- 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name @63 function_call_parameter_list
- 376 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects @64 function_call_parameter_list
+ 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name $@63 function_call_parameter_list
+ 376 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects $@64 function_call_parameter_list
470 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects
542 class_constant: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)"
@@ -11211,11 +11210,11 @@ state 295
state 296
- 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" . @68 object_property @69 method_or_not variable_properties
+ 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" . $@68 object_property $@69 method_or_not variable_properties
- $default reduce using rule 452 (@68)
+ $default reduce using rule 452 ($@68)
- @68 go to state 458
+ $@68 go to state 458
state 297
@@ -11428,10 +11427,10 @@ state 301
state 302
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -11453,8 +11452,8 @@ state 302
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
533 internal_functions_in_yacc: "eval (T_EVAL)" '(' expr . ')'
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -11575,10 +11574,10 @@ state 303
state 304
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -11600,9 +11599,9 @@ state 304
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
- 336 | '@' @55 expr .
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
+ 336 | '@' $@55 expr .
$default reduce using rule 336 (expr_without_variable)
@@ -11634,7 +11633,7 @@ state 306
state 307
370 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name @61 function_call_parameter_list
- 372 | class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects @62 function_call_parameter_list
+ 372 | class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects $@62 function_call_parameter_list
469 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects
"identifier (T_STRING)" shift, and go to state 465
@@ -11651,8 +11650,8 @@ state 307
state 308
- 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name @63 function_call_parameter_list
- 376 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects @64 function_call_parameter_list
+ 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name $@63 function_call_parameter_list
+ 376 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects $@64 function_call_parameter_list
470 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects
"identifier (T_STRING)" shift, and go to state 465
@@ -11910,7 +11909,7 @@ state 317
state 318
- 261 new_expr: "new (T_NEW)" class_name_reference @44 . ctor_arguments
+ 261 new_expr: "new (T_NEW)" class_name_reference $@44 . ctor_arguments
'(' shift, and go to state 395
@@ -11935,11 +11934,11 @@ state 319
state 320
- 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" . @66 object_property @67 dynamic_class_name_variable_properties
+ 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" . $@66 object_property $@67 dynamic_class_name_variable_properties
- $default reduce using rule 388 (@66)
+ $default reduce using rule 388 ($@66)
- @66 go to state 475
+ $@66 go to state 475
state 321
@@ -11963,16 +11962,16 @@ state 322
state 323
- 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' . @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
+ 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' . $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
- $default reduce using rule 39 (@7)
+ $default reduce using rule 39 ($@7)
- @7 go to state 476
+ $@7 go to state 476
state 324
- 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 . statement @6 elseif_list else_single
+ 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 . statement $@6 elseif_list else_single
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -12080,10 +12079,10 @@ state 324
state 325
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -12105,8 +12104,8 @@ state 325
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
487 dim_offset: expr .
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -12241,14 +12240,14 @@ state 328
state 329
- 47 unticked_statement: "do (T_DO)" @11 statement . "while (T_WHILE)" @12 parenthesis_expr ';'
+ 47 unticked_statement: "do (T_DO)" $@11 statement . "while (T_WHILE)" $@12 parenthesis_expr ';'
"while (T_WHILE)" shift, and go to state 480
state 330
- 44 unticked_statement: "while (T_WHILE)" @9 parenthesis_expr . @10 while_statement
+ 44 unticked_statement: "while (T_WHILE)" $@9 parenthesis_expr . @10 while_statement
$default reduce using rule 43 (@10)
@@ -12257,7 +12256,7 @@ state 330
state 331
- 51 unticked_statement: "for (T_FOR)" '(' for_expr . ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement
+ 51 unticked_statement: "for (T_FOR)" '(' for_expr . ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement
';' shift, and go to state 482
@@ -12265,7 +12264,7 @@ state 331
state 332
245 for_expr: non_empty_for_expr .
- 247 non_empty_for_expr: non_empty_for_expr . ',' @41 expr
+ 247 non_empty_for_expr: non_empty_for_expr . ',' $@41 expr
',' shift, and go to state 483
@@ -12275,10 +12274,10 @@ state 332
state 333
248 non_empty_for_expr: expr .
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -12300,8 +12299,8 @@ state 333
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -12335,7 +12334,7 @@ state 333
state 334
- 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable . "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement
+ 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable . "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement
446 expr: expr_without_variable .
"as (T_AS)" shift, and go to state 484
@@ -12345,10 +12344,10 @@ state 334
state 335
- 70 unticked_statement: "foreach (T_FOREACH)" '(' variable . "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement
+ 70 unticked_statement: "foreach (T_FOREACH)" '(' variable . "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement
264 expr_without_variable: variable . '=' expr
265 | variable . '=' '&' variable
- 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments
269 | variable . "+= (T_PLUS_EQUAL)" expr
270 | variable . "-= (T_MINUS_EQUAL)" expr
271 | variable . "*= (T_MUL_EQUAL)" expr
@@ -12384,7 +12383,7 @@ state 335
state 336
- 75 unticked_statement: "declare (T_DECLARE)" @21 '(' . declare_list ')' declare_statement
+ 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' . declare_list ')' declare_statement
"identifier (T_STRING)" shift, and go to state 486
@@ -12393,7 +12392,7 @@ state 336
state 337
- 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr @16 . switch_case_list
+ 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr $@16 . switch_case_list
':' shift, and go to state 488
'{' shift, and go to state 489
@@ -12471,7 +12470,7 @@ state 343
state 344
- 79 unticked_statement: "try (T_TRY)" @22 '{' . inner_statement_list '}' catch_statement @23 finally_statement
+ 79 unticked_statement: "try (T_TRY)" $@22 '{' . inner_statement_list '}' catch_statement $@23 finally_statement
$default reduce using rule 28 (inner_statement_list)
@@ -12733,7 +12732,7 @@ state 363
264 expr_without_variable: variable . '=' expr
265 | variable . '=' '&' variable
- 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments
269 | variable . "+= (T_PLUS_EQUAL)" expr
270 | variable . "-= (T_MINUS_EQUAL)" expr
271 | variable . "*= (T_MUL_EQUAL)" expr
@@ -12772,7 +12771,7 @@ state 363
state 364
528 internal_functions_in_yacc: "isset (T_ISSET)" '(' isset_variables . ')'
- 538 isset_variables: isset_variables . ',' @76 isset_variable
+ 538 isset_variables: isset_variables . ',' $@76 isset_variable
',' shift, and go to state 517
')' shift, and go to state 518
@@ -12799,7 +12798,7 @@ state 367
264 expr_without_variable: variable . '=' expr
265 | variable . '=' '&' variable
- 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments
269 | variable . "+= (T_PLUS_EQUAL)" expr
270 | variable . "-= (T_MINUS_EQUAL)" expr
271 | variable . "*= (T_MUL_EQUAL)" expr
@@ -12843,7 +12842,7 @@ state 368
state 369
- 263 expr_without_variable: "list (T_LIST)" '(' @45 . assignment_list ')' '=' expr
+ 263 expr_without_variable: "list (T_LIST)" '(' $@45 . assignment_list ')' '=' expr
"identifier (T_STRING)" shift, and go to state 123
"variable (T_VARIABLE)" shift, and go to state 35
@@ -12881,11 +12880,11 @@ state 370
state 371
- 520 encaps_var: "variable (T_VARIABLE)" '[' . @75 encaps_var_offset ']'
+ 520 encaps_var: "variable (T_VARIABLE)" '[' . $@75 encaps_var_offset ']'
- $default reduce using rule 519 (@75)
+ $default reduce using rule 519 ($@75)
- @75 go to state 527
+ $@75 go to state 527
state 372
@@ -12921,10 +12920,10 @@ state 375
state 376
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -12946,8 +12945,8 @@ state 376
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
522 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" expr . '}'
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -13025,7 +13024,7 @@ state 381
state 382
- 15 top_statement: "namespace (T_NAMESPACE)" '{' @3 . top_statement_list '}'
+ 15 top_statement: "namespace (T_NAMESPACE)" '{' $@3 . top_statement_list '}'
$default reduce using rule 4 (top_statement_list)
@@ -13041,11 +13040,11 @@ state 383
state 384
- 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' . @2 top_statement_list '}'
+ 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' . $@2 top_statement_list '}'
- $default reduce using rule 12 (@2)
+ $default reduce using rule 12 ($@2)
- @2 go to state 534
+ $@2 go to state 534
state 385
@@ -13089,7 +13088,7 @@ state 389
state 390
- 27 inner_statement_list: inner_statement_list @4 . inner_statement
+ 27 inner_statement_list: inner_statement_list $@4 . inner_statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -13210,10 +13209,10 @@ state 390
state 391
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -13235,8 +13234,8 @@ state 391
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
485 compound_variable: '$' '{' expr . '}'
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -13409,16 +13408,16 @@ state 398
state 399
- 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from . @32 implements_list '{' class_statement_list '}'
+ 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from . $@32 implements_list '{' class_statement_list '}'
- $default reduce using rule 107 (@32)
+ $default reduce using rule 107 ($@32)
- @32 go to state 554
+ $@32 go to state 554
state 400
- 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 . interface_extends_list '{' class_statement_list '}'
+ 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 . interface_extends_list '{' class_statement_list '}'
"extends (T_EXTENDS)" shift, and go to state 555
@@ -13443,11 +13442,11 @@ state 402
state 403
- 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" . @31 '(' parameter_list ')' '{' inner_statement_list '}'
+ 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" . $@31 '(' parameter_list ')' '{' inner_statement_list '}'
- $default reduce using rule 105 (@31)
+ $default reduce using rule 105 ($@31)
- @31 go to state 559
+ $@31 go to state 559
state 404
@@ -13459,7 +13458,7 @@ state 404
state 405
- 474 array_function_dereference: function_call @72 '[' . dim_offset ']'
+ 474 array_function_dereference: function_call $@72 '[' . dim_offset ']'
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -13650,13 +13649,13 @@ state 408
state 409
- 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . @62 function_call_parameter_list
+ 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . $@62 function_call_parameter_list
469 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects .
- '(' reduce using rule 371 (@62)
+ '(' reduce using rule 371 ($@62)
$default reduce using rule 469 (static_member)
- @62 go to state 563
+ $@62 go to state 563
state 410
@@ -13694,7 +13693,7 @@ state 412
state 413
- 289 expr_without_variable: expr "or (T_LOGICAL_OR)" @49 . expr
+ 289 expr_without_variable: expr "or (T_LOGICAL_OR)" $@49 . expr
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -13780,10 +13779,10 @@ state 413
state 414
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
292 | expr "xor (T_LOGICAL_XOR)" expr .
293 | expr . '|' expr
@@ -13806,8 +13805,8 @@ state 414
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"and (T_LOGICAL_AND)" shift, and go to state 254
'?' shift, and go to state 255
@@ -13839,7 +13838,7 @@ state 414
state 415
- 291 expr_without_variable: expr "and (T_LOGICAL_AND)" @50 . expr
+ 291 expr_without_variable: expr "and (T_LOGICAL_AND)" $@50 . expr
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -13925,16 +13924,16 @@ state 415
state 416
- 325 expr_without_variable: expr '?' ':' . @54 expr
+ 325 expr_without_variable: expr '?' ':' . $@54 expr
- $default reduce using rule 324 (@54)
+ $default reduce using rule 324 ($@54)
- @54 go to state 568
+ $@54 go to state 568
state 417
- 323 expr_without_variable: expr '?' @52 . expr ':' @53 expr
+ 323 expr_without_variable: expr '?' $@52 . expr ':' $@53 expr
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -14020,7 +14019,7 @@ state 417
state 418
- 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" @47 . expr
+ 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" $@47 . expr
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -14106,7 +14105,7 @@ state 418
state 419
- 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" @48 . expr
+ 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" $@48 . expr
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -14192,10 +14191,10 @@ state 419
state 420
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
293 | expr '|' expr .
@@ -14218,8 +14217,8 @@ state 420
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'^' shift, and go to state 259
'&' shift, and go to state 260
@@ -14246,10 +14245,10 @@ state 420
state 421
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14272,8 +14271,8 @@ state 421
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'&' shift, and go to state 260
"!== (T_IS_NOT_IDENTICAL)" shift, and go to state 261
@@ -14299,10 +14298,10 @@ state 421
state 422
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14325,8 +14324,8 @@ state 422
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"!== (T_IS_NOT_IDENTICAL)" shift, and go to state 261
"=== (T_IS_IDENTICAL)" shift, and go to state 262
@@ -14351,10 +14350,10 @@ state 422
state 423
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14377,8 +14376,8 @@ state 423
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'<' shift, and go to state 265
'>' shift, and go to state 266
@@ -14404,10 +14403,10 @@ state 423
state 424
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14430,8 +14429,8 @@ state 424
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'<' shift, and go to state 265
'>' shift, and go to state 266
@@ -14457,10 +14456,10 @@ state 424
state 425
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14483,8 +14482,8 @@ state 425
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'<' shift, and go to state 265
'>' shift, and go to state 266
@@ -14510,10 +14509,10 @@ state 425
state 426
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14536,8 +14535,8 @@ state 426
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'<' shift, and go to state 265
'>' shift, and go to state 266
@@ -14563,10 +14562,10 @@ state 426
state 427
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14589,8 +14588,8 @@ state 427
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
">> (T_SR)" shift, and go to state 269
"<< (T_SL)" shift, and go to state 270
@@ -14612,10 +14611,10 @@ state 427
state 428
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14638,8 +14637,8 @@ state 428
314 | expr '>' expr .
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
">> (T_SR)" shift, and go to state 269
"<< (T_SL)" shift, and go to state 270
@@ -14661,10 +14660,10 @@ state 428
state 429
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14687,8 +14686,8 @@ state 429
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
315 | expr ">= (T_IS_GREATER_OR_EQUAL)" expr .
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
">> (T_SR)" shift, and go to state 269
"<< (T_SL)" shift, and go to state 270
@@ -14710,10 +14709,10 @@ state 429
state 430
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14736,8 +14735,8 @@ state 430
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
">> (T_SR)" shift, and go to state 269
"<< (T_SL)" shift, and go to state 270
@@ -14759,10 +14758,10 @@ state 430
state 431
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14785,8 +14784,8 @@ state 431
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'+' shift, and go to state 271
'-' shift, and go to state 272
@@ -14801,10 +14800,10 @@ state 431
state 432
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14827,8 +14826,8 @@ state 432
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'+' shift, and go to state 271
'-' shift, and go to state 272
@@ -14843,10 +14842,10 @@ state 432
state 433
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14869,8 +14868,8 @@ state 433
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'*' shift, and go to state 274
'/' shift, and go to state 275
@@ -14882,10 +14881,10 @@ state 433
state 434
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14908,8 +14907,8 @@ state 434
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'*' shift, and go to state 274
'/' shift, and go to state 275
@@ -14921,10 +14920,10 @@ state 434
state 435
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14947,8 +14946,8 @@ state 435
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'*' shift, and go to state 274
'/' shift, and go to state 275
@@ -14960,10 +14959,10 @@ state 435
state 436
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -14986,8 +14985,8 @@ state 436
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"instanceof (T_INSTANCEOF)" shift, and go to state 277
@@ -14996,10 +14995,10 @@ state 436
state 437
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15022,8 +15021,8 @@ state 437
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"instanceof (T_INSTANCEOF)" shift, and go to state 277
@@ -15032,10 +15031,10 @@ state 437
state 438
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15058,8 +15057,8 @@ state 438
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"instanceof (T_INSTANCEOF)" shift, and go to state 277
@@ -15076,7 +15075,7 @@ state 439
state 440
265 expr_without_variable: variable '=' '&' . variable
- 267 | variable '=' '&' . "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 | variable '=' '&' . "new (T_NEW)" class_name_reference $@46 ctor_arguments
"new (T_NEW)" shift, and go to state 572
"identifier (T_STRING)" shift, and go to state 123
@@ -15104,10 +15103,10 @@ state 440
state 441
264 expr_without_variable: variable '=' expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15129,8 +15128,8 @@ state 441
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15162,10 +15161,10 @@ state 441
state 442
279 expr_without_variable: variable ">>= (T_SR_EQUAL)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15187,8 +15186,8 @@ state 442
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15220,10 +15219,10 @@ state 442
state 443
278 expr_without_variable: variable "<<= (T_SL_EQUAL)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15245,8 +15244,8 @@ state 443
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15278,10 +15277,10 @@ state 443
state 444
277 expr_without_variable: variable "^= (T_XOR_EQUAL)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15303,8 +15302,8 @@ state 444
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15336,10 +15335,10 @@ state 444
state 445
276 expr_without_variable: variable "|= (T_OR_EQUAL)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15361,8 +15360,8 @@ state 445
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15394,10 +15393,10 @@ state 445
state 446
275 expr_without_variable: variable "&= (T_AND_EQUAL)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15419,8 +15418,8 @@ state 446
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15452,10 +15451,10 @@ state 446
state 447
274 expr_without_variable: variable "%= (T_MOD_EQUAL)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15477,8 +15476,8 @@ state 447
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15510,10 +15509,10 @@ state 447
state 448
273 expr_without_variable: variable ".= (T_CONCAT_EQUAL)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15535,8 +15534,8 @@ state 448
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15568,10 +15567,10 @@ state 448
state 449
272 expr_without_variable: variable "/= (T_DIV_EQUAL)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15593,8 +15592,8 @@ state 449
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15626,10 +15625,10 @@ state 449
state 450
271 expr_without_variable: variable "*= (T_MUL_EQUAL)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15651,8 +15650,8 @@ state 450
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15684,10 +15683,10 @@ state 450
state 451
270 expr_without_variable: variable "-= (T_MINUS_EQUAL)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15709,8 +15708,8 @@ state 451
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15742,10 +15741,10 @@ state 451
state 452
269 expr_without_variable: variable "+= (T_PLUS_EQUAL)" expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15767,8 +15766,8 @@ state 452
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -15799,7 +15798,7 @@ state 452
state 453
- 378 function_call: variable_without_objects @65 function_call_parameter_list .
+ 378 function_call: variable_without_objects $@65 function_call_parameter_list .
$default reduce using rule 378 (function_call)
@@ -15815,22 +15814,22 @@ state 454
state 455
- 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . @64 function_call_parameter_list
+ 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . $@64 function_call_parameter_list
470 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects .
- '(' reduce using rule 375 (@64)
+ '(' reduce using rule 375 ($@64)
$default reduce using rule 470 (static_member)
- @64 go to state 574
+ $@64 go to state 574
state 456
- 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name . @63 function_call_parameter_list
+ 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name . $@63 function_call_parameter_list
- $default reduce using rule 373 (@63)
+ $default reduce using rule 373 ($@63)
- @63 go to state 575
+ $@63 go to state 575
state 457
@@ -15842,7 +15841,7 @@ state 457
state 458
- 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 . object_property @69 method_or_not variable_properties
+ 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 . object_property $@69 method_or_not variable_properties
"identifier (T_STRING)" shift, and go to state 465
"variable (T_VARIABLE)" shift, and go to state 35
@@ -15867,10 +15866,10 @@ state 459
state 460
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -15892,8 +15891,8 @@ state 460
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
482 reference_variable: reference_variable '{' expr . '}'
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -15946,7 +15945,7 @@ state 463
264 expr_without_variable: variable . '=' expr
265 | variable . '=' '&' variable
- 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments
269 | variable . "+= (T_PLUS_EQUAL)" expr
270 | variable . "-= (T_MINUS_EQUAL)" expr
271 | variable . "*= (T_MUL_EQUAL)" expr
@@ -16032,10 +16031,10 @@ state 466
state 467
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -16057,8 +16056,8 @@ state 467
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
508 non_empty_array_pair_list: expr "=> (T_DOUBLE_ARROW)" expr .
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -16120,10 +16119,10 @@ state 468
state 469
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -16145,8 +16144,8 @@ state 469
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
506 non_empty_array_pair_list: non_empty_array_pair_list ',' expr . "=> (T_DOUBLE_ARROW)" expr
507 | non_empty_array_pair_list ',' expr .
510 | non_empty_array_pair_list ',' expr . "=> (T_DOUBLE_ARROW)" '&' w_variable
@@ -16208,7 +16207,7 @@ state 472
state 473
- 261 new_expr: "new (T_NEW)" class_name_reference @44 ctor_arguments .
+ 261 new_expr: "new (T_NEW)" class_name_reference $@44 ctor_arguments .
$default reduce using rule 261 (new_expr)
@@ -16222,7 +16221,7 @@ state 474
state 475
- 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @66 . object_property @67 dynamic_class_name_variable_properties
+ 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 . object_property $@67 dynamic_class_name_variable_properties
"identifier (T_STRING)" shift, and go to state 465
"variable (T_VARIABLE)" shift, and go to state 35
@@ -16240,7 +16239,7 @@ state 475
state 476
- 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 . inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
+ 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 . inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
$default reduce using rule 28 (inner_statement_list)
@@ -16249,11 +16248,11 @@ state 476
state 477
- 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 statement . @6 elseif_list else_single
+ 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement . $@6 elseif_list else_single
- $default reduce using rule 37 (@6)
+ $default reduce using rule 37 ($@6)
- @6 go to state 588
+ $@6 go to state 588
state 478
@@ -16266,10 +16265,10 @@ state 478
state 479
242 echo_expr_list: echo_expr_list ',' expr .
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -16291,8 +16290,8 @@ state 479
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -16326,16 +16325,16 @@ state 479
state 480
- 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" . @12 parenthesis_expr ';'
+ 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" . $@12 parenthesis_expr ';'
- $default reduce using rule 46 (@12)
+ $default reduce using rule 46 ($@12)
- @12 go to state 589
+ $@12 go to state 589
state 481
- 44 unticked_statement: "while (T_WHILE)" @9 parenthesis_expr @10 . while_statement
+ 44 unticked_statement: "while (T_WHILE)" $@9 parenthesis_expr @10 . while_statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -16445,38 +16444,38 @@ state 481
state 482
- 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' . @13 for_expr ';' @14 for_expr ')' @15 for_statement
+ 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' . $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement
- $default reduce using rule 48 (@13)
+ $default reduce using rule 48 ($@13)
- @13 go to state 593
+ $@13 go to state 593
state 483
- 247 non_empty_for_expr: non_empty_for_expr ',' . @41 expr
+ 247 non_empty_for_expr: non_empty_for_expr ',' . $@41 expr
- $default reduce using rule 246 (@41)
+ $default reduce using rule 246 ($@41)
- @41 go to state 594
+ $@41 go to state 594
state 484
- 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" . @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement
+ 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" . $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement
- $default reduce using rule 71 (@19)
+ $default reduce using rule 71 ($@19)
- @19 go to state 595
+ $@19 go to state 595
state 485
- 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" . @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement
+ 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" . $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement
- $default reduce using rule 68 (@17)
+ $default reduce using rule 68 ($@17)
- @17 go to state 596
+ $@17 go to state 596
state 486
@@ -16488,7 +16487,7 @@ state 486
state 487
- 75 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list . ')' declare_statement
+ 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list . ')' declare_statement
137 declare_list: declare_list . ',' "identifier (T_STRING)" '=' static_scalar
',' shift, and go to state 598
@@ -16521,7 +16520,7 @@ state 489
state 490
- 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr @16 switch_case_list .
+ 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr $@16 switch_case_list .
$default reduce using rule 53 (unticked_statement)
@@ -16727,14 +16726,14 @@ state 505
state 506
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
- 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list . '}' catch_statement @23 finally_statement
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
+ 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list . '}' catch_statement $@23 finally_statement
'}' shift, and go to state 614
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 507
@@ -16761,10 +16760,10 @@ state 509
state 510
188 global_var: '$' '{' expr . '}'
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -16786,8 +16785,8 @@ state 510
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -16885,11 +16884,11 @@ state 516
state 517
- 538 isset_variables: isset_variables ',' . @76 isset_variable
+ 538 isset_variables: isset_variables ',' . $@76 isset_variable
- $default reduce using rule 537 (@76)
+ $default reduce using rule 537 ($@76)
- @76 go to state 621
+ $@76 go to state 621
state 518
@@ -16922,7 +16921,7 @@ state 521
state 522
- 502 assignment_list_element: "list (T_LIST)" . '(' @74 assignment_list ')'
+ 502 assignment_list_element: "list (T_LIST)" . '(' $@74 assignment_list ')'
'(' shift, and go to state 622
@@ -16936,7 +16935,7 @@ state 523
state 524
- 263 expr_without_variable: "list (T_LIST)" '(' @45 assignment_list . ')' '=' expr
+ 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list . ')' '=' expr
498 assignment_list: assignment_list . ',' assignment_list_element
',' shift, and go to state 623
@@ -16959,7 +16958,7 @@ state 526
state 527
- 520 encaps_var: "variable (T_VARIABLE)" '[' @75 . encaps_var_offset ']'
+ 520 encaps_var: "variable (T_VARIABLE)" '[' $@75 . encaps_var_offset ']'
"identifier (T_STRING)" shift, and go to state 625
"variable (T_VARIABLE)" shift, and go to state 626
@@ -17086,19 +17085,19 @@ state 532
state 533
- 3 top_statement_list: top_statement_list . @1 top_statement
- 15 top_statement: "namespace (T_NAMESPACE)" '{' @3 top_statement_list . '}'
+ 3 top_statement_list: top_statement_list . $@1 top_statement
+ 15 top_statement: "namespace (T_NAMESPACE)" '{' $@3 top_statement_list . '}'
'}' shift, and go to state 631
- $default reduce using rule 2 (@1)
+ $default reduce using rule 2 ($@1)
- @1 go to state 4
+ $@1 go to state 4
state 534
- 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' @2 . top_statement_list '}'
+ 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' $@2 . top_statement_list '}'
$default reduce using rule 4 (top_statement_list)
@@ -17116,12 +17115,12 @@ state 536
320 expr_without_variable: '(' new_expr ')' @51 . instance_call
- '[' reduce using rule 258 (@43)
- "-> (T_OBJECT_OPERATOR)" reduce using rule 258 (@43)
+ '[' reduce using rule 258 ($@43)
+ "-> (T_OBJECT_OPERATOR)" reduce using rule 258 ($@43)
$default reduce using rule 257 (instance_call)
instance_call go to state 633
- @43 go to state 634
+ $@43 go to state 634
state 537
@@ -17133,7 +17132,7 @@ state 537
state 538
- 27 inner_statement_list: inner_statement_list @4 inner_statement .
+ 27 inner_statement_list: inner_statement_list $@4 inner_statement .
$default reduce using rule 27 (inner_statement_list)
@@ -17233,7 +17232,7 @@ state 548
179 non_empty_function_call_parameter_list: variable .
264 expr_without_variable: variable . '=' expr
265 | variable . '=' '&' variable
- 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments
269 | variable . "+= (T_PLUS_EQUAL)" expr
270 | variable . "-= (T_MINUS_EQUAL)" expr
271 | variable . "*= (T_MUL_EQUAL)" expr
@@ -17336,7 +17335,7 @@ state 553
state 554
- 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 . implements_list '{' class_statement_list '}'
+ 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 . implements_list '{' class_statement_list '}'
"implements (T_IMPLEMENTS)" shift, and go to state 643
@@ -17360,7 +17359,7 @@ state 555
state 556
- 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 interface_extends_list . '{' class_statement_list '}'
+ 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list . '{' class_statement_list '}'
'{' shift, and go to state 647
@@ -17381,7 +17380,7 @@ state 558
state 559
- 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 . '(' parameter_list ')' '{' inner_statement_list '}'
+ 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 . '(' parameter_list ')' '{' inner_statement_list '}'
'(' shift, and go to state 648
@@ -17408,17 +17407,17 @@ state 560
state 561
- 474 array_function_dereference: function_call @72 '[' dim_offset . ']'
+ 474 array_function_dereference: function_call $@72 '[' dim_offset . ']'
']' shift, and go to state 655
state 562
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -17440,8 +17439,8 @@ state 562
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
495 variable_name: '{' expr . '}'
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -17475,7 +17474,7 @@ state 562
state 563
- 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @62 . function_call_parameter_list
+ 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 . function_call_parameter_list
'(' shift, and go to state 395
@@ -17505,11 +17504,11 @@ state 565
state 566
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 289 | expr "or (T_LOGICAL_OR)" @49 expr .
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 289 | expr "or (T_LOGICAL_OR)" $@49 expr .
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -17531,8 +17530,8 @@ state 566
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"xor (T_LOGICAL_XOR)" shift, and go to state 253
"and (T_LOGICAL_AND)" shift, and go to state 254
@@ -17565,11 +17564,11 @@ state 566
state 567
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
- 291 | expr "and (T_LOGICAL_AND)" @50 expr .
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
+ 291 | expr "and (T_LOGICAL_AND)" $@50 expr .
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -17591,8 +17590,8 @@ state 567
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -17623,7 +17622,7 @@ state 567
state 568
- 325 expr_without_variable: expr '?' ':' @54 . expr
+ 325 expr_without_variable: expr '?' ':' $@54 . expr
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -17709,10 +17708,10 @@ state 568
state 569
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -17734,9 +17733,9 @@ state 569
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 323 | expr '?' @52 expr . ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 323 | expr '?' $@52 expr . ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -17769,11 +17768,11 @@ state 569
state 570
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 285 | expr "|| (T_BOOLEAN_OR)" @47 expr .
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 285 | expr "|| (T_BOOLEAN_OR)" $@47 expr .
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -17795,8 +17794,8 @@ state 570
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"&& (T_BOOLEAN_AND)" shift, and go to state 257
'|' shift, and go to state 258
@@ -17825,11 +17824,11 @@ state 570
state 571
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 287 | expr "&& (T_BOOLEAN_AND)" @48 expr .
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 287 | expr "&& (T_BOOLEAN_AND)" $@48 expr .
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -17851,8 +17850,8 @@ state 571
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'|' shift, and go to state 258
'^' shift, and go to state 259
@@ -17880,7 +17879,7 @@ state 571
state 572
- 267 expr_without_variable: variable '=' '&' "new (T_NEW)" . class_name_reference @46 ctor_arguments
+ 267 expr_without_variable: variable '=' '&' "new (T_NEW)" . class_name_reference $@46 ctor_arguments
"identifier (T_STRING)" shift, and go to state 123
"variable (T_VARIABLE)" shift, and go to state 35
@@ -17910,7 +17909,7 @@ state 573
state 574
- 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @64 . function_call_parameter_list
+ 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 . function_call_parameter_list
'(' shift, and go to state 395
@@ -17919,7 +17918,7 @@ state 574
state 575
- 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @63 . function_call_parameter_list
+ 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 . function_call_parameter_list
'(' shift, and go to state 395
@@ -17935,20 +17934,20 @@ state 576
state 577
- 490 object_property: variable_without_objects . @73
+ 490 object_property: variable_without_objects . $@73
- $default reduce using rule 489 (@73)
+ $default reduce using rule 489 ($@73)
- @73 go to state 664
+ $@73 go to state 664
state 578
- 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 object_property . @69 method_or_not variable_properties
+ 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property . $@69 method_or_not variable_properties
- $default reduce using rule 453 (@69)
+ $default reduce using rule 453 ($@69)
- @69 go to state 665
+ $@69 go to state 665
state 579
@@ -18088,30 +18087,30 @@ state 585
state 586
- 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @66 object_property . @67 dynamic_class_name_variable_properties
+ 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 object_property . $@67 dynamic_class_name_variable_properties
- $default reduce using rule 389 (@67)
+ $default reduce using rule 389 ($@67)
- @67 go to state 670
+ $@67 go to state 670
state 587
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
- 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list . @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
+ 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list . $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';'
- "elseif (T_ELSEIF)" reduce using rule 40 (@8)
- "else (T_ELSE)" reduce using rule 40 (@8)
- "endif (T_ENDIF)" reduce using rule 40 (@8)
- $default reduce using rule 26 (@4)
+ "elseif (T_ELSEIF)" reduce using rule 40 ($@8)
+ "else (T_ELSE)" reduce using rule 40 ($@8)
+ "endif (T_ENDIF)" reduce using rule 40 ($@8)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
- @8 go to state 671
+ $@4 go to state 390
+ $@8 go to state 671
state 588
- 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 statement @6 . elseif_list else_single
+ 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement $@6 . elseif_list else_single
$default reduce using rule 151 (elseif_list)
@@ -18120,7 +18119,7 @@ state 588
state 589
- 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" @12 . parenthesis_expr ';'
+ 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" $@12 . parenthesis_expr ';'
'(' shift, and go to state 175
@@ -18145,14 +18144,14 @@ state 591
state 592
- 44 unticked_statement: "while (T_WHILE)" @9 parenthesis_expr @10 while_statement .
+ 44 unticked_statement: "while (T_WHILE)" $@9 parenthesis_expr @10 while_statement .
$default reduce using rule 44 (unticked_statement)
state 593
- 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 . for_expr ';' @14 for_expr ')' @15 for_statement
+ 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 . for_expr ';' $@14 for_expr ')' $@15 for_statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -18242,7 +18241,7 @@ state 593
state 594
- 247 non_empty_for_expr: non_empty_for_expr ',' @41 . expr
+ 247 non_empty_for_expr: non_empty_for_expr ',' $@41 . expr
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -18328,7 +18327,7 @@ state 594
state 595
- 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 . foreach_variable foreach_optional_arg ')' @20 foreach_statement
+ 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 . foreach_variable foreach_optional_arg ')' $@20 foreach_statement
'&' shift, and go to state 677
"identifier (T_STRING)" shift, and go to state 123
@@ -18357,7 +18356,7 @@ state 595
state 596
- 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 . foreach_variable foreach_optional_arg ')' @18 foreach_statement
+ 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 . foreach_variable foreach_optional_arg ')' $@18 foreach_statement
'&' shift, and go to state 677
"identifier (T_STRING)" shift, and go to state 123
@@ -18426,7 +18425,7 @@ state 598
state 599
- 75 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list ')' . declare_statement
+ 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list ')' . declare_statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -18546,8 +18545,8 @@ state 600
state 601
140 switch_case_list: ':' case_list . "endswitch (T_ENDSWITCH)" ';'
- 144 case_list: case_list . "case (T_CASE)" expr case_separator @35 inner_statement_list
- 146 | case_list . "default (T_DEFAULT)" case_separator @36 inner_statement_list
+ 144 case_list: case_list . "case (T_CASE)" expr case_separator $@35 inner_statement_list
+ 146 | case_list . "default (T_DEFAULT)" case_separator $@36 inner_statement_list
"endswitch (T_ENDSWITCH)" shift, and go to state 688
"case (T_CASE)" shift, and go to state 689
@@ -18566,8 +18565,8 @@ state 602
state 603
138 switch_case_list: '{' case_list . '}'
- 144 case_list: case_list . "case (T_CASE)" expr case_separator @35 inner_statement_list
- 146 | case_list . "default (T_DEFAULT)" case_separator @36 inner_statement_list
+ 144 case_list: case_list . "case (T_CASE)" expr case_separator $@35 inner_statement_list
+ 146 | case_list . "default (T_DEFAULT)" case_separator $@36 inner_statement_list
"case (T_CASE)" shift, and go to state 689
"default (T_DEFAULT)" shift, and go to state 690
@@ -18695,7 +18694,7 @@ state 613
state 614
- 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' . catch_statement @23 finally_statement
+ 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' . catch_statement $@23 finally_statement
"catch (T_CATCH)" shift, and go to state 701
@@ -18787,7 +18786,7 @@ state 620
state 621
- 538 isset_variables: isset_variables ',' @76 . isset_variable
+ 538 isset_variables: isset_variables ',' $@76 . isset_variable
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -18874,11 +18873,11 @@ state 621
state 622
- 502 assignment_list_element: "list (T_LIST)" '(' . @74 assignment_list ')'
+ 502 assignment_list_element: "list (T_LIST)" '(' . $@74 assignment_list ')'
- $default reduce using rule 501 (@74)
+ $default reduce using rule 501 ($@74)
- @74 go to state 706
+ $@74 go to state 706
state 623
@@ -18913,7 +18912,7 @@ state 623
state 624
- 263 expr_without_variable: "list (T_LIST)" '(' @45 assignment_list ')' . '=' expr
+ 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list ')' . '=' expr
'=' shift, and go to state 708
@@ -18941,17 +18940,17 @@ state 627
state 628
- 520 encaps_var: "variable (T_VARIABLE)" '[' @75 encaps_var_offset . ']'
+ 520 encaps_var: "variable (T_VARIABLE)" '[' $@75 encaps_var_offset . ']'
']' shift, and go to state 709
state 629
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -18973,8 +18972,8 @@ state 629
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
523 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr . ']' '}'
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -19015,21 +19014,21 @@ state 630
state 631
- 15 top_statement: "namespace (T_NAMESPACE)" '{' @3 top_statement_list '}' .
+ 15 top_statement: "namespace (T_NAMESPACE)" '{' $@3 top_statement_list '}' .
$default reduce using rule 15 (top_statement)
state 632
- 3 top_statement_list: top_statement_list . @1 top_statement
- 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' @2 top_statement_list . '}'
+ 3 top_statement_list: top_statement_list . $@1 top_statement
+ 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' $@2 top_statement_list . '}'
'}' shift, and go to state 711
- $default reduce using rule 2 (@1)
+ $default reduce using rule 2 ($@1)
- @1 go to state 4
+ $@1 go to state 4
state 633
@@ -19041,7 +19040,7 @@ state 633
state 634
- 259 instance_call: @43 . chaining_instance_call
+ 259 instance_call: $@43 . chaining_instance_call
'[' shift, and go to state 712
"-> (T_OBJECT_OPERATOR)" shift, and go to state 713
@@ -19210,7 +19209,7 @@ state 643
state 644
- 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 implements_list . '{' class_statement_list '}'
+ 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list . '{' class_statement_list '}'
'{' shift, and go to state 724
@@ -19234,7 +19233,7 @@ state 646
state 647
- 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 interface_extends_list '{' . class_statement_list '}'
+ 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list '{' . class_statement_list '}'
$default reduce using rule 194 (class_statement_list)
@@ -19243,7 +19242,7 @@ state 647
state 648
- 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' . parameter_list ')' '{' inner_statement_list '}'
+ 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' . parameter_list ')' '{' inner_statement_list '}'
"identifier (T_STRING)" shift, and go to state 123
"array (T_ARRAY)" shift, and go to state 649
@@ -19315,7 +19314,7 @@ state 654
state 655
- 474 array_function_dereference: function_call @72 '[' dim_offset ']' .
+ 474 array_function_dereference: function_call $@72 '[' dim_offset ']' .
$default reduce using rule 474 (array_function_dereference)
@@ -19329,7 +19328,7 @@ state 656
state 657
- 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @62 function_call_parameter_list .
+ 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 function_call_parameter_list .
$default reduce using rule 372 (function_call)
@@ -19343,10 +19342,10 @@ state 658
state 659
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -19368,9 +19367,9 @@ state 659
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
- 325 | expr '?' ':' @54 expr .
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
+ 325 | expr '?' ':' $@54 expr .
"|| (T_BOOLEAN_OR)" shift, and go to state 256
"&& (T_BOOLEAN_AND)" shift, and go to state 257
@@ -19400,46 +19399,46 @@ state 659
state 660
- 323 expr_without_variable: expr '?' @52 expr ':' . @53 expr
+ 323 expr_without_variable: expr '?' $@52 expr ':' . $@53 expr
- $default reduce using rule 322 (@53)
+ $default reduce using rule 322 ($@53)
- @53 go to state 732
+ $@53 go to state 732
state 661
- 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference . @46 ctor_arguments
+ 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference . $@46 ctor_arguments
- $default reduce using rule 266 (@46)
+ $default reduce using rule 266 ($@46)
- @46 go to state 733
+ $@46 go to state 733
state 662
- 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @64 function_call_parameter_list .
+ 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 function_call_parameter_list .
$default reduce using rule 376 (function_call)
state 663
- 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @63 function_call_parameter_list .
+ 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 function_call_parameter_list .
$default reduce using rule 374 (function_call)
state 664
- 490 object_property: variable_without_objects @73 .
+ 490 object_property: variable_without_objects $@73 .
$default reduce using rule 490 (object_property)
state 665
- 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 object_property @69 . method_or_not variable_properties
+ 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 . method_or_not variable_properties
'(' reduce using rule 462 (@71)
$default reduce using rule 466 (method_or_not)
@@ -19654,10 +19653,10 @@ state 668
state 669
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -19679,8 +19678,8 @@ state 669
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
506 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" expr .
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -19715,7 +19714,7 @@ state 669
state 670
- 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @66 object_property @67 . dynamic_class_name_variable_properties
+ 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 object_property $@67 . dynamic_class_name_variable_properties
$default reduce using rule 393 (dynamic_class_name_variable_properties)
@@ -19724,7 +19723,7 @@ state 670
state 671
- 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 . new_elseif_list new_else_single "endif (T_ENDIF)" ';'
+ 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 . new_elseif_list new_else_single "endif (T_ENDIF)" ';'
$default reduce using rule 154 (new_elseif_list)
@@ -19733,8 +19732,8 @@ state 671
state 672
- 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 statement @6 elseif_list . else_single
- 153 elseif_list: elseif_list . "elseif (T_ELSEIF)" parenthesis_expr @37 statement
+ 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement $@6 elseif_list . else_single
+ 153 elseif_list: elseif_list . "elseif (T_ELSEIF)" parenthesis_expr $@37 statement
"elseif (T_ELSEIF)" shift, and go to state 743
"else (T_ELSE)" shift, and go to state 744
@@ -19748,37 +19747,37 @@ state 672
state 673
- 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" @12 parenthesis_expr . ';'
+ 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" $@12 parenthesis_expr . ';'
';' shift, and go to state 746
state 674
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
150 while_statement: ':' inner_statement_list . "endwhile (T_ENDWHILE)" ';'
"endwhile (T_ENDWHILE)" shift, and go to state 747
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 675
- 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr . ';' @14 for_expr ')' @15 for_statement
+ 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr . ';' $@14 for_expr ')' $@15 for_statement
';' shift, and go to state 748
state 676
- 247 non_empty_for_expr: non_empty_for_expr ',' @41 expr .
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 247 non_empty_for_expr: non_empty_for_expr ',' $@41 expr .
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -19800,8 +19799,8 @@ state 676
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -19861,14 +19860,14 @@ state 677
state 678
- 129 foreach_variable: "list (T_LIST)" . '(' @34 assignment_list ')'
+ 129 foreach_variable: "list (T_LIST)" . '(' $@34 assignment_list ')'
'(' shift, and go to state 750
state 679
- 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable . foreach_optional_arg ')' @20 foreach_statement
+ 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable . foreach_optional_arg ')' $@20 foreach_statement
"=> (T_DOUBLE_ARROW)" shift, and go to state 751
@@ -19886,7 +19885,7 @@ state 680
state 681
- 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable . foreach_optional_arg ')' @18 foreach_statement
+ 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable . foreach_optional_arg ')' $@18 foreach_statement
"=> (T_DOUBLE_ARROW)" shift, and go to state 751
@@ -19927,7 +19926,7 @@ state 685
state 686
- 75 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list ')' declare_statement .
+ 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list ')' declare_statement .
$default reduce using rule 75 (unticked_statement)
@@ -19935,8 +19934,8 @@ state 686
state 687
141 switch_case_list: ':' ';' case_list . "endswitch (T_ENDSWITCH)" ';'
- 144 case_list: case_list . "case (T_CASE)" expr case_separator @35 inner_statement_list
- 146 | case_list . "default (T_DEFAULT)" case_separator @36 inner_statement_list
+ 144 case_list: case_list . "case (T_CASE)" expr case_separator $@35 inner_statement_list
+ 146 | case_list . "default (T_DEFAULT)" case_separator $@36 inner_statement_list
"endswitch (T_ENDSWITCH)" shift, and go to state 756
"case (T_CASE)" shift, and go to state 689
@@ -19952,7 +19951,7 @@ state 688
state 689
- 144 case_list: case_list "case (T_CASE)" . expr case_separator @35 inner_statement_list
+ 144 case_list: case_list "case (T_CASE)" . expr case_separator $@35 inner_statement_list
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -20038,7 +20037,7 @@ state 689
state 690
- 146 case_list: case_list "default (T_DEFAULT)" . case_separator @36 inner_statement_list
+ 146 case_list: case_list "default (T_DEFAULT)" . case_separator $@36 inner_statement_list
':' shift, and go to state 759
';' shift, and go to state 760
@@ -20049,8 +20048,8 @@ state 690
state 691
139 switch_case_list: '{' ';' case_list . '}'
- 144 case_list: case_list . "case (T_CASE)" expr case_separator @35 inner_statement_list
- 146 | case_list . "default (T_DEFAULT)" case_separator @36 inner_statement_list
+ 144 case_list: case_list . "case (T_CASE)" expr case_separator $@35 inner_statement_list
+ 146 | case_list . "default (T_DEFAULT)" case_separator $@36 inner_statement_list
"case (T_CASE)" shift, and go to state 689
"default (T_DEFAULT)" shift, and go to state 690
@@ -20183,18 +20182,18 @@ state 700
state 701
- 87 catch_statement: "catch (T_CATCH)" . '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches
+ 87 catch_statement: "catch (T_CATCH)" . '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches
'(' shift, and go to state 766
state 702
- 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' catch_statement . @23 finally_statement
+ 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' catch_statement . $@23 finally_statement
- $default reduce using rule 78 (@23)
+ $default reduce using rule 78 ($@23)
- @23 go to state 767
+ $@23 go to state 767
state 703
@@ -20213,14 +20212,14 @@ state 704
state 705
- 538 isset_variables: isset_variables ',' @76 isset_variable .
+ 538 isset_variables: isset_variables ',' $@76 isset_variable .
$default reduce using rule 538 (isset_variables)
state 706
- 502 assignment_list_element: "list (T_LIST)" '(' @74 . assignment_list ')'
+ 502 assignment_list_element: "list (T_LIST)" '(' $@74 . assignment_list ')'
"identifier (T_STRING)" shift, and go to state 123
"variable (T_VARIABLE)" shift, and go to state 35
@@ -20258,7 +20257,7 @@ state 707
state 708
- 263 expr_without_variable: "list (T_LIST)" '(' @45 assignment_list ')' '=' . expr
+ 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list ')' '=' . expr
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -20344,7 +20343,7 @@ state 708
state 709
- 520 encaps_var: "variable (T_VARIABLE)" '[' @75 encaps_var_offset ']' .
+ 520 encaps_var: "variable (T_VARIABLE)" '[' $@75 encaps_var_offset ']' .
$default reduce using rule 520 (encaps_var)
@@ -20358,7 +20357,7 @@ state 710
state 711
- 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' @2 top_statement_list '}' .
+ 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' $@2 top_statement_list '}' .
$default reduce using rule 13 (top_statement)
@@ -20454,7 +20453,7 @@ state 712
state 713
- 459 variable_property: "-> (T_OBJECT_OPERATOR)" . object_property @70 method_or_not
+ 459 variable_property: "-> (T_OBJECT_OPERATOR)" . object_property $@70 method_or_not
"identifier (T_STRING)" shift, and go to state 465
"variable (T_VARIABLE)" shift, and go to state 35
@@ -20485,20 +20484,20 @@ state 714
state 715
251 chaining_dereference: chaining_dereference . '[' dim_offset ']'
- 254 chaining_instance_call: chaining_dereference . @42 chaining_method_or_property
+ 254 chaining_instance_call: chaining_dereference . $@42 chaining_method_or_property
255 | chaining_dereference .
'[' shift, and go to state 775
- "-> (T_OBJECT_OPERATOR)" reduce using rule 253 (@42)
+ "-> (T_OBJECT_OPERATOR)" reduce using rule 253 ($@42)
$default reduce using rule 255 (chaining_instance_call)
- @42 go to state 776
+ $@42 go to state 776
state 716
- 259 instance_call: @43 chaining_instance_call .
+ 259 instance_call: $@43 chaining_instance_call .
$default reduce using rule 259 (instance_call)
@@ -20559,7 +20558,7 @@ state 721
182 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' variable .
264 expr_without_variable: variable . '=' expr
265 | variable . '=' '&' variable
- 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments
+ 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments
269 | variable . "+= (T_PLUS_EQUAL)" expr
270 | variable . "-= (T_MINUS_EQUAL)" expr
271 | variable . "*= (T_MUL_EQUAL)" expr
@@ -20616,7 +20615,7 @@ state 723
state 724
- 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 implements_list '{' . class_statement_list '}'
+ 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list '{' . class_statement_list '}'
$default reduce using rule 194 (class_statement_list)
@@ -20637,7 +20636,7 @@ state 725
state 726
- 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 interface_extends_list '{' class_statement_list . '}'
+ 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list '{' class_statement_list . '}'
193 class_statement_list: class_statement_list . class_statement
"const (T_CONST)" shift, and go to state 781
@@ -20664,7 +20663,7 @@ state 726
state 727
- 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list . ')' '{' inner_statement_list '}'
+ 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list . ')' '{' inner_statement_list '}'
')' shift, and go to state 798
@@ -20720,7 +20719,7 @@ state 731
state 732
- 323 expr_without_variable: expr '?' @52 expr ':' @53 . expr
+ 323 expr_without_variable: expr '?' $@52 expr ':' $@53 . expr
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -20806,7 +20805,7 @@ state 732
state 733
- 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference @46 . ctor_arguments
+ 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference $@46 . ctor_arguments
'(' shift, and go to state 395
@@ -20847,7 +20846,7 @@ state 736
state 737
- 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 object_property @69 method_or_not . variable_properties
+ 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not . variable_properties
$default reduce using rule 457 (variable_properties)
@@ -20863,10 +20862,10 @@ state 738
state 739
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -20888,8 +20887,8 @@ state 739
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
492 object_dim_list: object_dim_list '{' expr . '}'
"or (T_LOGICAL_OR)" shift, and go to state 252
@@ -20930,7 +20929,7 @@ state 740
state 741
- 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @66 object_property @67 dynamic_class_name_variable_properties .
+ 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 object_property $@67 dynamic_class_name_variable_properties .
392 dynamic_class_name_variable_properties: dynamic_class_name_variable_properties . dynamic_class_name_variable_property
"-> (T_OBJECT_OPERATOR)" shift, and go to state 812
@@ -20942,8 +20941,8 @@ state 741
state 742
- 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list . new_else_single "endif (T_ENDIF)" ';'
- 156 new_elseif_list: new_elseif_list . "elseif (T_ELSEIF)" parenthesis_expr ':' @38 inner_statement_list
+ 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list . new_else_single "endif (T_ENDIF)" ';'
+ 156 new_elseif_list: new_elseif_list . "elseif (T_ELSEIF)" parenthesis_expr ':' $@38 inner_statement_list
"elseif (T_ELSEIF)" shift, and go to state 814
"else (T_ELSE)" shift, and go to state 815
@@ -20955,7 +20954,7 @@ state 742
state 743
- 153 elseif_list: elseif_list "elseif (T_ELSEIF)" . parenthesis_expr @37 statement
+ 153 elseif_list: elseif_list "elseif (T_ELSEIF)" . parenthesis_expr $@37 statement
'(' shift, and go to state 175
@@ -21072,14 +21071,14 @@ state 744
state 745
- 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 statement @6 elseif_list else_single .
+ 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement $@6 elseif_list else_single .
$default reduce using rule 38 (unticked_statement)
state 746
- 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" @12 parenthesis_expr ';' .
+ 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" $@12 parenthesis_expr ';' .
$default reduce using rule 47 (unticked_statement)
@@ -21093,11 +21092,11 @@ state 747
state 748
- 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' . @14 for_expr ')' @15 for_statement
+ 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' . $@14 for_expr ')' $@15 for_statement
- $default reduce using rule 49 (@14)
+ $default reduce using rule 49 ($@14)
- @14 go to state 820
+ $@14 go to state 820
state 749
@@ -21109,11 +21108,11 @@ state 749
state 750
- 129 foreach_variable: "list (T_LIST)" '(' . @34 assignment_list ')'
+ 129 foreach_variable: "list (T_LIST)" '(' . $@34 assignment_list ')'
- $default reduce using rule 128 (@34)
+ $default reduce using rule 128 ($@34)
- @34 go to state 821
+ $@34 go to state 821
state 751
@@ -21147,14 +21146,14 @@ state 751
state 752
- 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg . ')' @20 foreach_statement
+ 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg . ')' $@20 foreach_statement
')' shift, and go to state 823
state 753
- 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg . ')' @18 foreach_statement
+ 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg . ')' $@18 foreach_statement
')' shift, and go to state 824
@@ -21194,14 +21193,14 @@ state 754
state 755
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
135 declare_statement: ':' inner_statement_list . "enddeclare (T_ENDDECLARE)" ';'
"enddeclare (T_ENDDECLARE)" shift, and go to state 826
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 756
@@ -21220,11 +21219,11 @@ state 757
state 758
- 144 case_list: case_list "case (T_CASE)" expr . case_separator @35 inner_statement_list
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 144 case_list: case_list "case (T_CASE)" expr . case_separator $@35 inner_statement_list
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -21246,8 +21245,8 @@ state 758
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
"or (T_LOGICAL_OR)" shift, and go to state 252
"xor (T_LOGICAL_XOR)" shift, and go to state 253
@@ -21297,11 +21296,11 @@ state 760
state 761
- 146 case_list: case_list "default (T_DEFAULT)" case_separator . @36 inner_statement_list
+ 146 case_list: case_list "default (T_DEFAULT)" case_separator . $@36 inner_statement_list
- $default reduce using rule 145 (@36)
+ $default reduce using rule 145 ($@36)
- @36 go to state 829
+ $@36 go to state 829
state 762
@@ -21337,16 +21336,16 @@ state 765
state 766
- 87 catch_statement: "catch (T_CATCH)" '(' . @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches
+ 87 catch_statement: "catch (T_CATCH)" '(' . $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches
- $default reduce using rule 83 (@24)
+ $default reduce using rule 83 ($@24)
- @24 go to state 831
+ $@24 go to state 831
state 767
- 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' catch_statement @23 . finally_statement
+ 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' catch_statement $@23 . finally_statement
"finally (T_FINALLY)" shift, and go to state 832
@@ -21369,7 +21368,7 @@ state 768
state 769
498 assignment_list: assignment_list . ',' assignment_list_element
- 502 assignment_list_element: "list (T_LIST)" '(' @74 assignment_list . ')'
+ 502 assignment_list_element: "list (T_LIST)" '(' $@74 assignment_list . ')'
',' shift, and go to state 623
')' shift, and go to state 835
@@ -21377,11 +21376,11 @@ state 769
state 770
- 263 expr_without_variable: "list (T_LIST)" '(' @45 assignment_list ')' '=' expr .
- 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list ')' '=' expr .
+ 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -21403,8 +21402,8 @@ state 770
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 325 | expr . '?' ':' $@54 expr
'?' shift, and go to state 255
"|| (T_BOOLEAN_OR)" shift, and go to state 256
@@ -21449,11 +21448,11 @@ state 772
state 773
- 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property . @70 method_or_not
+ 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property . $@70 method_or_not
- $default reduce using rule 458 (@70)
+ $default reduce using rule 458 ($@70)
- @70 go to state 837
+ $@70 go to state 837
state 774
@@ -21554,7 +21553,7 @@ state 775
state 776
- 254 chaining_instance_call: chaining_dereference @42 . chaining_method_or_property
+ 254 chaining_instance_call: chaining_dereference $@42 . chaining_method_or_property
"-> (T_OBJECT_OPERATOR)" shift, and go to state 713
@@ -21578,7 +21577,7 @@ state 778
state 779
- 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 implements_list '{' class_statement_list . '}'
+ 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list '{' class_statement_list . '}'
193 class_statement_list: class_statement_list . class_statement
"const (T_CONST)" shift, and go to state 781
@@ -21681,7 +21680,7 @@ state 789
state 790
- 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 interface_extends_list '{' class_statement_list '}' .
+ 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list '{' class_statement_list '}' .
$default reduce using rule 110 (unticked_class_declaration_statement)
@@ -21702,16 +21701,16 @@ state 792
state 793
- 196 class_statement: variable_modifiers . @39 class_variable_declaration ';'
+ 196 class_statement: variable_modifiers . $@39 class_variable_declaration ';'
- $default reduce using rule 195 (@39)
+ $default reduce using rule 195 ($@39)
- @39 go to state 844
+ $@39 go to state 844
state 794
- 200 class_statement: method_modifiers . function is_reference "identifier (T_STRING)" @40 '(' parameter_list ')' method_body
+ 200 class_statement: method_modifiers . function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body
"function (T_FUNCTION)" shift, and go to state 48
@@ -21755,7 +21754,7 @@ state 797
state 798
- 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' . '{' inner_statement_list '}'
+ 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' . '{' inner_statement_list '}'
'{' shift, and go to state 849
@@ -21830,10 +21829,10 @@ state 803
state 804
- 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr
- 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr
- 289 | expr . "or (T_LOGICAL_OR)" @49 expr
- 291 | expr . "and (T_LOGICAL_AND)" @50 expr
+ 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr
+ 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr
+ 289 | expr . "or (T_LOGICAL_OR)" $@49 expr
+ 291 | expr . "and (T_LOGICAL_AND)" $@50 expr
292 | expr . "xor (T_LOGICAL_XOR)" expr
293 | expr . '|' expr
294 | expr . '&' expr
@@ -21855,9 +21854,9 @@ state 804
314 | expr . '>' expr
315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr
316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference
- 323 | expr . '?' @52 expr ':' @53 expr
- 323 | expr '?' @52 expr ':' @53 expr .
- 325 | expr . '?' ':' @54 expr
+ 323 | expr . '?' $@52 expr ':' $@53 expr
+ 323 | expr '?' $@52 expr ':' $@53 expr .
+ 325 | expr . '?' ':' $@54 expr
"|| (T_BOOLEAN_OR)" shift, and go to state 256
"&& (T_BOOLEAN_AND)" shift, and go to state 257
@@ -21887,7 +21886,7 @@ state 804
state 805
- 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments .
+ 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments .
$default reduce using rule 267 (expr_without_variable)
@@ -22079,7 +22078,7 @@ state 808
state 809
- 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 object_property @69 method_or_not variable_properties .
+ 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not variable_properties .
456 variable_properties: variable_properties . variable_property
"-> (T_OBJECT_OPERATOR)" shift, and go to state 713
@@ -22130,7 +22129,7 @@ state 813
state 814
- 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" . parenthesis_expr ':' @38 inner_statement_list
+ 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" . parenthesis_expr ':' $@38 inner_statement_list
'(' shift, and go to state 175
@@ -22146,18 +22145,18 @@ state 815
state 816
- 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list new_else_single . "endif (T_ENDIF)" ';'
+ 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single . "endif (T_ENDIF)" ';'
"endif (T_ENDIF)" shift, and go to state 862
state 817
- 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr . @37 statement
+ 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr . $@37 statement
- $default reduce using rule 152 (@37)
+ $default reduce using rule 152 ($@37)
- @37 go to state 863
+ $@37 go to state 863
state 818
@@ -22176,7 +22175,7 @@ state 819
state 820
- 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 . for_expr ')' @15 for_statement
+ 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 . for_expr ')' $@15 for_statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -22266,7 +22265,7 @@ state 820
state 821
- 129 foreach_variable: "list (T_LIST)" '(' @34 . assignment_list ')'
+ 129 foreach_variable: "list (T_LIST)" '(' $@34 . assignment_list ')'
"identifier (T_STRING)" shift, and go to state 123
"variable (T_VARIABLE)" shift, and go to state 35
@@ -22304,20 +22303,20 @@ state 822
state 823
- 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' . @20 foreach_statement
+ 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' . $@20 foreach_statement
- $default reduce using rule 72 (@20)
+ $default reduce using rule 72 ($@20)
- @20 go to state 866
+ $@20 go to state 866
state 824
- 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' . @18 foreach_statement
+ 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' . $@18 foreach_statement
- $default reduce using rule 69 (@18)
+ $default reduce using rule 69 ($@18)
- @18 go to state 867
+ $@18 go to state 867
state 825
@@ -22343,16 +22342,16 @@ state 827
state 828
- 144 case_list: case_list "case (T_CASE)" expr case_separator . @35 inner_statement_list
+ 144 case_list: case_list "case (T_CASE)" expr case_separator . $@35 inner_statement_list
- $default reduce using rule 143 (@35)
+ $default reduce using rule 143 ($@35)
- @35 go to state 869
+ $@35 go to state 869
state 829
- 146 case_list: case_list "default (T_DEFAULT)" case_separator @36 . inner_statement_list
+ 146 case_list: case_list "default (T_DEFAULT)" case_separator $@36 . inner_statement_list
$default reduce using rule 28 (inner_statement_list)
@@ -22394,7 +22393,7 @@ state 830
state 831
- 87 catch_statement: "catch (T_CATCH)" '(' @24 . fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 . fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches
"identifier (T_STRING)" shift, and go to state 123
"namespace (T_NAMESPACE)" shift, and go to state 550
@@ -22406,16 +22405,16 @@ state 831
state 832
- 90 finally_statement: "finally (T_FINALLY)" . @28 '{' inner_statement_list '}'
+ 90 finally_statement: "finally (T_FINALLY)" . $@28 '{' inner_statement_list '}'
- $default reduce using rule 89 (@28)
+ $default reduce using rule 89 ($@28)
- @28 go to state 873
+ $@28 go to state 873
state 833
- 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' catch_statement @23 finally_statement .
+ 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' catch_statement $@23 finally_statement .
$default reduce using rule 79 (unticked_statement)
@@ -22429,7 +22428,7 @@ state 834
state 835
- 502 assignment_list_element: "list (T_LIST)" '(' @74 assignment_list ')' .
+ 502 assignment_list_element: "list (T_LIST)" '(' $@74 assignment_list ')' .
$default reduce using rule 502 (assignment_list_element)
@@ -22443,7 +22442,7 @@ state 836
state 837
- 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property @70 . method_or_not
+ 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property $@70 . method_or_not
'(' reduce using rule 462 (@71)
$default reduce using rule 466 (method_or_not)
@@ -22464,7 +22463,7 @@ state 838
state 839
249 chaining_method_or_property: chaining_method_or_property . variable_property
- 254 chaining_instance_call: chaining_dereference @42 chaining_method_or_property .
+ 254 chaining_instance_call: chaining_dereference $@42 chaining_method_or_property .
"-> (T_OBJECT_OPERATOR)" shift, and go to state 713
@@ -22475,7 +22474,7 @@ state 839
state 840
- 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 implements_list '{' class_statement_list '}' .
+ 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list '{' class_statement_list '}' .
$default reduce using rule 108 (unticked_class_declaration_statement)
@@ -22508,7 +22507,7 @@ state 843
state 844
- 196 class_statement: variable_modifiers @39 . class_variable_declaration ';'
+ 196 class_statement: variable_modifiers $@39 . class_variable_declaration ';'
"variable (T_VARIABLE)" shift, and go to state 882
@@ -22517,7 +22516,7 @@ state 844
state 845
- 200 class_statement: method_modifiers function . is_reference "identifier (T_STRING)" @40 '(' parameter_list ')' method_body
+ 200 class_statement: method_modifiers function . is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body
'&' shift, and go to state 248
@@ -22549,7 +22548,7 @@ state 848
state 849
- 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' '{' . inner_statement_list '}'
+ 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' . inner_statement_list '}'
$default reduce using rule 28 (inner_statement_list)
@@ -22663,7 +22662,7 @@ state 859
state 860
- 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr . ':' @38 inner_statement_list
+ 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr . ':' $@38 inner_statement_list
':' shift, and go to state 896
@@ -22679,14 +22678,14 @@ state 861
state 862
- 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" . ';'
+ 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" . ';'
';' shift, and go to state 898
state 863
- 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr @37 . statement
+ 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr $@37 . statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -22794,14 +22793,14 @@ state 863
state 864
- 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr . ')' @15 for_statement
+ 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr . ')' $@15 for_statement
')' shift, and go to state 900
state 865
- 129 foreach_variable: "list (T_LIST)" '(' @34 assignment_list . ')'
+ 129 foreach_variable: "list (T_LIST)" '(' $@34 assignment_list . ')'
498 assignment_list: assignment_list . ',' assignment_list_element
',' shift, and go to state 623
@@ -22810,7 +22809,7 @@ state 865
state 866
- 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 . foreach_statement
+ 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 . foreach_statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -22920,7 +22919,7 @@ state 866
state 867
- 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 . foreach_statement
+ 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 . foreach_statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -23037,7 +23036,7 @@ state 868
state 869
- 144 case_list: case_list "case (T_CASE)" expr case_separator @35 . inner_statement_list
+ 144 case_list: case_list "case (T_CASE)" expr case_separator $@35 . inner_statement_list
$default reduce using rule 28 (inner_statement_list)
@@ -23046,16 +23045,16 @@ state 869
state 870
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
- 146 case_list: case_list "default (T_DEFAULT)" case_separator @36 inner_statement_list .
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
+ 146 case_list: case_list "default (T_DEFAULT)" case_separator $@36 inner_statement_list .
"endswitch (T_ENDSWITCH)" reduce using rule 146 (case_list)
"case (T_CASE)" reduce using rule 146 (case_list)
"default (T_DEFAULT)" reduce using rule 146 (case_list)
'}' reduce using rule 146 (case_list)
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 871
@@ -23067,16 +23066,16 @@ state 871
state 872
- 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name . @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name . $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches
- $default reduce using rule 84 (@25)
+ $default reduce using rule 84 ($@25)
- @25 go to state 907
+ $@25 go to state 907
state 873
- 90 finally_statement: "finally (T_FINALLY)" @28 . '{' inner_statement_list '}'
+ 90 finally_statement: "finally (T_FINALLY)" $@28 . '{' inner_statement_list '}'
'{' shift, and go to state 908
@@ -23092,7 +23091,7 @@ state 874
state 875
- 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property @70 method_or_not .
+ 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property $@70 method_or_not .
$default reduce using rule 459 (variable_property)
@@ -23196,7 +23195,7 @@ state 882
state 883
- 196 class_statement: variable_modifiers @39 class_variable_declaration . ';'
+ 196 class_statement: variable_modifiers $@39 class_variable_declaration . ';'
236 class_variable_declaration: class_variable_declaration . ',' "variable (T_VARIABLE)"
237 | class_variable_declaration . ',' "variable (T_VARIABLE)" '=' static_scalar
@@ -23206,7 +23205,7 @@ state 883
state 884
- 200 class_statement: method_modifiers function is_reference . "identifier (T_STRING)" @40 '(' parameter_list ')' method_body
+ 200 class_statement: method_modifiers function is_reference . "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body
"identifier (T_STRING)" shift, and go to state 924
@@ -23220,14 +23219,14 @@ state 885
state 886
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
- 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' '{' inner_statement_list . '}'
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
+ 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list . '}'
'}' shift, and go to state 926
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 887
@@ -23256,14 +23255,14 @@ state 889
state 890
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
344 expr_without_variable: function is_reference @56 '(' parameter_list ')' lexical_vars '{' inner_statement_list . '}'
'}' shift, and go to state 930
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 891
@@ -23332,50 +23331,50 @@ state 895
state 896
- 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' . @38 inner_statement_list
+ 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' . $@38 inner_statement_list
- $default reduce using rule 155 (@38)
+ $default reduce using rule 155 ($@38)
- @38 go to state 933
+ $@38 go to state 933
state 897
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
160 new_else_single: "else (T_ELSE)" ':' inner_statement_list .
"endif (T_ENDIF)" reduce using rule 160 (new_else_single)
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 898
- 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' .
+ 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' .
$default reduce using rule 41 (unticked_statement)
state 899
- 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr @37 statement .
+ 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr $@37 statement .
$default reduce using rule 153 (elseif_list)
state 900
- 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' . @15 for_statement
+ 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' . $@15 for_statement
- $default reduce using rule 50 (@15)
+ $default reduce using rule 50 ($@15)
- @15 go to state 934
+ $@15 go to state 934
state 901
- 129 foreach_variable: "list (T_LIST)" '(' @34 assignment_list ')' .
+ 129 foreach_variable: "list (T_LIST)" '(' $@34 assignment_list ')' .
$default reduce using rule 129 (foreach_variable)
@@ -23398,42 +23397,42 @@ state 903
state 904
- 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement .
+ 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement .
$default reduce using rule 73 (unticked_statement)
state 905
- 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement .
+ 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement .
$default reduce using rule 70 (unticked_statement)
state 906
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
- 144 case_list: case_list "case (T_CASE)" expr case_separator @35 inner_statement_list .
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
+ 144 case_list: case_list "case (T_CASE)" expr case_separator $@35 inner_statement_list .
"endswitch (T_ENDSWITCH)" reduce using rule 144 (case_list)
"case (T_CASE)" reduce using rule 144 (case_list)
"default (T_DEFAULT)" reduce using rule 144 (case_list)
'}' reduce using rule 144 (case_list)
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 907
- 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 . "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 . "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches
"variable (T_VARIABLE)" shift, and go to state 936
state 908
- 90 finally_statement: "finally (T_FINALLY)" @28 '{' . inner_statement_list '}'
+ 90 finally_statement: "finally (T_FINALLY)" $@28 '{' . inner_statement_list '}'
$default reduce using rule 28 (inner_statement_list)
@@ -23442,14 +23441,14 @@ state 908
state 909
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
346 expr_without_variable: "static (T_STATIC)" function is_reference @57 '(' parameter_list ')' lexical_vars '{' inner_statement_list . '}'
'}' shift, and go to state 938
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 910
@@ -23591,18 +23590,18 @@ state 922
state 923
- 196 class_statement: variable_modifiers @39 class_variable_declaration ';' .
+ 196 class_statement: variable_modifiers $@39 class_variable_declaration ';' .
$default reduce using rule 196 (class_statement)
state 924
- 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" . @40 '(' parameter_list ')' method_body
+ 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" . $@40 '(' parameter_list ')' method_body
- $default reduce using rule 199 (@40)
+ $default reduce using rule 199 ($@40)
- @40 go to state 948
+ $@40 go to state 948
state 925
@@ -23640,7 +23639,7 @@ state 925
state 926
- 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' '{' inner_statement_list '}' .
+ 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list '}' .
$default reduce using rule 106 (unticked_function_declaration_statement)
@@ -23717,7 +23716,7 @@ state 932
state 933
- 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' @38 . inner_statement_list
+ 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' $@38 . inner_statement_list
$default reduce using rule 28 (inner_statement_list)
@@ -23726,7 +23725,7 @@ state 933
state 934
- 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 . for_statement
+ 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 . for_statement
"require_once (T_REQUIRE_ONCE)" shift, and go to state 5
"require (T_REQUIRE)" shift, and go to state 6
@@ -23836,33 +23835,33 @@ state 934
state 935
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
133 foreach_statement: ':' inner_statement_list . "endforeach (T_ENDFOREACH)" ';'
"endforeach (T_ENDFOREACH)" shift, and go to state 957
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 936
- 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" . ')' @26 '{' inner_statement_list '}' @27 additional_catches
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" . ')' $@26 '{' inner_statement_list '}' $@27 additional_catches
')' shift, and go to state 958
state 937
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
- 90 finally_statement: "finally (T_FINALLY)" @28 '{' inner_statement_list . '}'
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
+ 90 finally_statement: "finally (T_FINALLY)" $@28 '{' inner_statement_list . '}'
'}' shift, and go to state 959
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 938
@@ -23957,7 +23956,7 @@ state 947
state 948
- 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 . '(' parameter_list ')' method_body
+ 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 . '(' parameter_list ')' method_body
'(' shift, and go to state 966
@@ -23992,15 +23991,15 @@ state 952
state 953
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
- 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' @38 inner_statement_list .
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
+ 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' $@38 inner_statement_list .
"elseif (T_ELSEIF)" reduce using rule 156 (new_elseif_list)
"else (T_ELSE)" reduce using rule 156 (new_elseif_list)
"endif (T_ENDIF)" reduce using rule 156 (new_elseif_list)
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 954
@@ -24021,7 +24020,7 @@ state 955
state 956
- 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement .
+ 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement .
$default reduce using rule 51 (unticked_statement)
@@ -24035,16 +24034,16 @@ state 957
state 958
- 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' . @26 '{' inner_statement_list '}' @27 additional_catches
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' . $@26 '{' inner_statement_list '}' $@27 additional_catches
- $default reduce using rule 85 (@26)
+ $default reduce using rule 85 ($@26)
- @26 go to state 970
+ $@26 go to state 970
state 959
- 90 finally_statement: "finally (T_FINALLY)" @28 '{' inner_statement_list '}' .
+ 90 finally_statement: "finally (T_FINALLY)" $@28 '{' inner_statement_list '}' .
$default reduce using rule 90 (finally_statement)
@@ -24124,7 +24123,7 @@ state 965
state 966
- 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 '(' . parameter_list ')' method_body
+ 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' . parameter_list ')' method_body
"identifier (T_STRING)" shift, and go to state 123
"array (T_ARRAY)" shift, and go to state 649
@@ -24151,14 +24150,14 @@ state 967
state 968
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
131 for_statement: ':' inner_statement_list . "endfor (T_ENDFOR)" ';'
"endfor (T_ENDFOR)" shift, and go to state 975
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 969
@@ -24170,7 +24169,7 @@ state 969
state 970
- 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 . '{' inner_statement_list '}' @27 additional_catches
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 . '{' inner_statement_list '}' $@27 additional_catches
'{' shift, and go to state 976
@@ -24203,7 +24202,7 @@ state 973
state 974
- 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 '(' parameter_list . ')' method_body
+ 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list . ')' method_body
')' shift, and go to state 978
@@ -24217,7 +24216,7 @@ state 975
state 976
- 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' . inner_statement_list '}' @27 additional_catches
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' . inner_statement_list '}' $@27 additional_catches
$default reduce using rule 28 (inner_statement_list)
@@ -24233,7 +24232,7 @@ state 977
state 978
- 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 '(' parameter_list ')' . method_body
+ 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' . method_body
';' shift, and go to state 981
'{' shift, and go to state 982
@@ -24250,14 +24249,14 @@ state 979
state 980
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
- 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list . '}' @27 additional_catches
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list . '}' $@27 additional_catches
'}' shift, and go to state 984
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 981
@@ -24278,35 +24277,35 @@ state 982
state 983
- 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 '(' parameter_list ')' method_body .
+ 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body .
$default reduce using rule 200 (class_statement)
state 984
- 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' . @27 additional_catches
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' . $@27 additional_catches
- $default reduce using rule 86 (@27)
+ $default reduce using rule 86 ($@27)
- @27 go to state 986
+ $@27 go to state 986
state 985
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
223 method_body: '{' inner_statement_list . '}'
'}' shift, and go to state 987
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 986
- 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 . additional_catches
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 . additional_catches
"catch (T_CATCH)" shift, and go to state 988
@@ -24326,14 +24325,14 @@ state 987
state 988
- 97 additional_catch: "catch (T_CATCH)" . '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}'
+ 97 additional_catch: "catch (T_CATCH)" . '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}'
'(' shift, and go to state 992
state 989
- 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches .
+ 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches .
$default reduce using rule 87 (catch_statement)
@@ -24359,7 +24358,7 @@ state 991
state 992
- 97 additional_catch: "catch (T_CATCH)" '(' . fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}'
+ 97 additional_catch: "catch (T_CATCH)" '(' . fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}'
"identifier (T_STRING)" shift, and go to state 123
"namespace (T_NAMESPACE)" shift, and go to state 550
@@ -24378,7 +24377,7 @@ state 993
state 994
- 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name . @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}'
+ 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name . @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}'
$default reduce using rule 95 (@29)
@@ -24387,37 +24386,37 @@ state 994
state 995
- 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 . "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}'
+ 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 . "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}'
"variable (T_VARIABLE)" shift, and go to state 996
state 996
- 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" . ')' @30 '{' inner_statement_list '}'
+ 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" . ')' $@30 '{' inner_statement_list '}'
')' shift, and go to state 997
state 997
- 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' . @30 '{' inner_statement_list '}'
+ 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' . $@30 '{' inner_statement_list '}'
- $default reduce using rule 96 (@30)
+ $default reduce using rule 96 ($@30)
- @30 go to state 998
+ $@30 go to state 998
state 998
- 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 . '{' inner_statement_list '}'
+ 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 . '{' inner_statement_list '}'
'{' shift, and go to state 999
state 999
- 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' . inner_statement_list '}'
+ 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' . inner_statement_list '}'
$default reduce using rule 28 (inner_statement_list)
@@ -24426,18 +24425,18 @@ state 999
state 1000
- 27 inner_statement_list: inner_statement_list . @4 inner_statement
- 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list . '}'
+ 27 inner_statement_list: inner_statement_list . $@4 inner_statement
+ 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list . '}'
'}' shift, and go to state 1001
- $default reduce using rule 26 (@4)
+ $default reduce using rule 26 ($@4)
- @4 go to state 390
+ $@4 go to state 390
state 1001
- 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}' .
+ 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}' .
$default reduce using rule 97 (additional_catch)
diff --git a/Zend/zend_multiply.h b/Zend/zend_multiply.h
index c3c9657f3..e52956f41 100644
--- a/Zend/zend_multiply.h
+++ b/Zend/zend_multiply.h
@@ -13,7 +13,7 @@
| license@zend.com so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Authors: Sascha Schumann <sascha@schumann.cx> |
- | Ard Biesheuvel <ard@ard.nu> |
+ | Ard Biesheuvel <ard.biesheuvel@linaro.org> |
+----------------------------------------------------------------------+
*/
@@ -43,6 +43,31 @@
else (lval) = __tmpvar; \
} while (0)
+#elif defined(__arm__) && defined(__GNUC__)
+
+#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \
+ long __tmpvar; \
+ __asm__("smull %0, %1, %2, %3\n" \
+ "sub %1, %1, %0, asr #31" \
+ : "=r"(__tmpvar), "=r"(usedval) \
+ : "r"(a), "r"(b)); \
+ if (usedval) (dval) = (double) (a) * (double) (b); \
+ else (lval) = __tmpvar; \
+} while (0)
+
+#elif defined(__aarch64__) && defined(__GNUC__)
+
+#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \
+ long __tmpvar; \
+ __asm__("mul %0, %2, %3\n" \
+ "smulh %1, %2, %3\n" \
+ "sub %1, %1, %0, asr #63\n" \
+ : "=X"(__tmpvar), "=X"(usedval) \
+ : "X"(a), "X"(b)); \
+ if (usedval) (dval) = (double) (a) * (double) (b); \
+ else (lval) = __tmpvar; \
+} while (0)
+
#elif SIZEOF_LONG == 4 && defined(HAVE_ZEND_LONG64)
#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \
@@ -58,15 +83,15 @@
#else
-#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \
- long __lres = (a) * (b); \
- long double __dres = (long double)(a) * (long double)(b); \
- long double __delta = (long double) __lres - __dres; \
- if ( ((usedval) = (( __dres + __delta ) != __dres))) { \
- (dval) = __dres; \
- } else { \
- (lval) = __lres; \
- } \
+#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \
+ long __lres = (a) * (b); \
+ long double __dres = (long double)(a) * (long double)(b); \
+ long double __delta = (long double) __lres - __dres; \
+ if ( ((usedval) = (( __dres + __delta ) != __dres))) { \
+ (dval) = __dres; \
+ } else { \
+ (lval) = __lres; \
+ } \
} while (0)
#endif
diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h
index 20a5277d5..93c60e490 100644
--- a/Zend/zend_operators.h
+++ b/Zend/zend_operators.h
@@ -79,7 +79,8 @@ static zend_always_inline long zend_dval_to_lval(double d)
#else
static zend_always_inline long zend_dval_to_lval(double d)
{
- if (d > LONG_MAX) {
+ /* >= as (double)LONG_MAX is outside signed range */
+ if (d >= LONG_MAX) {
return (long)(unsigned long) d;
}
return (long) d;
@@ -476,6 +477,10 @@ ZEND_API void zend_update_current_locale(void);
#define zend_update_current_locale()
#endif
+/* The offset in bytes between the value and type fields of a zval */
+#define ZVAL_OFFSETOF_TYPE \
+ (__builtin_offsetof(zval,type) - __builtin_offsetof(zval,value))
+
static zend_always_inline int fast_increment_function(zval *op1)
{
if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
@@ -485,20 +490,26 @@ static zend_always_inline int fast_increment_function(zval *op1)
"jno 0f\n\t"
"movl $0x0, (%0)\n\t"
"movl $0x41e00000, 0x4(%0)\n\t"
- "movb $0x2,0xc(%0)\n"
+ "movb %1, %c2(%0)\n"
"0:"
:
- : "r"(op1));
+ : "r"(&op1->value),
+ "n"(IS_DOUBLE),
+ "n"(ZVAL_OFFSETOF_TYPE)
+ : "cc");
#elif defined(__GNUC__) && defined(__x86_64__)
__asm__(
"incq (%0)\n\t"
"jno 0f\n\t"
"movl $0x0, (%0)\n\t"
"movl $0x43e00000, 0x4(%0)\n\t"
- "movb $0x2,0x14(%0)\n"
+ "movb %1, %c2(%0)\n"
"0:"
:
- : "r"(op1));
+ : "r"(&op1->value),
+ "n"(IS_DOUBLE),
+ "n"(ZVAL_OFFSETOF_TYPE)
+ : "cc");
#else
if (UNEXPECTED(Z_LVAL_P(op1) == LONG_MAX)) {
/* switch to double */
@@ -522,20 +533,26 @@ static zend_always_inline int fast_decrement_function(zval *op1)
"jno 0f\n\t"
"movl $0x00200000, (%0)\n\t"
"movl $0xc1e00000, 0x4(%0)\n\t"
- "movb $0x2,0xc(%0)\n"
+ "movb %1,%c2(%0)\n"
"0:"
:
- : "r"(op1));
+ : "r"(&op1->value),
+ "n"(IS_DOUBLE),
+ "n"(ZVAL_OFFSETOF_TYPE)
+ : "cc");
#elif defined(__GNUC__) && defined(__x86_64__)
__asm__(
"decq (%0)\n\t"
"jno 0f\n\t"
"movl $0x00000000, (%0)\n\t"
"movl $0xc3e00000, 0x4(%0)\n\t"
- "movb $0x2,0x14(%0)\n"
+ "movb %1,%c2(%0)\n"
"0:"
:
- : "r"(op1));
+ : "r"(&op1->value),
+ "n"(IS_DOUBLE),
+ "n"(ZVAL_OFFSETOF_TYPE)
+ : "cc");
#else
if (UNEXPECTED(Z_LVAL_P(op1) == LONG_MIN)) {
/* switch to double */
@@ -560,40 +577,46 @@ static zend_always_inline int fast_add_function(zval *result, zval *op1, zval *o
"addl (%2), %%eax\n\t"
"jo 0f\n\t"
"movl %%eax, (%0)\n\t"
- "movb $0x1,0xc(%0)\n\t"
+ "movb %3, %c5(%0)\n\t"
"jmp 1f\n"
"0:\n\t"
"fildl (%1)\n\t"
"fildl (%2)\n\t"
"faddp %%st, %%st(1)\n\t"
- "movb $0x2,0xc(%0)\n\t"
+ "movb %4, %c5(%0)\n\t"
"fstpl (%0)\n"
"1:"
:
- : "r"(result),
- "r"(op1),
- "r"(op2)
- : "eax");
+ : "r"(&result->value),
+ "r"(&op1->value),
+ "r"(&op2->value),
+ "n"(IS_LONG),
+ "n"(IS_DOUBLE),
+ "n"(ZVAL_OFFSETOF_TYPE)
+ : "eax","cc");
#elif defined(__GNUC__) && defined(__x86_64__)
__asm__(
"movq (%1), %%rax\n\t"
"addq (%2), %%rax\n\t"
"jo 0f\n\t"
"movq %%rax, (%0)\n\t"
- "movb $0x1,0x14(%0)\n\t"
+ "movb %3, %c5(%0)\n\t"
"jmp 1f\n"
"0:\n\t"
"fildq (%1)\n\t"
"fildq (%2)\n\t"
"faddp %%st, %%st(1)\n\t"
- "movb $0x2,0x14(%0)\n\t"
+ "movb %4, %c5(%0)\n\t"
"fstpl (%0)\n"
"1:"
:
- : "r"(result),
- "r"(op1),
- "r"(op2)
- : "rax");
+ : "r"(&result->value),
+ "r"(&op1->value),
+ "r"(&op2->value),
+ "n"(IS_LONG),
+ "n"(IS_DOUBLE),
+ "n"(ZVAL_OFFSETOF_TYPE)
+ : "rax","cc");
#else
Z_LVAL_P(result) = Z_LVAL_P(op1) + Z_LVAL_P(op2);
@@ -635,7 +658,7 @@ static zend_always_inline int fast_sub_function(zval *result, zval *op1, zval *o
"subl (%2), %%eax\n\t"
"jo 0f\n\t"
"movl %%eax, (%0)\n\t"
- "movb $0x1,0xc(%0)\n\t"
+ "movb %3, %c5(%0)\n\t"
"jmp 1f\n"
"0:\n\t"
"fildl (%2)\n\t"
@@ -645,21 +668,24 @@ static zend_always_inline int fast_sub_function(zval *result, zval *op1, zval *o
#else
"fsubp %%st, %%st(1)\n\t"
#endif
- "movb $0x2,0xc(%0)\n\t"
+ "movb %4, %c5(%0)\n\t"
"fstpl (%0)\n"
"1:"
:
- : "r"(result),
- "r"(op1),
- "r"(op2)
- : "eax");
+ : "r"(&result->value),
+ "r"(&op1->value),
+ "r"(&op2->value),
+ "n"(IS_LONG),
+ "n"(IS_DOUBLE),
+ "n"(ZVAL_OFFSETOF_TYPE)
+ : "eax","cc");
#elif defined(__GNUC__) && defined(__x86_64__)
__asm__(
"movq (%1), %%rax\n\t"
"subq (%2), %%rax\n\t"
"jo 0f\n\t"
"movq %%rax, (%0)\n\t"
- "movb $0x1,0x14(%0)\n\t"
+ "movb %3, %c5(%0)\n\t"
"jmp 1f\n"
"0:\n\t"
"fildq (%2)\n\t"
@@ -669,14 +695,17 @@ static zend_always_inline int fast_sub_function(zval *result, zval *op1, zval *o
#else
"fsubp %%st, %%st(1)\n\t"
#endif
- "movb $0x2,0x14(%0)\n\t"
+ "movb %4, %c5(%0)\n\t"
"fstpl (%0)\n"
"1:"
:
- : "r"(result),
- "r"(op1),
- "r"(op2)
- : "rax");
+ : "r"(&result->value),
+ "r"(&op1->value),
+ "r"(&op2->value),
+ "n"(IS_LONG),
+ "n"(IS_DOUBLE),
+ "n"(ZVAL_OFFSETOF_TYPE)
+ : "rax","cc");
#else
Z_LVAL_P(result) = Z_LVAL_P(op1) - Z_LVAL_P(op2);
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 25ac45312..91eb8a6fd 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -974,27 +974,15 @@ ZEND_VM_HANDLER(40, ZEND_ECHO, CONST|TMP|VAR|CV, ANY)
{
USE_OPLINE
zend_free_op free_op1;
- zval z_copy;
zval *z;
SAVE_OPLINE();
z = GET_OP1_ZVAL_PTR(BP_VAR_R);
- if (OP1_TYPE != IS_CONST &&
- UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) &&
- Z_OBJ_HT_P(z)->get_method != NULL) {
- if (OP1_TYPE == IS_TMP_VAR) {
- INIT_PZVAL(z);
- }
- if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
- zend_print_variable(&z_copy);
- zval_dtor(&z_copy);
- } else {
- zend_print_variable(z);
- }
- } else {
- zend_print_variable(z);
+ if (OP1_TYPE == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) {
+ INIT_PZVAL(z);
}
+ zend_print_variable(z);
FREE_OP1();
CHECK_EXCEPTION();
@@ -2417,6 +2405,9 @@ ZEND_VM_HANDLER(109, ZEND_FETCH_CLASS, ANY, CONST|TMP|VAR|UNUSED|CV)
} else if (Z_TYPE_P(class_name) == IS_STRING) {
EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC);
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string");
}
@@ -2441,6 +2432,9 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
if (OP2_TYPE != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -2474,6 +2468,10 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ FREE_OP2();
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -2552,6 +2550,9 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMP|VAR|UNUS
function_name = GET_OP2_ZVAL_PTR(BP_VAR_R);
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_STRVAL_P(function_name);
@@ -2755,6 +2756,9 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV)
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
ZEND_VM_NEXT_OPCODE(); /* Never reached */
}
@@ -2967,8 +2971,12 @@ ZEND_VM_HANDLER(108, ZEND_THROW, CONST|TMP|VAR|CV, ANY)
value = GET_OP1_ZVAL_PTR(BP_VAR_R);
if (OP1_TYPE == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Can only throw objects");
}
+
zend_exception_save(TSRMLS_C);
/* Not sure if a complete copy is what we want here */
ALLOC_ZVAL(exception);
@@ -3431,6 +3439,9 @@ ZEND_VM_HANDLER(110, ZEND_CLONE, CONST|TMP|VAR|UNUSED|CV, ANY)
if (OP1_TYPE == IS_CONST ||
UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "__clone method called on non-object");
}
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index ab69ee292..62bcdf7fd 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -1191,6 +1191,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLE
} else if (Z_TYPE_P(class_name) == IS_STRING) {
EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC);
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string");
}
@@ -1336,6 +1339,9 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
ZEND_VM_NEXT_OPCODE(); /* Never reached */
}
@@ -1511,6 +1517,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_
} else if (Z_TYPE_P(class_name) == IS_STRING) {
EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC);
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string");
}
@@ -1657,6 +1666,9 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
ZEND_VM_NEXT_OPCODE(); /* Never reached */
}
@@ -1692,6 +1704,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_
} else if (Z_TYPE_P(class_name) == IS_STRING) {
EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC);
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string");
}
@@ -1838,6 +1853,9 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
ZEND_VM_NEXT_OPCODE(); /* Never reached */
}
@@ -1873,6 +1891,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDL
} else if (Z_TYPE_P(class_name) == IS_STRING) {
EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC);
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string");
}
@@ -1909,6 +1930,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_A
} else if (Z_TYPE_P(class_name) == IS_STRING) {
EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC);
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string");
}
@@ -2054,6 +2078,9 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
ZEND_VM_NEXT_OPCODE(); /* Never reached */
}
@@ -2091,27 +2118,15 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
- zval z_copy;
zval *z;
SAVE_OPLINE();
z = opline->op1.zv;
- if (IS_CONST != IS_CONST &&
- UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) &&
- Z_OBJ_HT_P(z)->get_method != NULL) {
- if (IS_CONST == IS_TMP_VAR) {
- INIT_PZVAL(z);
- }
- if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
- zend_print_variable(&z_copy);
- zval_dtor(&z_copy);
- } else {
- zend_print_variable(z);
- }
- } else {
- zend_print_variable(z);
+ if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) {
+ INIT_PZVAL(z);
}
+ zend_print_variable(z);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
@@ -2437,8 +2452,12 @@ static int ZEND_FASTCALL ZEND_THROW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS
value = opline->op1.zv;
if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Can only throw objects");
}
+
zend_exception_save(TSRMLS_C);
/* Not sure if a complete copy is what we want here */
ALLOC_ZVAL(exception);
@@ -2509,6 +2528,9 @@ static int ZEND_FASTCALL ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS
if (IS_CONST == IS_CONST ||
UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "__clone method called on non-object");
}
@@ -3565,6 +3587,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER(
function_name = opline->op2.zv;
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_STRVAL_P(function_name);
@@ -4555,6 +4580,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZE
function_name = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_STRVAL_P(function_name);
@@ -5414,6 +5442,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZE
function_name = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_STRVAL_P(function_name);
@@ -6129,6 +6160,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER
function_name = NULL;
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_STRVAL_P(function_name);
@@ -6985,6 +7019,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEN
function_name = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_STRVAL_P(function_name);
@@ -7411,27 +7448,15 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
zend_free_op free_op1;
- zval z_copy;
zval *z;
SAVE_OPLINE();
z = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_TMP_VAR != IS_CONST &&
- UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) &&
- Z_OBJ_HT_P(z)->get_method != NULL) {
- if (IS_TMP_VAR == IS_TMP_VAR) {
- INIT_PZVAL(z);
- }
- if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
- zend_print_variable(&z_copy);
- zval_dtor(&z_copy);
- } else {
- zend_print_variable(z);
- }
- } else {
- zend_print_variable(z);
+ if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) {
+ INIT_PZVAL(z);
}
+ zend_print_variable(z);
zval_dtor(free_op1.var);
CHECK_EXCEPTION();
@@ -7748,8 +7773,12 @@ static int ZEND_FASTCALL ZEND_THROW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
value = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (IS_TMP_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Can only throw objects");
}
+
zend_exception_save(TSRMLS_C);
/* Not sure if a complete copy is what we want here */
ALLOC_ZVAL(exception);
@@ -7821,6 +7850,9 @@ static int ZEND_FASTCALL ZEND_CLONE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
if (IS_TMP_VAR == IS_CONST ||
UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "__clone method called on non-object");
}
@@ -8938,6 +8970,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO
if (IS_CONST != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -8971,6 +9006,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -9792,6 +9831,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE
if (IS_TMP_VAR != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -9825,6 +9867,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ zval_dtor(free_op2.var);
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -10651,6 +10697,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE
if (IS_VAR != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -10684,6 +10733,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -12085,6 +12138,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_
if (IS_CV != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -12118,6 +12174,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -12622,27 +12682,15 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
zend_free_op free_op1;
- zval z_copy;
zval *z;
SAVE_OPLINE();
z = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_VAR != IS_CONST &&
- UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) &&
- Z_OBJ_HT_P(z)->get_method != NULL) {
- if (IS_VAR == IS_TMP_VAR) {
- INIT_PZVAL(z);
- }
- if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
- zend_print_variable(&z_copy);
- zval_dtor(&z_copy);
- } else {
- zend_print_variable(z);
- }
- } else {
- zend_print_variable(z);
+ if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) {
+ INIT_PZVAL(z);
}
+ zend_print_variable(z);
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
CHECK_EXCEPTION();
@@ -12960,8 +13008,12 @@ static int ZEND_FASTCALL ZEND_THROW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
value = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (IS_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Can only throw objects");
}
+
zend_exception_save(TSRMLS_C);
/* Not sure if a complete copy is what we want here */
ALLOC_ZVAL(exception);
@@ -13142,6 +13194,9 @@ static int ZEND_FASTCALL ZEND_CLONE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
if (IS_VAR == IS_CONST ||
UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "__clone method called on non-object");
}
@@ -15322,6 +15377,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO
if (IS_CONST != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -15355,6 +15413,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -15432,6 +15494,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZE
function_name = opline->op2.zv;
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_STRVAL_P(function_name);
@@ -17663,6 +17728,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE
if (IS_TMP_VAR != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -17696,6 +17764,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ zval_dtor(free_op2.var);
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -17774,6 +17846,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND
function_name = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_STRVAL_P(function_name);
@@ -19969,6 +20044,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE
if (IS_VAR != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -20002,6 +20080,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -20080,6 +20162,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND
function_name = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_STRVAL_P(function_name);
@@ -21514,6 +21599,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(Z
function_name = NULL;
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_STRVAL_P(function_name);
@@ -23410,6 +23498,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_
if (IS_CV != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -23443,6 +23534,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -23520,6 +23615,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_
function_name = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_STRVAL_P(function_name);
@@ -24167,6 +24265,9 @@ static int ZEND_FASTCALL ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARG
if (IS_UNUSED == IS_CONST ||
UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "__clone method called on non-object");
}
@@ -25036,6 +25137,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O
if (IS_CONST != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -25069,6 +25173,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -26444,6 +26552,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC
if (IS_TMP_VAR != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -26477,6 +26588,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ zval_dtor(free_op2.var);
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -27758,6 +27873,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC
if (IS_VAR != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -27791,6 +27909,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -29493,6 +29615,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO
if (IS_CV != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -29526,6 +29651,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -30214,27 +30343,15 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
- zval z_copy;
zval *z;
SAVE_OPLINE();
z = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- if (IS_CV != IS_CONST &&
- UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) &&
- Z_OBJ_HT_P(z)->get_method != NULL) {
- if (IS_CV == IS_TMP_VAR) {
- INIT_PZVAL(z);
- }
- if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
- zend_print_variable(&z_copy);
- zval_dtor(&z_copy);
- } else {
- zend_print_variable(z);
- }
- } else {
- zend_print_variable(z);
+ if (IS_CV == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) {
+ INIT_PZVAL(z);
}
+ zend_print_variable(z);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
@@ -30536,8 +30653,12 @@ static int ZEND_FASTCALL ZEND_THROW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
value = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Can only throw objects");
}
+
zend_exception_save(TSRMLS_C);
/* Not sure if a complete copy is what we want here */
ALLOC_ZVAL(exception);
@@ -30706,6 +30827,9 @@ static int ZEND_FASTCALL ZEND_CLONE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
if (IS_CV == IS_CONST ||
UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "__clone method called on non-object");
}
@@ -32733,6 +32857,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD
if (IS_CONST != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -32766,6 +32893,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -34846,6 +34977,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_
if (IS_TMP_VAR != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -34879,6 +35013,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ zval_dtor(free_op2.var);
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -37018,6 +37156,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_
if (IS_VAR != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -37051,6 +37192,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}
@@ -40182,6 +40327,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H
if (IS_CV != IS_CONST &&
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
@@ -40215,6 +40363,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H
}
}
} else {
+ if (UNEXPECTED(EG(exception) != NULL)) {
+
+ HANDLE_EXCEPTION();
+ }
zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
}