diff options
author | Ondřej Surý <ondrej@sury.org> | 2012-11-16 13:25:37 +0100 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2012-11-16 13:25:37 +0100 |
commit | 0b82e05fe264306004119e30119e665365331e17 (patch) | |
tree | b6ee689804e9ca3946a644a80760d821a032d42f /Zend | |
parent | b57a2691d5b72c3894e2d4e0f945cecc6b3a1953 (diff) | |
download | php-0b82e05fe264306004119e30119e665365331e17.tar.gz |
Imported Upstream version 5.5.0~alpha1upstream/5.5.0_alpha1
Diffstat (limited to 'Zend')
427 files changed, 34636 insertions, 25528 deletions
diff --git a/Zend/Makefile.am b/Zend/Makefile.am index 5ec4590fe..e5757fac5 100644 --- a/Zend/Makefile.am +++ b/Zend/Makefile.am @@ -17,7 +17,8 @@ libZend_la_SOURCES=\ zend_objects_API.c zend_ts_hash.c zend_stream.c \ zend_default_classes.c \ zend_iterators.c zend_interfaces.c zend_exceptions.c \ - zend_strtod.c zend_closures.c zend_float.c zend_string.c zend_signal.c + zend_strtod.c zend_closures.c zend_float.c zend_string.c zend_signal.c \ + zend_generators.c libZend_la_LDFLAGS = libZend_la_LIBADD = @ZEND_EXTRA_LIBS@ diff --git a/Zend/Zend.dsp b/Zend/Zend.dsp index ebe01978c..23ebd4532 100644 --- a/Zend/Zend.dsp +++ b/Zend/Zend.dsp @@ -159,6 +159,10 @@ SOURCE=.\zend_float.c # End Source File
# Begin Source File
+SOURCE=.\zend_generators.c
+# End Source File
+# Begin Source File
+
SOURCE=.\zend_hash.c
# End Source File
# Begin Source File
diff --git a/Zend/ZendTS.dsp b/Zend/ZendTS.dsp index 3494cd4e1..3be2c58be 100644 --- a/Zend/ZendTS.dsp +++ b/Zend/ZendTS.dsp @@ -185,6 +185,10 @@ SOURCE=.\zend_extensions.c # End Source File
# Begin Source File
+SOURCE=.\zend_generators.c
+# End Source File
+# Begin Source File
+
SOURCE=.\zend_hash.c
# End Source File
# Begin Source File
diff --git a/Zend/acinclude.m4 b/Zend/acinclude.m4 index a7358fa85..136d2d8be 100644 --- a/Zend/acinclude.m4 +++ b/Zend/acinclude.m4 @@ -4,7 +4,7 @@ dnl This file contains local autoconf functions. AC_DEFUN([LIBZEND_BISON_CHECK],[ # we only support certain bison versions - bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5 2.5.1" + bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5 2.5.1 2.6 2.6.1 2.6.2" # for standalone build of Zend Engine test -z "$SED" && SED=sed diff --git a/Zend/tests/array_type_hint_001.phpt b/Zend/tests/array_type_hint_001.phpt index a67699277..a67699277 100755..100644 --- a/Zend/tests/array_type_hint_001.phpt +++ b/Zend/tests/array_type_hint_001.phpt diff --git a/Zend/tests/bug18556.phpt b/Zend/tests/bug18556.phpt new file mode 100644 index 000000000..036abb2ad --- /dev/null +++ b/Zend/tests/bug18556.phpt @@ -0,0 +1,37 @@ +--TEST-- +Bug #18556 (Setting locale to 'tr_TR' lowercases class names) +--FILE-- +<?php +$g_lang = 'tr_TR'; +putenv("LANG=$g_lang"); +setlocale(LC_ALL, $g_lang); + +class InfoBlob { + var $foo; + function InfoBlob() { + $this->foo = "Foo"; + } +} + +echo "Instantiating an infoBlob with a lowercase i\n"; +$foobar = new infoBlob(); +echo $foobar->foo; +echo "\nInstantiating an InfoBlob with an uppercase I\n"; +$foobar = new InfoBlob(); +echo $foobar->foo; +echo "\n"; +setlocale(LC_ALL, "tr_TR.utf8"); +foreach(get_declared_classes() as $class) +{ + if(!class_exists($class)) + echo "$class No Longer Exists!\n"; + +} +echo "Done.\n"; +?> +--EXPECT-- +Instantiating an infoBlob with a lowercase i +Foo +Instantiating an InfoBlob with an uppercase I +Foo +Done. diff --git a/Zend/tests/bug20240.phpt b/Zend/tests/bug20240.phpt index acf673a27..acf673a27 100755..100644 --- a/Zend/tests/bug20240.phpt +++ b/Zend/tests/bug20240.phpt diff --git a/Zend/tests/bug20242.phpt b/Zend/tests/bug20242.phpt index 064f8235f..064f8235f 100755..100644 --- a/Zend/tests/bug20242.phpt +++ b/Zend/tests/bug20242.phpt diff --git a/Zend/tests/bug21478.phpt b/Zend/tests/bug21478.phpt index 8b38f24d6..8b38f24d6 100755..100644 --- a/Zend/tests/bug21478.phpt +++ b/Zend/tests/bug21478.phpt diff --git a/Zend/tests/bug21888.phpt b/Zend/tests/bug21888.phpt index a13da1943..a13da1943 100755..100644 --- a/Zend/tests/bug21888.phpt +++ b/Zend/tests/bug21888.phpt diff --git a/Zend/tests/bug22725.phpt b/Zend/tests/bug22725.phpt index 5f3c258b1..5f3c258b1 100755..100644 --- a/Zend/tests/bug22725.phpt +++ b/Zend/tests/bug22725.phpt diff --git a/Zend/tests/bug24436.phpt b/Zend/tests/bug24436.phpt index 0c261b668..0c261b668 100755..100644 --- a/Zend/tests/bug24436.phpt +++ b/Zend/tests/bug24436.phpt diff --git a/Zend/tests/bug24884.phpt b/Zend/tests/bug24884.phpt index 457acd00d..457acd00d 100755..100644 --- a/Zend/tests/bug24884.phpt +++ b/Zend/tests/bug24884.phpt diff --git a/Zend/tests/bug26077.phpt b/Zend/tests/bug26077.phpt index dc7686e0a..dc7686e0a 100755..100644 --- a/Zend/tests/bug26077.phpt +++ b/Zend/tests/bug26077.phpt diff --git a/Zend/tests/bug26166.phpt b/Zend/tests/bug26166.phpt index 60624ed98..60624ed98 100755..100644 --- a/Zend/tests/bug26166.phpt +++ b/Zend/tests/bug26166.phpt diff --git a/Zend/tests/bug26229.phpt b/Zend/tests/bug26229.phpt index 347eb5557..347eb5557 100755..100644 --- a/Zend/tests/bug26229.phpt +++ b/Zend/tests/bug26229.phpt diff --git a/Zend/tests/bug26281.phpt b/Zend/tests/bug26281.phpt index e1888a88d..e1888a88d 100755..100644 --- a/Zend/tests/bug26281.phpt +++ b/Zend/tests/bug26281.phpt diff --git a/Zend/tests/bug26696.phpt b/Zend/tests/bug26696.phpt index 62ceacda5..62ceacda5 100755..100644 --- a/Zend/tests/bug26696.phpt +++ b/Zend/tests/bug26696.phpt diff --git a/Zend/tests/bug26697.phpt b/Zend/tests/bug26697.phpt index 8266a23e3..8266a23e3 100755..100644 --- a/Zend/tests/bug26697.phpt +++ b/Zend/tests/bug26697.phpt diff --git a/Zend/tests/bug26698.phpt b/Zend/tests/bug26698.phpt index aecc708a0..aecc708a0 100755..100644 --- a/Zend/tests/bug26698.phpt +++ b/Zend/tests/bug26698.phpt diff --git a/Zend/tests/bug26801.phpt b/Zend/tests/bug26801.phpt index b8cc37aa1..b8cc37aa1 100755..100644 --- a/Zend/tests/bug26801.phpt +++ b/Zend/tests/bug26801.phpt diff --git a/Zend/tests/bug26802.phpt b/Zend/tests/bug26802.phpt index ab0ad25aa..ab0ad25aa 100755..100644 --- a/Zend/tests/bug26802.phpt +++ b/Zend/tests/bug26802.phpt diff --git a/Zend/tests/bug27268.phpt b/Zend/tests/bug27268.phpt index a86e8d029..a86e8d029 100755..100644 --- a/Zend/tests/bug27268.phpt +++ b/Zend/tests/bug27268.phpt diff --git a/Zend/tests/bug27304.phpt b/Zend/tests/bug27304.phpt index 0f248346c..0f248346c 100755..100644 --- a/Zend/tests/bug27304.phpt +++ b/Zend/tests/bug27304.phpt diff --git a/Zend/tests/bug27598.phpt b/Zend/tests/bug27598.phpt index 534e8cf85..534e8cf85 100755..100644 --- a/Zend/tests/bug27598.phpt +++ b/Zend/tests/bug27598.phpt diff --git a/Zend/tests/bug27669.phpt b/Zend/tests/bug27669.phpt index 4d513e91a..4d513e91a 100755..100644 --- a/Zend/tests/bug27669.phpt +++ b/Zend/tests/bug27669.phpt diff --git a/Zend/tests/bug27798.phpt b/Zend/tests/bug27798.phpt index 9e54efa83..9e54efa83 100755..100644 --- a/Zend/tests/bug27798.phpt +++ b/Zend/tests/bug27798.phpt diff --git a/Zend/tests/bug28072.phpt b/Zend/tests/bug28072.phpt index 76208733f..76208733f 100755..100644 --- a/Zend/tests/bug28072.phpt +++ b/Zend/tests/bug28072.phpt diff --git a/Zend/tests/bug28377.phpt b/Zend/tests/bug28377.phpt index 9d1b43472..9d1b43472 100755..100644 --- a/Zend/tests/bug28377.phpt +++ b/Zend/tests/bug28377.phpt diff --git a/Zend/tests/bug28442.phpt b/Zend/tests/bug28442.phpt index 1237357cc..1237357cc 100755..100644 --- a/Zend/tests/bug28442.phpt +++ b/Zend/tests/bug28442.phpt diff --git a/Zend/tests/bug28444.phpt b/Zend/tests/bug28444.phpt index 78c08d2fc..78c08d2fc 100755..100644 --- a/Zend/tests/bug28444.phpt +++ b/Zend/tests/bug28444.phpt diff --git a/Zend/tests/bug29368.phpt b/Zend/tests/bug29368.phpt index c16399abb..c16399abb 100755..100644 --- a/Zend/tests/bug29368.phpt +++ b/Zend/tests/bug29368.phpt diff --git a/Zend/tests/bug29505.phpt b/Zend/tests/bug29505.phpt index 4d7c05351..4d7c05351 100755..100644 --- a/Zend/tests/bug29505.phpt +++ b/Zend/tests/bug29505.phpt diff --git a/Zend/tests/bug29674.phpt b/Zend/tests/bug29674.phpt index 30c23faa0..30c23faa0 100755..100644 --- a/Zend/tests/bug29674.phpt +++ b/Zend/tests/bug29674.phpt diff --git a/Zend/tests/bug29896.phpt b/Zend/tests/bug29896.phpt index 1e2eb0b06..1e2eb0b06 100755..100644 --- a/Zend/tests/bug29896.phpt +++ b/Zend/tests/bug29896.phpt diff --git a/Zend/tests/bug30080.phpt b/Zend/tests/bug30080.phpt index bd8401e1b..bd8401e1b 100755..100644 --- a/Zend/tests/bug30080.phpt +++ b/Zend/tests/bug30080.phpt diff --git a/Zend/tests/bug30140.phpt b/Zend/tests/bug30140.phpt index 1dfb83500..1dfb83500 100755..100644 --- a/Zend/tests/bug30140.phpt +++ b/Zend/tests/bug30140.phpt diff --git a/Zend/tests/bug30161.phpt b/Zend/tests/bug30161.phpt index 22f8fb59e..22f8fb59e 100755..100644 --- a/Zend/tests/bug30161.phpt +++ b/Zend/tests/bug30161.phpt diff --git a/Zend/tests/bug30162.phpt b/Zend/tests/bug30162.phpt index a011292a1..a011292a1 100755..100644 --- a/Zend/tests/bug30162.phpt +++ b/Zend/tests/bug30162.phpt diff --git a/Zend/tests/bug30346.phpt b/Zend/tests/bug30346.phpt index 30f36fbde..30f36fbde 100755..100644 --- a/Zend/tests/bug30346.phpt +++ b/Zend/tests/bug30346.phpt diff --git a/Zend/tests/bug30394.phpt b/Zend/tests/bug30394.phpt index b69eda4fe..b69eda4fe 100755..100644 --- a/Zend/tests/bug30394.phpt +++ b/Zend/tests/bug30394.phpt diff --git a/Zend/tests/bug30519.phpt b/Zend/tests/bug30519.phpt index 7d70cba07..7d70cba07 100755..100644 --- a/Zend/tests/bug30519.phpt +++ b/Zend/tests/bug30519.phpt diff --git a/Zend/tests/bug30707.phpt b/Zend/tests/bug30707.phpt index d37d32974..d37d32974 100755..100644 --- a/Zend/tests/bug30707.phpt +++ b/Zend/tests/bug30707.phpt diff --git a/Zend/tests/bug30725.phpt b/Zend/tests/bug30725.phpt index ce6c9a50a..ce6c9a50a 100755..100644 --- a/Zend/tests/bug30725.phpt +++ b/Zend/tests/bug30725.phpt diff --git a/Zend/tests/bug30791.phpt b/Zend/tests/bug30791.phpt index e9991f3ad..e9991f3ad 100755..100644 --- a/Zend/tests/bug30791.phpt +++ b/Zend/tests/bug30791.phpt diff --git a/Zend/tests/bug30820.phpt b/Zend/tests/bug30820.phpt index 97e46e928..97e46e928 100755..100644 --- a/Zend/tests/bug30820.phpt +++ b/Zend/tests/bug30820.phpt diff --git a/Zend/tests/bug30828.phpt b/Zend/tests/bug30828.phpt index d05dbb606..d05dbb606 100755..100644 --- a/Zend/tests/bug30828.phpt +++ b/Zend/tests/bug30828.phpt diff --git a/Zend/tests/bug30998.phpt b/Zend/tests/bug30998.phpt index d0ace9fa1..d0ace9fa1 100755..100644 --- a/Zend/tests/bug30998.phpt +++ b/Zend/tests/bug30998.phpt diff --git a/Zend/tests/bug31102.phpt b/Zend/tests/bug31102.phpt index b7911bea5..b7911bea5 100755..100644 --- a/Zend/tests/bug31102.phpt +++ b/Zend/tests/bug31102.phpt diff --git a/Zend/tests/bug31177-2.phpt b/Zend/tests/bug31177-2.phpt index 10083c59e..10083c59e 100755..100644 --- a/Zend/tests/bug31177-2.phpt +++ b/Zend/tests/bug31177-2.phpt diff --git a/Zend/tests/bug31177.phpt b/Zend/tests/bug31177.phpt index 5e8457362..5e8457362 100755..100644 --- a/Zend/tests/bug31177.phpt +++ b/Zend/tests/bug31177.phpt diff --git a/Zend/tests/bug31341.phpt b/Zend/tests/bug31341.phpt index 309a54d76..309a54d76 100755..100644 --- a/Zend/tests/bug31341.phpt +++ b/Zend/tests/bug31341.phpt diff --git a/Zend/tests/bug31525.phpt b/Zend/tests/bug31525.phpt index b1a01b61e..b1a01b61e 100755..100644 --- a/Zend/tests/bug31525.phpt +++ b/Zend/tests/bug31525.phpt diff --git a/Zend/tests/bug32226.phpt b/Zend/tests/bug32226.phpt index 9536c921a..9536c921a 100755..100644 --- a/Zend/tests/bug32226.phpt +++ b/Zend/tests/bug32226.phpt diff --git a/Zend/tests/bug32252.phpt b/Zend/tests/bug32252.phpt index 706da18cf..706da18cf 100755..100644 --- a/Zend/tests/bug32252.phpt +++ b/Zend/tests/bug32252.phpt diff --git a/Zend/tests/bug32290.phpt b/Zend/tests/bug32290.phpt index 89da67b19..89da67b19 100755..100644 --- a/Zend/tests/bug32290.phpt +++ b/Zend/tests/bug32290.phpt diff --git a/Zend/tests/bug32296.phpt b/Zend/tests/bug32296.phpt index b3e705ec1..b3e705ec1 100755..100644 --- a/Zend/tests/bug32296.phpt +++ b/Zend/tests/bug32296.phpt diff --git a/Zend/tests/bug32322.phpt b/Zend/tests/bug32322.phpt index f69c5259e..f69c5259e 100755..100644 --- a/Zend/tests/bug32322.phpt +++ b/Zend/tests/bug32322.phpt diff --git a/Zend/tests/bug32428.phpt b/Zend/tests/bug32428.phpt index 0b5ca6aeb..0b5ca6aeb 100755..100644 --- a/Zend/tests/bug32428.phpt +++ b/Zend/tests/bug32428.phpt diff --git a/Zend/tests/bug32596.phpt b/Zend/tests/bug32596.phpt index 2dd0cfe9f..2dd0cfe9f 100755..100644 --- a/Zend/tests/bug32596.phpt +++ b/Zend/tests/bug32596.phpt diff --git a/Zend/tests/bug32660.phpt b/Zend/tests/bug32660.phpt index 3a307189a..3a307189a 100755..100644 --- a/Zend/tests/bug32660.phpt +++ b/Zend/tests/bug32660.phpt diff --git a/Zend/tests/bug32799.phpt b/Zend/tests/bug32799.phpt index c76daedde..c76daedde 100755..100644 --- a/Zend/tests/bug32799.phpt +++ b/Zend/tests/bug32799.phpt diff --git a/Zend/tests/bug32993.phpt b/Zend/tests/bug32993.phpt index 88fb0230b..88fb0230b 100755..100644 --- a/Zend/tests/bug32993.phpt +++ b/Zend/tests/bug32993.phpt diff --git a/Zend/tests/bug33116.phpt b/Zend/tests/bug33116.phpt index aa714a1f8..aa714a1f8 100755..100644 --- a/Zend/tests/bug33116.phpt +++ b/Zend/tests/bug33116.phpt diff --git a/Zend/tests/bug33171.phpt b/Zend/tests/bug33171.phpt index 27f5264ba..27f5264ba 100755..100644 --- a/Zend/tests/bug33171.phpt +++ b/Zend/tests/bug33171.phpt diff --git a/Zend/tests/bug33257.phpt b/Zend/tests/bug33257.phpt index c17ddfd17..c17ddfd17 100755..100644 --- a/Zend/tests/bug33257.phpt +++ b/Zend/tests/bug33257.phpt diff --git a/Zend/tests/bug33318.phpt b/Zend/tests/bug33318.phpt index dc1afbb15..dc1afbb15 100755..100644 --- a/Zend/tests/bug33318.phpt +++ b/Zend/tests/bug33318.phpt diff --git a/Zend/tests/bug33512.phpt b/Zend/tests/bug33512.phpt index 9dd4e4e5f..9dd4e4e5f 100755..100644 --- a/Zend/tests/bug33512.phpt +++ b/Zend/tests/bug33512.phpt diff --git a/Zend/tests/bug33558.phpt b/Zend/tests/bug33558.phpt index 9c87fc601..9c87fc601 100755..100644 --- a/Zend/tests/bug33558.phpt +++ b/Zend/tests/bug33558.phpt diff --git a/Zend/tests/bug33710.phpt b/Zend/tests/bug33710.phpt index 330bb584a..330bb584a 100755..100644 --- a/Zend/tests/bug33710.phpt +++ b/Zend/tests/bug33710.phpt diff --git a/Zend/tests/bug33732.phpt b/Zend/tests/bug33732.phpt index 4969791fa..4969791fa 100755..100644 --- a/Zend/tests/bug33732.phpt +++ b/Zend/tests/bug33732.phpt diff --git a/Zend/tests/bug33802.phpt b/Zend/tests/bug33802.phpt index d2f8cd736..d2f8cd736 100755..100644 --- a/Zend/tests/bug33802.phpt +++ b/Zend/tests/bug33802.phpt diff --git a/Zend/tests/bug33996.phpt b/Zend/tests/bug33996.phpt index e722eceaf..e722eceaf 100755..100644 --- a/Zend/tests/bug33996.phpt +++ b/Zend/tests/bug33996.phpt diff --git a/Zend/tests/bug33999.phpt b/Zend/tests/bug33999.phpt index 194628071..194628071 100755..100644 --- a/Zend/tests/bug33999.phpt +++ b/Zend/tests/bug33999.phpt diff --git a/Zend/tests/bug34045.phpt b/Zend/tests/bug34045.phpt index 61886cf35..61886cf35 100755..100644 --- a/Zend/tests/bug34045.phpt +++ b/Zend/tests/bug34045.phpt diff --git a/Zend/tests/bug34062.phpt b/Zend/tests/bug34062.phpt index bcb4ad8c6..bcb4ad8c6 100755..100644 --- a/Zend/tests/bug34062.phpt +++ b/Zend/tests/bug34062.phpt diff --git a/Zend/tests/bug34064.phpt b/Zend/tests/bug34064.phpt index 84208a54f..84208a54f 100755..100644 --- a/Zend/tests/bug34064.phpt +++ b/Zend/tests/bug34064.phpt diff --git a/Zend/tests/bug34065.phpt b/Zend/tests/bug34065.phpt index 9d76fca64..9d76fca64 100755..100644 --- a/Zend/tests/bug34065.phpt +++ b/Zend/tests/bug34065.phpt diff --git a/Zend/tests/bug34137.phpt b/Zend/tests/bug34137.phpt index 585633333..585633333 100755..100644 --- a/Zend/tests/bug34137.phpt +++ b/Zend/tests/bug34137.phpt diff --git a/Zend/tests/bug34199.phpt b/Zend/tests/bug34199.phpt index 3012d808f..3012d808f 100755..100644 --- a/Zend/tests/bug34199.phpt +++ b/Zend/tests/bug34199.phpt diff --git a/Zend/tests/bug34260.phpt b/Zend/tests/bug34260.phpt index fa393d065..fa393d065 100755..100644 --- a/Zend/tests/bug34260.phpt +++ b/Zend/tests/bug34260.phpt diff --git a/Zend/tests/bug34358.phpt b/Zend/tests/bug34358.phpt index b9c6565f5..b9c6565f5 100755..100644 --- a/Zend/tests/bug34358.phpt +++ b/Zend/tests/bug34358.phpt diff --git a/Zend/tests/bug34467.phpt b/Zend/tests/bug34467.phpt index 5f0ccafc4..5f0ccafc4 100755..100644 --- a/Zend/tests/bug34467.phpt +++ b/Zend/tests/bug34467.phpt diff --git a/Zend/tests/bug34518.phpt b/Zend/tests/bug34518.phpt index b94fdf498..b94fdf498 100755..100644 --- a/Zend/tests/bug34518.phpt +++ b/Zend/tests/bug34518.phpt diff --git a/Zend/tests/bug34617.phpt b/Zend/tests/bug34617.phpt index 25f785f90..25f785f90 100755..100644 --- a/Zend/tests/bug34617.phpt +++ b/Zend/tests/bug34617.phpt diff --git a/Zend/tests/bug34678.phpt b/Zend/tests/bug34678.phpt index 2a13201f2..2a13201f2 100755..100644 --- a/Zend/tests/bug34678.phpt +++ b/Zend/tests/bug34678.phpt diff --git a/Zend/tests/bug34786.phpt b/Zend/tests/bug34786.phpt index 18642848d..18642848d 100755..100644 --- a/Zend/tests/bug34786.phpt +++ b/Zend/tests/bug34786.phpt diff --git a/Zend/tests/bug34879.phpt b/Zend/tests/bug34879.phpt index 606142bde..606142bde 100755..100644 --- a/Zend/tests/bug34879.phpt +++ b/Zend/tests/bug34879.phpt diff --git a/Zend/tests/bug34893.phpt b/Zend/tests/bug34893.phpt index bbe02358e..bbe02358e 100755..100644 --- a/Zend/tests/bug34893.phpt +++ b/Zend/tests/bug34893.phpt diff --git a/Zend/tests/bug35017.phpt b/Zend/tests/bug35017.phpt index 0a89d23aa..0a89d23aa 100755..100644 --- a/Zend/tests/bug35017.phpt +++ b/Zend/tests/bug35017.phpt diff --git a/Zend/tests/bug35106.phpt b/Zend/tests/bug35106.phpt index 61a66d014..61a66d014 100755..100644 --- a/Zend/tests/bug35106.phpt +++ b/Zend/tests/bug35106.phpt diff --git a/Zend/tests/bug35163.phpt b/Zend/tests/bug35163.phpt index 6a10d244b..6a10d244b 100755..100644 --- a/Zend/tests/bug35163.phpt +++ b/Zend/tests/bug35163.phpt diff --git a/Zend/tests/bug35163_2.phpt b/Zend/tests/bug35163_2.phpt index 01387204c..01387204c 100755..100644 --- a/Zend/tests/bug35163_2.phpt +++ b/Zend/tests/bug35163_2.phpt diff --git a/Zend/tests/bug35163_3.phpt b/Zend/tests/bug35163_3.phpt index 6c6a57f25..6c6a57f25 100755..100644 --- a/Zend/tests/bug35163_3.phpt +++ b/Zend/tests/bug35163_3.phpt diff --git a/Zend/tests/bug35239.phpt b/Zend/tests/bug35239.phpt index 869971e2a..869971e2a 100755..100644 --- a/Zend/tests/bug35239.phpt +++ b/Zend/tests/bug35239.phpt diff --git a/Zend/tests/bug35393.phpt b/Zend/tests/bug35393.phpt index ce3bdd001..ce3bdd001 100755..100644 --- a/Zend/tests/bug35393.phpt +++ b/Zend/tests/bug35393.phpt diff --git a/Zend/tests/bug35411.phpt b/Zend/tests/bug35411.phpt index 90957aa57..90957aa57 100755..100644 --- a/Zend/tests/bug35411.phpt +++ b/Zend/tests/bug35411.phpt diff --git a/Zend/tests/bug35437.phpt b/Zend/tests/bug35437.phpt index 73222a9f2..73222a9f2 100755..100644 --- a/Zend/tests/bug35437.phpt +++ b/Zend/tests/bug35437.phpt diff --git a/Zend/tests/bug35470.phpt b/Zend/tests/bug35470.phpt index 5a854552b..5a854552b 100755..100644 --- a/Zend/tests/bug35470.phpt +++ b/Zend/tests/bug35470.phpt diff --git a/Zend/tests/bug35509.phpt b/Zend/tests/bug35509.phpt index 6cb54c03e..6cb54c03e 100755..100644 --- a/Zend/tests/bug35509.phpt +++ b/Zend/tests/bug35509.phpt diff --git a/Zend/tests/bug35634.phpt b/Zend/tests/bug35634.phpt index 1437017a3..1437017a3 100755..100644 --- a/Zend/tests/bug35634.phpt +++ b/Zend/tests/bug35634.phpt diff --git a/Zend/tests/bug35655.phpt b/Zend/tests/bug35655.phpt index bbb137799..bbb137799 100755..100644 --- a/Zend/tests/bug35655.phpt +++ b/Zend/tests/bug35655.phpt diff --git a/Zend/tests/bug36006.phpt b/Zend/tests/bug36006.phpt index 79f9897d1..79f9897d1 100755..100644 --- a/Zend/tests/bug36006.phpt +++ b/Zend/tests/bug36006.phpt diff --git a/Zend/tests/bug36037.phpt b/Zend/tests/bug36037.phpt index 3ccebf652..3ccebf652 100755..100644 --- a/Zend/tests/bug36037.phpt +++ b/Zend/tests/bug36037.phpt diff --git a/Zend/tests/bug36071.phpt b/Zend/tests/bug36071.phpt index e5146091e..e5146091e 100755..100644 --- a/Zend/tests/bug36071.phpt +++ b/Zend/tests/bug36071.phpt diff --git a/Zend/tests/bug36214.phpt b/Zend/tests/bug36214.phpt index 630773713..630773713 100755..100644 --- a/Zend/tests/bug36214.phpt +++ b/Zend/tests/bug36214.phpt diff --git a/Zend/tests/bug36268.phpt b/Zend/tests/bug36268.phpt index 5276d50d4..5276d50d4 100755..100644 --- a/Zend/tests/bug36268.phpt +++ b/Zend/tests/bug36268.phpt diff --git a/Zend/tests/bug36303.phpt b/Zend/tests/bug36303.phpt index 0f9232383..0f9232383 100755..100644 --- a/Zend/tests/bug36303.phpt +++ b/Zend/tests/bug36303.phpt diff --git a/Zend/tests/bug36513.phpt b/Zend/tests/bug36513.phpt index f46da4efc..f46da4efc 100755..100644 --- a/Zend/tests/bug36513.phpt +++ b/Zend/tests/bug36513.phpt diff --git a/Zend/tests/bug36568.phpt b/Zend/tests/bug36568.phpt index d621491a4..d621491a4 100755..100644 --- a/Zend/tests/bug36568.phpt +++ b/Zend/tests/bug36568.phpt diff --git a/Zend/tests/bug36759.phpt b/Zend/tests/bug36759.phpt index 8aa9977a0..8aa9977a0 100755..100644 --- a/Zend/tests/bug36759.phpt +++ b/Zend/tests/bug36759.phpt diff --git a/Zend/tests/bug37046.phpt b/Zend/tests/bug37046.phpt index 09b8f0cb5..09b8f0cb5 100755..100644 --- a/Zend/tests/bug37046.phpt +++ b/Zend/tests/bug37046.phpt diff --git a/Zend/tests/bug37138.phpt b/Zend/tests/bug37138.phpt index f8503f8da..f8503f8da 100755..100644 --- a/Zend/tests/bug37138.phpt +++ b/Zend/tests/bug37138.phpt diff --git a/Zend/tests/bug37144.phpt b/Zend/tests/bug37144.phpt index b3e548946..b3e548946 100755..100644 --- a/Zend/tests/bug37144.phpt +++ b/Zend/tests/bug37144.phpt diff --git a/Zend/tests/bug37212.phpt b/Zend/tests/bug37212.phpt index 212ef23ec..212ef23ec 100755..100644 --- a/Zend/tests/bug37212.phpt +++ b/Zend/tests/bug37212.phpt diff --git a/Zend/tests/bug37632.phpt b/Zend/tests/bug37632.phpt index fb72f8934..fb72f8934 100755..100644 --- a/Zend/tests/bug37632.phpt +++ b/Zend/tests/bug37632.phpt diff --git a/Zend/tests/bug37667.phpt b/Zend/tests/bug37667.phpt index ecf43c5b8..ecf43c5b8 100755..100644 --- a/Zend/tests/bug37667.phpt +++ b/Zend/tests/bug37667.phpt diff --git a/Zend/tests/bug37707.phpt b/Zend/tests/bug37707.phpt index 196495852..196495852 100755..100644 --- a/Zend/tests/bug37707.phpt +++ b/Zend/tests/bug37707.phpt diff --git a/Zend/tests/bug37715.phpt b/Zend/tests/bug37715.phpt index a585c78e5..a585c78e5 100755..100644 --- a/Zend/tests/bug37715.phpt +++ b/Zend/tests/bug37715.phpt diff --git a/Zend/tests/bug37811.phpt b/Zend/tests/bug37811.phpt index 70c4c90ed..70c4c90ed 100755..100644 --- a/Zend/tests/bug37811.phpt +++ b/Zend/tests/bug37811.phpt diff --git a/Zend/tests/bug38047.phpt b/Zend/tests/bug38047.phpt index 00290ee54..00290ee54 100755..100644 --- a/Zend/tests/bug38047.phpt +++ b/Zend/tests/bug38047.phpt diff --git a/Zend/tests/bug38146.phpt b/Zend/tests/bug38146.phpt index e321e11c8..e321e11c8 100755..100644 --- a/Zend/tests/bug38146.phpt +++ b/Zend/tests/bug38146.phpt diff --git a/Zend/tests/bug38211.phpt b/Zend/tests/bug38211.phpt index 6ae9430e8..6ae9430e8 100755..100644 --- a/Zend/tests/bug38211.phpt +++ b/Zend/tests/bug38211.phpt diff --git a/Zend/tests/bug38220.phpt b/Zend/tests/bug38220.phpt index bee3ffc75..bee3ffc75 100755..100644 --- a/Zend/tests/bug38220.phpt +++ b/Zend/tests/bug38220.phpt diff --git a/Zend/tests/bug38234.phpt b/Zend/tests/bug38234.phpt index a81a3aadc..a81a3aadc 100755..100644 --- a/Zend/tests/bug38234.phpt +++ b/Zend/tests/bug38234.phpt diff --git a/Zend/tests/bug38287.phpt b/Zend/tests/bug38287.phpt index 9a53a9335..9a53a9335 100755..100644 --- a/Zend/tests/bug38287.phpt +++ b/Zend/tests/bug38287.phpt diff --git a/Zend/tests/bug38623.phpt b/Zend/tests/bug38623.phpt index 9b042a914..9b042a914 100755..100644 --- a/Zend/tests/bug38623.phpt +++ b/Zend/tests/bug38623.phpt diff --git a/Zend/tests/bug38772.phpt b/Zend/tests/bug38772.phpt index 0e97c291c..0e97c291c 100755..100644 --- a/Zend/tests/bug38772.phpt +++ b/Zend/tests/bug38772.phpt diff --git a/Zend/tests/bug38808.phpt b/Zend/tests/bug38808.phpt index 0fc4bfecd..0fc4bfecd 100755..100644 --- a/Zend/tests/bug38808.phpt +++ b/Zend/tests/bug38808.phpt diff --git a/Zend/tests/bug38942.phpt b/Zend/tests/bug38942.phpt index 85bb56d20..85bb56d20 100755..100644 --- a/Zend/tests/bug38942.phpt +++ b/Zend/tests/bug38942.phpt diff --git a/Zend/tests/bug39017.phpt b/Zend/tests/bug39017.phpt index 70204758d..70204758d 100755..100644 --- a/Zend/tests/bug39017.phpt +++ b/Zend/tests/bug39017.phpt diff --git a/Zend/tests/bug39297.phpt b/Zend/tests/bug39297.phpt index 92f91a555..92f91a555 100755..100644 --- a/Zend/tests/bug39297.phpt +++ b/Zend/tests/bug39297.phpt diff --git a/Zend/tests/bug39304.phpt b/Zend/tests/bug39304.phpt index 8303b8257..8303b8257 100755..100644 --- a/Zend/tests/bug39304.phpt +++ b/Zend/tests/bug39304.phpt diff --git a/Zend/tests/bug39438.phpt b/Zend/tests/bug39438.phpt index e1ed8e886..e1ed8e886 100755..100644 --- a/Zend/tests/bug39438.phpt +++ b/Zend/tests/bug39438.phpt diff --git a/Zend/tests/bug39445.phpt b/Zend/tests/bug39445.phpt index cf1607f2d..cf1607f2d 100755..100644 --- a/Zend/tests/bug39445.phpt +++ b/Zend/tests/bug39445.phpt diff --git a/Zend/tests/bug39449.phpt b/Zend/tests/bug39449.phpt index c725147ac..c725147ac 100755..100644 --- a/Zend/tests/bug39449.phpt +++ b/Zend/tests/bug39449.phpt diff --git a/Zend/tests/bug39542.phpt b/Zend/tests/bug39542.phpt index 13ddc0a91..13ddc0a91 100755..100644 --- a/Zend/tests/bug39542.phpt +++ b/Zend/tests/bug39542.phpt diff --git a/Zend/tests/bug39602.phpt b/Zend/tests/bug39602.phpt index db8763d8a..db8763d8a 100755..100644 --- a/Zend/tests/bug39602.phpt +++ b/Zend/tests/bug39602.phpt diff --git a/Zend/tests/bug39721.phpt b/Zend/tests/bug39721.phpt index 63edfc23e..63edfc23e 100755..100644 --- a/Zend/tests/bug39721.phpt +++ b/Zend/tests/bug39721.phpt diff --git a/Zend/tests/bug39775.phpt b/Zend/tests/bug39775.phpt index 4c6ce6baf..4c6ce6baf 100755..100644 --- a/Zend/tests/bug39775.phpt +++ b/Zend/tests/bug39775.phpt diff --git a/Zend/tests/bug39825.phpt b/Zend/tests/bug39825.phpt index 791b329f7..791b329f7 100755..100644 --- a/Zend/tests/bug39825.phpt +++ b/Zend/tests/bug39825.phpt diff --git a/Zend/tests/bug39944.phpt b/Zend/tests/bug39944.phpt index 4249988ff..4249988ff 100755..100644 --- a/Zend/tests/bug39944.phpt +++ b/Zend/tests/bug39944.phpt diff --git a/Zend/tests/bug39990.phpt b/Zend/tests/bug39990.phpt index d7545eeec..d7545eeec 100755..100644 --- a/Zend/tests/bug39990.phpt +++ b/Zend/tests/bug39990.phpt diff --git a/Zend/tests/bug40236.inc b/Zend/tests/bug40236.inc index fc03349f7..fc03349f7 100755..100644 --- a/Zend/tests/bug40236.inc +++ b/Zend/tests/bug40236.inc diff --git a/Zend/tests/bug40236.phpt b/Zend/tests/bug40236.phpt index f9a427724..f9a427724 100755..100644 --- a/Zend/tests/bug40236.phpt +++ b/Zend/tests/bug40236.phpt diff --git a/Zend/tests/bug40261.phpt b/Zend/tests/bug40261.phpt index b7e2c98c5..b7e2c98c5 100755..100644 --- a/Zend/tests/bug40261.phpt +++ b/Zend/tests/bug40261.phpt diff --git a/Zend/tests/bug40509.phpt b/Zend/tests/bug40509.phpt index 21eaae944..21eaae944 100755..100644 --- a/Zend/tests/bug40509.phpt +++ b/Zend/tests/bug40509.phpt diff --git a/Zend/tests/bug40705.phpt b/Zend/tests/bug40705.phpt index 374f73b75..374f73b75 100755..100644 --- a/Zend/tests/bug40705.phpt +++ b/Zend/tests/bug40705.phpt diff --git a/Zend/tests/bug40757.phpt b/Zend/tests/bug40757.phpt index b5c91c79c..b5c91c79c 100755..100644 --- a/Zend/tests/bug40757.phpt +++ b/Zend/tests/bug40757.phpt diff --git a/Zend/tests/bug40770.phpt b/Zend/tests/bug40770.phpt index c4c78c222..c4c78c222 100755..100644 --- a/Zend/tests/bug40770.phpt +++ b/Zend/tests/bug40770.phpt diff --git a/Zend/tests/bug40809.phpt b/Zend/tests/bug40809.phpt index 08fc89f55..08fc89f55 100755..100644 --- a/Zend/tests/bug40809.phpt +++ b/Zend/tests/bug40809.phpt diff --git a/Zend/tests/bug40833.phpt b/Zend/tests/bug40833.phpt index c56ca4c3b..c56ca4c3b 100755..100644 --- a/Zend/tests/bug40833.phpt +++ b/Zend/tests/bug40833.phpt diff --git a/Zend/tests/bug41117_1.phpt b/Zend/tests/bug41117_1.phpt index f555b637a..f555b637a 100755..100644 --- a/Zend/tests/bug41117_1.phpt +++ b/Zend/tests/bug41117_1.phpt diff --git a/Zend/tests/bug41372.phpt b/Zend/tests/bug41372.phpt index 3446150f5..3446150f5 100755..100644 --- a/Zend/tests/bug41372.phpt +++ b/Zend/tests/bug41372.phpt diff --git a/Zend/tests/bug41401.phpt b/Zend/tests/bug41401.phpt index 50d2109ca..50d2109ca 100755..100644 --- a/Zend/tests/bug41401.phpt +++ b/Zend/tests/bug41401.phpt diff --git a/Zend/tests/bug41633_1.phpt b/Zend/tests/bug41633_1.phpt index 1c1d552dd..1c1d552dd 100755..100644 --- a/Zend/tests/bug41633_1.phpt +++ b/Zend/tests/bug41633_1.phpt diff --git a/Zend/tests/bug41633_2.phpt b/Zend/tests/bug41633_2.phpt index 3deb4516a..3deb4516a 100755..100644 --- a/Zend/tests/bug41633_2.phpt +++ b/Zend/tests/bug41633_2.phpt diff --git a/Zend/tests/bug41633_3.phpt b/Zend/tests/bug41633_3.phpt index 7b9452db8..7b9452db8 100755..100644 --- a/Zend/tests/bug41633_3.phpt +++ b/Zend/tests/bug41633_3.phpt diff --git a/Zend/tests/bug41633_4.phpt b/Zend/tests/bug41633_4.phpt index 3507f6a08..3507f6a08 100755..100644 --- a/Zend/tests/bug41633_4.phpt +++ b/Zend/tests/bug41633_4.phpt diff --git a/Zend/tests/bug41929.phpt b/Zend/tests/bug41929.phpt index c332aba2d..c332aba2d 100755..100644 --- a/Zend/tests/bug41929.phpt +++ b/Zend/tests/bug41929.phpt diff --git a/Zend/tests/bug41961.phpt b/Zend/tests/bug41961.phpt index 514265b60..514265b60 100755..100644 --- a/Zend/tests/bug41961.phpt +++ b/Zend/tests/bug41961.phpt diff --git a/Zend/tests/bug42772.phpt b/Zend/tests/bug42772.phpt index 8887bdbd7..8887bdbd7 100755..100644 --- a/Zend/tests/bug42772.phpt +++ b/Zend/tests/bug42772.phpt diff --git a/Zend/tests/bug42802.phpt b/Zend/tests/bug42802.phpt index 2aa7061f3..2aa7061f3 100755..100644 --- a/Zend/tests/bug42802.phpt +++ b/Zend/tests/bug42802.phpt diff --git a/Zend/tests/bug42819.phpt b/Zend/tests/bug42819.phpt index e52660369..e52660369 100755..100644 --- a/Zend/tests/bug42819.phpt +++ b/Zend/tests/bug42819.phpt diff --git a/Zend/tests/bug42820.phpt b/Zend/tests/bug42820.phpt index 921f0090a..921f0090a 100755..100644 --- a/Zend/tests/bug42820.phpt +++ b/Zend/tests/bug42820.phpt diff --git a/Zend/tests/bug42859.phpt b/Zend/tests/bug42859.phpt index 755f41f8d..755f41f8d 100755..100644 --- a/Zend/tests/bug42859.phpt +++ b/Zend/tests/bug42859.phpt diff --git a/Zend/tests/bug42937.phpt b/Zend/tests/bug42937.phpt index 537c56792..537c56792 100755..100644 --- a/Zend/tests/bug42937.phpt +++ b/Zend/tests/bug42937.phpt diff --git a/Zend/tests/bug43027.phpt b/Zend/tests/bug43027.phpt index adecf3e39..adecf3e39 100755..100644 --- a/Zend/tests/bug43027.phpt +++ b/Zend/tests/bug43027.phpt diff --git a/Zend/tests/bug43128.phpt b/Zend/tests/bug43128.phpt index 629f46c59..629f46c59 100755..100644 --- a/Zend/tests/bug43128.phpt +++ b/Zend/tests/bug43128.phpt diff --git a/Zend/tests/bug43175.phpt b/Zend/tests/bug43175.phpt index 3bf6befc1..3bf6befc1 100755..100644 --- a/Zend/tests/bug43175.phpt +++ b/Zend/tests/bug43175.phpt diff --git a/Zend/tests/bug43183.phpt b/Zend/tests/bug43183.phpt index a8ca698e9..a8ca698e9 100755..100644 --- a/Zend/tests/bug43183.phpt +++ b/Zend/tests/bug43183.phpt diff --git a/Zend/tests/bug43201.phpt b/Zend/tests/bug43201.phpt index 89e1b6672..89e1b6672 100755..100644 --- a/Zend/tests/bug43201.phpt +++ b/Zend/tests/bug43201.phpt diff --git a/Zend/tests/bug44660.phpt b/Zend/tests/bug44660.phpt index 1027377d3..1027377d3 100755..100644 --- a/Zend/tests/bug44660.phpt +++ b/Zend/tests/bug44660.phpt diff --git a/Zend/tests/bug45178.phpt b/Zend/tests/bug45178.phpt index 5ce185994..5ce185994 100755..100644 --- a/Zend/tests/bug45178.phpt +++ b/Zend/tests/bug45178.phpt diff --git a/Zend/tests/bug45805.phpt b/Zend/tests/bug45805.phpt index 986187ee6..986187ee6 100755..100644 --- a/Zend/tests/bug45805.phpt +++ b/Zend/tests/bug45805.phpt diff --git a/Zend/tests/bug46304.phpt b/Zend/tests/bug46304.phpt index 0a6e3bffc..0a6e3bffc 100755..100644 --- a/Zend/tests/bug46304.phpt +++ b/Zend/tests/bug46304.phpt diff --git a/Zend/tests/bug60169.phpt b/Zend/tests/bug60169.phpt index f97574191..f97574191 100755..100644 --- a/Zend/tests/bug60169.phpt +++ b/Zend/tests/bug60169.phpt diff --git a/Zend/tests/bug60573.phpt b/Zend/tests/bug60573.phpt index d41a5f3ec..d41a5f3ec 100755..100644 --- a/Zend/tests/bug60573.phpt +++ b/Zend/tests/bug60573.phpt diff --git a/Zend/tests/bug60738.phpt b/Zend/tests/bug60738.phpt new file mode 100644 index 000000000..e4080715e --- /dev/null +++ b/Zend/tests/bug60738.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #60738 Allow 'set_error_handler' to handle NULL +--FILE-- +<?php + +var_dump(set_error_handler( + function() { echo 'Intercepted error!', "\n"; } +)); + +trigger_error('Error!'); + +var_dump(set_error_handler(null)); + +trigger_error('Error!'); +?> +--EXPECTF-- +NULL +Intercepted error! +object(Closure)#1 (0) { +} + +Notice: Error! in %s on line %d diff --git a/Zend/tests/bug60738_variation.phpt b/Zend/tests/bug60738_variation.phpt new file mode 100644 index 000000000..d7cf00ecd --- /dev/null +++ b/Zend/tests/bug60738_variation.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #60738 Allow 'set_error_handler' to handle NULL +--FILE-- +<?php + +var_dump(set_exception_handler( + function() { echo 'Intercepted exception!', "\n"; } +)); + +var_dump(set_exception_handler(null)); + +throw new Exception('Exception!'); +?> +--EXPECTF-- +NULL +object(Closure)#1 (0) { +} + +Fatal error: Uncaught exception 'Exception' with message 'Exception!' in %s:%d +Stack trace: +#0 {main} + thrown in %s on line %d + diff --git a/Zend/tests/bug60978.phpt b/Zend/tests/bug60978.phpt index 5dc6fe31e..5dc6fe31e 100755..100644 --- a/Zend/tests/bug60978.phpt +++ b/Zend/tests/bug60978.phpt diff --git a/Zend/tests/bug61681.phpt b/Zend/tests/bug61681.phpt new file mode 100644 index 000000000..acc027539 --- /dev/null +++ b/Zend/tests/bug61681.phpt @@ -0,0 +1,11 @@ +--TEST-- +Bug #61681: Malformed grammar +--FILE-- +<?php +$la = "ooxx"; + +echo "${substr('laruence', 0, 2)}"; + +?> +--EXPECT-- +ooxx diff --git a/Zend/tests/bug61761.phpt b/Zend/tests/bug61761.phpt index 24c69ae79..24c69ae79 100755..100644 --- a/Zend/tests/bug61761.phpt +++ b/Zend/tests/bug61761.phpt diff --git a/Zend/tests/bug62991.phpt b/Zend/tests/bug62991.phpt new file mode 100644 index 000000000..cb4ff9335 --- /dev/null +++ b/Zend/tests/bug62991.phpt @@ -0,0 +1,50 @@ +--TEST-- +Bug #62991 (Segfault with generator and closure) +--FILE-- +<?php + +function test( array $array ) +{ + $closure = function() use ( $array ) { + print_r( $array ); + yield "hi"; + }; + return $closure(); +} + +function test2( array $array ) +{ + $closure = function() use ( $array ) { + print_r( $array ); + yield "hi"; + }; + return $closure; // if you return the $closure and call it outside this function it works. +} + +$generator = test(array( 1, 2, 3 ) ); +foreach($generator as $something) { +} + +$generator = test2(array( 1, 2, 3 ) ); +foreach($generator() as $something) { +} + + +$generator = test2(array( 1, 2, 3 ) ); + +echo "okey\n"; +?> +--EXPECT-- +Array +( + [0] => 1 + [1] => 2 + [2] => 3 +) +Array +( + [0] => 1 + [1] => 2 + [2] => 3 +) +okey diff --git a/Zend/tests/bug63055.phpt b/Zend/tests/bug63055.phpt new file mode 100644 index 000000000..711385a3c --- /dev/null +++ b/Zend/tests/bug63055.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #63055 (Segfault in zend_gc with SF2 testsuite) +--FILE-- +<?php +/* the default gc root size is 10,000 */ +for ($i=0; $i<9998; $i++) { + $array = array(); + $array[0] = &$array; + unset($array); +} + +$matches = array("foo" => "bar"); /* this bucket will trigger the segfault */ +$dummy = array("dummy"); /* used to trigger gc_collect_cycles */ +$dummy[1] = &$dummy; + +$matches[1] = &$matches; +$matches[2] = $dummy; + +str_replace("foo", "bar", "foobar", $matches); +echo "okey"; +?> +--EXPECTF-- +okey diff --git a/Zend/tests/bug63219.phpt b/Zend/tests/bug63219.phpt new file mode 100644 index 000000000..999be4a85 --- /dev/null +++ b/Zend/tests/bug63219.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #63219 (Segfault when aliasing trait method when autoloader throws excpetion) +--FILE-- +<?php +trait TFoo { + public function fooMethod(){} +} + +class C { + use TFoo { + Typo::fooMethod as tf; + } +} + +echo "okey"; +?> +--EXPECTF-- +Fatal error: Could not find trait Typo in %sbug63219.php on line %d diff --git a/Zend/tests/bug63305.phpt b/Zend/tests/bug63305.phpt new file mode 100644 index 000000000..4bd3a4dbe --- /dev/null +++ b/Zend/tests/bug63305.phpt @@ -0,0 +1,43 @@ +--TEST-- +Bug #63305 (zend_mm_heap corrupted with traits) +--FILE-- +<?php +new Attachment(""); + +function __autoload($class) { + switch ($class) { + case "Attachment": + eval(<<<'PHP' +class Attachment extends File { +} +PHP + ); + break; + case "File": + eval(<<<'PHP' +class File { + use TDatabaseObject { + TDatabaseObject::__construct as private databaseObjectConstruct; + } + public function __construct() { + } +} +PHP + ); + break; + case "TDatabaseObject": + eval(<<<'PHP' +trait TDatabaseObject { + public function __construct() { + } +} +PHP + ); + break; + } + return TRUE; +} +echo "okey"; +?> +--EXPECT-- +okey diff --git a/Zend/tests/bug63336.phpt b/Zend/tests/bug63336.phpt new file mode 100644 index 000000000..d2c3d4113 --- /dev/null +++ b/Zend/tests/bug63336.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #63336 (invalid E_NOTICE error occur) +--XFAIL-- +Bug is not fixed yet +--FILE-- +<?php +error_reporting(E_ALL | E_NOTICE ); +define("TEST", "123"); +class Base { + const DUMMY = "XXX"; + public function foo($var=TEST, $more=null) { return true; } + public function bar($more=self::DUMMY) { return true; } +} + +class Child extends Base { + const DUMMY = "DDD"; + public function foo($var=TEST, array $more = array()) { return true; } + public function bar($var, $more=self::DUMMY) { return true; } +} +?> +--EXPECT-- +Strict Standards: Declaration of Child::foo() should be compatible with Base::foo($var = '123', $more = NULL) in %sbug63336.php on line %d + +Strict Standards: Declaration of Child::bar() should be compatible with Base::bar($var, $more = 'XXX') in %sbug63336.php on line %d diff --git a/Zend/tests/bug_debug_backtrace.phpt b/Zend/tests/bug_debug_backtrace.phpt index 3e4a0ec94..3e4a0ec94 100755..100644 --- a/Zend/tests/bug_debug_backtrace.phpt +++ b/Zend/tests/bug_debug_backtrace.phpt diff --git a/Zend/tests/call_static.phpt b/Zend/tests/call_static.phpt index c37bc7223..c37bc7223 100755..100644 --- a/Zend/tests/call_static.phpt +++ b/Zend/tests/call_static.phpt diff --git a/Zend/tests/catch.phpt b/Zend/tests/catch.phpt index 0ec5cf759..0ec5cf759 100755..100644 --- a/Zend/tests/catch.phpt +++ b/Zend/tests/catch.phpt diff --git a/Zend/tests/catch_002.phpt b/Zend/tests/catch_002.phpt index 11d736abe..11d736abe 100755..100644 --- a/Zend/tests/catch_002.phpt +++ b/Zend/tests/catch_002.phpt diff --git a/Zend/tests/catch_003.phpt b/Zend/tests/catch_003.phpt index 414d50f81..414d50f81 100755..100644 --- a/Zend/tests/catch_003.phpt +++ b/Zend/tests/catch_003.phpt diff --git a/Zend/tests/catch_004.phpt b/Zend/tests/catch_004.phpt index 54920b894..54920b894 100755..100644 --- a/Zend/tests/catch_004.phpt +++ b/Zend/tests/catch_004.phpt diff --git a/Zend/tests/catch_finally_001.phpt b/Zend/tests/catch_finally_001.phpt new file mode 100644 index 000000000..0c3f597a0 --- /dev/null +++ b/Zend/tests/catch_finally_001.phpt @@ -0,0 +1,32 @@ +--TEST-- +Try catch finally (basic test) +--FILE-- +<?php +function foo ($throw = FALSE) { + try { + echo "try\n"; + if ($throw) { + throw new Exception("ex"); + } + } catch (Exception $e) { + echo "catch\n"; + } finally { + echo "finally\n"; + } + + echo "end\n"; +} + +foo(); +echo "\n"; +foo(true); +?> +--EXPECTF-- +try +finally +end + +try +catch +finally +end diff --git a/Zend/tests/catch_finally_002.phpt b/Zend/tests/catch_finally_002.phpt new file mode 100644 index 000000000..c54477ff8 --- /dev/null +++ b/Zend/tests/catch_finally_002.phpt @@ -0,0 +1,21 @@ +--TEST-- +Try catch finally (basic test with return) +--FILE-- +<?php +function foo () { + try { + echo "try\n"; + return 1; + } catch (Exception $e) { + } finally { + echo "finally\n"; + } + return 2; +} + +var_dump(foo()); +?> +--EXPECTF-- +try +finally +int(1) diff --git a/Zend/tests/catch_finally_003.phpt b/Zend/tests/catch_finally_003.phpt new file mode 100644 index 000000000..24e468d33 --- /dev/null +++ b/Zend/tests/catch_finally_003.phpt @@ -0,0 +1,40 @@ +--TEST-- +Try catch finally (with multi-returns) +--FILE-- +<?php +function dummy($msg) { + var_dump($msg); +} + +function foo ($a) { + try { + dummy("try"); + return $a; + } catch (Exception $e) { + throw $e; + } finally { + dummy("finally"); + return "finally"; + } + return "end"; +} + +function &bar($a) { + try { + echo "try\n"; + throw new Exception("ex"); + } catch (Exception $e) { + } finally { + return $a; + } + return ($c = "end"); +} +var_dump(foo("para")); +var_dump(bar("para")); +?> +--EXPECTF-- +string(3) "try" +string(7) "finally" +string(7) "finally" +try +string(4) "para" diff --git a/Zend/tests/catch_finally_004.phpt b/Zend/tests/catch_finally_004.phpt new file mode 100644 index 000000000..a2c22beab --- /dev/null +++ b/Zend/tests/catch_finally_004.phpt @@ -0,0 +1,41 @@ +--TEST-- +Try catch finally (nesting try-catch-finally) +--FILE-- +<?php + +function throw_exception($msg) { + throw new Exception($msg); +} + +function foo (&$ex) { + try { + echo "1"; + try { + echo "2"; + throw_exception("try"); + } catch (Exception $e) { + echo "3"; + throw_exception("catch"); + } finally { + echo "4"; + throw_exception("finally"); + } + } catch (Exception $e) { + $ex = $e; + echo "3"; + } finally { + echo "2"; + } + return 1; +} + +var_dump(foo($ex)); + +do { + var_dump($ex->getMessage()); +} while ($ex = $ex->getPrevious()); +?> +--EXPECT-- +123432int(1) +string(7) "finally" +string(5) "catch" diff --git a/Zend/tests/catch_finally_005.phpt b/Zend/tests/catch_finally_005.phpt new file mode 100644 index 000000000..c2fd55df2 --- /dev/null +++ b/Zend/tests/catch_finally_005.phpt @@ -0,0 +1,21 @@ +--TEST-- +Try catch finally (with multi-returns and exception) +--FILE-- +<?php +function foo ($a) { + try { + throw new Exception("ex"); + } catch (PdoException $e) { + die("error"); + } catch (Exception $e) { + return 2; + } finally { + return 3; + } + return 1; +} + +var_dump(foo("para")); +?> +--EXPECTF-- +int(3) diff --git a/Zend/tests/catch_finally_006.phpt b/Zend/tests/catch_finally_006.phpt new file mode 100644 index 000000000..9759eab37 --- /dev/null +++ b/Zend/tests/catch_finally_006.phpt @@ -0,0 +1,28 @@ +--TEST-- +Try catch finally (re-throw exception in catch block) +--FILE-- +<?php +function foo ($a) { + try { + throw new Exception("ex"); + } catch (Exception $e) { + var_dump($a); + throw $e; + } finally { + var_dump("finally"); + return "return"; + } + return 1; +} + +try { + var_dump(foo("para")); +} catch (Exception $e) { + "caught exception" . PHP_EOL; + var_dump($e->getMessage()); +} +?> +--EXPECT-- +string(4) "para" +string(7) "finally" +string(2) "ex" diff --git a/Zend/tests/closure_016.phpt b/Zend/tests/closure_016.phpt index ae0036586..ae0036586 100755..100644 --- a/Zend/tests/closure_016.phpt +++ b/Zend/tests/closure_016.phpt diff --git a/Zend/tests/closure_022.phpt b/Zend/tests/closure_022.phpt index 8621d2c09..8621d2c09 100755..100644 --- a/Zend/tests/closure_022.phpt +++ b/Zend/tests/closure_022.phpt diff --git a/Zend/tests/closure_023.phpt b/Zend/tests/closure_023.phpt index 634fb6dd5..634fb6dd5 100755..100644 --- a/Zend/tests/closure_023.phpt +++ b/Zend/tests/closure_023.phpt diff --git a/Zend/tests/closure_033.phpt b/Zend/tests/closure_033.phpt index f6510066b..f6510066b 100755..100644 --- a/Zend/tests/closure_033.phpt +++ b/Zend/tests/closure_033.phpt diff --git a/Zend/tests/closure_036.phpt b/Zend/tests/closure_036.phpt index 77d7ce690..77d7ce690 100755..100644 --- a/Zend/tests/closure_036.phpt +++ b/Zend/tests/closure_036.phpt diff --git a/Zend/tests/closure_037.phpt b/Zend/tests/closure_037.phpt index 4b24c85d1..4b24c85d1 100755..100644 --- a/Zend/tests/closure_037.phpt +++ b/Zend/tests/closure_037.phpt diff --git a/Zend/tests/const_dereference_001.phpt b/Zend/tests/const_dereference_001.phpt new file mode 100644 index 000000000..5fe6e4d43 --- /dev/null +++ b/Zend/tests/const_dereference_001.phpt @@ -0,0 +1,21 @@ +--TEST-- +Const array deference +--FILE-- +<?php +error_reporting(E_ALL); + +var_dump(array(1, 2, 3, 4,) [3]); +var_dump(array(1, 2, 3, 4,) ['foo']); +var_dump(array(array(1,2,3), array(4, 5, 6))[1][2]); + +foreach (array(array(1, 2, 3))[0] as $var) { + echo $var; +} +?> +--EXPECTF-- +int(4) + +Notice: Undefined index: foo in %sconst_dereference_001.php on line %d +NULL +int(6) +123 diff --git a/Zend/tests/const_dereference_002.phpt b/Zend/tests/const_dereference_002.phpt new file mode 100644 index 000000000..ff8951975 --- /dev/null +++ b/Zend/tests/const_dereference_002.phpt @@ -0,0 +1,18 @@ +--TEST-- +Const string dereference +--FILE-- +<?php +error_reporting(E_ALL); + +var_dump("foobar"[3]); +var_dump("foobar"[2][0]); +var_dump("foobar"["foo"]["bar"]); + +--EXPECTF-- +string(1) "b" +string(1) "o" + +Warning: Illegal string offset 'foo' in %sconst_dereference_002.php on line %d + +Warning: Illegal string offset 'bar' in %sconst_dereference_002.php on line %d +string(1) "f" diff --git a/Zend/tests/const_dereference_003.phpt b/Zend/tests/const_dereference_003.phpt new file mode 100644 index 000000000..810ad14b8 --- /dev/null +++ b/Zend/tests/const_dereference_003.phpt @@ -0,0 +1,21 @@ +--TEST-- +Const array deference +--FILE-- +<?php +error_reporting(E_ALL); + +var_dump([1, 2, 3, 4,][3]); +var_dump([1, 2, 3, 4]['foo']); +var_dump([array(1,2,3), [4, 5, 6]][1][2]); + +foreach (array([1, 2, 3])[0] as $var) { + echo $var; +} +?> +--EXPECTF-- +int(4) + +Notice: Undefined index: foo in %sconst_dereference_003.php on line %d +NULL +int(6) +123 diff --git a/Zend/tests/constants/dir-constant-eval.phpt b/Zend/tests/constants/dir-constant-eval.phpt index 8fe619d56..8fe619d56 100755..100644 --- a/Zend/tests/constants/dir-constant-eval.phpt +++ b/Zend/tests/constants/dir-constant-eval.phpt diff --git a/Zend/tests/constants/dir-constant-includes.phpt b/Zend/tests/constants/dir-constant-includes.phpt index 8ea65292d..8ea65292d 100755..100644 --- a/Zend/tests/constants/dir-constant-includes.phpt +++ b/Zend/tests/constants/dir-constant-includes.phpt diff --git a/Zend/tests/constants/dir-constant-nested_includes.phpt b/Zend/tests/constants/dir-constant-nested_includes.phpt index 18bdfa891..18bdfa891 100755..100644 --- a/Zend/tests/constants/dir-constant-nested_includes.phpt +++ b/Zend/tests/constants/dir-constant-nested_includes.phpt diff --git a/Zend/tests/constants/dir-constant-normal.phpt b/Zend/tests/constants/dir-constant-normal.phpt index 1a573a205..1a573a205 100755..100644 --- a/Zend/tests/constants/dir-constant-normal.phpt +++ b/Zend/tests/constants/dir-constant-normal.phpt diff --git a/Zend/tests/constants_005.phpt b/Zend/tests/constants_005.phpt index d2a205b78..d2a205b78 100755..100644 --- a/Zend/tests/constants_005.phpt +++ b/Zend/tests/constants_005.phpt diff --git a/Zend/tests/dtor_scope.phpt b/Zend/tests/dtor_scope.phpt index ab991cf94..ab991cf94 100755..100644 --- a/Zend/tests/dtor_scope.phpt +++ b/Zend/tests/dtor_scope.phpt diff --git a/Zend/tests/empty_with_expr.phpt b/Zend/tests/empty_with_expr.phpt new file mode 100644 index 000000000..582eb3d2d --- /dev/null +++ b/Zend/tests/empty_with_expr.phpt @@ -0,0 +1,32 @@ +--TEST-- +empty() with arbitrary expressions +--FILE-- +<?php + +function getEmptyArray() { return []; } +function getNonEmptyArray() { return [1, 2, 3]; } + +var_dump(empty([])); +var_dump(empty([1, 2, 3])); + +var_dump(empty(getEmptyArray())); +var_dump(empty(getNonEmptyArray())); + +var_dump(empty([] + [])); +var_dump(empty([1, 2, 3] + [])); + +var_dump(empty("string")); +var_dump(empty("")); +var_dump(empty(true)); +var_dump(empty(false)); +--EXPECT-- +bool(true) +bool(false) +bool(true) +bool(false) +bool(true) +bool(false) +bool(false) +bool(true) +bool(false) +bool(true) diff --git a/Zend/tests/errmsg_043.phpt b/Zend/tests/errmsg_043.phpt deleted file mode 100644 index 3de8bc206..000000000 --- a/Zend/tests/errmsg_043.phpt +++ /dev/null @@ -1,12 +0,0 @@ ---TEST-- -errmsg: cannot create references to temp array ---FILE-- -<?php - -foreach (array(1,2,3) as $k=>&$v) { -} - -echo "Done\n"; -?> ---EXPECTF-- -Fatal error: Cannot create references to elements of a temporary array expression in %s on line %d diff --git a/Zend/tests/exception_007.phpt b/Zend/tests/exception_007.phpt index 953e76513..953e76513 100755..100644 --- a/Zend/tests/exception_007.phpt +++ b/Zend/tests/exception_007.phpt diff --git a/Zend/tests/exception_008.phpt b/Zend/tests/exception_008.phpt index 0d40541ee..0d40541ee 100755..100644 --- a/Zend/tests/exception_008.phpt +++ b/Zend/tests/exception_008.phpt diff --git a/Zend/tests/foreach_list_001.phpt b/Zend/tests/foreach_list_001.phpt new file mode 100644 index 000000000..a318f1aad --- /dev/null +++ b/Zend/tests/foreach_list_001.phpt @@ -0,0 +1,43 @@ +--TEST-- +foreach with list syntax +--FILE-- +<?php + +foreach(array(array(1,2), array(3,4)) as list($a, $b)) { + var_dump($a . $b); +} + +$array = array( + array('a', 'b'), + array('c', 'd'), +); + +foreach ($array as list($a, $b)) { + var_dump($a . $b); +} + + +$multi = array( + array(array(1,2), array(3,4)), + array(array(5,6), array(7,8)), +); + +foreach ($multi as list(list($a, $b), list($c, $d))) { + var_dump($a . $b . $c . $d); +} + +foreach ($multi as $key => list(list($a, $b), list($c, $d))) { + var_dump($key . $a . $b . $c . $d); +} + + +?> +--EXPECT-- +string(2) "12" +string(2) "34" +string(2) "ab" +string(2) "cd" +string(4) "1234" +string(4) "5678" +string(5) "01234" +string(5) "15678" diff --git a/Zend/tests/foreach_list_002.phpt b/Zend/tests/foreach_list_002.phpt new file mode 100644 index 000000000..251870ba0 --- /dev/null +++ b/Zend/tests/foreach_list_002.phpt @@ -0,0 +1,26 @@ +--TEST-- +foreach with freak lists +--FILE-- +<?php + +foreach (array(array(1,2), array(3,4)) as list($a, )) { + var_dump($a); +} + +$array = [['a', 'b'], 'c', 'd']; + +foreach($array as list(list(), $a)) { + var_dump($a); +} + +?> +--EXPECTF-- +int(1) +int(3) +string(1) "b" + +Notice: Uninitialized string offset: 1 in %sforeach_list_002.php on line %d +string(0) "" + +Notice: Uninitialized string offset: 1 in %sforeach_list_002.php on line %d +string(0) "" diff --git a/Zend/tests/foreach_list_003.phpt b/Zend/tests/foreach_list_003.phpt new file mode 100644 index 000000000..8674ecd75 --- /dev/null +++ b/Zend/tests/foreach_list_003.phpt @@ -0,0 +1,13 @@ +--TEST-- +foreach with list key +--FILE-- +<?php + +$array = [['a', 'b'], 'c', 'd']; + +foreach($array as list($key) => list(list(), $a)) { +} + +?> +--EXPECTF-- +Fatal error: Cannot use list as key element in %sforeach_list_003.php on line %d diff --git a/Zend/tests/foreach_list_004.phpt b/Zend/tests/foreach_list_004.phpt new file mode 100644 index 000000000..fd48e8a1f --- /dev/null +++ b/Zend/tests/foreach_list_004.phpt @@ -0,0 +1,13 @@ +--TEST-- +foreach with empty list +--FILE-- +<?php + +$array = [['a', 'b'], 'c', 'd']; + +foreach($array as $key => list()) { +} + +?> +--EXPECTF-- +Fatal error: Cannot use empty list in %sforeach_list_004.php on line %d diff --git a/Zend/tests/foreach_temp_array_expr_with_refs.phpt b/Zend/tests/foreach_temp_array_expr_with_refs.phpt new file mode 100644 index 000000000..8978b7b01 --- /dev/null +++ b/Zend/tests/foreach_temp_array_expr_with_refs.phpt @@ -0,0 +1,18 @@ +--TEST-- +Temporary array expressions can be iterated by reference +--FILE-- +<?php + +$a = 'a'; +$b = 'b'; + +foreach ([&$a, &$b] as &$value) { + $value .= '-foo'; +} + +var_dump($a, $b); + +?> +--EXPECT-- +string(5) "a-foo" +string(5) "b-foo" diff --git a/Zend/tests/generators/auto_incrementing_keys.phpt b/Zend/tests/generators/auto_incrementing_keys.phpt new file mode 100644 index 000000000..acfb2f2ce --- /dev/null +++ b/Zend/tests/generators/auto_incrementing_keys.phpt @@ -0,0 +1,22 @@ +--TEST-- +Generator keys are auto-incrementing by default +--FILE-- +<?php + +function gen() { + yield 'foo'; + yield 'bar'; + yield 5 => 'rab'; + yield 'oof'; +} + +foreach (gen() as $k => $v) { + echo $k, ' => ', $v, "\n"; +} + +?> +--EXPECT-- +0 => foo +1 => bar +5 => rab +6 => oof diff --git a/Zend/tests/generators/backtrace.phpt b/Zend/tests/generators/backtrace.phpt new file mode 100644 index 000000000..5fed1d467 --- /dev/null +++ b/Zend/tests/generators/backtrace.phpt @@ -0,0 +1,27 @@ +--TEST-- +Printing the stack trace in a generator +--FILE-- +<?php + +function f1() { + debug_print_backtrace(); +} + +function f2($arg1, $arg2) { + f1(); + yield; // force generator +} + +function f3($gen) { + $gen->rewind(); // trigger run +} + +$gen = f2('foo', 'bar'); +f3($gen); + +?> +--EXPECTF-- +#0 f1() called at [%s:%d] +#1 f2(foo, bar) +#2 Generator->rewind() called at [%s:%d] +#3 f3(Generator Object ()) called at [%s:%d] diff --git a/Zend/tests/generators/clone.phpt b/Zend/tests/generators/clone.phpt new file mode 100644 index 000000000..36811dfe6 --- /dev/null +++ b/Zend/tests/generators/clone.phpt @@ -0,0 +1,32 @@ +--TEST-- +Generators can be cloned +--FILE-- +<?php + +function firstN($end) { + for ($i = 0; $i < $end; ++$i) { + yield $i; + } +} + +$g1 = firstN(5); +var_dump($g1->current()); +$g1->next(); + +$g2 = clone $g1; +var_dump($g2->current()); +$g2->next(); + +var_dump($g2->current()); +var_dump($g1->current()); + +$g1->next(); +var_dump($g1->current()); + +?> +--EXPECT-- +int(0) +int(1) +int(2) +int(1) +int(2) diff --git a/Zend/tests/generators/clone_with_foreach.phpt b/Zend/tests/generators/clone_with_foreach.phpt new file mode 100644 index 000000000..b05ed0731 --- /dev/null +++ b/Zend/tests/generators/clone_with_foreach.phpt @@ -0,0 +1,33 @@ +--TEST-- +Cloning a generator with a foreach loop properly adds a ref for the loop var +--FILE-- +<?php + +function gen() { + foreach ([1, 2, 3] as $i) { + yield $i; + } +} + +$g1 = gen(); +var_dump($g1->current()); + +$g2 = clone $g1; +var_dump($g2->current()); + +$g1->next(); +$g2->next(); +var_dump($g1->current()); +var_dump($g2->current()); + +unset($g1); +$g2->next(); +var_dump($g2->current()); + +?> +--EXPECT-- +int(1) +int(1) +int(2) +int(2) +int(3) diff --git a/Zend/tests/generators/clone_with_stack.phpt b/Zend/tests/generators/clone_with_stack.phpt new file mode 100644 index 000000000..5a8e6d842 --- /dev/null +++ b/Zend/tests/generators/clone_with_stack.phpt @@ -0,0 +1,18 @@ +--TEST-- +A generator with an active stack can be cloned +--FILE-- +<?php + +function gen() { + var_dump(str_repeat("x", yield)); +} + +$g1 = gen(); +$g1->rewind(); +$g2 = clone $g1; +unset($g1); +$g2->send(10); + +?> +--EXPECT-- +string(10) "xxxxxxxxxx" diff --git a/Zend/tests/generators/clone_with_symbol_table.phpt b/Zend/tests/generators/clone_with_symbol_table.phpt new file mode 100644 index 000000000..e1fefebd8 --- /dev/null +++ b/Zend/tests/generators/clone_with_symbol_table.phpt @@ -0,0 +1,27 @@ +--TEST-- +A generator using a symbol table can be cloned +--FILE-- +<?php + +function gen() { + // force compiled variable for $foo + $foo = 'foo'; + + // force symbol table + extract(['foo' => 'bar']); + + // interrupt + yield; + + var_dump($foo); +} + +$g1 = gen(); +$g1->rewind(); +$g2 = clone $g1; +unset($g1); +$g2->next(); + +?> +--EXPECT-- +string(3) "bar" diff --git a/Zend/tests/generators/clone_with_this.phpt b/Zend/tests/generators/clone_with_this.phpt new file mode 100644 index 000000000..b242d851e --- /dev/null +++ b/Zend/tests/generators/clone_with_this.phpt @@ -0,0 +1,24 @@ +--TEST-- +Cloning a generator method (with $this) +--FILE-- +<?php + +class Test { + protected $foo; + + public function gen() { + $this->foo = 'bar'; + yield; // interrupt + var_dump($this->foo); + } +} + +$g1 = (new Test)->gen(); +$g1->rewind(); // goto yield +$g2 = clone $g1; +unset($g1); +$g2->next(); + +?> +--EXPECT-- +string(3) "bar" diff --git a/Zend/tests/generators/dynamic_call.phpt b/Zend/tests/generators/dynamic_call.phpt new file mode 100644 index 000000000..d56454095 --- /dev/null +++ b/Zend/tests/generators/dynamic_call.phpt @@ -0,0 +1,19 @@ +--TEST-- +It's possible to invoke a generator dynamically +--FILE-- +<?php + +function gen($foo, $bar) { + yield $foo; + yield $bar; +} + +$gen = call_user_func('gen', 'bar', 'foo'); +foreach ($gen as $value) { + var_dump($value); +} + +?> +--EXPECT-- +string(3) "bar" +string(3) "foo" diff --git a/Zend/tests/generators/errors/generator_cannot_return_before_yield_error.phpt b/Zend/tests/generators/errors/generator_cannot_return_before_yield_error.phpt new file mode 100644 index 000000000..ad618d20b --- /dev/null +++ b/Zend/tests/generators/errors/generator_cannot_return_before_yield_error.phpt @@ -0,0 +1,13 @@ +--TEST-- +Generators cannot return values (even before yield) +--FILE-- +<?php + +function gen() { + return $foo; + yield; +} + +?> +--EXPECTF-- +Fatal error: Generators cannot return values using "return" in %s on line 4 diff --git a/Zend/tests/generators/errors/generator_cannot_return_error.phpt b/Zend/tests/generators/errors/generator_cannot_return_error.phpt new file mode 100644 index 000000000..51149062a --- /dev/null +++ b/Zend/tests/generators/errors/generator_cannot_return_error.phpt @@ -0,0 +1,13 @@ +--TEST-- +Generators cannot return values +--FILE-- +<?php + +function gen() { + yield; + return $abc; +} + +?> +--EXPECTF-- +Fatal error: Generators cannot return values using "return" in %s on line 5 diff --git a/Zend/tests/generators/errors/generator_extend_error.phpt b/Zend/tests/generators/errors/generator_extend_error.phpt new file mode 100644 index 000000000..550f16ae0 --- /dev/null +++ b/Zend/tests/generators/errors/generator_extend_error.phpt @@ -0,0 +1,10 @@ +--TEST-- +The Generator class cannot be extended +--FILE-- +<?php + +class ExtendedGenerator extends Generator { } + +?> +--EXPECTF-- +Fatal error: Class ExtendedGenerator may not inherit from final class (Generator) in %s on line %d diff --git a/Zend/tests/generators/errors/generator_instantiate_error.phpt b/Zend/tests/generators/errors/generator_instantiate_error.phpt new file mode 100644 index 000000000..f8941c087 --- /dev/null +++ b/Zend/tests/generators/errors/generator_instantiate_error.phpt @@ -0,0 +1,10 @@ +--TEST-- +It's not possible to directly instantiate the Generator class +--FILE-- +<?php + +new Generator; + +?> +--EXPECTF-- +Catchable fatal error: The "Generator" class is reserved for internal use and cannot be manually instantiated in %s on line %d diff --git a/Zend/tests/generators/errors/non_ref_generator_iterated_by_ref_error.phpt b/Zend/tests/generators/errors/non_ref_generator_iterated_by_ref_error.phpt new file mode 100644 index 000000000..de5b22f6b --- /dev/null +++ b/Zend/tests/generators/errors/non_ref_generator_iterated_by_ref_error.phpt @@ -0,0 +1,18 @@ +--TEST-- +Non-ref generators cannot be iterated by-ref +--FILE-- +<?php + +function gen() { yield; } + +$gen = gen(); +foreach ($gen as &$value) { } + +?> +--EXPECTF-- +Fatal error: Uncaught exception 'Exception' with message 'You can only iterate a generator by-reference if it declared that it yields by-reference' in %s:%d +Stack trace: +#0 %s(%d): unknown() +#1 {main} + thrown in %s on line %d + diff --git a/Zend/tests/generators/errors/resume_running_generator_error.phpt b/Zend/tests/generators/errors/resume_running_generator_error.phpt new file mode 100644 index 000000000..567d72f3f --- /dev/null +++ b/Zend/tests/generators/errors/resume_running_generator_error.phpt @@ -0,0 +1,17 @@ +--TEST-- +It is not possible to resume an already running generator +--FILE-- +<?php + +function gen() { + $gen = yield; + $gen->next(); +} + +$gen = gen(); +$gen->send($gen); +$gen->next(); + +?> +--EXPECTF-- +Fatal error: Cannot resume an already running generator in %s on line %d diff --git a/Zend/tests/generators/errors/serialize_unserialize_error.phpt b/Zend/tests/generators/errors/serialize_unserialize_error.phpt new file mode 100644 index 000000000..a8470b0a6 --- /dev/null +++ b/Zend/tests/generators/errors/serialize_unserialize_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Generators can't be serialized or unserialized +--FILE-- +<?php + +function gen() { yield; } + +$gen = gen(); + +try { + serialize($gen); +} catch (Exception $e) { + echo $e, "\n\n"; +} + +try { + var_dump(unserialize('O:9:"Generator":0:{}')); +} catch (Exception $e) { + echo $e, "\n\n"; +} + +try { + var_dump(unserialize('C:9:"Generator":0:{}')); +} catch (Exception $e) { + echo $e; +} + +?> +--EXPECTF-- +exception 'Exception' with message 'Serialization of 'Generator' is not allowed' in %s:%d +Stack trace: +#0 %s(%d): serialize(Object(Generator)) +#1 {main} + +exception 'Exception' with message 'Unserialization of 'Generator' is not allowed' in %s:%d +Stack trace: +#0 [internal function]: Generator->__wakeup() +#1 %s(%d): unserialize('O:9:"Generator"...') +#2 {main} + + +Notice: unserialize(): Error at offset 19 of 20 bytes in %s on line %d +exception 'Exception' with message 'Unserialization of 'Generator' is not allowed' in %s:%d +Stack trace: +#0 %s(%d): unserialize('C:9:"Generator"...') +#1 {main} diff --git a/Zend/tests/generators/errors/yield_const_by_ref_error.phpt b/Zend/tests/generators/errors/yield_const_by_ref_error.phpt new file mode 100644 index 000000000..e79f83e24 --- /dev/null +++ b/Zend/tests/generators/errors/yield_const_by_ref_error.phpt @@ -0,0 +1,16 @@ +--TEST-- +A notice is thrown when yielding a constant value by reference +--FILE-- +<?php + +function &gen() { + yield "foo"; +} + +$gen = gen(); +var_dump($gen->current()); + +?> +--EXPECTF-- +Notice: Only variable references should be yielded by reference in %s on line %d +string(3) "foo" diff --git a/Zend/tests/generators/errors/yield_in_force_closed_finally_error.phpt b/Zend/tests/generators/errors/yield_in_force_closed_finally_error.phpt new file mode 100644 index 000000000..aada676a6 --- /dev/null +++ b/Zend/tests/generators/errors/yield_in_force_closed_finally_error.phpt @@ -0,0 +1,29 @@ +--TEST-- +yield cannot be used in a finally block when the generator is force-closed +--FILE-- +<?php + +function gen() { + try { + echo "before yield\n"; + yield; + echo "after yield\n"; + } finally { + echo "before yield in finally\n"; + yield; + echo "after yield in finally\n"; + } + + echo "after finally\n"; +} + +$gen = gen(); +$gen->rewind(); +unset($gen); + +?> +--EXPECTF-- +before yield +before yield in finally + +Fatal error: Cannot yield from finally in a force-closed generator in %s on line %d diff --git a/Zend/tests/generators/errors/yield_non_ref_function_call_by_ref_error.phpt b/Zend/tests/generators/errors/yield_non_ref_function_call_by_ref_error.phpt new file mode 100644 index 000000000..4b8563331 --- /dev/null +++ b/Zend/tests/generators/errors/yield_non_ref_function_call_by_ref_error.phpt @@ -0,0 +1,20 @@ +--TEST-- +Yielding the result of a non-ref function call throw a notice +--FILE-- +<?php + +function foo() { + return "bar"; +} + +function &gen() { + yield foo(); +} + +$gen = gen(); +var_dump($gen->current()); + +?> +--EXPECTF-- +Notice: Only variable references should be yielded by reference in %s on line %d +string(3) "bar" diff --git a/Zend/tests/generators/errors/yield_outside_function_error.phpt b/Zend/tests/generators/errors/yield_outside_function_error.phpt new file mode 100644 index 000000000..f999c1c03 --- /dev/null +++ b/Zend/tests/generators/errors/yield_outside_function_error.phpt @@ -0,0 +1,10 @@ +--TEST-- +Yield cannot be used outside of functions +--FILE-- +<?php + +yield "Test"; + +?> +--EXPECTF-- +Fatal error: The "yield" expression can only be used inside a function in %s on line %d diff --git a/Zend/tests/generators/fibonacci.phpt b/Zend/tests/generators/fibonacci.phpt new file mode 100644 index 000000000..35b31352f --- /dev/null +++ b/Zend/tests/generators/fibonacci.phpt @@ -0,0 +1,36 @@ +--TEST-- +Creating an infinite fibonacci list using a generator +--FILE-- +<?php + +function fib() { + list($a, $b) = [1, 1]; + while (true) { + yield $b; + list($a, $b) = [$b, $a + $b]; + } +} + +foreach (fib() as $n) { + if ($n > 1000) break; + + var_dump($n); +} + +?> +--EXPECT-- +int(1) +int(2) +int(3) +int(5) +int(8) +int(13) +int(21) +int(34) +int(55) +int(89) +int(144) +int(233) +int(377) +int(610) +int(987) diff --git a/Zend/tests/generators/finally_ran_on_close.phpt b/Zend/tests/generators/finally_ran_on_close.phpt new file mode 100644 index 000000000..44a84fae5 --- /dev/null +++ b/Zend/tests/generators/finally_ran_on_close.phpt @@ -0,0 +1,25 @@ +--TEST-- +finally is run even if a generator is closed mid-execution +--FILE-- +<?php + +function gen() { + try { + echo "before yield\n"; + yield; + echo "after yield\n"; + } finally { + echo "finally run\n"; + } + + echo "code after finally\n"; +} + +$gen = gen(); +$gen->rewind(); +unset($gen); + +?> +--EXPECT-- +before yield +finally run diff --git a/Zend/tests/generators/finally_uninterrupted.phpt b/Zend/tests/generators/finally_uninterrupted.phpt new file mode 100644 index 000000000..64c94382a --- /dev/null +++ b/Zend/tests/generators/finally_uninterrupted.phpt @@ -0,0 +1,28 @@ +--TEST-- +Use of finally in generator without interrupt +--FILE-- +<?php + +function gen() { + try { + throw new Exception; + } finally { + echo "finally run\n"; + } + + yield; // force generator +} + +$gen = gen(); +$gen->rewind(); // force run + +?> +--EXPECTF-- +finally run + +Fatal error: Uncaught exception 'Exception' in %s:%d +Stack trace: +#0 [internal function]: gen() +#1 %s(%d): Generator->rewind() +#2 {main} + thrown in %s on line %d diff --git a/Zend/tests/generators/finally_with_return.phpt b/Zend/tests/generators/finally_with_return.phpt new file mode 100644 index 000000000..b26a49f32 --- /dev/null +++ b/Zend/tests/generators/finally_with_return.phpt @@ -0,0 +1,33 @@ +--TEST-- +Use of finally in generator with return +--FILE-- +<?php + +function gen() { + try { + try { + echo "before return\n"; + return; + echo "after return\n"; + } finally { + echo "before return in inner finally\n"; + return; + echo "after return in inner finally\n"; + } + } finally { + echo "outer finally run\n"; + } + + echo "code after finally\n"; + + yield; // force generator +} + +$gen = gen(); +$gen->rewind(); // force run + +?> +--EXPECTF-- +before return +before return in inner finally +outer finally run diff --git a/Zend/tests/generators/func_get_args.phpt b/Zend/tests/generators/func_get_args.phpt new file mode 100644 index 000000000..f8d3fa7c1 --- /dev/null +++ b/Zend/tests/generators/func_get_args.phpt @@ -0,0 +1,21 @@ +--TEST-- +func_get_args() can be used inside generator functions +--FILE-- +<?php + +function gen() { + var_dump(func_get_args()); + yield; // trigger generator +} + +$gen = gen("foo", "bar"); +$gen->rewind(); + +?> +--EXPECT-- +array(2) { + [0]=> + string(3) "foo" + [1]=> + string(3) "bar" +} diff --git a/Zend/tests/generators/generator_closure.phpt b/Zend/tests/generators/generator_closure.phpt new file mode 100644 index 000000000..bf8006601 --- /dev/null +++ b/Zend/tests/generators/generator_closure.phpt @@ -0,0 +1,20 @@ +--TEST-- +Closures can be generators +--FILE-- +<?php + +$genFactory = function() { + yield 1; + yield 2; + yield 3; +}; + +foreach ($genFactory() as $value) { + var_dump($value); +} + +?> +--EXPECT-- +int(1) +int(2) +int(3) diff --git a/Zend/tests/generators/generator_closure_with_this.phpt b/Zend/tests/generators/generator_closure_with_this.phpt new file mode 100644 index 000000000..d5a4861e8 --- /dev/null +++ b/Zend/tests/generators/generator_closure_with_this.phpt @@ -0,0 +1,20 @@ +--TEST-- +Non-static closures can be generators +--FILE-- +<?php + +class Test { + public function getGenFactory() { + return function() { + yield $this; + }; + } +} + +$genFactory = (new Test)->getGenFactory(); +var_dump($genFactory()->current()); + +?> +--EXPECT-- +object(Test)#1 (0) { +} diff --git a/Zend/tests/generators/generator_in_multipleiterator.phpt b/Zend/tests/generators/generator_in_multipleiterator.phpt new file mode 100644 index 000000000..611dbc965 --- /dev/null +++ b/Zend/tests/generators/generator_in_multipleiterator.phpt @@ -0,0 +1,37 @@ +--TEST-- +Generators work properly in MultipleIterator +--FILE-- +<?php + +function gen1() { + yield 'a'; + yield 'aa'; +} + +function gen2() { + yield 'b'; + yield 'bb'; +} + +$it = new MultipleIterator; +$it->attachIterator(gen1()); +$it->attachIterator(gen2()); + +foreach ($it as $values) { + var_dump($values); +} + +?> +--EXPECT-- +array(2) { + [0]=> + string(1) "a" + [1]=> + string(1) "b" +} +array(2) { + [0]=> + string(2) "aa" + [1]=> + string(2) "bb" +} diff --git a/Zend/tests/generators/generator_method.phpt b/Zend/tests/generators/generator_method.phpt new file mode 100644 index 000000000..b8196c171 --- /dev/null +++ b/Zend/tests/generators/generator_method.phpt @@ -0,0 +1,29 @@ +--TEST-- +Methods can be generators +--FILE-- +<?php + +class Test implements IteratorAggregate { + protected $data; + + public function __construct(array $data) { + $this->data = $data; + } + + public function getIterator() { + foreach ($this->data as $value) { + yield $value; + } + } +} + +$test = new Test(['foo', 'bar', 'baz']); +foreach ($test as $value) { + var_dump($value); +} + +?> +--EXPECT-- +string(3) "foo" +string(3) "bar" +string(3) "baz" diff --git a/Zend/tests/generators/generator_method_by_ref.phpt b/Zend/tests/generators/generator_method_by_ref.phpt new file mode 100644 index 000000000..cfe52fe67 --- /dev/null +++ b/Zend/tests/generators/generator_method_by_ref.phpt @@ -0,0 +1,44 @@ +--TEST-- +Generator methods can yield by reference +--FILE-- +<?php + +class Test implements IteratorAggregate { + protected $data; + + public function __construct(array $data) { + $this->data = $data; + } + + public function getData() { + return $this->data; + } + + public function &getIterator() { + foreach ($this->data as $key => &$value) { + yield $key => $value; + } + } +} + +$test = new Test([1, 2, 3, 4, 5]); +foreach ($test as &$value) { + $value *= -1; +} + +var_dump($test->getData()); + +?> +--EXPECT-- +array(5) { + [0]=> + int(-1) + [1]=> + int(-2) + [2]=> + int(-3) + [3]=> + int(-4) + [4]=> + &int(-5) +} diff --git a/Zend/tests/generators/generator_returns_generator.phpt b/Zend/tests/generators/generator_returns_generator.phpt new file mode 100644 index 000000000..ad332a3be --- /dev/null +++ b/Zend/tests/generators/generator_returns_generator.phpt @@ -0,0 +1,18 @@ +--TEST-- +A generator function returns a Generator object +--FILE-- +<?php + +function gen() { + // execution is suspended here, so the following never gets run: + echo "Foo"; + // trigger a generator + yield; +} + +$generator = gen(); +var_dump($generator instanceof Generator); + +?> +--EXPECT-- +bool(true) diff --git a/Zend/tests/generators/generator_rewind.phpt b/Zend/tests/generators/generator_rewind.phpt new file mode 100644 index 000000000..c4b5bbbdf --- /dev/null +++ b/Zend/tests/generators/generator_rewind.phpt @@ -0,0 +1,62 @@ +--TEST-- +A generator can only be rewinded before or at the first yield +--FILE-- +<?php + +function gen() { + echo "before yield\n"; + yield; + echo "after yield\n"; + yield; +} + +$gen = gen(); +$gen->rewind(); +$gen->rewind(); +$gen->next(); + +try { + $gen->rewind(); +} catch (Exception $e) { + echo "\n", $e, "\n\n"; +} + +function &gen2() { + $foo = 'bar'; + yield $foo; + yield $foo; +} + +$gen = gen2(); +foreach ($gen as $v) { } +try { + foreach ($gen as $v) { } +} catch (Exception $e) { + echo $e, "\n\n"; +} + +function gen3() { + echo "in generator\n"; + + if (false) yield; +} + +$gen = gen3(); +$gen->rewind(); + +?> +--EXPECTF-- +before yield +after yield + +exception 'Exception' with message 'Cannot rewind a generator that was already run' in %s:%d +Stack trace: +#0 %s(%d): Generator->rewind() +#1 {main} + +exception 'Exception' with message 'Cannot traverse an already closed generator' in %s:%d +Stack trace: +#0 %s(%d): unknown() +#1 {main} + +in generator diff --git a/Zend/tests/generators/generator_send.phpt b/Zend/tests/generators/generator_send.phpt new file mode 100644 index 000000000..074d81538 --- /dev/null +++ b/Zend/tests/generators/generator_send.phpt @@ -0,0 +1,22 @@ +--TEST-- +Values can be sent back to the generator +--FILE-- +<?php + +function gen() { + var_dump(yield "yield foo"); + var_dump(yield "yield bar"); +} + +$gen = gen(); +var_dump($gen->current()); +$gen->send("send bar"); +var_dump($gen->current()); +$gen->send("send foo"); + +?> +--EXPECT-- +string(9) "yield foo" +string(8) "send bar" +string(9) "yield bar" +string(8) "send foo" diff --git a/Zend/tests/generators/generator_static_method.phpt b/Zend/tests/generators/generator_static_method.phpt new file mode 100644 index 000000000..cd9b450a7 --- /dev/null +++ b/Zend/tests/generators/generator_static_method.phpt @@ -0,0 +1,29 @@ +--TEST-- +A static method can be a generator +--FILE-- +<?php + +class Test { + public static function gen() { + var_dump(get_class()); + var_dump(get_called_class()); + yield 1; + yield 2; + yield 3; + } +} + +class ExtendedTest extends Test { +} + +foreach (ExtendedTest::gen() as $i) { + var_dump($i); +} + +?> +--EXPECT-- +string(4) "Test" +string(12) "ExtendedTest" +int(1) +int(2) +int(3) diff --git a/Zend/tests/generators/generator_throwing_during_function_call.phpt b/Zend/tests/generators/generator_throwing_during_function_call.phpt new file mode 100644 index 000000000..bd0d2448b --- /dev/null +++ b/Zend/tests/generators/generator_throwing_during_function_call.phpt @@ -0,0 +1,32 @@ +--TEST-- +Stack is cleaned up properly when an exception is thrown during a function call +--FILE-- +<?php + +function throwException() { + throw new Exception('test'); +} + +function gen() { + yield 'foo'; + strlen("foo", "bar", throwException()); + yield 'bar'; +} + +$gen = gen(); + +var_dump($gen->current()); + +try { + $gen->next(); +} catch (Exception $e) { + echo 'Caught exception with message "', $e->getMessage(), '"', "\n"; +} + +var_dump($gen->current()); + +?> +--EXPECT-- +string(3) "foo" +Caught exception with message "test" +NULL diff --git a/Zend/tests/generators/generator_throwing_exception.phpt b/Zend/tests/generators/generator_throwing_exception.phpt new file mode 100644 index 000000000..f537c3fc7 --- /dev/null +++ b/Zend/tests/generators/generator_throwing_exception.phpt @@ -0,0 +1,28 @@ +--TEST-- +Generators can throw exceptions +--FILE-- +<?php + +function gen() { + yield 'foo'; + throw new Exception('test'); + yield 'bar'; +} + +$gen = gen(); + +var_dump($gen->current()); + +try { + $gen->next(); +} catch (Exception $e) { + echo 'Caught exception with message "', $e->getMessage(), '"', "\n"; +} + +var_dump($gen->current()); + +?> +--EXPECT-- +string(3) "foo" +Caught exception with message "test" +NULL diff --git a/Zend/tests/generators/generator_throwing_in_foreach.phpt b/Zend/tests/generators/generator_throwing_in_foreach.phpt new file mode 100644 index 000000000..dbf20c2ca --- /dev/null +++ b/Zend/tests/generators/generator_throwing_in_foreach.phpt @@ -0,0 +1,20 @@ +--TEST-- +Exceptions throwing by generators during foreach iteration are properly handled +--FILE-- +<?php + +function gen() { + throw new Exception("foo"); + yield; // force generator +} + +foreach (gen() as $value) { } + +?> +--EXPECTF-- +Fatal error: Uncaught exception 'Exception' with message 'foo' in %s:%d +Stack trace: +#0 %s(%d): gen() +#1 {main} + thrown in %s on line %d + diff --git a/Zend/tests/generators/generator_with_keys.phpt b/Zend/tests/generators/generator_with_keys.phpt new file mode 100644 index 000000000..efb377679 --- /dev/null +++ b/Zend/tests/generators/generator_with_keys.phpt @@ -0,0 +1,26 @@ +--TEST-- +Generators can also yield keys +--FILE-- +<?php + +function reverse(array $array) { + end($array); + while (null !== $key = key($array)) { + yield $key => current($array); + prev($array); + } +} + +$array = [ + 'foo' => 'bar', + 'bar' => 'foo', +]; + +foreach (reverse($array) as $key => $value) { + echo $key, ' => ', $value, "\n"; +} + +?> +--EXPECT-- +bar => foo +foo => bar diff --git a/Zend/tests/generators/nested_method_calls.phpt b/Zend/tests/generators/nested_method_calls.phpt new file mode 100644 index 000000000..98aee2e60 --- /dev/null +++ b/Zend/tests/generators/nested_method_calls.phpt @@ -0,0 +1,39 @@ +--TEST-- +Yield can be used in nested method calls +--FILE-- +<?php + +class A { + function foo() { + echo "Called A::foo\n"; + } +} + +class B { + function foo() { + echo "Called B::foo\n"; + } +} + +function gen($obj) { + $obj->foo($obj->foo(yield)); +} + +$g1 = gen(new A); +$g1->current(); + +$g2 = gen(new B); +$g2->current(); + +$g1->next(); + +$g3 = clone $g2; +unset($g2); +$g3->next(); + +?> +--EXPECT-- +Called A::foo +Called A::foo +Called B::foo +Called B::foo diff --git a/Zend/tests/generators/no_foreach_var_leaks.phpt b/Zend/tests/generators/no_foreach_var_leaks.phpt new file mode 100644 index 000000000..62743895e --- /dev/null +++ b/Zend/tests/generators/no_foreach_var_leaks.phpt @@ -0,0 +1,19 @@ +--TEST-- +foreach() (and other) variables aren't leaked on premature close +--FILE-- +<?php + +function gen(array $array) { + foreach ($array as $value) { + yield $value; + } +} + +$gen = gen(['Foo', 'Bar']); +var_dump($gen->current()); + +// generator is closed here, without running SWITCH_FREE + +?> +--EXPECT-- +string(3) "Foo" diff --git a/Zend/tests/generators/send_after_close.phpt b/Zend/tests/generators/send_after_close.phpt new file mode 100644 index 000000000..806baf8ce --- /dev/null +++ b/Zend/tests/generators/send_after_close.phpt @@ -0,0 +1,14 @@ +--TEST-- +Calls to send() after close should do nothing +--FILE-- +<?php + +function gen() { var_dump(yield); } + +$gen = gen(); +$gen->send('foo'); +$gen->send('bar'); + +?> +--EXPECT-- +string(3) "foo" diff --git a/Zend/tests/generators/send_returns_current.phpt b/Zend/tests/generators/send_returns_current.phpt new file mode 100644 index 000000000..27ba74bc1 --- /dev/null +++ b/Zend/tests/generators/send_returns_current.phpt @@ -0,0 +1,20 @@ +--TEST-- +$generator->send() returns the yielded value +--FILE-- +<?php + +function reverseEchoGenerator() { + $data = yield; + while (true) { + $data = (yield strrev($data)); + } +} + +$gen = reverseEchoGenerator(); +var_dump($gen->send('foo')); +var_dump($gen->send('bar')); + +?> +--EXPECT-- +string(3) "oof" +string(3) "rab" diff --git a/Zend/tests/generators/unused_return_value.phpt b/Zend/tests/generators/unused_return_value.phpt new file mode 100644 index 000000000..ddce64542 --- /dev/null +++ b/Zend/tests/generators/unused_return_value.phpt @@ -0,0 +1,13 @@ +--TEST-- +There shouldn't be any leaks when the genertor's return value isn't used +--FILE-- +<?php + +function gen($foo) { yield; } + +gen('foo'); // return value not used + +?> +===DONE=== +--EXPECT-- +===DONE=== diff --git a/Zend/tests/generators/xrange.phpt b/Zend/tests/generators/xrange.phpt new file mode 100644 index 000000000..4d8b60fa9 --- /dev/null +++ b/Zend/tests/generators/xrange.phpt @@ -0,0 +1,23 @@ +--TEST-- +Simple generator xrange() test +--FILE-- +<?php + +function xrange($start, $end, $step = 1) { + for ($i = $start; $i <= $end; $i += $step) { + yield $i; + } +} + +foreach (xrange(10, 20, 2) as $i) { + var_dump($i); +} + +?> +--EXPECT-- +int(10) +int(12) +int(14) +int(16) +int(18) +int(20) diff --git a/Zend/tests/generators/yield_array_key.phpt b/Zend/tests/generators/yield_array_key.phpt new file mode 100644 index 000000000..5afba00de --- /dev/null +++ b/Zend/tests/generators/yield_array_key.phpt @@ -0,0 +1,18 @@ +--TEST-- +Array keys can be yielded from generators +--FILE-- +<?php + +function gen() { + yield [] => 1; +} + +$gen = gen(); +var_dump($gen->key()); +var_dump($gen->current()); + +?> +--EXPECT-- +array(0) { +} +int(1) diff --git a/Zend/tests/generators/yield_array_offset_by_ref.phpt b/Zend/tests/generators/yield_array_offset_by_ref.phpt new file mode 100644 index 000000000..544108e64 --- /dev/null +++ b/Zend/tests/generators/yield_array_offset_by_ref.phpt @@ -0,0 +1,26 @@ +--TEST-- +Array offsets can be yielded by reference +--FILE-- +<?php + +function &gen(array &$array) { + yield $array[0]; +} + +$array = [1, 2, 3]; +$gen = gen($array); +foreach ($gen as &$val) { + $val *= -1; +} +var_dump($array); + +?> +--EXPECT-- +array(3) { + [0]=> + &int(-1) + [1]=> + int(2) + [2]=> + int(3) +} diff --git a/Zend/tests/generators/yield_by_reference.phpt b/Zend/tests/generators/yield_by_reference.phpt new file mode 100644 index 000000000..dba0791c0 --- /dev/null +++ b/Zend/tests/generators/yield_by_reference.phpt @@ -0,0 +1,42 @@ +--TEST-- +Generators can yield by-reference +--FILE-- +<?php + +function &iter(array &$array) { + foreach ($array as $key => &$value) { + yield $key => $value; + } +} + +$array = [1, 2, 3]; +$iter = iter($array); +foreach ($iter as &$value) { + $value *= -1; +} +var_dump($array); + +$array = [1, 2, 3]; +foreach (iter($array) as &$value) { + $value *= -1; +} +var_dump($array); + +?> +--EXPECT-- +array(3) { + [0]=> + int(-1) + [1]=> + int(-2) + [2]=> + &int(-3) +} +array(3) { + [0]=> + int(-1) + [1]=> + int(-2) + [2]=> + &int(-3) +} diff --git a/Zend/tests/generators/yield_during_function_call.phpt b/Zend/tests/generators/yield_during_function_call.phpt new file mode 100644 index 000000000..21071f9fb --- /dev/null +++ b/Zend/tests/generators/yield_during_function_call.phpt @@ -0,0 +1,15 @@ +--TEST-- +"yield" can occur during a function call +--FILE-- +<?php + +function gen() { + var_dump(str_repeat("x", yield)); +} + +$gen = gen(); +$gen->send(10); + +?> +--EXPECT-- +string(10) "xxxxxxxxxx" diff --git a/Zend/tests/generators/yield_during_method_call.phpt b/Zend/tests/generators/yield_during_method_call.phpt new file mode 100644 index 000000000..5fbe84fff --- /dev/null +++ b/Zend/tests/generators/yield_during_method_call.phpt @@ -0,0 +1,35 @@ +--TEST-- +Yield can be used during a method call +--FILE-- +<?php + +class A { + public function b($c) { + echo $c, "\n"; + } +} + +function gen() { + $a = new A; + $a->b(yield); +} + +$gen = gen(); +$gen->send('foo'); + +// test resource cleanup +$gen = gen(); +$gen->rewind(); +unset($gen); + +// test cloning +$g1 = gen(); +$g1->rewind(); +$g2 = clone $g1; +unset($g1); +$g2->send('bar'); + +?> +--EXPECT-- +foo +bar diff --git a/Zend/tests/generators/yield_in_finally.phpt b/Zend/tests/generators/yield_in_finally.phpt new file mode 100644 index 000000000..805484ad1 --- /dev/null +++ b/Zend/tests/generators/yield_in_finally.phpt @@ -0,0 +1,29 @@ +--TEST-- +yield can be used in finally (apart from forced closes) +--FILE-- +<?php + +function gen() { + try { + echo "before return\n"; + return; + echo "after return\n"; + } finally { + echo "before yield\n"; + yield "yielded value"; + echo "after yield\n"; + } + + echo "after finally\n"; +} + +$gen = gen(); +var_dump($gen->current()); +$gen->next(); + +?> +--EXPECTF-- +before return +before yield +string(%d) "yielded value" +after yield diff --git a/Zend/tests/generators/yield_in_parenthesis.phpt b/Zend/tests/generators/yield_in_parenthesis.phpt new file mode 100644 index 000000000..4a603f4cc --- /dev/null +++ b/Zend/tests/generators/yield_in_parenthesis.phpt @@ -0,0 +1,23 @@ +--TEST-- +No additional parenthesis are required around yield if they are already present +--FILE-- +<?php + +function gen() { + if (yield $foo); elseif (yield $foo); + if (yield $foo): elseif (yield $foo): endif; + while (yield $foo); + do {} while (yield $foo); + switch (yield $foo) {} + (yield $foo); + die(yield $foo); + func(yield $foo); + $foo->func(yield $foo); + new Foo(yield $foo); +} + +echo "Done"; + +?> +--EXPECT-- +Done diff --git a/Zend/tests/generators/yield_ref_function_call_by_reference.phpt b/Zend/tests/generators/yield_ref_function_call_by_reference.phpt new file mode 100644 index 000000000..e371affd9 --- /dev/null +++ b/Zend/tests/generators/yield_ref_function_call_by_reference.phpt @@ -0,0 +1,24 @@ +--TEST-- +The result of a by-ref function call can be yielded just fine +--FILE-- +<?php + +function &nop(&$var) { + return $var; +} + +function &gen(&$var) { + yield nop($var); +} + +$var = "foo"; +$gen = gen($var); +foreach ($gen as &$varRef) { + $varRef = "bar"; +} + +var_dump($var); + +?> +--EXPECT-- +string(3) "bar" diff --git a/Zend/tests/generators/yield_without_value.phpt b/Zend/tests/generators/yield_without_value.phpt new file mode 100644 index 000000000..510c755bd --- /dev/null +++ b/Zend/tests/generators/yield_without_value.phpt @@ -0,0 +1,27 @@ +--TEST-- +yield can be used without a value +--FILE-- +<?php + +function recv() { + while (true) { + var_dump(yield); + } +} + +$reciever = recv(); +var_dump($reciever->current()); +$reciever->send(1); +var_dump($reciever->current()); +$reciever->send(2); +var_dump($reciever->current()); +$reciever->send(3); + +?> +--EXPECT-- +NULL +int(1) +NULL +int(2) +NULL +int(3) diff --git a/Zend/tests/instanceof.phpt b/Zend/tests/instanceof.phpt index 8bcbede99..8bcbede99 100755..100644 --- a/Zend/tests/instanceof.phpt +++ b/Zend/tests/instanceof.phpt diff --git a/Zend/tests/is_a.phpt b/Zend/tests/is_a.phpt index 0a01eb756..0a01eb756 100755..100644 --- a/Zend/tests/is_a.phpt +++ b/Zend/tests/is_a.phpt diff --git a/Zend/tests/isset_expr_error.phpt b/Zend/tests/isset_expr_error.phpt new file mode 100644 index 000000000..27fc6cd8d --- /dev/null +++ b/Zend/tests/isset_expr_error.phpt @@ -0,0 +1,8 @@ +--TEST-- +Error message for isset(func()) +--FILE-- +<?php +isset(1 + 1); +?> +--EXPECTF-- +Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in %s on line %d diff --git a/Zend/tests/isset_func_error.phpt b/Zend/tests/isset_func_error.phpt new file mode 100644 index 000000000..7d1036def --- /dev/null +++ b/Zend/tests/isset_func_error.phpt @@ -0,0 +1,8 @@ +--TEST-- +Error message for isset(func()) +--FILE-- +<?php +isset(abc()); +?> +--EXPECTF-- +Fatal error: Cannot use isset() on the result of a function call (you can use "null !== func()" instead) in %s on line %d diff --git a/Zend/tests/jump01.phpt b/Zend/tests/jump01.phpt index 87dba88ba..87dba88ba 100755..100644 --- a/Zend/tests/jump01.phpt +++ b/Zend/tests/jump01.phpt diff --git a/Zend/tests/jump02.phpt b/Zend/tests/jump02.phpt index ff83bc4b9..ff83bc4b9 100755..100644 --- a/Zend/tests/jump02.phpt +++ b/Zend/tests/jump02.phpt diff --git a/Zend/tests/jump03.phpt b/Zend/tests/jump03.phpt index 2399f30ad..2399f30ad 100755..100644 --- a/Zend/tests/jump03.phpt +++ b/Zend/tests/jump03.phpt diff --git a/Zend/tests/jump04.phpt b/Zend/tests/jump04.phpt index 2bbf1f5c0..2bbf1f5c0 100755..100644 --- a/Zend/tests/jump04.phpt +++ b/Zend/tests/jump04.phpt diff --git a/Zend/tests/jump05.phpt b/Zend/tests/jump05.phpt index 2e5e50c06..2e5e50c06 100755..100644 --- a/Zend/tests/jump05.phpt +++ b/Zend/tests/jump05.phpt diff --git a/Zend/tests/jump06.phpt b/Zend/tests/jump06.phpt index ef01b0e5b..ef01b0e5b 100755..100644 --- a/Zend/tests/jump06.phpt +++ b/Zend/tests/jump06.phpt diff --git a/Zend/tests/jump07.phpt b/Zend/tests/jump07.phpt index c0cb112a7..c0cb112a7 100755..100644 --- a/Zend/tests/jump07.phpt +++ b/Zend/tests/jump07.phpt diff --git a/Zend/tests/jump08.phpt b/Zend/tests/jump08.phpt index 25a211c8c..25a211c8c 100755..100644 --- a/Zend/tests/jump08.phpt +++ b/Zend/tests/jump08.phpt diff --git a/Zend/tests/jump09.phpt b/Zend/tests/jump09.phpt index 52a14b7d5..52a14b7d5 100755..100644 --- a/Zend/tests/jump09.phpt +++ b/Zend/tests/jump09.phpt diff --git a/Zend/tests/jump10.phpt b/Zend/tests/jump10.phpt index 67206a29a..67206a29a 100755..100644 --- a/Zend/tests/jump10.phpt +++ b/Zend/tests/jump10.phpt diff --git a/Zend/tests/lsb_018.phpt b/Zend/tests/lsb_018.phpt index c7877cddf..c7877cddf 100755..100644 --- a/Zend/tests/lsb_018.phpt +++ b/Zend/tests/lsb_018.phpt diff --git a/Zend/tests/lsb_022.phpt b/Zend/tests/lsb_022.phpt index 016fde83c..016fde83c 100755..100644 --- a/Zend/tests/lsb_022.phpt +++ b/Zend/tests/lsb_022.phpt diff --git a/Zend/tests/multibyte/multibyte_encoding_001.phpt b/Zend/tests/multibyte/multibyte_encoding_001.phpt index 38aa80a40..38aa80a40 100755..100644 --- a/Zend/tests/multibyte/multibyte_encoding_001.phpt +++ b/Zend/tests/multibyte/multibyte_encoding_001.phpt diff --git a/Zend/tests/multibyte/multibyte_encoding_002.phpt b/Zend/tests/multibyte/multibyte_encoding_002.phpt index 6e1ad80c9..6e1ad80c9 100755..100644 --- a/Zend/tests/multibyte/multibyte_encoding_002.phpt +++ b/Zend/tests/multibyte/multibyte_encoding_002.phpt diff --git a/Zend/tests/multibyte/multibyte_encoding_003.phpt b/Zend/tests/multibyte/multibyte_encoding_003.phpt Binary files differindex 0f873dd07..0f873dd07 100755..100644 --- a/Zend/tests/multibyte/multibyte_encoding_003.phpt +++ b/Zend/tests/multibyte/multibyte_encoding_003.phpt diff --git a/Zend/tests/ns_001.phpt b/Zend/tests/ns_001.phpt index 67715947a..67715947a 100755..100644 --- a/Zend/tests/ns_001.phpt +++ b/Zend/tests/ns_001.phpt diff --git a/Zend/tests/ns_002.phpt b/Zend/tests/ns_002.phpt index 3d9e09869..3d9e09869 100755..100644 --- a/Zend/tests/ns_002.phpt +++ b/Zend/tests/ns_002.phpt diff --git a/Zend/tests/ns_003.phpt b/Zend/tests/ns_003.phpt index 4372722c2..4372722c2 100755..100644 --- a/Zend/tests/ns_003.phpt +++ b/Zend/tests/ns_003.phpt diff --git a/Zend/tests/ns_004.phpt b/Zend/tests/ns_004.phpt index d293f65dc..d293f65dc 100755..100644 --- a/Zend/tests/ns_004.phpt +++ b/Zend/tests/ns_004.phpt diff --git a/Zend/tests/ns_005.phpt b/Zend/tests/ns_005.phpt index c082afc48..c082afc48 100755..100644 --- a/Zend/tests/ns_005.phpt +++ b/Zend/tests/ns_005.phpt diff --git a/Zend/tests/ns_006.phpt b/Zend/tests/ns_006.phpt index 1c0ec3ab0..1c0ec3ab0 100755..100644 --- a/Zend/tests/ns_006.phpt +++ b/Zend/tests/ns_006.phpt diff --git a/Zend/tests/ns_007.phpt b/Zend/tests/ns_007.phpt index 2f4d1361d..2f4d1361d 100755..100644 --- a/Zend/tests/ns_007.phpt +++ b/Zend/tests/ns_007.phpt diff --git a/Zend/tests/ns_008.phpt b/Zend/tests/ns_008.phpt index 2c2c9180c..2c2c9180c 100755..100644 --- a/Zend/tests/ns_008.phpt +++ b/Zend/tests/ns_008.phpt diff --git a/Zend/tests/ns_009.phpt b/Zend/tests/ns_009.phpt index 3481316f2..3481316f2 100755..100644 --- a/Zend/tests/ns_009.phpt +++ b/Zend/tests/ns_009.phpt diff --git a/Zend/tests/ns_010.phpt b/Zend/tests/ns_010.phpt index 28ef61bcd..28ef61bcd 100755..100644 --- a/Zend/tests/ns_010.phpt +++ b/Zend/tests/ns_010.phpt diff --git a/Zend/tests/ns_011.phpt b/Zend/tests/ns_011.phpt index 1706f2a00..1706f2a00 100755..100644 --- a/Zend/tests/ns_011.phpt +++ b/Zend/tests/ns_011.phpt diff --git a/Zend/tests/ns_012.phpt b/Zend/tests/ns_012.phpt index 034f12492..034f12492 100755..100644 --- a/Zend/tests/ns_012.phpt +++ b/Zend/tests/ns_012.phpt diff --git a/Zend/tests/ns_013.phpt b/Zend/tests/ns_013.phpt index ef73b1395..ef73b1395 100755..100644 --- a/Zend/tests/ns_013.phpt +++ b/Zend/tests/ns_013.phpt diff --git a/Zend/tests/ns_014.phpt b/Zend/tests/ns_014.phpt index 6bcab51c8..6bcab51c8 100755..100644 --- a/Zend/tests/ns_014.phpt +++ b/Zend/tests/ns_014.phpt diff --git a/Zend/tests/ns_015.phpt b/Zend/tests/ns_015.phpt index ae2c81834..ae2c81834 100755..100644 --- a/Zend/tests/ns_015.phpt +++ b/Zend/tests/ns_015.phpt diff --git a/Zend/tests/ns_016.phpt b/Zend/tests/ns_016.phpt index bee8b5bee..bee8b5bee 100755..100644 --- a/Zend/tests/ns_016.phpt +++ b/Zend/tests/ns_016.phpt diff --git a/Zend/tests/ns_017.phpt b/Zend/tests/ns_017.phpt index 888d8e5ef..888d8e5ef 100755..100644 --- a/Zend/tests/ns_017.phpt +++ b/Zend/tests/ns_017.phpt diff --git a/Zend/tests/ns_018.phpt b/Zend/tests/ns_018.phpt index 5c2495c63..5c2495c63 100755..100644 --- a/Zend/tests/ns_018.phpt +++ b/Zend/tests/ns_018.phpt diff --git a/Zend/tests/ns_019.phpt b/Zend/tests/ns_019.phpt index c3db78686..c3db78686 100755..100644 --- a/Zend/tests/ns_019.phpt +++ b/Zend/tests/ns_019.phpt diff --git a/Zend/tests/ns_020.phpt b/Zend/tests/ns_020.phpt index ec4fda029..ec4fda029 100755..100644 --- a/Zend/tests/ns_020.phpt +++ b/Zend/tests/ns_020.phpt diff --git a/Zend/tests/ns_021.phpt b/Zend/tests/ns_021.phpt index 405468399..405468399 100755..100644 --- a/Zend/tests/ns_021.phpt +++ b/Zend/tests/ns_021.phpt diff --git a/Zend/tests/ns_022.inc b/Zend/tests/ns_022.inc index be571fc34..be571fc34 100755..100644 --- a/Zend/tests/ns_022.inc +++ b/Zend/tests/ns_022.inc diff --git a/Zend/tests/ns_022.phpt b/Zend/tests/ns_022.phpt index 7aebe1d5a..7aebe1d5a 100755..100644 --- a/Zend/tests/ns_022.phpt +++ b/Zend/tests/ns_022.phpt diff --git a/Zend/tests/ns_023.phpt b/Zend/tests/ns_023.phpt index 34fbb56f2..34fbb56f2 100755..100644 --- a/Zend/tests/ns_023.phpt +++ b/Zend/tests/ns_023.phpt diff --git a/Zend/tests/ns_024.phpt b/Zend/tests/ns_024.phpt index 019a89c47..019a89c47 100755..100644 --- a/Zend/tests/ns_024.phpt +++ b/Zend/tests/ns_024.phpt diff --git a/Zend/tests/ns_025.phpt b/Zend/tests/ns_025.phpt index 917a710d9..917a710d9 100755..100644 --- a/Zend/tests/ns_025.phpt +++ b/Zend/tests/ns_025.phpt diff --git a/Zend/tests/ns_026.phpt b/Zend/tests/ns_026.phpt index af2bf2ca5..af2bf2ca5 100755..100644 --- a/Zend/tests/ns_026.phpt +++ b/Zend/tests/ns_026.phpt diff --git a/Zend/tests/ns_027.inc b/Zend/tests/ns_027.inc index 382381829..382381829 100755..100644 --- a/Zend/tests/ns_027.inc +++ b/Zend/tests/ns_027.inc diff --git a/Zend/tests/ns_027.phpt b/Zend/tests/ns_027.phpt index 88ef22f93..88ef22f93 100755..100644 --- a/Zend/tests/ns_027.phpt +++ b/Zend/tests/ns_027.phpt diff --git a/Zend/tests/ns_028.inc b/Zend/tests/ns_028.inc index 5bd3ae776..5bd3ae776 100755..100644 --- a/Zend/tests/ns_028.inc +++ b/Zend/tests/ns_028.inc diff --git a/Zend/tests/ns_028.phpt b/Zend/tests/ns_028.phpt index ec23dac81..ec23dac81 100755..100644 --- a/Zend/tests/ns_028.phpt +++ b/Zend/tests/ns_028.phpt diff --git a/Zend/tests/ns_029.phpt b/Zend/tests/ns_029.phpt index f1aa954ae..f1aa954ae 100755..100644 --- a/Zend/tests/ns_029.phpt +++ b/Zend/tests/ns_029.phpt diff --git a/Zend/tests/ns_030.phpt b/Zend/tests/ns_030.phpt index 69724159e..69724159e 100755..100644 --- a/Zend/tests/ns_030.phpt +++ b/Zend/tests/ns_030.phpt diff --git a/Zend/tests/ns_031.phpt b/Zend/tests/ns_031.phpt index 840c08621..840c08621 100755..100644 --- a/Zend/tests/ns_031.phpt +++ b/Zend/tests/ns_031.phpt diff --git a/Zend/tests/ns_032.phpt b/Zend/tests/ns_032.phpt index 5717a3368..5717a3368 100755..100644 --- a/Zend/tests/ns_032.phpt +++ b/Zend/tests/ns_032.phpt diff --git a/Zend/tests/ns_033.phpt b/Zend/tests/ns_033.phpt index dc431d82b..dc431d82b 100755..100644 --- a/Zend/tests/ns_033.phpt +++ b/Zend/tests/ns_033.phpt diff --git a/Zend/tests/ns_034.phpt b/Zend/tests/ns_034.phpt index 76775f118..76775f118 100755..100644 --- a/Zend/tests/ns_034.phpt +++ b/Zend/tests/ns_034.phpt diff --git a/Zend/tests/ns_035.phpt b/Zend/tests/ns_035.phpt index fcc771a74..fcc771a74 100755..100644 --- a/Zend/tests/ns_035.phpt +++ b/Zend/tests/ns_035.phpt diff --git a/Zend/tests/ns_036.phpt b/Zend/tests/ns_036.phpt index 245cf7d5b..245cf7d5b 100755..100644 --- a/Zend/tests/ns_036.phpt +++ b/Zend/tests/ns_036.phpt diff --git a/Zend/tests/ns_037.phpt b/Zend/tests/ns_037.phpt index db0a76e94..db0a76e94 100755..100644 --- a/Zend/tests/ns_037.phpt +++ b/Zend/tests/ns_037.phpt diff --git a/Zend/tests/ns_038.phpt b/Zend/tests/ns_038.phpt index f3a8c8cc6..f3a8c8cc6 100755..100644 --- a/Zend/tests/ns_038.phpt +++ b/Zend/tests/ns_038.phpt diff --git a/Zend/tests/ns_054.phpt b/Zend/tests/ns_054.phpt index 54ab95861..54ab95861 100755..100644 --- a/Zend/tests/ns_054.phpt +++ b/Zend/tests/ns_054.phpt diff --git a/Zend/tests/ns_055.phpt b/Zend/tests/ns_055.phpt index a692e4760..a692e4760 100755..100644 --- a/Zend/tests/ns_055.phpt +++ b/Zend/tests/ns_055.phpt diff --git a/Zend/tests/ns_056.phpt b/Zend/tests/ns_056.phpt index 2390608d4..2390608d4 100755..100644 --- a/Zend/tests/ns_056.phpt +++ b/Zend/tests/ns_056.phpt diff --git a/Zend/tests/ns_057.phpt b/Zend/tests/ns_057.phpt index 13bf3054c..13bf3054c 100755..100644 --- a/Zend/tests/ns_057.phpt +++ b/Zend/tests/ns_057.phpt diff --git a/Zend/tests/ns_058.phpt b/Zend/tests/ns_058.phpt index 7a0cd97d9..7a0cd97d9 100755..100644 --- a/Zend/tests/ns_058.phpt +++ b/Zend/tests/ns_058.phpt diff --git a/Zend/tests/ns_059.phpt b/Zend/tests/ns_059.phpt index ea66037b4..ea66037b4 100755..100644 --- a/Zend/tests/ns_059.phpt +++ b/Zend/tests/ns_059.phpt diff --git a/Zend/tests/ns_065.inc b/Zend/tests/ns_065.inc index 963a74e14..963a74e14 100755..100644 --- a/Zend/tests/ns_065.inc +++ b/Zend/tests/ns_065.inc diff --git a/Zend/tests/ns_065.phpt b/Zend/tests/ns_065.phpt index 40ccd1e15..40ccd1e15 100755..100644 --- a/Zend/tests/ns_065.phpt +++ b/Zend/tests/ns_065.phpt diff --git a/Zend/tests/ns_075.phpt b/Zend/tests/ns_075.phpt index 0156e99eb..0156e99eb 100755..100644 --- a/Zend/tests/ns_075.phpt +++ b/Zend/tests/ns_075.phpt diff --git a/Zend/tests/ns_076.phpt b/Zend/tests/ns_076.phpt index eeda39bd2..eeda39bd2 100755..100644 --- a/Zend/tests/ns_076.phpt +++ b/Zend/tests/ns_076.phpt diff --git a/Zend/tests/ns_077_1.phpt b/Zend/tests/ns_077_1.phpt index 5a9c4b153..5a9c4b153 100755..100644 --- a/Zend/tests/ns_077_1.phpt +++ b/Zend/tests/ns_077_1.phpt diff --git a/Zend/tests/ns_077_2.phpt b/Zend/tests/ns_077_2.phpt index 8c2672185..8c2672185 100755..100644 --- a/Zend/tests/ns_077_2.phpt +++ b/Zend/tests/ns_077_2.phpt diff --git a/Zend/tests/ns_077_3.phpt b/Zend/tests/ns_077_3.phpt index bdeb7924e..bdeb7924e 100755..100644 --- a/Zend/tests/ns_077_3.phpt +++ b/Zend/tests/ns_077_3.phpt diff --git a/Zend/tests/ns_077_4.phpt b/Zend/tests/ns_077_4.phpt index aef91fd3e..aef91fd3e 100755..100644 --- a/Zend/tests/ns_077_4.phpt +++ b/Zend/tests/ns_077_4.phpt diff --git a/Zend/tests/ns_077_5.phpt b/Zend/tests/ns_077_5.phpt index 17afe03f4..17afe03f4 100755..100644 --- a/Zend/tests/ns_077_5.phpt +++ b/Zend/tests/ns_077_5.phpt diff --git a/Zend/tests/ns_077_6.phpt b/Zend/tests/ns_077_6.phpt index 17afe03f4..17afe03f4 100755..100644 --- a/Zend/tests/ns_077_6.phpt +++ b/Zend/tests/ns_077_6.phpt diff --git a/Zend/tests/ns_077_7.phpt b/Zend/tests/ns_077_7.phpt index 9bf5baf05..9bf5baf05 100755..100644 --- a/Zend/tests/ns_077_7.phpt +++ b/Zend/tests/ns_077_7.phpt diff --git a/Zend/tests/ns_077_8.phpt b/Zend/tests/ns_077_8.phpt index 9f9240db0..9f9240db0 100755..100644 --- a/Zend/tests/ns_077_8.phpt +++ b/Zend/tests/ns_077_8.phpt diff --git a/Zend/tests/ns_078.phpt b/Zend/tests/ns_078.phpt index ed6770ff4..ed6770ff4 100755..100644 --- a/Zend/tests/ns_078.phpt +++ b/Zend/tests/ns_078.phpt diff --git a/Zend/tests/object_handlers.phpt b/Zend/tests/object_handlers.phpt index 3e8dfcc53..3e8dfcc53 100755..100644 --- a/Zend/tests/object_handlers.phpt +++ b/Zend/tests/object_handlers.phpt diff --git a/Zend/tests/objects_015.phpt b/Zend/tests/objects_015.phpt index a923ee0c4..a923ee0c4 100755..100644 --- a/Zend/tests/objects_015.phpt +++ b/Zend/tests/objects_015.phpt diff --git a/Zend/tests/offset_assign.phpt b/Zend/tests/offset_assign.phpt index 6a0059109..721516f53 100644 --- a/Zend/tests/offset_assign.phpt +++ b/Zend/tests/offset_assign.phpt @@ -3,11 +3,11 @@ Crash on $x['x']['y'] += 1 when $x is string --FILE-- <?php $x = "a"; -$x['x']['y'] += 1; +$x['x']['y'] += 1; echo "Done\n"; ?> ---EXPECTF-- +--EXPECTF-- Warning: Illegal string offset 'x' in %soffset_assign.php on line %d Fatal error: Cannot use string offset as an array in %soffset_assign.php on line %d diff --git a/Zend/tests/offset_string.phpt b/Zend/tests/offset_string.phpt index f7cb81bb2..c546b3718 100644 --- a/Zend/tests/offset_string.phpt +++ b/Zend/tests/offset_string.phpt @@ -27,7 +27,7 @@ var_dump($str[$arr]); echo "Done\n"; ?> ---EXPECTF-- +--EXPECTF-- string(1) "i" Notice: String offset cast occurred in %s on line %d diff --git a/Zend/tests/selfParent_001.phpt b/Zend/tests/selfParent_001.phpt index 9d8cd6e22..9d8cd6e22 100755..100644 --- a/Zend/tests/selfParent_001.phpt +++ b/Zend/tests/selfParent_001.phpt diff --git a/Zend/tests/selfParent_002.phpt b/Zend/tests/selfParent_002.phpt index 18a8f09ea..18a8f09ea 100755..100644 --- a/Zend/tests/selfParent_002.phpt +++ b/Zend/tests/selfParent_002.phpt diff --git a/Zend/tests/try_catch_finally_001.phpt b/Zend/tests/try_catch_finally_001.phpt new file mode 100644 index 000000000..3d478f461 --- /dev/null +++ b/Zend/tests/try_catch_finally_001.phpt @@ -0,0 +1,36 @@ +--TEST-- +Try catch finally +--FILE-- +<?php + +class AE extends Exception {}; +class BE extends Exception {}; + +function foo () { + try { + try { + try { + throw new Exception("try"); + } catch (AE $e) { + echo "0"; + die("error"); + } finally { + echo "1"; + } + } finally { + echo "2"; + } + } catch (BE $e) { + die("error"); + } catch (Exception $e) { + echo "3"; + } finally { + echo "4"; + } + return 1; +} + +var_dump(foo()); +?> +--EXPECTF-- +1234int(1) diff --git a/Zend/tests/try_catch_finally_002.phpt b/Zend/tests/try_catch_finally_002.phpt new file mode 100644 index 000000000..79efcb3de --- /dev/null +++ b/Zend/tests/try_catch_finally_002.phpt @@ -0,0 +1,42 @@ +--TEST-- +Try catch finally catch(multi catch blocks) +--FILE-- +<?php + +class AE extends Exception {}; +class BE extends Exception {}; + +function foo () { + try { + try { + try { + try { + echo "1"; + throw new Exception("try"); + } catch (AE $e) { + die("error"); + } finally { + echo "2"; + } + } finally { + echo "3"; + } + } catch (BE $e) { + die("error"); + } finally { + echo "4"; + } + } catch (Exception $e) { + echo "5"; + } catch (AE $e) { + die("error"); + } finally { + echo "6"; + } + return 7; +} + +var_dump(foo()); +?> +--EXPECTF-- +123456int(7) diff --git a/Zend/tests/try_catch_finally_003.phpt b/Zend/tests/try_catch_finally_003.phpt new file mode 100644 index 000000000..784063b74 --- /dev/null +++ b/Zend/tests/try_catch_finally_003.phpt @@ -0,0 +1,38 @@ +--TEST-- +Try catch finally (multi catch blocks with return) +--FILE-- +<?php + +class AE extends Exception {}; +class BE extends Exception {}; + +function foo () { + try { + try { + try { + throw new Exception("try"); + } catch (AE $e) { + die("error"); + } finally { + echo "1"; + return 1; + } + } finally { + echo "2"; + return 2; + } + } catch (BE $e) { + die("error"); + } catch (Exception $e) { + echo "3"; + } finally { + echo "4"; + return 4; + } + return 5; +} + +var_dump(foo()); +?> +--EXPECTF-- +1234int(4) diff --git a/Zend/tests/try_catch_finally_004.phpt b/Zend/tests/try_catch_finally_004.phpt new file mode 100644 index 000000000..eb8d0966a --- /dev/null +++ b/Zend/tests/try_catch_finally_004.phpt @@ -0,0 +1,30 @@ +--TEST-- +Try catch finally (re-throw exception in catch block) +--CREDITS-- +adoy +--FILE-- +<?php +function dummy($msg) { + var_dump($msg); +} +try { + try { + var_dump("try"); + return; + } catch (Exception $e) { + dummy("catch"); + throw $e; + } finally { + dummy("finally"); + } +} catch (Exception $e) { + dummy("catch2"); +} finally { + dummy("finally2"); +} +var_dump("end"); +?> +--EXPECTF-- +string(3) "try" +string(7) "finally" +string(8) "finally2" diff --git a/Zend/tests/try_catch_finally_005.phpt b/Zend/tests/try_catch_finally_005.phpt new file mode 100644 index 000000000..dafeb6bbe --- /dev/null +++ b/Zend/tests/try_catch_finally_005.phpt @@ -0,0 +1,52 @@ +--TEST-- +Try catch finally (break / cont in try block) +--CREDITS-- +adoy +--FILE-- +<?php +for ($i = 0; $i < 100 ; $i ++) { + try { + break; + } finally { + var_dump("break"); + } +} + + +for ($i = 0; $i < 2; $i ++) { + try { + continue; + } finally { + var_dump("continue1"); + } +} + +for ($i = 0; $i < 3; $i ++) { + try { + try { + continue; + } finally { + var_dump("continue2"); + if ($i == 1) { + throw new Exception("continue exception"); + } + } + } catch (Exception $e) { + var_dump("cactched"); + } finally { + var_dump("finally"); + } +} + +?> +--EXPECTF-- +string(5) "break" +string(9) "continue1" +string(9) "continue1" +string(9) "continue2" +string(7) "finally" +string(9) "continue2" +string(8) "cactched" +string(7) "finally" +string(9) "continue2" +string(7) "finally" diff --git a/Zend/tests/try_catch_finally_006.phpt b/Zend/tests/try_catch_finally_006.phpt new file mode 100644 index 000000000..dab6af6a5 --- /dev/null +++ b/Zend/tests/try_catch_finally_006.phpt @@ -0,0 +1,39 @@ +--TEST-- +Try catch finally (goto in try/catch block) +--CREDITS-- +adoy +--FILE-- +<?php +function foo($ex = NULL) { + try { + try { + goto label; + } finally { + var_dump("finally1"); + if ($ex) throw $ex; + } + } catch (Exception $e) { + var_dump("catched"); + if ($ex) return "return1"; + } finally { + var_dump("finally2"); + } + +label: + var_dump("label"); + return "return2"; +} + +var_dump(foo()); +var_dump(foo(new Exception())); + +?> +--EXPECTF-- +string(8) "finally1" +string(8) "finally2" +string(5) "label" +string(7) "return2" +string(8) "finally1" +string(7) "catched" +string(8) "finally2" +string(7) "return1" diff --git a/Zend/tests/try_catch_finally_007.phpt b/Zend/tests/try_catch_finally_007.phpt new file mode 100644 index 000000000..ad33c6813 --- /dev/null +++ b/Zend/tests/try_catch_finally_007.phpt @@ -0,0 +1,46 @@ +--TEST-- +Try catch finally (goto in try/catch block) +--CREDITS-- +adoy +--FILE-- +<?php +function foo($ret = FALSE) { + try { + try { + do { + goto label; + } while(0); + foreach (array() as $val) { + continue; + } + } finally { + var_dump("finally1"); + throw new Exception("exception"); + } + } catch (Exception $e) { + goto local; +local: + var_dump("catched"); + if ($ret) return "return"; + } finally { + var_dump("finally2"); + } + +label: + var_dump("label"); +} + +var_dump(foo()); +var_dump(foo(true)); + +?> +--EXPECTF-- +string(8) "finally1" +string(7) "catched" +string(8) "finally2" +string(5) "label" +NULL +string(8) "finally1" +string(7) "catched" +string(8) "finally2" +string(6) "return" diff --git a/Zend/tests/try_finally_001.phpt b/Zend/tests/try_finally_001.phpt new file mode 100644 index 000000000..0f740872c --- /dev/null +++ b/Zend/tests/try_finally_001.phpt @@ -0,0 +1,22 @@ +--TEST-- +Try finally (basic test) +--FILE-- +<?php +function foo ($a) { + try { + throw new Exception("ex"); + } finally { + var_dump($a); + } +} + +foo("finally"); +?> +--EXPECTF-- +string(7) "finally" + +Fatal error: Uncaught exception 'Exception' with message 'ex' %s +Stack trace: +#0 %stry_finally_001.php(%d): foo('finally') +#1 {main} + thrown in %stry_finally_001.php on line %d diff --git a/Zend/tests/try_finally_002.phpt b/Zend/tests/try_finally_002.phpt new file mode 100644 index 000000000..99a34f62f --- /dev/null +++ b/Zend/tests/try_finally_002.phpt @@ -0,0 +1,23 @@ +--TEST-- +Try finally (re-throw exception in finally block) +--FILE-- +<?php +function foo () { + try { + throw new Exception("try"); + } finally { + throw new Exception("finally"); + } +} + +try { + foo(); +} catch (Exception $e) { + do { + var_dump($e->getMessage()); + } while ($e = $e->getPrevious()); +} +?> +--EXPECT-- +string(7) "finally" +string(3) "try" diff --git a/Zend/tests/try_finally_003.phpt b/Zend/tests/try_finally_003.phpt new file mode 100644 index 000000000..c1294911b --- /dev/null +++ b/Zend/tests/try_finally_003.phpt @@ -0,0 +1,27 @@ +--TEST-- +Try finally (call sequence test) +--FILE-- +<?php +function foo () { + try { + echo "1"; + try { + echo "2"; + throw new Exception("ex"); + } finally { + echo "3"; + } + } finally { + echo "4"; + } +} + +foo(); +?> +--EXPECTF-- +1234 +Fatal error: Uncaught exception 'Exception' with message 'ex' %s +Stack trace: +#0 %stry_finally_003.php(%d): foo() +#1 {main} + thrown in %stry_finally_003.php on line %d diff --git a/Zend/tests/try_finally_004.phpt b/Zend/tests/try_finally_004.phpt new file mode 100644 index 000000000..08930a40c --- /dev/null +++ b/Zend/tests/try_finally_004.phpt @@ -0,0 +1,14 @@ +--TEST-- +Try finally (without catch/finally block) +--FILE-- +<?php +function foo () { + try { + echo "3"; + } +} + +foo(); +?> +--EXPECTF-- +Fatal error: Cannot use try without catch or finally in %stry_finally_004.php on line %d diff --git a/Zend/tests/try_finally_005.phpt b/Zend/tests/try_finally_005.phpt new file mode 100644 index 000000000..8664d6b1b --- /dev/null +++ b/Zend/tests/try_finally_005.phpt @@ -0,0 +1,17 @@ +--TEST-- +Try finally (with long goto) +--FILE-- +<?php +function foo () { + try { + } finally { + goto label; + } +label: + return 1; +} + +foo(); +?> +--EXPECTF-- +Fatal error: jump out of a finally block is disallowed in %stry_finally_005.php on line %d diff --git a/Zend/tests/try_finally_006.phpt b/Zend/tests/try_finally_006.phpt new file mode 100644 index 000000000..f53e6b5bc --- /dev/null +++ b/Zend/tests/try_finally_006.phpt @@ -0,0 +1,26 @@ +--TEST-- +Try finally (with near goto) +--FILE-- +<?php +function foo () { + $jmp = 1; + try { + } finally { +previous: + if ($jmp) { + goto label; + echo "dummy"; +label: + echo "label\n"; + $jmp = 0; + goto previous; + } + echo "okey"; + } +} + +foo(); +?> +--EXPECTF-- +label +okey diff --git a/Zend/tests/try_finally_007.phpt b/Zend/tests/try_finally_007.phpt new file mode 100644 index 000000000..634937495 --- /dev/null +++ b/Zend/tests/try_finally_007.phpt @@ -0,0 +1,22 @@ +--TEST-- +Try finally (with goto previous label) +--FILE-- +<?php +function foo () { + try { +label: + echo "label"; + try { + } finally { + goto label; + echo "dummy"; + } + } catch (Exception $e) { + } finally { + } +} + +foo(); +?> +--EXPECTF-- +Fatal error: jump out of a finally block is disallowed in %stry_finally_007.php on line %d diff --git a/Zend/tests/try_finally_008.phpt b/Zend/tests/try_finally_008.phpt new file mode 100644 index 000000000..cee37aeda --- /dev/null +++ b/Zend/tests/try_finally_008.phpt @@ -0,0 +1,21 @@ +--TEST-- +Try finally (with break in do...while) +--FILE-- +<?php +function foo () { + do { + try { + try { + } finally { + break; + } + } catch (Exception $e) { + } finally { + } + } while (0); +} + +foo(); +?> +--EXPECTF-- +Fatal error: jump out of a finally block is disallowed in %stry_finally_008.php on line %d diff --git a/Zend/tests/try_finally_009.phpt b/Zend/tests/try_finally_009.phpt new file mode 100644 index 000000000..b29930a75 --- /dev/null +++ b/Zend/tests/try_finally_009.phpt @@ -0,0 +1,23 @@ +--TEST-- +Try finally (with for continue) +--FILE-- +<?php +function foo () { + for($i = 0; $i < 5; $i++) { + do { + try { + try { + } finally { + } + } catch (Exception $e) { + } finally { + continue; + } + } while (0); + } +} + +foo(); +?> +--EXPECTF-- +Fatal error: jump out of a finally block is disallowed in %stry_finally_009.php on line %d diff --git a/Zend/tests/unexpected_ref_bug.phpt b/Zend/tests/unexpected_ref_bug.phpt index 61fe1aa5b..61fe1aa5b 100755..100644 --- a/Zend/tests/unexpected_ref_bug.phpt +++ b/Zend/tests/unexpected_ref_bug.phpt diff --git a/Zend/tests/unset_cv12.phpt b/Zend/tests/unset_cv12.phpt index a22b13dea..a22b13dea 100755..100644 --- a/Zend/tests/unset_cv12.phpt +++ b/Zend/tests/unset_cv12.phpt diff --git a/Zend/zend.h b/Zend/zend.h index 3226f8ce0..d2a4ef695 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -22,7 +22,7 @@ #ifndef ZEND_H #define ZEND_H -#define ZEND_VERSION "2.4.0" +#define ZEND_VERSION "2.5.0-dev" #define ZEND_ENGINE_2 @@ -133,6 +133,11 @@ char *alloca (); # endif #endif +/* Compatibility with non-clang compilers */ +#ifndef __has_attribute +# define __has_attribute(x) 0 +#endif + /* GCC x.y.z supplies __GNUC__ = x and __GNUC_MINOR__ = y */ #ifdef __GNUC__ # define ZEND_GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__) @@ -146,6 +151,14 @@ char *alloca (); # define ZEND_ATTRIBUTE_MALLOC #endif +#if ZEND_GCC_VERSION >= 4003 || __has_attribute(alloc_size) +# define ZEND_ATTRIBUTE_ALLOC_SIZE(X) __attribute__ ((alloc_size(X))) +# define ZEND_ATTRIBUTE_ALLOC_SIZE2(X,Y) __attribute__ ((alloc_size(X,Y))) +#else +# define ZEND_ATTRIBUTE_ALLOC_SIZE(X) +# define ZEND_ATTRIBUTE_ALLOC_SIZE2(X,Y) +#endif + #if ZEND_GCC_VERSION >= 2007 # define ZEND_ATTRIBUTE_FORMAT(type, idx, first) __attribute__ ((format(type, idx, first))) #else @@ -263,10 +276,10 @@ static const char long_min_digits[] = "9223372036854775808"; #define MAX_LENGTH_OF_DOUBLE 32 -#undef SUCCESS -#undef FAILURE -#define SUCCESS 0 -#define FAILURE -1 /* this MUST stay a negative number, or it may affect functions! */ +typedef enum { + SUCCESS = 0, + FAILURE = -1, /* this MUST stay a negative number, or it may affect functions! */ +} ZEND_RESULT_CODE; #include "zend_hash.h" #include "zend_ts_hash.h" diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index 0b0e8632c..155ae88b6 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -658,9 +658,9 @@ static unsigned int _mem_block_end_magic = 0; #define ZEND_MM_LARGE_BUCKET_INDEX(S) zend_mm_high_bit(S) -static void *_zend_mm_alloc_int(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; +static void *_zend_mm_alloc_int(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE(2); static void _zend_mm_free_int(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); -static void *_zend_mm_realloc_int(zend_mm_heap *heap, void *p, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); +static void *_zend_mm_realloc_int(zend_mm_heap *heap, void *p, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE(3); static inline unsigned int zend_mm_high_bit(size_t _size) { diff --git a/Zend/zend_alloc.h b/Zend/zend_alloc.h index b8b800e0d..6b071c289 100644 --- a/Zend/zend_alloc.h +++ b/Zend/zend_alloc.h @@ -54,12 +54,12 @@ BEGIN_EXTERN_C() ZEND_API char *zend_strndup(const char *s, unsigned int length) ZEND_ATTRIBUTE_MALLOC; -ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; +ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE(1); ZEND_API void *_safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; ZEND_API void *_safe_malloc(size_t nmemb, size_t size, size_t offset) ZEND_ATTRIBUTE_MALLOC; ZEND_API void _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); -ZEND_API void *_ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; -ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); +ZEND_API void *_ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE2(1,2); +ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE(2); ZEND_API void *_safe_erealloc(void *ptr, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API void *_safe_realloc(void *ptr, size_t nmemb, size_t size, size_t offset); ZEND_API char *_estrdup(const char *s ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; diff --git a/Zend/zend_build.h b/Zend/zend_build.h index 042f50e80..042f50e80 100755..100644 --- a/Zend/zend_build.h +++ b/Zend/zend_build.h diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index eab98ed94..698ef72e5 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1512,7 +1512,6 @@ ZEND_FUNCTION(trigger_error) ZEND_FUNCTION(set_error_handler) { zval *error_handler; - zend_bool had_orig_error_handler=0; char *error_handler_name = NULL; long error_type = E_ALL; @@ -1520,38 +1519,31 @@ ZEND_FUNCTION(set_error_handler) return; } - if (!zend_is_callable(error_handler, 0, &error_handler_name TSRMLS_CC)) { - zend_error(E_WARNING, "%s() expects the argument (%s) to be a valid callback", - get_active_function_name(TSRMLS_C), error_handler_name?error_handler_name:"unknown"); + if (Z_TYPE_P(error_handler) != IS_NULL) { /* NULL == unset */ + if (!zend_is_callable(error_handler, 0, &error_handler_name TSRMLS_CC)) { + zend_error(E_WARNING, "%s() expects the argument (%s) to be a valid callback", + get_active_function_name(TSRMLS_C), error_handler_name?error_handler_name:"unknown"); + efree(error_handler_name); + return; + } efree(error_handler_name); - return; } - efree(error_handler_name); if (EG(user_error_handler)) { - had_orig_error_handler = 1; - *return_value = *EG(user_error_handler); - zval_copy_ctor(return_value); - INIT_PZVAL(return_value); + RETVAL_ZVAL(EG(user_error_handler), 1, 0); + zend_stack_push(&EG(user_error_handlers_error_reporting), &EG(user_error_handler_error_reporting), sizeof(EG(user_error_handler_error_reporting))); zend_ptr_stack_push(&EG(user_error_handlers), EG(user_error_handler)); } - ALLOC_ZVAL(EG(user_error_handler)); - if (!zend_is_true(error_handler)) { /* unset user-defined handler */ - FREE_ZVAL(EG(user_error_handler)); + if (Z_TYPE_P(error_handler) == IS_NULL) { /* unset user-defined handler */ EG(user_error_handler) = NULL; - RETURN_TRUE; + return; } + ALLOC_ZVAL(EG(user_error_handler)); + MAKE_COPY_ZVAL(&error_handler, EG(user_error_handler)); EG(user_error_handler_error_reporting) = (int)error_type; - *EG(user_error_handler) = *error_handler; - zval_copy_ctor(EG(user_error_handler)); - INIT_PZVAL(EG(user_error_handler)); - - if (!had_orig_error_handler) { - RETURN_NULL(); - } } /* }}} */ @@ -1585,7 +1577,6 @@ ZEND_FUNCTION(set_exception_handler) { zval *exception_handler; char *exception_handler_name = NULL; - zend_bool had_orig_exception_handler=0; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &exception_handler) == FAILURE) { return; @@ -1602,24 +1593,18 @@ ZEND_FUNCTION(set_exception_handler) } if (EG(user_exception_handler)) { - had_orig_exception_handler = 1; - *return_value = *EG(user_exception_handler); - zval_copy_ctor(return_value); + RETVAL_ZVAL(EG(user_exception_handler), 1, 0); + zend_ptr_stack_push(&EG(user_exception_handlers), EG(user_exception_handler)); } - ALLOC_ZVAL(EG(user_exception_handler)); if (Z_TYPE_P(exception_handler) == IS_NULL) { /* unset user-defined handler */ - FREE_ZVAL(EG(user_exception_handler)); EG(user_exception_handler) = NULL; - RETURN_TRUE; + return; } + ALLOC_ZVAL(EG(user_exception_handler)); MAKE_COPY_ZVAL(&exception_handler, EG(user_exception_handler)) - - if (!had_orig_exception_handler) { - RETURN_NULL(); - } } /* }}} */ diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index c39d8eaa1..2d2c284b7 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1722,7 +1722,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n } { - /* Push a seperator to the switch and foreach stacks */ + /* Push a seperator to the switch stack */ zend_switch_entry switch_entry; switch_entry.cond.op_type = IS_UNUSED; @@ -1730,16 +1730,16 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n switch_entry.control_var = 0; zend_stack_push(&CG(switch_cond_stack), (void *) &switch_entry, sizeof(switch_entry)); + } - { - /* Foreach stack separator */ - zend_op dummy_opline; + { + /* Push a separator to the foreach stack */ + zend_op dummy_opline; - dummy_opline.result_type = IS_UNUSED; - dummy_opline.op1_type = IS_UNUSED; + dummy_opline.result_type = IS_UNUSED; + dummy_opline.op1_type = IS_UNUSED; - zend_stack_push(&CG(foreach_copy_stack), (void *) &dummy_opline, sizeof(zend_op)); - } + zend_stack_push(&CG(foreach_copy_stack), (void *) &dummy_opline, sizeof(zend_op)); } if (CG(doc_comment)) { @@ -2611,9 +2611,12 @@ void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC) /* {{{ */ { zend_op *opline; int start_op_number, end_op_number; + zend_bool returns_reference = (CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0; + + /* The error for use of return inside a generator is thrown in pass_two. */ if (do_end_vparse) { - if ((CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) && !zend_is_function_or_method_call(expr)) { + if (returns_reference && !zend_is_function_or_method_call(expr)) { zend_do_end_variable_parse(expr, BP_VAR_W, 0 TSRMLS_CC); } else { zend_do_end_variable_parse(expr, BP_VAR_R, 0 TSRMLS_CC); @@ -2638,7 +2641,7 @@ void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC) /* {{{ */ opline = get_next_op(CG(active_op_array) TSRMLS_CC); - opline->opcode = (CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) ? ZEND_RETURN_BY_REF : ZEND_RETURN; + opline->opcode = returns_reference ? ZEND_RETURN_BY_REF : ZEND_RETURN; if (expr) { SET_NODE(opline->op1, expr); @@ -2655,12 +2658,58 @@ void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC) /* {{{ */ } /* }}} */ +void zend_do_yield(znode *result, znode *value, const znode *key, zend_bool is_variable TSRMLS_DC) /* {{{ */ +{ + zend_op *opline; + + if (!CG(active_op_array)->function_name) { + zend_error(E_COMPILE_ERROR, "The \"yield\" expression can only be used inside a function"); + } + + CG(active_op_array)->fn_flags |= ZEND_ACC_GENERATOR; + + if (is_variable) { + if ((CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) && !zend_is_function_or_method_call(value)) { + zend_do_end_variable_parse(value, BP_VAR_W, 0 TSRMLS_CC); + } else { + zend_do_end_variable_parse(value, BP_VAR_R, 0 TSRMLS_CC); + } + } + + opline = get_next_op(CG(active_op_array) TSRMLS_CC); + + opline->opcode = ZEND_YIELD; + + if (value) { + SET_NODE(opline->op1, value); + + if (is_variable && zend_is_function_or_method_call(value)) { + opline->extended_value = ZEND_RETURNS_FUNCTION; + } + } else { + SET_UNUSED(opline->op1); + } + + if (key) { + SET_NODE(opline->op2, key); + } else { + SET_UNUSED(opline->op2); + } + + opline->result_type = IS_VAR; + opline->result.var = get_temporary_variable(CG(active_op_array)); + GET_NODE(result, opline->result); +} +/* }}} */ + static int zend_add_try_element(zend_uint try_op TSRMLS_DC) /* {{{ */ { int try_catch_offset = CG(active_op_array)->last_try_catch++; CG(active_op_array)->try_catch_array = erealloc(CG(active_op_array)->try_catch_array, sizeof(zend_try_catch_element)*CG(active_op_array)->last_try_catch); CG(active_op_array)->try_catch_array[try_catch_offset].try_op = try_op; + CG(active_op_array)->try_catch_array[try_catch_offset].finally_op = 0; + CG(active_op_array)->try_catch_array[try_catch_offset].finally_end = 0; return try_catch_offset; } /* }}} */ @@ -2677,7 +2726,7 @@ void zend_do_first_catch(znode *open_parentheses TSRMLS_DC) /* {{{ */ } /* }}} */ -void zend_initialize_try_catch_element(const znode *try_token TSRMLS_DC) /* {{{ */ +void zend_initialize_try_catch_element(znode *catch_token TSRMLS_DC) /* {{{ */ { int jmp_op_number = get_next_op_number(CG(active_op_array)); zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC); @@ -2694,7 +2743,7 @@ void zend_initialize_try_catch_element(const znode *try_token TSRMLS_DC) /* {{{ zend_stack_top(&CG(bp_stack), (void **) &jmp_list_ptr); zend_llist_add_element(jmp_list_ptr, &jmp_op_number); - zend_add_catch_element(try_token->u.op.opline_num, get_next_op_number(CG(active_op_array)) TSRMLS_CC); + catch_token->EA = get_next_op_number(CG(active_op_array)); } /* }}} */ @@ -2720,7 +2769,11 @@ void zend_do_try(znode *try_token TSRMLS_DC) /* {{{ */ } /* }}} */ -void zend_do_begin_catch(znode *try_token, znode *class_name, znode *catch_var, znode *first_catch TSRMLS_DC) /* {{{ */ +void zend_do_finally(znode *finally_token TSRMLS_DC) /* {{{ */ { + finally_token->u.op.opline_num = get_next_op_number(CG(active_op_array)); +} /* }}} */ + +void zend_do_begin_catch(znode *catch_token, znode *class_name, znode *catch_var, znode *first_catch TSRMLS_DC) /* {{{ */ { long catch_op_number; zend_op *opline; @@ -2748,11 +2801,11 @@ void zend_do_begin_catch(znode *try_token, znode *class_name, znode *catch_var, Z_STRVAL(catch_var->u.constant) = (char*)CG(active_op_array)->vars[opline->op2.var].name; opline->result.num = 0; /* 1 means it's the last catch in the block */ - try_token->u.op.opline_num = catch_op_number; + catch_token->u.op.opline_num = catch_op_number; } /* }}} */ -void zend_do_end_catch(const znode *try_token TSRMLS_DC) /* {{{ */ +void zend_do_end_catch(znode *catch_token TSRMLS_DC) /* {{{ */ { int jmp_op_number = get_next_op_number(CG(active_op_array)); zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC); @@ -2766,7 +2819,35 @@ void zend_do_end_catch(const znode *try_token TSRMLS_DC) /* {{{ */ zend_stack_top(&CG(bp_stack), (void **) &jmp_list_ptr); zend_llist_add_element(jmp_list_ptr, &jmp_op_number); - CG(active_op_array)->opcodes[try_token->u.op.opline_num].extended_value = get_next_op_number(CG(active_op_array)); + CG(active_op_array)->opcodes[catch_token->u.op.opline_num].extended_value = get_next_op_number(CG(active_op_array)); +} +/* }}} */ + +void zend_do_bind_catch(znode *try_token, znode *catch_token TSRMLS_DC) /* {{{ */ { + if (catch_token->op_type != IS_UNUSED) { + zend_add_catch_element(try_token->u.op.opline_num, catch_token->EA TSRMLS_CC); + } +} +/* }}} */ + +void zend_do_end_finally(znode *try_token, znode* catch_token, znode *finally_token TSRMLS_DC) /* {{{ */ +{ + 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 = get_next_op(CG(active_op_array) TSRMLS_CC); + CG(active_op_array)->try_catch_array[try_token->u.op.opline_num].finally_op = finally_token->u.op.opline_num; + 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; + + opline->opcode = ZEND_LEAVE; + SET_UNUSED(opline->op1); + SET_UNUSED(opline->op2); + } + if (catch_token->op_type == IS_UNUSED) { + CG(active_op_array)->try_catch_array[try_token->u.op.opline_num].catch_op = 0; + } } /* }}} */ @@ -3885,7 +3966,7 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args, /* if it is 0, no modifieres has been changed */ if (aliases[i]->modifiers) { - fn_copy.common.fn_flags = aliases[i]->modifiers; + fn_copy.common.fn_flags = aliases[i]->modifiers | ZEND_ACC_ALIAS; if (!(aliases[i]->modifiers & ZEND_ACC_PPP_MASK)) { fn_copy.common.fn_flags |= ZEND_ACC_PUBLIC; } @@ -3926,7 +4007,7 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args, && (!aliases[i]->trait_method->ce || fn->common.scope == aliases[i]->trait_method->ce) && (aliases[i]->trait_method->mname_len == fnname_len) && (zend_binary_strcasecmp(aliases[i]->trait_method->method_name, aliases[i]->trait_method->mname_len, fn->common.function_name, fnname_len) == 0)) { - fn_copy.common.fn_flags = aliases[i]->modifiers; + fn_copy.common.fn_flags = aliases[i]->modifiers | ZEND_ACC_ALIAS; if (!(aliases[i]->modifiers & ZEND_ACC_PPP_MASK)) { fn_copy.common.fn_flags |= ZEND_ACC_PUBLIC; @@ -3975,8 +4056,10 @@ static void zend_traits_init_trait_structures(zend_class_entry *ce TSRMLS_DC) /* /** Resolve classes for all precedence operations. */ if (cur_precedence->exclude_from_classes) { cur_method_ref = cur_precedence->trait_method; - cur_precedence->trait_method->ce = zend_fetch_class(cur_method_ref->class_name, - cur_method_ref->cname_len, ZEND_FETCH_CLASS_TRAIT TSRMLS_CC); + if (!(cur_precedence->trait_method->ce = zend_fetch_class(cur_method_ref->class_name, cur_method_ref->cname_len, + ZEND_FETCH_CLASS_TRAIT|ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC))) { + zend_error(E_COMPILE_ERROR, "Could not find trait %s", cur_method_ref->class_name); + } /** Ensure that the prefered method is actually available. */ lcname = zend_str_tolower_dup(cur_method_ref->method_name, @@ -4003,7 +4086,9 @@ static void zend_traits_init_trait_structures(zend_class_entry *ce TSRMLS_DC) /* char* class_name = (char*)cur_precedence->exclude_from_classes[j]; zend_uint name_length = strlen(class_name); - cur_precedence->exclude_from_classes[j] = zend_fetch_class(class_name, name_length, ZEND_FETCH_CLASS_TRAIT TSRMLS_CC); + 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); + } /* make sure that the trait method is not from a class mentioned in exclude_from_classes, for consistency */ @@ -4030,7 +4115,9 @@ static void zend_traits_init_trait_structures(zend_class_entry *ce TSRMLS_DC) /* /** For all aliases with an explicit class name, resolve the class now. */ if (ce->trait_aliases[i]->trait_method->class_name) { cur_method_ref = ce->trait_aliases[i]->trait_method; - cur_method_ref->ce = zend_fetch_class(cur_method_ref->class_name, cur_method_ref->cname_len, ZEND_FETCH_CLASS_TRAIT TSRMLS_CC); + if (!(cur_method_ref->ce = zend_fetch_class(cur_method_ref->class_name, cur_method_ref->cname_len, ZEND_FETCH_CLASS_TRAIT|ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC))) { + zend_error(E_COMPILE_ERROR, "Could not find trait %s", cur_method_ref->class_name); + } /** And, ensure that the referenced method is resolvable, too. */ lcname = zend_str_tolower_dup(cur_method_ref->method_name, @@ -6099,7 +6186,16 @@ void zend_do_isset_or_isempty(int type, znode *result, znode *variable TSRMLS_DC zend_do_end_variable_parse(variable, BP_VAR_IS, 0 TSRMLS_CC); - zend_check_writable_variable(variable); + if (zend_is_function_or_method_call(variable)) { + if (type == ZEND_ISEMPTY) { + /* empty(func()) can be transformed to !func() */ + zend_do_unary_op(ZEND_BOOL_NOT, result, variable TSRMLS_CC); + } else { + zend_error(E_COMPILE_ERROR, "Cannot use isset() on the result of a function call (you can use \"null !== func()\" instead)"); + } + + return; + } if (variable->op_type == IS_CV) { last_op = get_next_op(CG(active_op_array) TSRMLS_CC); @@ -6246,15 +6342,18 @@ void zend_do_foreach_cont(znode *foreach_token, const znode *open_brackets_token opline->extended_value |= ZEND_FE_FETCH_WITH_KEY; } - if ((key->op_type != IS_UNUSED) && (key->EA & ZEND_PARSED_REFERENCE_VARIABLE)) { - zend_error(E_COMPILE_ERROR, "Key element cannot be a reference"); + if ((key->op_type != IS_UNUSED)) { + if (key->EA & ZEND_PARSED_REFERENCE_VARIABLE) { + zend_error(E_COMPILE_ERROR, "Key element cannot be a reference"); + } + if (key->EA & ZEND_PARSED_LIST_EXPR) { + zend_error(E_COMPILE_ERROR, "Cannot use list as key element"); + } } if (value->EA & ZEND_PARSED_REFERENCE_VARIABLE) { assign_by_ref = 1; - if (!(opline-1)->extended_value) { - zend_error(E_COMPILE_ERROR, "Cannot create references to elements of a temporary array expression"); - } + /* Mark extended_value for assign-by-reference */ opline->extended_value |= ZEND_FE_FETCH_BYREF; CG(active_op_array)->opcodes[foreach_token->u.op.opline_num].extended_value |= ZEND_FE_RESET_REFERENCE; @@ -6283,13 +6382,21 @@ void zend_do_foreach_cont(znode *foreach_token, const znode *open_brackets_token GET_NODE(&value_node, opline->result); - if (assign_by_ref) { - zend_do_end_variable_parse(value, BP_VAR_W, 0 TSRMLS_CC); - /* Mark FE_FETCH as IS_VAR as it holds the data directly as a value */ - zend_do_assign_ref(NULL, value, &value_node TSRMLS_CC); - } else { - zend_do_assign(&dummy, value, &value_node TSRMLS_CC); + if (value->EA & ZEND_PARSED_LIST_EXPR) { + if (!CG(list_llist).head) { + zend_error(E_COMPILE_ERROR, "Cannot use empty list"); + } + zend_do_list_end(&dummy, &value_node TSRMLS_CC); zend_do_free(&dummy TSRMLS_CC); + } else { + if (assign_by_ref) { + zend_do_end_variable_parse(value, BP_VAR_W, 0 TSRMLS_CC); + /* Mark FE_FETCH as IS_VAR as it holds the data directly as a value */ + zend_do_assign_ref(NULL, value, &value_node TSRMLS_CC); + } else { + zend_do_assign(&dummy, value, &value_node TSRMLS_CC); + zend_do_free(&dummy TSRMLS_CC); + } } if (key->op_type != IS_UNUSED) { @@ -6718,9 +6825,6 @@ again: case T_OPEN_TAG_WITH_ECHO: retval = T_ECHO; break; - case T_END_HEREDOC: - efree(Z_STRVAL(zendlval->u.constant)); - break; } INIT_PZVAL(&zendlval->u.constant); diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 79ace0c3c..77809dae5 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -80,7 +80,7 @@ typedef union _znode_op { zend_op *jmp_addr; zval *zv; zend_literal *literal; - void *ptr; /* Used for passing pointers from the compile to execution phase, currently used for traits */ + void *ptr; /* Used for passing pointers from the compile to execution phase, currently used for traits */ } znode_op; typedef struct _znode { /* used only during compilation */ @@ -132,6 +132,8 @@ typedef struct _zend_label { typedef struct _zend_try_catch_element { zend_uint try_op; zend_uint catch_op; /* ketchup! */ + zend_uint finally_op; + zend_uint finally_end; } zend_try_catch_element; #if SIZEOF_LONG == 8 @@ -194,6 +196,7 @@ typedef struct _zend_try_catch_element { #define ZEND_ACC_CLOSURE 0x100000 +#define ZEND_ACC_GENERATOR 0x800000 /* function flag for internal user call handlers __call, __callstatic */ #define ZEND_ACC_CALL_VIA_HANDLER 0x200000 @@ -281,6 +284,7 @@ struct _zend_op_array { zend_try_catch_element *try_catch_array; int last_try_catch; + zend_bool has_finally_block; /* static variables support */ HashTable *static_variables; @@ -383,6 +387,8 @@ struct _zend_execute_data { zend_class_entry *current_called_scope; zval *current_this; zval *current_object; + zend_uint leaving; + zend_uint leaving_dest; }; #define EX(element) execute_data.element @@ -491,6 +497,7 @@ void zend_do_build_full_name(znode *result, znode *prefix, znode *name, int is_c int zend_do_begin_class_member_function_call(znode *class_name, znode *method_name TSRMLS_DC); void zend_do_end_function_call(znode *function_name, znode *result, const znode *argument_list, int is_method, int is_dynamic_fcall TSRMLS_DC); void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC); +void zend_do_yield(znode *result, znode *value, const znode *key, zend_bool is_variable TSRMLS_DC); void zend_do_handle_exception(TSRMLS_D); void zend_do_begin_lambda_function_declaration(znode *result, znode *function_token, int return_reference, int is_static TSRMLS_DC); @@ -498,7 +505,10 @@ void zend_do_fetch_lexical_variable(znode *varname, zend_bool is_ref TSRMLS_DC); void zend_do_try(znode *try_token TSRMLS_DC); void zend_do_begin_catch(znode *try_token, znode *catch_class, znode *catch_var, znode *first_catch TSRMLS_DC); -void zend_do_end_catch(const znode *try_token TSRMLS_DC); +void zend_do_bind_catch(znode *try_token, znode *catch_token TSRMLS_DC); +void zend_do_end_catch(znode *catch_token TSRMLS_DC); +void zend_do_finally(znode *finally_token TSRMLS_DC); +void zend_do_end_finally(znode *try_token, znode* catch_token, znode *finally_token TSRMLS_DC); void zend_do_throw(const znode *expr TSRMLS_DC); ZEND_API int do_bind_function(const zend_op_array *op_array, zend_op *opline, HashTable *function_table, zend_bool compile_time); @@ -664,7 +674,7 @@ void print_op_array(zend_op_array *op_array, int optimizations); ZEND_API int pass_two(zend_op_array *op_array TSRMLS_DC); zend_brk_cont_element *get_next_brk_cont_element(zend_op_array *op_array); void zend_do_first_catch(znode *open_parentheses TSRMLS_DC); -void zend_initialize_try_catch_element(const znode *try_token TSRMLS_DC); +void zend_initialize_try_catch_element(znode *catch_token TSRMLS_DC); void zend_do_mark_last_catch(const znode *first_catch, const znode *last_additional_catch TSRMLS_DC); ZEND_API zend_bool zend_is_compiling(TSRMLS_D); ZEND_API char *zend_make_compiled_string_description(const char *name TSRMLS_DC); @@ -720,6 +730,7 @@ int zend_add_literal(zend_op_array *op_array, const zval *zv TSRMLS_DC); #define ZEND_PARSED_VARIABLE (1<<4) #define ZEND_PARSED_REFERENCE_VARIABLE (1<<5) #define ZEND_PARSED_NEW (1<<6) +#define ZEND_PARSED_LIST_EXPR (1<<7) /* unset types */ diff --git a/Zend/zend_default_classes.c b/Zend/zend_default_classes.c index 73a765811..bcc43ea7d 100644 --- a/Zend/zend_default_classes.c +++ b/Zend/zend_default_classes.c @@ -25,6 +25,7 @@ #include "zend_interfaces.h" #include "zend_exceptions.h" #include "zend_closures.h" +#include "zend_generators.h" ZEND_API void zend_register_default_classes(TSRMLS_D) @@ -33,6 +34,7 @@ ZEND_API void zend_register_default_classes(TSRMLS_D) zend_register_default_exception(TSRMLS_C); zend_register_iterator_wrapper(TSRMLS_C); zend_register_closure_ce(TSRMLS_C); + zend_register_generator_ce(TSRMLS_C); } /* diff --git a/Zend/zend_dtrace.c b/Zend/zend_dtrace.c index 5b2d0d2df..3d109deab 100644 --- a/Zend/zend_dtrace.c +++ b/Zend/zend_dtrace.c @@ -83,7 +83,7 @@ ZEND_API void dtrace_execute(zend_op_array *op_array TSRMLS_DC) } } -ZEND_API void dtrace_execute_internal(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC) +ZEND_API void dtrace_execute_internal(zend_execute_data *execute_data_ptr, zend_fcall_info *fci, int return_value_used TSRMLS_DC) { int lineno; char *filename; @@ -96,7 +96,7 @@ ZEND_API void dtrace_execute_internal(zend_execute_data *execute_data_ptr, int r DTRACE_EXECUTE_ENTRY(filename, lineno); } - execute_internal(execute_data_ptr, return_value_used TSRMLS_CC); + execute_internal(execute_data_ptr, fci, return_value_used TSRMLS_CC); if (DTRACE_EXECUTE_RETURN_ENABLED()) { DTRACE_EXECUTE_RETURN(filename, lineno); diff --git a/Zend/zend_dtrace.h b/Zend/zend_dtrace.h index 65d19ef34..49388e562 100644 --- a/Zend/zend_dtrace.h +++ b/Zend/zend_dtrace.h @@ -32,11 +32,11 @@ extern "C" { #ifdef HAVE_DTRACE ZEND_API zend_op_array *(*zend_dtrace_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC); ZEND_API void (*zend_dtrace_execute)(zend_op_array *op_array TSRMLS_DC); -ZEND_API void (*zend_dtrace_execute_internal)(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC); +ZEND_API void (*zend_dtrace_execute_internal)(zend_execute_data *execute_data_ptr, zend_fcall_info *fci, int return_value_used TSRMLS_DC); ZEND_API zend_op_array *dtrace_compile_file(zend_file_handle *file_handle, int type TSRMLS_DC); ZEND_API void dtrace_execute(zend_op_array *op_array TSRMLS_DC); -ZEND_API void dtrace_execute_internal(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC); +ZEND_API void dtrace_execute_internal(zend_execute_data *execute_data_ptr, zend_fcall_info *fci, int return_value_used TSRMLS_DC); #include <zend_dtrace_gen.h> #endif /* HAVE_DTRACE */ diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index fbc73258c..361afc6f1 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -35,6 +35,7 @@ #include "zend_exceptions.h" #include "zend_interfaces.h" #include "zend_closures.h" +#include "zend_generators.h" #include "zend_vm.h" #include "zend_dtrace.h" @@ -1474,10 +1475,18 @@ static int zend_check_symbol(zval **pz TSRMLS_DC) ZEND_API opcode_handler_t *zend_opcode_handlers; -ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC) +ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, zend_fcall_info *fci, int return_value_used TSRMLS_DC) { - zval **return_value_ptr = &(*(temp_variable *)((char *) execute_data_ptr->Ts + execute_data_ptr->opline->result.var)).var.ptr; - ((zend_internal_function *) execute_data_ptr->function_state.function)->handler(execute_data_ptr->opline->extended_value, *return_value_ptr, (execute_data_ptr->function_state.function->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)?return_value_ptr:NULL, execute_data_ptr->object, return_value_used TSRMLS_CC); + if(fci != NULL) { + ((zend_internal_function *) execute_data_ptr->function_state.function)->handler(fci->param_count, + *fci->retval_ptr_ptr, fci->retval_ptr_ptr, fci->object_ptr, 1 TSRMLS_CC); + + } else { + zval **return_value_ptr = &(*(temp_variable *)((char *) execute_data_ptr->Ts + execute_data_ptr->opline->result.var)).var.ptr; + ((zend_internal_function *) execute_data_ptr->function_state.function)->handler(execute_data_ptr->opline->extended_value, *return_value_ptr, + (execute_data_ptr->function_state.function->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)?return_value_ptr:NULL, + execute_data_ptr->object, return_value_used TSRMLS_CC); + } } #define ZEND_VM_NEXT_OPCODE() \ @@ -1512,7 +1521,7 @@ ZEND_API int zend_set_user_opcode_handler(zend_uchar opcode, user_opcode_handler { if (opcode != ZEND_USER_OPCODE) { if (handler == NULL) { - /* restore the original handler */ + /* restore the original handler */ zend_user_opcodes[opcode] = opcode; } else { zend_user_opcodes[opcode] = ZEND_USER_OPCODE; @@ -1536,6 +1545,50 @@ ZEND_API zval **zend_get_zval_ptr_ptr(int op_type, const znode_op *node, const t return get_zval_ptr_ptr(op_type, node, Ts, should_free, type); } +void zend_clean_and_cache_symbol_table(HashTable *symbol_table TSRMLS_DC) /* {{{ */ +{ + if (EG(symtable_cache_ptr) >= EG(symtable_cache_limit)) { + zend_hash_destroy(symbol_table); + FREE_HASHTABLE(symbol_table); + } else { + /* clean before putting into the cache, since clean + could call dtors, which could use cached hash */ + zend_hash_clean(symbol_table); + *(++EG(symtable_cache_ptr)) = symbol_table; + } +} +/* }}} */ + +void zend_free_compiled_variables(zval ***CVs, int num) /* {{{ */ +{ + int i; + for (i = 0; i < num; ++i) { + if (CVs[i]) { + zval_ptr_dtor(CVs[i]); + } + } +} +/* }}} */ + +void** zend_copy_arguments(void **arguments_end) /* {{{ */ +{ + int arguments_count = (int) (zend_uintptr_t) *arguments_end; + size_t arguments_size = (arguments_count + 1) * sizeof(void **); + void **arguments_start = arguments_end - arguments_count; + void **copied_arguments_start = emalloc(arguments_size); + void **copied_arguments_end = copied_arguments_start + arguments_count; + int i; + + memcpy(copied_arguments_start, arguments_start, arguments_size); + + for (i = 0; i < arguments_count; i++) { + Z_ADDREF_P((zval *) arguments_start[i]); + } + + return copied_arguments_end; +} +/* }}} */ + /* * Local variables: * tab-width: 4 diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h index 7d427388b..4594eba9e 100644 --- a/Zend/zend_execute.h +++ b/Zend/zend_execute.h @@ -5,7 +5,7 @@ | Copyright (c) 1998-2012 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 | @@ -49,14 +49,17 @@ typedef union _temp_variable { BEGIN_EXTERN_C() +struct _zend_fcall_info; ZEND_API extern void (*zend_execute)(zend_op_array *op_array TSRMLS_DC); -ZEND_API extern void (*zend_execute_internal)(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC); +ZEND_API extern void (*zend_execute_internal)(zend_execute_data *execute_data_ptr, struct _zend_fcall_info *fci, int return_value_used TSRMLS_DC); void init_executor(TSRMLS_D); void shutdown_executor(TSRMLS_D); void shutdown_destructors(TSRMLS_D); +zend_execute_data *zend_create_execute_data_from_op_array(zend_op_array *op_array, zend_bool nested TSRMLS_DC); ZEND_API void execute(zend_op_array *op_array TSRMLS_DC); -ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC); +ZEND_API void execute_ex(zend_execute_data *execute_data TSRMLS_DC); +ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, struct _zend_fcall_info *fci, int return_value_used TSRMLS_DC); ZEND_API int zend_is_true(zval *op); #define safe_free_zval_ptr(p) safe_free_zval_ptr_rel(p ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) static zend_always_inline void safe_free_zval_ptr_rel(zval *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) @@ -270,7 +273,7 @@ static zend_always_inline void *zend_vm_stack_alloc(size_t size TSRMLS_DC) } static zend_always_inline void zend_vm_stack_free_int(void *ptr TSRMLS_DC) -{ +{ if (UNEXPECTED(ZEND_VM_STACK_ELEMETS(EG(argument_stack)) == (void**)ptr)) { zend_vm_stack p = EG(argument_stack); @@ -282,7 +285,7 @@ static zend_always_inline void zend_vm_stack_free_int(void *ptr TSRMLS_DC) } static zend_always_inline void zend_vm_stack_free(void *ptr TSRMLS_DC) -{ +{ if (UNEXPECTED(ZEND_VM_STACK_ELEMETS(EG(argument_stack)) == (void**)ptr)) { zend_vm_stack p = EG(argument_stack); @@ -302,7 +305,7 @@ static zend_always_inline void zend_vm_stack_free(void *ptr TSRMLS_DC) static zend_always_inline void** zend_vm_stack_push_args(int count TSRMLS_DC) { - if (UNEXPECTED(EG(argument_stack)->top - ZEND_VM_STACK_ELEMETS(EG(argument_stack)) < count) || + if (UNEXPECTED(EG(argument_stack)->top - ZEND_VM_STACK_ELEMETS(EG(argument_stack)) < count) || UNEXPECTED(EG(argument_stack)->top == EG(argument_stack)->end)) { zend_vm_stack p = EG(argument_stack); @@ -431,6 +434,10 @@ ZEND_API zval **zend_get_zval_ptr_ptr(int op_type, const znode_op *node, const t ZEND_API int zend_do_fcall(ZEND_OPCODE_HANDLER_ARGS); +void zend_clean_and_cache_symbol_table(HashTable *symbol_table TSRMLS_DC); +void zend_free_compiled_variables(zval ***CVs, int num); +void **zend_copy_arguments(void **arguments_end); + #define CACHED_PTR(num) \ EG(active_op_array)->run_time_cache[(num)] diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 1deee2a86..9787966f2 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -31,6 +31,7 @@ #include "zend_extensions.h" #include "zend_exceptions.h" #include "zend_closures.h" +#include "zend_generators.h" #include "zend_vm.h" #include "zend_float.h" #ifdef HAVE_SYS_TIME_H @@ -38,7 +39,7 @@ #endif ZEND_API void (*zend_execute)(zend_op_array *op_array TSRMLS_DC); -ZEND_API void (*zend_execute_internal)(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC); +ZEND_API void (*zend_execute_internal)(zend_execute_data *execute_data_ptr, zend_fcall_info *fci, int return_value_used TSRMLS_DC); /* true globals */ ZEND_API const zend_fcall_info empty_fcall_info = { 0, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0 }; @@ -406,7 +407,7 @@ ZEND_API const char *zend_get_executed_filename(TSRMLS_D) /* {{{ */ ZEND_API uint zend_get_executed_lineno(TSRMLS_D) /* {{{ */ { - if(EG(exception) && EG(opline_ptr) && active_opline->opcode == ZEND_HANDLE_EXCEPTION && + if(EG(exception) && EG(opline_ptr) && active_opline->opcode == ZEND_HANDLE_EXCEPTION && active_opline->lineno == 0 && EG(opline_before_exception)) { return EG(opline_before_exception)->lineno; } @@ -600,7 +601,7 @@ ZEND_API int zval_update_constant_ex(zval **pp, void *arg, zend_class_entry *sco zend_hash_init(tmp_ht, zend_hash_num_elements(Z_ARRVAL_P(p)), NULL, ZVAL_PTR_DTOR, 0); zend_hash_copy(tmp_ht, Z_ARRVAL_P(p), (copy_ctor_func_t) zval_deep_copy, (void *) &tmp, sizeof(zval *)); Z_ARRVAL_P(p) = tmp_ht; - } + } /* First go over the array and see if there are any constant indices */ zend_hash_internal_pointer_reset(Z_ARRVAL_P(p)); @@ -955,17 +956,15 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS EG(return_value_ptr_ptr) = fci->retval_ptr_ptr; EG(active_op_array) = (zend_op_array *) EX(function_state).function; original_opline_ptr = EG(opline_ptr); - zend_execute(EG(active_op_array) TSRMLS_CC); + + if (EG(active_op_array)->fn_flags & ZEND_ACC_GENERATOR) { + *fci->retval_ptr_ptr = zend_generator_create_zval(EG(active_op_array) TSRMLS_CC); + } else { + zend_execute(EG(active_op_array) TSRMLS_CC); + } + if (!fci->symbol_table && EG(active_symbol_table)) { - if (EG(symtable_cache_ptr)>=EG(symtable_cache_limit)) { - zend_hash_destroy(EG(active_symbol_table)); - FREE_HASHTABLE(EG(active_symbol_table)); - } else { - /* clean before putting into the cache, since clean - could call dtors, which could use cached hash */ - zend_hash_clean(EG(active_symbol_table)); - *(++EG(symtable_cache_ptr)) = EG(active_symbol_table); - } + zend_clean_and_cache_symbol_table(EG(active_symbol_table) TSRMLS_CC); } EG(active_symbol_table) = calling_symbol_table; EG(active_op_array) = original_op_array; @@ -977,7 +976,12 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS if (EX(function_state).function->common.scope) { EG(scope) = EX(function_state).function->common.scope; } - ((zend_internal_function *) EX(function_state).function)->handler(fci->param_count, *fci->retval_ptr_ptr, fci->retval_ptr_ptr, fci->object_ptr, 1 TSRMLS_CC); + if(EXPECTED(zend_execute_internal == NULL)) { + /* saves one function call if zend_execute_internal is not used */ + ((zend_internal_function *) EX(function_state).function)->handler(fci->param_count, *fci->retval_ptr_ptr, fci->retval_ptr_ptr, fci->object_ptr, 1 TSRMLS_CC); + } else { + zend_execute_internal(&execute_data, fci, 1 TSRMLS_CC); + } /* We shouldn't fix bad extensions here, because it can break proper ones (Bug #34045) if (!EX(function_state).function->common.return_reference) @@ -1312,9 +1316,9 @@ void execute_new_code(TSRMLS_D) /* {{{ */ ZEND_VM_SET_OPCODE_HANDLER(opline); opline++; } - + zend_release_labels(TSRMLS_C); - + EG(return_value_ptr_ptr) = NULL; EG(active_op_array) = CG(active_op_array); orig_interactive = CG(interactive); @@ -1337,11 +1341,11 @@ ZEND_API void zend_timeout(int dummy) /* {{{ */ if (zend_on_timeout) { #ifdef ZEND_SIGNALS - /* + /* We got here because we got a timeout signal, so we are in a signal handler at this point. However, we want to be able to timeout any user-supplied shutdown functions, so pretend we are not in a signal handler while we are - calling these + calling these */ SIGG(running) = 0; #endif @@ -1590,7 +1594,7 @@ check_fetch_type: zend_error(E_ERROR, "Trait '%s' not found", class_name); } else { zend_error(E_ERROR, "Class '%s' not found", class_name); - } + } } } return NULL; @@ -1613,7 +1617,7 @@ zend_class_entry *zend_fetch_class_by_name(const char *class_name, uint class_na zend_error(E_ERROR, "Trait '%s' not found", class_name); } else { zend_error(E_ERROR, "Class '%s' not found", class_name); - } + } } } return NULL; @@ -1754,7 +1758,7 @@ ZEND_API void zend_rebuild_symbol_table(TSRMLS_D) /* {{{ */ zend_execute_data *ex; if (!EG(active_symbol_table)) { - + /* Search for last called user function */ ex = EG(current_execute_data); while (ex && !ex->op_array) { diff --git a/Zend/zend_extensions.h b/Zend/zend_extensions.h index b3f510ac1..703e03c3f 100644 --- a/Zend/zend_extensions.h +++ b/Zend/zend_extensions.h @@ -28,7 +28,7 @@ /* The first number is the engine version and the rest is the date. * This way engine 2/3 API no. is always greater than engine 1 API no.. */ -#define ZEND_EXTENSION_API_NO 220100525 +#define ZEND_EXTENSION_API_NO 220121113 typedef struct _zend_extension_version_info { int zend_extension_api_no; diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c new file mode 100644 index 000000000..87f0644e8 --- /dev/null +++ b/Zend/zend_generators.c @@ -0,0 +1,916 @@ +/* + +----------------------------------------------------------------------+ + | Zend Engine | + +----------------------------------------------------------------------+ + | Copyright (c) 1998-2012 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: Nikita Popov <nikic@php.net> | + +----------------------------------------------------------------------+ +*/ + +/* $Id$ */ + +#include "zend.h" +#include "zend_API.h" +#include "zend_interfaces.h" +#include "zend_exceptions.h" +#include "zend_generators.h" + +ZEND_API zend_class_entry *zend_ce_generator; +static zend_object_handlers zend_generator_handlers; + +void zend_generator_close(zend_generator *generator, zend_bool finished_execution TSRMLS_DC) /* {{{ */ +{ + if (generator->execute_data) { + 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->leaving = ZEND_RETURN; + generator->flags |= ZEND_GENERATOR_FORCED_CLOSE; + zend_generator_resume(generator TSRMLS_CC); + return; + } + } + } + + if (!execute_data->symbol_table) { + zend_free_compiled_variables(execute_data->CVs, op_array->last_var); + } else { + zend_clean_and_cache_symbol_table(execute_data->symbol_table TSRMLS_CC); + } + + if (execute_data->current_this) { + zval_ptr_dtor(&execute_data->current_this); + } + + if (execute_data->object) { + zval_ptr_dtor(&execute_data->object); + } + + /* If the generator is closed before it can finish execution (reach + * a return statement) we have to free loop variables manually, as + * we don't know whether the SWITCH_FREE / FREE opcodes have run */ + if (!finished_execution) { + /* -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; + + int i; + for (i = 0; i < op_array->last_brk_cont; ++i) { + zend_brk_cont_element *brk_cont = op_array->brk_cont_array + i; + + if (brk_cont->start < 0) { + continue; + } else if (brk_cont->start > op_num) { + break; + } else if (brk_cont->brk > op_num) { + zend_op *brk_opline = op_array->opcodes + brk_cont->brk; + + switch (brk_opline->opcode) { + case ZEND_SWITCH_FREE: + { + temp_variable *var = (temp_variable *) ((char *) execute_data->Ts + brk_opline->op1.var); + zval_ptr_dtor(&var->var.ptr); + } + break; + case ZEND_FREE: + { + temp_variable *var = (temp_variable *) ((char *) execute_data->Ts + brk_opline->op1.var); + zval_dtor(&var->tmp_var); + } + break; + } + } + } + } + + /* Clear any backed up stack arguments */ + if (generator->backed_up_stack) { + zval **zvals = (zval **) generator->backed_up_stack; + size_t zval_num = generator->backed_up_stack_size / sizeof(zval *); + int i; + + for (i = 0; i < zval_num; i++) { + zval_ptr_dtor(&zvals[i]); + } + + efree(generator->backed_up_stack); + } + + if (generator->backed_up_arg_types_stack) { + /* The arg types stack contains three elements per call: fbc, object + * and called_scope. Here we traverse the stack from top to bottom + * and dtor the object. */ + int i = generator->backed_up_arg_types_stack_count / 3; + while (i--) { + zval *object = (zval *) generator->backed_up_arg_types_stack[3*i + 1]; + if (object) { + zval_ptr_dtor(&object); + } + } + + efree(generator->backed_up_arg_types_stack); + } + + /* We have added an additional stack frame in prev_execute_data, so we + * have to free it. It also contains the arguments passed to the + * generator (for func_get_args) so those have to be freed too. */ + { + zend_execute_data *prev_execute_data = execute_data->prev_execute_data; + void **arguments = prev_execute_data->function_state.arguments; + + if (arguments) { + int arguments_count = (int) (zend_uintptr_t) *arguments; + zval **arguments_start = (zval **) (arguments - arguments_count); + int i; + + for (i = 0; i < arguments_count; ++i) { + zval_ptr_dtor(arguments_start + i); + } + + efree(arguments_start); + } + + efree(prev_execute_data); + } + + /* Free a clone of closure */ + if (op_array->fn_flags & ZEND_ACC_CLOSURE) { + destroy_op_array(op_array TSRMLS_CC); + efree(op_array); + } + + efree(execute_data); + generator->execute_data = NULL; + } + + if (generator->value) { + zval_ptr_dtor(&generator->value); + generator->value = NULL; + } + + if (generator->key) { + zval_ptr_dtor(&generator->key); + generator->key = NULL; + } +} +/* }}} */ + +static void zend_generator_free_storage(zend_generator *generator TSRMLS_DC) /* {{{ */ +{ + zend_generator_close(generator, 0 TSRMLS_CC); + + zend_object_std_dtor(&generator->std TSRMLS_CC); + efree(generator); +} +/* }}} */ + +static void zend_generator_clone_storage(zend_generator *orig, zend_generator **clone_ptr) /* {{{ */ +{ + zend_generator *clone = emalloc(sizeof(zend_generator)); + memcpy(clone, orig, sizeof(zend_generator)); + + if (orig->execute_data) { + /* Create a few shorter aliases to the old execution data */ + zend_execute_data *execute_data = orig->execute_data; + zend_op_array *op_array = execute_data->op_array; + HashTable *symbol_table = execute_data->symbol_table; + + /* Alloc separate execution context, as well as separate sections for + * compiled variables and temporary variables */ + size_t execute_data_size = ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data)); + size_t CVs_size = ZEND_MM_ALIGNED_SIZE(sizeof(zval **) * op_array->last_var * (symbol_table ? 1 : 2)); + size_t Ts_size = ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * op_array->T; + size_t total_size = execute_data_size + CVs_size + Ts_size; + + clone->execute_data = emalloc(total_size); + + /* Copy the zend_execute_data struct */ + memcpy(clone->execute_data, execute_data, execute_data_size); + + /* Set the pointers to the memory segments for the compiled and + * temporary variables (which are located after the execute_data) */ + clone->execute_data->CVs = (zval ***) ((char *) clone->execute_data + execute_data_size); + clone->execute_data->Ts = (temp_variable *) ((char *) clone->execute_data->CVs + CVs_size); + + /* Zero out the compiled variables section */ + memset(clone->execute_data->CVs, 0, sizeof(zval **) * op_array->last_var); + + if (!symbol_table) { + int i; + + /* Copy compiled variables */ + for (i = 0; i < op_array->last_var; i++) { + if (execute_data->CVs[i]) { + clone->execute_data->CVs[i] = (zval **) clone->execute_data->CVs + op_array->last_var + i; + *clone->execute_data->CVs[i] = (zval *) orig->execute_data->CVs[op_array->last_var + i]; + Z_ADDREF_PP(clone->execute_data->CVs[i]); + } + } + } else { + /* Copy symbol table */ + ALLOC_HASHTABLE(clone->execute_data->symbol_table); + zend_hash_init(clone->execute_data->symbol_table, zend_hash_num_elements(symbol_table), NULL, ZVAL_PTR_DTOR, 0); + zend_hash_copy(clone->execute_data->symbol_table, symbol_table, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *)); + + /* Update zval** pointers for compiled variables */ + { + int i; + for (i = 0; i < op_array->last_var; i++) { + if (zend_hash_quick_find(clone->execute_data->symbol_table, op_array->vars[i].name, op_array->vars[i].name_len + 1, op_array->vars[i].hash_value, (void **) &clone->execute_data->CVs[i]) == FAILURE) { + clone->execute_data->CVs[i] = NULL; + } + } + } + } + + /* Copy the temporary variables */ + memcpy(clone->execute_data->Ts, orig->execute_data->Ts, Ts_size); + + /* Add references to loop variables */ + { + zend_uint op_num = execute_data->opline - op_array->opcodes; + + int i; + for (i = 0; i < op_array->last_brk_cont; ++i) { + zend_brk_cont_element *brk_cont = op_array->brk_cont_array + i; + + if (brk_cont->start < 0) { + continue; + } else if (brk_cont->start > op_num) { + break; + } else if (brk_cont->brk > op_num) { + zend_op *brk_opline = op_array->opcodes + brk_cont->brk; + + if (brk_opline->opcode == ZEND_SWITCH_FREE) { + temp_variable *var = (temp_variable *) ((char *) execute_data->Ts + brk_opline->op1.var); + + Z_ADDREF_P(var->var.ptr); + } + } + } + } + + if (orig->backed_up_stack) { + /* Copy backed up stack */ + clone->backed_up_stack = emalloc(orig->backed_up_stack_size); + memcpy(clone->backed_up_stack, orig->backed_up_stack, orig->backed_up_stack_size); + + /* Add refs to stack variables */ + { + zval **zvals = (zval **) orig->backed_up_stack; + size_t zval_num = orig->backed_up_stack_size / sizeof(zval *); + int i; + + for (i = 0; i < zval_num; i++) { + Z_ADDREF_P(zvals[i]); + } + } + } + + if (orig->backed_up_arg_types_stack) { + size_t stack_size = orig->backed_up_arg_types_stack_count * sizeof(void *); + + clone->backed_up_arg_types_stack = emalloc(stack_size); + memcpy(clone->backed_up_arg_types_stack, orig->backed_up_arg_types_stack, stack_size); + + /* We have to add refs to the objects in the arg types stack (the + * object is always the second element of a three-pack. */ + { + int i, stack_frames = clone->backed_up_arg_types_stack_count / 3; + for (i = 0; i < stack_frames; i++) { + zval *object = (zval *) clone->backed_up_arg_types_stack[3*i + 1]; + if (object) { + Z_ADDREF_P(object); + } + } + } + } + + /* Update the send_target to use the temporary variable with the same + * offset as the original generator, but in our temporary variable + * memory segment. */ + if (orig->send_target) { + size_t offset = (char *) orig->send_target - (char *) execute_data->Ts; + clone->send_target = (temp_variable *) ( + (char *) clone->execute_data->Ts + offset + ); + Z_ADDREF_P(clone->send_target->var.ptr); + } + + if (execute_data->current_this) { + Z_ADDREF_P(execute_data->current_this); + } + + if (execute_data->object) { + Z_ADDREF_P(execute_data->object); + } + + /* Prev execute data contains an additional stack frame (for proper + * backtraces) which has to be copied. */ + clone->execute_data->prev_execute_data = emalloc(sizeof(zend_execute_data)); + memcpy(clone->execute_data->prev_execute_data, execute_data->prev_execute_data, sizeof(zend_execute_data)); + + /* It also contains the arguments passed to the generator, which also + * have to be copied */ + if (execute_data->prev_execute_data->function_state.arguments) { + clone->execute_data->prev_execute_data->function_state.arguments + = zend_copy_arguments(execute_data->prev_execute_data->function_state.arguments); + } + } + + /* The value and key are known not to be references, so simply add refs */ + if (orig->value) { + Z_ADDREF_P(orig->value); + } + + if (orig->key) { + Z_ADDREF_P(orig->key); + } + + *clone_ptr = clone; +} +/* }}} */ + +static zend_object_value zend_generator_create(zend_class_entry *class_type TSRMLS_DC) /* {{{ */ +{ + zend_generator *generator; + zend_object_value object; + + generator = emalloc(sizeof(zend_generator)); + memset(generator, 0, sizeof(zend_generator)); + + /* The key will be incremented on first use, so it'll start at 0 */ + generator->largest_used_integer_key = -1; + + zend_object_std_init(&generator->std, class_type TSRMLS_CC); + + object.handle = zend_objects_store_put(generator, NULL, + (zend_objects_free_object_storage_t) zend_generator_free_storage, + (zend_objects_store_clone_t) zend_generator_clone_storage + TSRMLS_CC + ); + object.handlers = &zend_generator_handlers; + + return object; +} +/* }}} */ + +/* Requires globals EG(scope), EG(current_scope), EG(This), + * EG(active_symbol_table) and EG(current_execute_data). */ +zval *zend_generator_create_zval(zend_op_array *op_array TSRMLS_DC) /* {{{ */ +{ + zval *return_value; + zend_generator *generator; + zend_execute_data *current_execute_data; + zend_op **opline_ptr; + zend_execute_data *execute_data; + + /* Create a clone of closure, because it may be destroyed */ + if (op_array->fn_flags & ZEND_ACC_CLOSURE) { + zend_op_array *op_array_copy = (zend_op_array*)emalloc(sizeof(zend_op_array)); + *op_array_copy = *op_array; + function_add_ref((zend_function *) op_array_copy); + op_array = op_array_copy; + } + + /* Create new execution context. We have to back up and restore + * EG(current_execute_data) and EG(opline_ptr) here because the function + * modifies it. */ + current_execute_data = EG(current_execute_data); + opline_ptr = EG(opline_ptr); + execute_data = zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC); + EG(current_execute_data) = current_execute_data; + EG(opline_ptr) = opline_ptr; + + ALLOC_INIT_ZVAL(return_value); + object_init_ex(return_value, zend_ce_generator); + + if (EG(This)) { + Z_ADDREF_P(EG(This)); + } + + /* Back up executor globals. */ + execute_data->current_scope = EG(scope); + execute_data->current_called_scope = EG(called_scope); + execute_data->symbol_table = EG(active_symbol_table); + execute_data->current_this = EG(This); + + /* Save execution context in generator object. */ + generator = (zend_generator *) zend_object_store_get_object(return_value TSRMLS_CC); + generator->execute_data = execute_data; + + /* We have to add another stack frame so the generator function shows + * up in backtraces and func_get_all() can access the function + * arguments. */ + execute_data->prev_execute_data = emalloc(sizeof(zend_execute_data)); + memset(execute_data->prev_execute_data, 0, sizeof(zend_execute_data)); + execute_data->prev_execute_data->function_state.function = (zend_function *) op_array; + if (EG(current_execute_data)) { + execute_data->prev_execute_data->function_state.arguments = zend_copy_arguments(EG(current_execute_data)->function_state.arguments); + } else { + execute_data->prev_execute_data->function_state.arguments = NULL; + } + + return return_value; +} +/* }}} */ + +static zend_function *zend_generator_get_constructor(zval *object TSRMLS_DC) /* {{{ */ +{ + zend_error(E_RECOVERABLE_ERROR, "The \"Generator\" class is reserved for internal use and cannot be manually instantiated"); + + return NULL; +} +/* }}} */ + +void zend_generator_resume(zend_generator *generator TSRMLS_DC) /* {{{ */ +{ + if (EG(exception)) { + return; + } + + /* The generator is already closed, thus can't resume */ + if (!generator->execute_data) { + return; + } + + if (generator->flags & ZEND_GENERATOR_CURRENTLY_RUNNING) { + zend_error(E_ERROR, "Cannot resume an already running generator"); + } + + /* Drop the AT_FIRST_YIELD flag */ + generator->flags &= ~ZEND_GENERATOR_AT_FIRST_YIELD; + + { + /* Backup executor globals */ + zval **original_return_value_ptr_ptr = EG(return_value_ptr_ptr); + zend_execute_data *original_execute_data = EG(current_execute_data); + zend_op **original_opline_ptr = EG(opline_ptr); + zend_op_array *original_active_op_array = EG(active_op_array); + HashTable *original_active_symbol_table = EG(active_symbol_table); + zval *original_This = EG(This); + zend_class_entry *original_scope = EG(scope); + zend_class_entry *original_called_scope = EG(called_scope); + int original_arg_types_stack_count = EG(arg_types_stack).top; + + /* Remember the current stack position so we can back up pushed args */ + generator->original_stack_top = zend_vm_stack_top(TSRMLS_C); + + /* If there is a backed up stack copy it to the VM stack */ + if (generator->backed_up_stack) { + void *stack = zend_vm_stack_alloc(generator->backed_up_stack_size TSRMLS_CC); + memcpy(stack, generator->backed_up_stack, generator->backed_up_stack_size); + efree(generator->backed_up_stack); + generator->backed_up_stack = NULL; + } + + if (generator->backed_up_arg_types_stack) { + zend_ptr_stack_push_from_memory( + &EG(arg_types_stack), + generator->backed_up_arg_types_stack_count, + generator->backed_up_arg_types_stack + ); + efree(generator->backed_up_arg_types_stack); + generator->backed_up_arg_types_stack = NULL; + } + + /* We (mis)use the return_value_ptr_ptr to provide the generator object + * to the executor, so YIELD will be able to set the yielded value */ + EG(return_value_ptr_ptr) = (zval **) generator; + + /* Set executor globals */ + EG(current_execute_data) = generator->execute_data; + EG(opline_ptr) = &generator->execute_data->opline; + EG(active_op_array) = generator->execute_data->op_array; + EG(active_symbol_table) = generator->execute_data->symbol_table; + EG(This) = generator->execute_data->current_this; + EG(scope) = generator->execute_data->current_scope; + EG(called_scope) = generator->execute_data->current_called_scope; + + /* We want the backtrace to look as if the generator function was + * called from whatever method we are current running (e.g. next()). + * The first prev_execute_data contains an additional stack frame, + * which makes the generator function show up in the backtrace and + * makes the arguments available to func_get_args(). So we have to + * set the prev_execute_data of that prev_execute_data :) */ + generator->execute_data->prev_execute_data->prev_execute_data = original_execute_data; + + /* Resume execution */ + generator->flags |= ZEND_GENERATOR_CURRENTLY_RUNNING; + execute_ex(generator->execute_data TSRMLS_CC); + generator->flags &= ~ZEND_GENERATOR_CURRENTLY_RUNNING; + + /* Restore executor globals */ + EG(return_value_ptr_ptr) = original_return_value_ptr_ptr; + EG(current_execute_data) = original_execute_data; + EG(opline_ptr) = original_opline_ptr; + EG(active_op_array) = original_active_op_array; + EG(active_symbol_table) = original_active_symbol_table; + EG(This) = original_This; + EG(scope) = original_scope; + EG(called_scope) = original_called_scope; + + /* The stack top before and after the execution differ, i.e. there are + * arguments pushed to the stack. */ + if (generator->original_stack_top != zend_vm_stack_top(TSRMLS_C)) { + generator->backed_up_stack_size = (zend_vm_stack_top(TSRMLS_C) - generator->original_stack_top) * sizeof(void *); + generator->backed_up_stack = emalloc(generator->backed_up_stack_size); + memcpy(generator->backed_up_stack, generator->original_stack_top, generator->backed_up_stack_size); + zend_vm_stack_free(generator->original_stack_top TSRMLS_CC); + } + + if (original_arg_types_stack_count != EG(arg_types_stack).top) { + generator->backed_up_arg_types_stack_count = + EG(arg_types_stack).top - original_arg_types_stack_count; + + generator->backed_up_arg_types_stack = emalloc(generator->backed_up_arg_types_stack_count * sizeof(void *)); + zend_ptr_stack_pop_into_memory( + &EG(arg_types_stack), + generator->backed_up_arg_types_stack_count, + generator->backed_up_arg_types_stack + ); + } + + /* If an exception was thrown in the generator we have to internally + * rethrow it in the parent scope. */ + if (UNEXPECTED(EG(exception) != NULL)) { + zend_throw_exception_internal(NULL TSRMLS_CC); + } + } +} +/* }}} */ + +static void zend_generator_ensure_initialized(zend_generator *generator TSRMLS_DC) /* {{{ */ +{ + if (generator->execute_data && !generator->value) { + zend_generator_resume(generator TSRMLS_CC); + generator->flags |= ZEND_GENERATOR_AT_FIRST_YIELD; + } +} +/* }}} */ + +static void zend_generator_rewind(zend_generator *generator TSRMLS_DC) /* {{{ */ +{ + zend_generator_ensure_initialized(generator TSRMLS_CC); + + if (!(generator->flags & ZEND_GENERATOR_AT_FIRST_YIELD)) { + zend_throw_exception(NULL, "Cannot rewind a generator that was already run", 0 TSRMLS_CC); + } +} +/* }}} */ + +/* {{{ proto void Generator::rewind() + * Rewind the generator */ +ZEND_METHOD(Generator, rewind) +{ + zend_generator *generator; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + generator = (zend_generator *) zend_object_store_get_object(getThis() TSRMLS_CC); + + zend_generator_rewind(generator TSRMLS_CC); +} +/* }}} */ + +/* {{{ proto bool Generator::valid() + * Check whether the generator is valid */ +ZEND_METHOD(Generator, valid) +{ + zend_generator *generator; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + generator = (zend_generator *) zend_object_store_get_object(getThis() TSRMLS_CC); + + zend_generator_ensure_initialized(generator TSRMLS_CC); + + RETURN_BOOL(generator->value != NULL); +} +/* }}} */ + +/* {{{ proto mixed Generator::current() + * Get the current value */ +ZEND_METHOD(Generator, current) +{ + zend_generator *generator; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + generator = (zend_generator *) zend_object_store_get_object(getThis() TSRMLS_CC); + + zend_generator_ensure_initialized(generator TSRMLS_CC); + + if (generator->value) { + RETURN_ZVAL(generator->value, 1, 0); + } +} +/* }}} */ + +/* {{{ proto mixed Generator::key() + * Get the current key */ +ZEND_METHOD(Generator, key) +{ + zend_generator *generator; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + generator = (zend_generator *) zend_object_store_get_object(getThis() TSRMLS_CC); + + zend_generator_ensure_initialized(generator TSRMLS_CC); + + if (generator->key) { + RETURN_ZVAL(generator->key, 1, 0); + } +} +/* }}} */ + +/* {{{ proto void Generator::next() + * Advances the generator */ +ZEND_METHOD(Generator, next) +{ + zend_generator *generator; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + generator = (zend_generator *) zend_object_store_get_object(getThis() TSRMLS_CC); + + zend_generator_ensure_initialized(generator TSRMLS_CC); + + zend_generator_resume(generator TSRMLS_CC); +} +/* }}} */ + +/* {{{ proto mixed Generator::send() + * Sends a value to the generator */ +ZEND_METHOD(Generator, send) +{ + zval *value; + zend_generator *generator; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &value) == FAILURE) { + return; + } + + generator = (zend_generator *) zend_object_store_get_object(getThis() TSRMLS_CC); + + zend_generator_ensure_initialized(generator TSRMLS_CC); + + /* The generator is already closed, thus can't send anything */ + if (!generator->execute_data) { + return; + } + + /* The sent value was initialized to NULL, so dtor that */ + zval_ptr_dtor(&generator->send_target->var.ptr); + + /* Set new sent value */ + Z_ADDREF_P(value); + generator->send_target->var.ptr = value; + generator->send_target->var.ptr_ptr = &value; + + zend_generator_resume(generator TSRMLS_CC); + + if (generator->value) { + RETURN_ZVAL(generator->value, 1, 0); + } +} +/* }}} */ + +/* {{{ proto void Generator::__wakeup() + * Throws an Exception as generators can't be serialized */ +ZEND_METHOD(Generator, __wakeup) +{ + /* Just specifying the zend_class_unserialize_deny handler is not enough, + * because it is only invoked for C unserialization. For O the error has + * to be thrown in __wakeup. */ + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + zend_throw_exception(NULL, "Unserialization of 'Generator' is not allowed", 0 TSRMLS_CC); +} +/* }}} */ + +/* get_iterator implementation */ + +typedef struct _zend_generator_iterator { + zend_object_iterator intern; + + /* The generator object zval has to be stored, because the iterator is + * holding a ref to it, which has to be dtored. */ + zval *object; +} zend_generator_iterator; + +static void zend_generator_iterator_dtor(zend_object_iterator *iterator TSRMLS_DC) /* {{{ */ +{ + zval *object = ((zend_generator_iterator *) iterator)->object; + + zval_ptr_dtor(&object); + + efree(iterator); +} +/* }}} */ + +static int zend_generator_iterator_valid(zend_object_iterator *iterator TSRMLS_DC) /* {{{ */ +{ + zend_generator *generator = (zend_generator *) iterator->data; + + zend_generator_ensure_initialized(generator TSRMLS_CC); + + return generator->value != NULL ? SUCCESS : FAILURE; +} +/* }}} */ + +static void zend_generator_iterator_get_data(zend_object_iterator *iterator, zval ***data TSRMLS_DC) /* {{{ */ +{ + zend_generator *generator = (zend_generator *) iterator->data; + + zend_generator_ensure_initialized(generator TSRMLS_CC); + + if (generator->value) { + *data = &generator->value; + } else { + *data = NULL; + } +} +/* }}} */ + +static int zend_generator_iterator_get_key(zend_object_iterator *iterator, char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC) /* {{{ */ +{ + zend_generator *generator = (zend_generator *) iterator->data; + + zend_generator_ensure_initialized(generator TSRMLS_CC); + + if (!generator->key) { + return HASH_KEY_NON_EXISTANT; + } + + if (Z_TYPE_P(generator->key) == IS_LONG) { + *int_key = Z_LVAL_P(generator->key); + return HASH_KEY_IS_LONG; + } + + if (Z_TYPE_P(generator->key) == IS_STRING) { + *str_key = estrndup(Z_STRVAL_P(generator->key), Z_STRLEN_P(generator->key)); + *str_key_len = Z_STRLEN_P(generator->key) + 1; + return HASH_KEY_IS_STRING; + } + + /* Waiting for Etienne's patch to allow arbitrary zval keys. Until then + * error out on non-int and non-string keys. */ + zend_error_noreturn(E_ERROR, "Currently only int and string keys can be yielded"); +} +/* }}} */ + +static void zend_generator_iterator_move_forward(zend_object_iterator *iterator TSRMLS_DC) /* {{{ */ +{ + zend_generator *generator = (zend_generator *) iterator->data; + + zend_generator_ensure_initialized(generator TSRMLS_CC); + + zend_generator_resume(generator TSRMLS_CC); +} +/* }}} */ + +static void zend_generator_iterator_rewind(zend_object_iterator *iterator TSRMLS_DC) /* {{{ */ +{ + zend_generator *generator = (zend_generator *) iterator->data; + + zend_generator_rewind(generator TSRMLS_CC); +} +/* }}} */ + +static zend_object_iterator_funcs zend_generator_iterator_functions = { + zend_generator_iterator_dtor, + zend_generator_iterator_valid, + zend_generator_iterator_get_data, + zend_generator_iterator_get_key, + zend_generator_iterator_move_forward, + zend_generator_iterator_rewind +}; + +zend_object_iterator *zend_generator_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC) /* {{{ */ +{ + zend_generator_iterator *iterator; + zend_generator *generator; + + generator = (zend_generator *) zend_object_store_get_object(object TSRMLS_CC); + + if (!generator->execute_data) { + zend_throw_exception(NULL, "Cannot traverse an already closed generator", 0 TSRMLS_CC); + return NULL; + } + + if (by_ref && !(generator->execute_data->op_array->fn_flags & ZEND_ACC_RETURN_REFERENCE)) { + zend_throw_exception(NULL, "You can only iterate a generator by-reference if it declared that it yields by-reference", 0 TSRMLS_CC); + return NULL; + } + + iterator = emalloc(sizeof(zend_generator_iterator)); + iterator->intern.funcs = &zend_generator_iterator_functions; + iterator->intern.data = (void *) generator; + + /* We have to keep a reference to the generator object zval around, + * otherwise the generator may be destroyed during iteration. */ + Z_ADDREF_P(object); + iterator->object = object; + + return (zend_object_iterator *) iterator; +} +/* }}} */ + +ZEND_BEGIN_ARG_INFO(arginfo_generator_void, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_generator_send, 0, 0, 1) + ZEND_ARG_INFO(0, value) +ZEND_END_ARG_INFO() + +static const zend_function_entry generator_functions[] = { + ZEND_ME(Generator, rewind, arginfo_generator_void, ZEND_ACC_PUBLIC) + ZEND_ME(Generator, valid, arginfo_generator_void, ZEND_ACC_PUBLIC) + ZEND_ME(Generator, current, arginfo_generator_void, ZEND_ACC_PUBLIC) + ZEND_ME(Generator, key, arginfo_generator_void, ZEND_ACC_PUBLIC) + ZEND_ME(Generator, next, arginfo_generator_void, ZEND_ACC_PUBLIC) + ZEND_ME(Generator, send, arginfo_generator_send, ZEND_ACC_PUBLIC) + ZEND_ME(Generator, __wakeup, arginfo_generator_void, ZEND_ACC_PUBLIC) + ZEND_FE_END +}; + +void zend_register_generator_ce(TSRMLS_D) /* {{{ */ +{ + zend_class_entry ce; + + INIT_CLASS_ENTRY(ce, "Generator", generator_functions); + zend_ce_generator = zend_register_internal_class(&ce TSRMLS_CC); + zend_ce_generator->ce_flags |= ZEND_ACC_FINAL_CLASS; + zend_ce_generator->create_object = zend_generator_create; + zend_ce_generator->serialize = zend_class_serialize_deny; + zend_ce_generator->unserialize = zend_class_unserialize_deny; + + /* get_iterator has to be assigned *after* implementing the inferface */ + zend_class_implements(zend_ce_generator TSRMLS_CC, 1, zend_ce_iterator); + zend_ce_generator->get_iterator = zend_generator_get_iterator; + zend_ce_generator->iterator_funcs.funcs = &zend_generator_iterator_functions; + + 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; +} +/* }}} */ + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * indent-tabs-mode: t + * End: + */ diff --git a/Zend/zend_generators.h b/Zend/zend_generators.h new file mode 100644 index 000000000..3dc3e6fec --- /dev/null +++ b/Zend/zend_generators.h @@ -0,0 +1,78 @@ +/* + +----------------------------------------------------------------------+ + | Zend Engine | + +----------------------------------------------------------------------+ + | Copyright (c) 1998-2012 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: Nikita Popov <nikic@php.net> | + +----------------------------------------------------------------------+ +*/ + +/* $Id$ */ + +#ifndef ZEND_GENERATORS_H +#define ZEND_GENERATORS_H + +BEGIN_EXTERN_C() +extern ZEND_API zend_class_entry *zend_ce_generator; +END_EXTERN_C() + +typedef struct _zend_generator { + zend_object std; + + /* The suspended execution context. */ + zend_execute_data *execute_data; + + /* If the execution is suspended during a function call there may be + * arguments pushed to the stack, so it has to be backed up. */ + void *backed_up_stack; + size_t backed_up_stack_size; + + /* For method calls PHP also pushes various type information on a second + * stack, which also needs to be backed up. */ + void **backed_up_arg_types_stack; + int backed_up_arg_types_stack_count; + + /* The original stack top before resuming the generator. This is required + * for proper cleanup during exception handling. */ + void **original_stack_top; + + /* Current value */ + zval *value; + /* Current key */ + zval *key; + /* Variable to put sent value into */ + temp_variable *send_target; + /* Largest used integer key for auto-incrementing keys */ + long largest_used_integer_key; + + /* ZEND_GENERATOR_* flags */ + zend_uchar flags; +} zend_generator; + +static const zend_uchar ZEND_GENERATOR_CURRENTLY_RUNNING = 0x1; +static const zend_uchar ZEND_GENERATOR_FORCED_CLOSE = 0x2; +static const zend_uchar ZEND_GENERATOR_AT_FIRST_YIELD = 0x4; + +void zend_register_generator_ce(TSRMLS_D); +zval *zend_generator_create_zval(zend_op_array *op_array TSRMLS_DC); +void zend_generator_close(zend_generator *generator, zend_bool finished_execution TSRMLS_DC); +void zend_generator_resume(zend_generator *generator TSRMLS_DC); + +#endif + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * indent-tabs-mode: t + * End: + */ diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index dbbcf972a..e5aba0df6 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -89,9 +89,6 @@ struct _zend_compiler_globals { int zend_lineno; - char *heredoc; - int heredoc_len; - zend_op_array *active_op_array; HashTable *function_table; /* function symbol table */ @@ -297,6 +294,7 @@ struct _zend_php_scanner_globals { unsigned char *yy_limit; int yy_state; zend_stack state_stack; + zend_ptr_stack heredoc_label_stack; /* original (unfiltered) script */ unsigned char *script_org; diff --git a/Zend/zend_highlight.c b/Zend/zend_highlight.c index e9fd850e6..938e1c612 100644 --- a/Zend/zend_highlight.c +++ b/Zend/zend_highlight.c @@ -153,8 +153,6 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini efree(token.value.str.val); break; } - } else if (token_type == T_END_HEREDOC) { - efree(token.value.str.val); } token.type = 0; } diff --git a/Zend/zend_ini_parser.c b/Zend/zend_ini_parser.c index d97f68967..e0198e37b 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.5. */ -/* 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-2011 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.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -55,58 +52,23 @@ /* Pure parsers. */ #define YYPURE 1 +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + /* Using locations. */ #define YYLSP_NEEDED 0 /* Substitute the variable and function names. */ -#define yyparse ini_parse -#define yylex ini_lex -#define yyerror ini_error -#define yylval ini_lval -#define yychar ini_char -#define yydebug ini_debug -#define yynerrs ini_nerrs - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - TC_SECTION = 258, - TC_RAW = 259, - TC_CONSTANT = 260, - TC_NUMBER = 261, - TC_STRING = 262, - TC_WHITESPACE = 263, - TC_LABEL = 264, - TC_OFFSET = 265, - TC_DOLLAR_CURLY = 266, - TC_VARNAME = 267, - TC_QUOTED_STRING = 268, - BOOL_TRUE = 269, - BOOL_FALSE = 270, - END_OF_LINE = 271 - }; -#endif -/* Tokens. */ -#define TC_SECTION 258 -#define TC_RAW 259 -#define TC_CONSTANT 260 -#define TC_NUMBER 261 -#define TC_STRING 262 -#define TC_WHITESPACE 263 -#define TC_LABEL 264 -#define TC_OFFSET 265 -#define TC_DOLLAR_CURLY 266 -#define TC_VARNAME 267 -#define TC_QUOTED_STRING 268 -#define BOOL_TRUE 269 -#define BOOL_FALSE 270 -#define END_OF_LINE 271 - - +#define yyparse ini_parse +#define yylex ini_lex +#define yyerror ini_error +#define yylval ini_lval +#define yychar ini_char +#define yydebug ini_debug +#define yynerrs ini_nerrs /* Copy the first part of user declarations. */ @@ -359,6 +321,7 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s + /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -377,20 +340,59 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s # define YYTOKEN_TABLE 0 #endif + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + TC_SECTION = 258, + TC_RAW = 259, + TC_CONSTANT = 260, + TC_NUMBER = 261, + TC_STRING = 262, + TC_WHITESPACE = 263, + TC_LABEL = 264, + TC_OFFSET = 265, + TC_DOLLAR_CURLY = 266, + TC_VARNAME = 267, + TC_QUOTED_STRING = 268, + BOOL_TRUE = 269, + BOOL_FALSE = 270, + END_OF_LINE = 271 + }; +#endif +/* Tokens. */ +#define TC_SECTION 258 +#define TC_RAW 259 +#define TC_CONSTANT 260 +#define TC_NUMBER 261 +#define TC_STRING 262 +#define TC_WHITESPACE 263 +#define TC_LABEL 264 +#define TC_OFFSET 265 +#define TC_DOLLAR_CURLY 266 +#define TC_VARNAME 267 +#define TC_QUOTED_STRING 268 +#define BOOL_TRUE 269 +#define BOOL_FALSE 270 +#define END_OF_LINE 271 + + + + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif - /* Copy the second part of user declarations. */ -/* Line 216 of yacc.c. */ - #ifdef short # undef short @@ -465,14 +467,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 +495,11 @@ 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 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # endif @@ -520,24 +522,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 +555,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,6 +568,27 @@ union yyalloc ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) +# 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY @@ -583,24 +606,7 @@ union yyalloc while (YYID (0)) # endif # endif - -/* 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) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) - -#endif +#endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 @@ -705,7 +711,7 @@ static const char *const yytname[] = "$end", "error", "$undefined", "TC_SECTION", "TC_RAW", "TC_CONSTANT", "TC_NUMBER", "TC_STRING", "TC_WHITESPACE", "TC_LABEL", "TC_OFFSET", "TC_DOLLAR_CURLY", "TC_VARNAME", "TC_QUOTED_STRING", "BOOL_TRUE", - "BOOL_FALSE", "END_OF_LINE", "'='", "':'", "','", "'.'", "'\"'", "'''", + "BOOL_FALSE", "END_OF_LINE", "'='", "':'", "','", "'.'", "'\"'", "'\\''", "'^'", "'+'", "'-'", "'/'", "'*'", "'%'", "'$'", "'~'", "'<'", "'>'", "'?'", "'@'", "'{'", "'}'", "'|'", "'&'", "'!'", "']'", "'('", "')'", "$accept", "statement_list", "statement", "section_string_or_value", @@ -748,8 +754,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 +798,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 +815,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,9 +861,18 @@ 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) @@ -862,7 +882,6 @@ do \ { \ yychar = (Token); \ yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ @@ -904,19 +923,10 @@ while (YYID (0)) #endif -/* 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 defined YYLTYPE_IS_TRIVIAL && 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 @@ -1020,17 +1030,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 +1077,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 +1118,6 @@ int yydebug; # define YYMAXDEPTH 10000 #endif - #if YYERROR_VERBOSE @@ -1208,115 +1220,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 (0, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = 0; + /* 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 (0, 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,10 +1387,9 @@ yydestruct (yymsg, yytype, yyvaluep) break; } } - -/* Prevent warnings from -Wmissing-prototypes. */ +/* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); @@ -1367,10 +1405,6 @@ int yyparse (); #endif /* ! YYPARSE_PARAM */ - - - - /*----------. | yyparse. | `----------*/ @@ -1397,74 +1431,75 @@ yyparse () #endif #endif { - /* The look-ahead symbol. */ +/* The lookahead symbol. */ int yychar; -/* The semantic value of the look-ahead symbol. */ +/* The semantic value of the lookahead symbol. */ YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - int yystate; - int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + /* Number of syntax errors so far. */ + int yynerrs; - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; - YYSIZE_T yystacksize = YYINITDEPTH; + YYSIZE_T yystacksize; + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ + yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss; yyvsp = yyvs; @@ -1494,7 +1529,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 +1536,6 @@ int yynerrs; yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); yyss = yyss1; @@ -1525,9 +1558,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 +1570,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 +1579,9 @@ int yynerrs; YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + if (yystate == YYFINAL) + YYACCEPT; + goto yybackup; /*-----------. @@ -1556,16 +1590,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 +1625,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 +1921,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 +1943,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 +1962,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 +1973,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 +2010,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 +2027,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 +2061,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 +2084,6 @@ yyerrlab1: YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - *++yyvsp = yylval; @@ -2069,7 +2108,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#ifndef yyoverflow +#if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -2080,9 +2119,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..b1538eafd 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.5. */ -/* 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-2011 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,11 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ + /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE @@ -76,10 +74,11 @@ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif + diff --git a/Zend/zend_ini_parser.output b/Zend/zend_ini_parser.output index 9f7bcda21..fc6468a7f 100644 --- a/Zend/zend_ini_parser.output +++ b/Zend/zend_ini_parser.output @@ -1,9 +1,9 @@ -Terminals which are not used +Terminals unused in grammar ':' ',' '.' - ''' + '\'' '^' '+' '-' @@ -90,7 +90,7 @@ $end (0) 0 '$' (36) '%' (37) '&' (38) 33 -''' (39) +'\'' (39) '(' (40) 36 ')' (41) 36 '*' (42) diff --git a/Zend/zend_ini_scanner.c b/Zend/zend_ini_scanner.c index 94c48c897..470f52360 100644 --- a/Zend/zend_ini_scanner.c +++ b/Zend/zend_ini_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Thu Jun 7 17:48:25 2012 */ +/* Generated by re2c 0.13.5 on Thu Jun 7 17:55:40 2012 */ #line 1 "Zend/zend_ini_scanner.l" /* +----------------------------------------------------------------------+ diff --git a/Zend/zend_ini_scanner_defs.h b/Zend/zend_ini_scanner_defs.h index 0c0471373..9c99cc43d 100644 --- a/Zend/zend_ini_scanner_defs.h +++ b/Zend/zend_ini_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Thu Jun 7 17:48:25 2012 */ +/* Generated by re2c 0.13.5 on Thu Jun 7 17:55:41 2012 */ #line 3 "Zend/zend_ini_scanner_defs.h" enum YYCONDTYPE { diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c index aee0d612d..aee0d612d 100755..100644 --- a/Zend/zend_interfaces.c +++ b/Zend/zend_interfaces.c diff --git a/Zend/zend_interfaces.h b/Zend/zend_interfaces.h index e3e3629c5..e3e3629c5 100755..100644 --- a/Zend/zend_interfaces.h +++ b/Zend/zend_interfaces.h diff --git a/Zend/zend_iterators.c b/Zend/zend_iterators.c index d0572b25c..d0572b25c 100755..100644 --- a/Zend/zend_iterators.c +++ b/Zend/zend_iterators.c diff --git a/Zend/zend_iterators.h b/Zend/zend_iterators.h index dba05850a..dba05850a 100755..100644 --- a/Zend/zend_iterators.h +++ b/Zend/zend_iterators.h diff --git a/Zend/zend_language_parser.c b/Zend/zend_language_parser.c index 353a10960..7b941accb 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.5. */ -/* 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-2011 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.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -55,286 +52,23 @@ /* Pure parsers. */ #define YYPURE 1 +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + /* Using locations. */ #define YYLSP_NEEDED 0 /* Substitute the variable and function names. */ -#define yyparse zendparse -#define yylex zendlex -#define yyerror zenderror -#define yylval zendlval -#define yychar zendchar -#define yydebug zenddebug -#define yynerrs zendnerrs - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - END = 0, - T_REQUIRE_ONCE = 258, - T_REQUIRE = 259, - T_EVAL = 260, - T_INCLUDE_ONCE = 261, - T_INCLUDE = 262, - T_LOGICAL_OR = 263, - T_LOGICAL_XOR = 264, - T_LOGICAL_AND = 265, - T_PRINT = 266, - T_SR_EQUAL = 267, - T_SL_EQUAL = 268, - T_XOR_EQUAL = 269, - T_OR_EQUAL = 270, - T_AND_EQUAL = 271, - T_MOD_EQUAL = 272, - T_CONCAT_EQUAL = 273, - T_DIV_EQUAL = 274, - T_MUL_EQUAL = 275, - T_MINUS_EQUAL = 276, - T_PLUS_EQUAL = 277, - T_BOOLEAN_OR = 278, - T_BOOLEAN_AND = 279, - T_IS_NOT_IDENTICAL = 280, - T_IS_IDENTICAL = 281, - T_IS_NOT_EQUAL = 282, - T_IS_EQUAL = 283, - T_IS_GREATER_OR_EQUAL = 284, - T_IS_SMALLER_OR_EQUAL = 285, - T_SR = 286, - T_SL = 287, - T_INSTANCEOF = 288, - T_UNSET_CAST = 289, - T_BOOL_CAST = 290, - T_OBJECT_CAST = 291, - T_ARRAY_CAST = 292, - T_STRING_CAST = 293, - T_DOUBLE_CAST = 294, - T_INT_CAST = 295, - T_DEC = 296, - T_INC = 297, - T_CLONE = 298, - T_NEW = 299, - T_EXIT = 300, - T_IF = 301, - T_ELSEIF = 302, - T_ELSE = 303, - T_ENDIF = 304, - T_LNUMBER = 305, - T_DNUMBER = 306, - T_STRING = 307, - T_STRING_VARNAME = 308, - T_VARIABLE = 309, - T_NUM_STRING = 310, - T_INLINE_HTML = 311, - T_CHARACTER = 312, - T_BAD_CHARACTER = 313, - T_ENCAPSED_AND_WHITESPACE = 314, - T_CONSTANT_ENCAPSED_STRING = 315, - T_ECHO = 316, - T_DO = 317, - T_WHILE = 318, - T_ENDWHILE = 319, - T_FOR = 320, - T_ENDFOR = 321, - T_FOREACH = 322, - T_ENDFOREACH = 323, - T_DECLARE = 324, - T_ENDDECLARE = 325, - T_AS = 326, - T_SWITCH = 327, - T_ENDSWITCH = 328, - T_CASE = 329, - T_DEFAULT = 330, - T_BREAK = 331, - T_CONTINUE = 332, - T_GOTO = 333, - T_FUNCTION = 334, - T_CONST = 335, - T_RETURN = 336, - T_TRY = 337, - T_CATCH = 338, - T_THROW = 339, - T_USE = 340, - T_INSTEADOF = 341, - T_GLOBAL = 342, - T_PUBLIC = 343, - T_PROTECTED = 344, - T_PRIVATE = 345, - T_FINAL = 346, - T_ABSTRACT = 347, - T_STATIC = 348, - T_VAR = 349, - T_UNSET = 350, - T_ISSET = 351, - T_EMPTY = 352, - T_HALT_COMPILER = 353, - T_CLASS = 354, - T_TRAIT = 355, - T_INTERFACE = 356, - T_EXTENDS = 357, - T_IMPLEMENTS = 358, - T_OBJECT_OPERATOR = 359, - T_DOUBLE_ARROW = 360, - T_LIST = 361, - T_ARRAY = 362, - T_CALLABLE = 363, - T_CLASS_C = 364, - T_TRAIT_C = 365, - T_METHOD_C = 366, - T_FUNC_C = 367, - T_LINE = 368, - T_FILE = 369, - T_COMMENT = 370, - T_DOC_COMMENT = 371, - T_OPEN_TAG = 372, - T_OPEN_TAG_WITH_ECHO = 373, - T_CLOSE_TAG = 374, - T_WHITESPACE = 375, - T_START_HEREDOC = 376, - T_END_HEREDOC = 377, - T_DOLLAR_OPEN_CURLY_BRACES = 378, - T_CURLY_OPEN = 379, - T_PAAMAYIM_NEKUDOTAYIM = 380, - T_NAMESPACE = 381, - T_NS_C = 382, - T_DIR = 383, - T_NS_SEPARATOR = 384 - }; -#endif -/* Tokens. */ -#define END 0 -#define T_REQUIRE_ONCE 258 -#define T_REQUIRE 259 -#define T_EVAL 260 -#define T_INCLUDE_ONCE 261 -#define T_INCLUDE 262 -#define T_LOGICAL_OR 263 -#define T_LOGICAL_XOR 264 -#define T_LOGICAL_AND 265 -#define T_PRINT 266 -#define T_SR_EQUAL 267 -#define T_SL_EQUAL 268 -#define T_XOR_EQUAL 269 -#define T_OR_EQUAL 270 -#define T_AND_EQUAL 271 -#define T_MOD_EQUAL 272 -#define T_CONCAT_EQUAL 273 -#define T_DIV_EQUAL 274 -#define T_MUL_EQUAL 275 -#define T_MINUS_EQUAL 276 -#define T_PLUS_EQUAL 277 -#define T_BOOLEAN_OR 278 -#define T_BOOLEAN_AND 279 -#define T_IS_NOT_IDENTICAL 280 -#define T_IS_IDENTICAL 281 -#define T_IS_NOT_EQUAL 282 -#define T_IS_EQUAL 283 -#define T_IS_GREATER_OR_EQUAL 284 -#define T_IS_SMALLER_OR_EQUAL 285 -#define T_SR 286 -#define T_SL 287 -#define T_INSTANCEOF 288 -#define T_UNSET_CAST 289 -#define T_BOOL_CAST 290 -#define T_OBJECT_CAST 291 -#define T_ARRAY_CAST 292 -#define T_STRING_CAST 293 -#define T_DOUBLE_CAST 294 -#define T_INT_CAST 295 -#define T_DEC 296 -#define T_INC 297 -#define T_CLONE 298 -#define T_NEW 299 -#define T_EXIT 300 -#define T_IF 301 -#define T_ELSEIF 302 -#define T_ELSE 303 -#define T_ENDIF 304 -#define T_LNUMBER 305 -#define T_DNUMBER 306 -#define T_STRING 307 -#define T_STRING_VARNAME 308 -#define T_VARIABLE 309 -#define T_NUM_STRING 310 -#define T_INLINE_HTML 311 -#define T_CHARACTER 312 -#define T_BAD_CHARACTER 313 -#define T_ENCAPSED_AND_WHITESPACE 314 -#define T_CONSTANT_ENCAPSED_STRING 315 -#define T_ECHO 316 -#define T_DO 317 -#define T_WHILE 318 -#define T_ENDWHILE 319 -#define T_FOR 320 -#define T_ENDFOR 321 -#define T_FOREACH 322 -#define T_ENDFOREACH 323 -#define T_DECLARE 324 -#define T_ENDDECLARE 325 -#define T_AS 326 -#define T_SWITCH 327 -#define T_ENDSWITCH 328 -#define T_CASE 329 -#define T_DEFAULT 330 -#define T_BREAK 331 -#define T_CONTINUE 332 -#define T_GOTO 333 -#define T_FUNCTION 334 -#define T_CONST 335 -#define T_RETURN 336 -#define T_TRY 337 -#define T_CATCH 338 -#define T_THROW 339 -#define T_USE 340 -#define T_INSTEADOF 341 -#define T_GLOBAL 342 -#define T_PUBLIC 343 -#define T_PROTECTED 344 -#define T_PRIVATE 345 -#define T_FINAL 346 -#define T_ABSTRACT 347 -#define T_STATIC 348 -#define T_VAR 349 -#define T_UNSET 350 -#define T_ISSET 351 -#define T_EMPTY 352 -#define T_HALT_COMPILER 353 -#define T_CLASS 354 -#define T_TRAIT 355 -#define T_INTERFACE 356 -#define T_EXTENDS 357 -#define T_IMPLEMENTS 358 -#define T_OBJECT_OPERATOR 359 -#define T_DOUBLE_ARROW 360 -#define T_LIST 361 -#define T_ARRAY 362 -#define T_CALLABLE 363 -#define T_CLASS_C 364 -#define T_TRAIT_C 365 -#define T_METHOD_C 366 -#define T_FUNC_C 367 -#define T_LINE 368 -#define T_FILE 369 -#define T_COMMENT 370 -#define T_DOC_COMMENT 371 -#define T_OPEN_TAG 372 -#define T_OPEN_TAG_WITH_ECHO 373 -#define T_CLOSE_TAG 374 -#define T_WHITESPACE 375 -#define T_START_HEREDOC 376 -#define T_END_HEREDOC 377 -#define T_DOLLAR_OPEN_CURLY_BRACES 378 -#define T_CURLY_OPEN 379 -#define T_PAAMAYIM_NEKUDOTAYIM 380 -#define T_NAMESPACE 381 -#define T_NS_C 382 -#define T_DIR 383 -#define T_NS_SEPARATOR 384 - - +#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. */ @@ -390,6 +124,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); + /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -408,20 +143,291 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); # define YYTOKEN_TABLE 0 #endif + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + END = 0, + T_REQUIRE_ONCE = 258, + T_REQUIRE = 259, + T_EVAL = 260, + T_INCLUDE_ONCE = 261, + T_INCLUDE = 262, + T_LOGICAL_OR = 263, + T_LOGICAL_XOR = 264, + T_LOGICAL_AND = 265, + T_PRINT = 266, + T_YIELD = 267, + T_SR_EQUAL = 268, + T_SL_EQUAL = 269, + T_XOR_EQUAL = 270, + T_OR_EQUAL = 271, + T_AND_EQUAL = 272, + T_MOD_EQUAL = 273, + T_CONCAT_EQUAL = 274, + T_DIV_EQUAL = 275, + T_MUL_EQUAL = 276, + T_MINUS_EQUAL = 277, + T_PLUS_EQUAL = 278, + T_BOOLEAN_OR = 279, + T_BOOLEAN_AND = 280, + T_IS_NOT_IDENTICAL = 281, + T_IS_IDENTICAL = 282, + T_IS_NOT_EQUAL = 283, + T_IS_EQUAL = 284, + T_IS_GREATER_OR_EQUAL = 285, + T_IS_SMALLER_OR_EQUAL = 286, + T_SR = 287, + T_SL = 288, + T_INSTANCEOF = 289, + T_UNSET_CAST = 290, + T_BOOL_CAST = 291, + T_OBJECT_CAST = 292, + T_ARRAY_CAST = 293, + T_STRING_CAST = 294, + T_DOUBLE_CAST = 295, + T_INT_CAST = 296, + T_DEC = 297, + T_INC = 298, + T_CLONE = 299, + T_NEW = 300, + T_EXIT = 301, + T_IF = 302, + T_ELSEIF = 303, + T_ELSE = 304, + T_ENDIF = 305, + T_LNUMBER = 306, + T_DNUMBER = 307, + T_STRING = 308, + T_STRING_VARNAME = 309, + T_VARIABLE = 310, + T_NUM_STRING = 311, + T_INLINE_HTML = 312, + T_CHARACTER = 313, + T_BAD_CHARACTER = 314, + T_ENCAPSED_AND_WHITESPACE = 315, + T_CONSTANT_ENCAPSED_STRING = 316, + T_ECHO = 317, + T_DO = 318, + T_WHILE = 319, + T_ENDWHILE = 320, + T_FOR = 321, + T_ENDFOR = 322, + T_FOREACH = 323, + T_ENDFOREACH = 324, + T_DECLARE = 325, + T_ENDDECLARE = 326, + T_AS = 327, + T_SWITCH = 328, + T_ENDSWITCH = 329, + T_CASE = 330, + T_DEFAULT = 331, + T_BREAK = 332, + T_CONTINUE = 333, + T_GOTO = 334, + T_FUNCTION = 335, + T_CONST = 336, + T_RETURN = 337, + T_TRY = 338, + T_CATCH = 339, + T_FINALLY = 340, + T_THROW = 341, + T_USE = 342, + T_INSTEADOF = 343, + T_GLOBAL = 344, + T_PUBLIC = 345, + T_PROTECTED = 346, + T_PRIVATE = 347, + T_FINAL = 348, + T_ABSTRACT = 349, + T_STATIC = 350, + T_VAR = 351, + T_UNSET = 352, + T_ISSET = 353, + T_EMPTY = 354, + T_HALT_COMPILER = 355, + T_CLASS = 356, + T_TRAIT = 357, + T_INTERFACE = 358, + T_EXTENDS = 359, + T_IMPLEMENTS = 360, + T_OBJECT_OPERATOR = 361, + T_DOUBLE_ARROW = 362, + T_LIST = 363, + T_ARRAY = 364, + T_CALLABLE = 365, + T_CLASS_C = 366, + T_TRAIT_C = 367, + T_METHOD_C = 368, + T_FUNC_C = 369, + T_LINE = 370, + T_FILE = 371, + T_COMMENT = 372, + T_DOC_COMMENT = 373, + T_OPEN_TAG = 374, + T_OPEN_TAG_WITH_ECHO = 375, + T_CLOSE_TAG = 376, + T_WHITESPACE = 377, + T_START_HEREDOC = 378, + T_END_HEREDOC = 379, + T_DOLLAR_OPEN_CURLY_BRACES = 380, + T_CURLY_OPEN = 381, + T_PAAMAYIM_NEKUDOTAYIM = 382, + T_NAMESPACE = 383, + T_NS_C = 384, + T_DIR = 385, + T_NS_SEPARATOR = 386 + }; +#endif +/* Tokens. */ +#define END 0 +#define T_REQUIRE_ONCE 258 +#define T_REQUIRE 259 +#define T_EVAL 260 +#define T_INCLUDE_ONCE 261 +#define T_INCLUDE 262 +#define T_LOGICAL_OR 263 +#define T_LOGICAL_XOR 264 +#define T_LOGICAL_AND 265 +#define T_PRINT 266 +#define T_YIELD 267 +#define T_SR_EQUAL 268 +#define T_SL_EQUAL 269 +#define T_XOR_EQUAL 270 +#define T_OR_EQUAL 271 +#define T_AND_EQUAL 272 +#define T_MOD_EQUAL 273 +#define T_CONCAT_EQUAL 274 +#define T_DIV_EQUAL 275 +#define T_MUL_EQUAL 276 +#define T_MINUS_EQUAL 277 +#define T_PLUS_EQUAL 278 +#define T_BOOLEAN_OR 279 +#define T_BOOLEAN_AND 280 +#define T_IS_NOT_IDENTICAL 281 +#define T_IS_IDENTICAL 282 +#define T_IS_NOT_EQUAL 283 +#define T_IS_EQUAL 284 +#define T_IS_GREATER_OR_EQUAL 285 +#define T_IS_SMALLER_OR_EQUAL 286 +#define T_SR 287 +#define T_SL 288 +#define T_INSTANCEOF 289 +#define T_UNSET_CAST 290 +#define T_BOOL_CAST 291 +#define T_OBJECT_CAST 292 +#define T_ARRAY_CAST 293 +#define T_STRING_CAST 294 +#define T_DOUBLE_CAST 295 +#define T_INT_CAST 296 +#define T_DEC 297 +#define T_INC 298 +#define T_CLONE 299 +#define T_NEW 300 +#define T_EXIT 301 +#define T_IF 302 +#define T_ELSEIF 303 +#define T_ELSE 304 +#define T_ENDIF 305 +#define T_LNUMBER 306 +#define T_DNUMBER 307 +#define T_STRING 308 +#define T_STRING_VARNAME 309 +#define T_VARIABLE 310 +#define T_NUM_STRING 311 +#define T_INLINE_HTML 312 +#define T_CHARACTER 313 +#define T_BAD_CHARACTER 314 +#define T_ENCAPSED_AND_WHITESPACE 315 +#define T_CONSTANT_ENCAPSED_STRING 316 +#define T_ECHO 317 +#define T_DO 318 +#define T_WHILE 319 +#define T_ENDWHILE 320 +#define T_FOR 321 +#define T_ENDFOR 322 +#define T_FOREACH 323 +#define T_ENDFOREACH 324 +#define T_DECLARE 325 +#define T_ENDDECLARE 326 +#define T_AS 327 +#define T_SWITCH 328 +#define T_ENDSWITCH 329 +#define T_CASE 330 +#define T_DEFAULT 331 +#define T_BREAK 332 +#define T_CONTINUE 333 +#define T_GOTO 334 +#define T_FUNCTION 335 +#define T_CONST 336 +#define T_RETURN 337 +#define T_TRY 338 +#define T_CATCH 339 +#define T_FINALLY 340 +#define T_THROW 341 +#define T_USE 342 +#define T_INSTEADOF 343 +#define T_GLOBAL 344 +#define T_PUBLIC 345 +#define T_PROTECTED 346 +#define T_PRIVATE 347 +#define T_FINAL 348 +#define T_ABSTRACT 349 +#define T_STATIC 350 +#define T_VAR 351 +#define T_UNSET 352 +#define T_ISSET 353 +#define T_EMPTY 354 +#define T_HALT_COMPILER 355 +#define T_CLASS 356 +#define T_TRAIT 357 +#define T_INTERFACE 358 +#define T_EXTENDS 359 +#define T_IMPLEMENTS 360 +#define T_OBJECT_OPERATOR 361 +#define T_DOUBLE_ARROW 362 +#define T_LIST 363 +#define T_ARRAY 364 +#define T_CALLABLE 365 +#define T_CLASS_C 366 +#define T_TRAIT_C 367 +#define T_METHOD_C 368 +#define T_FUNC_C 369 +#define T_LINE 370 +#define T_FILE 371 +#define T_COMMENT 372 +#define T_DOC_COMMENT 373 +#define T_OPEN_TAG 374 +#define T_OPEN_TAG_WITH_ECHO 375 +#define T_CLOSE_TAG 376 +#define T_WHITESPACE 377 +#define T_START_HEREDOC 378 +#define T_END_HEREDOC 379 +#define T_DOLLAR_OPEN_CURLY_BRACES 380 +#define T_CURLY_OPEN 381 +#define T_PAAMAYIM_NEKUDOTAYIM 382 +#define T_NAMESPACE 383 +#define T_NS_C 384 +#define T_DIR 385 +#define T_NS_SEPARATOR 386 + + + + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif - /* Copy the second part of user declarations. */ -/* Line 216 of yacc.c. */ - #ifdef short # undef short @@ -496,14 +502,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 @@ -524,11 +530,11 @@ 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 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # endif @@ -551,24 +557,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 @@ -584,9 +590,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) @@ -597,6 +603,27 @@ union yyalloc ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) +# 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY @@ -614,42 +641,25 @@ union yyalloc while (YYID (0)) # endif # endif - -/* 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) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) - -#endif +#endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 5312 +#define YYLAST 5133 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 158 +#define YYNTOKENS 160 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 206 +#define YYNNTS 216 /* YYNRULES -- Number of rules. */ -#define YYNRULES 516 +#define YYNRULES 541 /* YYNRULES -- Number of states. */ -#define YYNSTATES 983 +#define YYNSTATES 998 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 384 +#define YYMAXUTOK 386 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -660,16 +670,16 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 48, 157, 2, 154, 47, 31, 2, - 149, 150, 45, 42, 8, 43, 44, 46, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 26, 151, - 36, 13, 37, 25, 51, 2, 2, 2, 2, 2, + 2, 2, 2, 49, 159, 2, 156, 48, 32, 2, + 151, 152, 46, 43, 8, 44, 45, 47, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 27, 153, + 37, 14, 38, 26, 52, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 61, 2, 155, 30, 2, 156, 2, 2, 2, + 2, 62, 2, 157, 31, 2, 158, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 152, 29, 153, 50, 2, 2, 2, + 2, 2, 2, 154, 30, 155, 51, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -683,10 +693,10 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 9, 10, 11, 12, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 27, 28, - 32, 33, 34, 35, 38, 39, 40, 41, 49, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, + 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, + 29, 33, 34, 35, 36, 39, 40, 41, 42, 50, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, @@ -695,7 +705,7 @@ static const yytype_uint8 yytranslate[] = 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148 + 144, 145, 146, 147, 148, 149, 150 }; #if YYDEBUG @@ -707,284 +717,295 @@ static const yytype_uint16 yyprhs[] = 21, 23, 28, 32, 33, 40, 41, 47, 51, 54, 58, 60, 62, 66, 69, 74, 80, 85, 86, 90, 91, 93, 95, 97, 102, 104, 107, 111, 112, 113, - 123, 124, 125, 138, 139, 140, 148, 149, 150, 160, - 161, 162, 163, 176, 177, 184, 187, 191, 194, 198, - 201, 205, 209, 213, 217, 221, 223, 226, 232, 233, - 234, 245, 246, 247, 258, 259, 266, 268, 269, 270, - 271, 272, 273, 292, 296, 300, 302, 303, 305, 308, - 309, 310, 321, 323, 327, 329, 331, 333, 334, 336, - 337, 348, 349, 358, 359, 367, 369, 372, 374, 377, - 378, 381, 383, 384, 387, 388, 391, 393, 397, 398, - 401, 403, 406, 408, 413, 415, 420, 422, 427, 431, - 437, 441, 446, 451, 457, 458, 459, 466, 467, 473, - 475, 477, 479, 484, 485, 486, 494, 495, 496, 505, - 506, 509, 510, 514, 516, 517, 520, 524, 530, 535, - 540, 546, 554, 561, 562, 564, 566, 568, 570, 571, - 573, 575, 578, 582, 586, 591, 595, 597, 599, 602, - 607, 611, 617, 619, 623, 626, 627, 628, 633, 636, - 638, 639, 649, 653, 655, 659, 661, 665, 666, 668, - 670, 673, 676, 679, 683, 685, 689, 691, 693, 697, - 702, 706, 707, 709, 711, 715, 717, 719, 720, 722, - 724, 727, 729, 731, 733, 735, 737, 739, 743, 749, - 751, 755, 761, 766, 770, 772, 773, 775, 776, 781, - 783, 786, 788, 793, 797, 798, 802, 804, 806, 807, - 808, 811, 812, 817, 818, 826, 830, 835, 836, 844, - 847, 851, 855, 859, 863, 867, 871, 875, 879, 883, - 887, 891, 894, 897, 900, 903, 904, 909, 910, 915, - 916, 921, 922, 927, 931, 935, 939, 943, 947, 951, - 955, 959, 963, 967, 971, 975, 978, 981, 984, 987, - 991, 995, 999, 1003, 1007, 1011, 1015, 1019, 1023, 1027, - 1029, 1030, 1036, 1037, 1038, 1046, 1047, 1053, 1055, 1058, - 1061, 1064, 1067, 1070, 1073, 1076, 1079, 1080, 1084, 1086, - 1091, 1095, 1099, 1102, 1103, 1114, 1115, 1127, 1129, 1130, - 1135, 1139, 1144, 1146, 1149, 1150, 1156, 1157, 1165, 1166, - 1173, 1174, 1182, 1183, 1191, 1192, 1200, 1201, 1209, 1210, - 1216, 1218, 1220, 1224, 1227, 1229, 1233, 1236, 1238, 1240, - 1241, 1242, 1249, 1251, 1254, 1255, 1258, 1259, 1262, 1266, - 1267, 1269, 1271, 1272, 1276, 1278, 1280, 1282, 1284, 1286, - 1288, 1290, 1292, 1294, 1296, 1300, 1303, 1305, 1307, 1311, - 1314, 1317, 1320, 1325, 1329, 1331, 1333, 1337, 1339, 1341, - 1343, 1347, 1350, 1352, 1356, 1360, 1362, 1363, 1366, 1367, - 1369, 1375, 1379, 1383, 1385, 1387, 1389, 1391, 1393, 1395, - 1396, 1397, 1405, 1407, 1410, 1411, 1412, 1417, 1422, 1427, - 1428, 1433, 1435, 1437, 1438, 1440, 1443, 1447, 1451, 1453, - 1458, 1459, 1465, 1467, 1469, 1471, 1473, 1476, 1478, 1483, - 1488, 1490, 1492, 1497, 1498, 1500, 1502, 1503, 1506, 1511, - 1516, 1518, 1520, 1524, 1526, 1529, 1533, 1535, 1537, 1538, - 1544, 1545, 1546, 1549, 1555, 1559, 1563, 1565, 1572, 1577, - 1582, 1585, 1588, 1591, 1593, 1596, 1598, 1599, 1605, 1609, - 1613, 1620, 1624, 1626, 1628, 1630, 1635, 1640, 1643, 1646, - 1651, 1654, 1657, 1659, 1660, 1665, 1669 + 121, 122, 123, 134, 135, 136, 142, 143, 144, 152, + 153, 154, 155, 168, 169, 174, 177, 181, 184, 188, + 191, 195, 199, 202, 206, 210, 214, 216, 219, 225, + 226, 227, 238, 239, 240, 251, 252, 259, 261, 262, + 263, 272, 276, 280, 281, 282, 283, 284, 285, 299, + 300, 301, 307, 309, 310, 312, 315, 316, 317, 328, + 330, 334, 336, 338, 340, 341, 343, 344, 355, 356, + 365, 366, 374, 376, 379, 381, 384, 385, 388, 390, + 391, 394, 395, 398, 400, 404, 405, 408, 410, 413, + 414, 420, 422, 427, 429, 434, 436, 441, 445, 451, + 455, 460, 465, 471, 472, 473, 480, 481, 487, 489, + 491, 493, 498, 499, 500, 506, 507, 508, 515, 516, + 519, 520, 524, 526, 527, 530, 534, 540, 545, 550, + 556, 564, 571, 572, 574, 576, 578, 581, 585, 589, + 591, 593, 596, 600, 604, 609, 613, 615, 617, 620, + 625, 629, 635, 637, 641, 644, 645, 646, 651, 654, + 656, 657, 667, 671, 673, 677, 679, 683, 684, 686, + 688, 691, 694, 697, 701, 703, 707, 709, 711, 715, + 720, 724, 725, 727, 729, 733, 735, 737, 738, 740, + 742, 745, 747, 749, 751, 753, 755, 757, 761, 767, + 769, 773, 779, 784, 788, 790, 791, 793, 794, 799, + 801, 804, 806, 811, 815, 816, 820, 822, 824, 825, + 826, 829, 830, 835, 836, 844, 848, 853, 854, 862, + 865, 869, 873, 877, 881, 885, 889, 893, 897, 901, + 905, 909, 912, 915, 918, 921, 922, 927, 928, 933, + 934, 939, 940, 945, 949, 953, 957, 961, 965, 969, + 973, 977, 981, 985, 989, 993, 996, 999, 1002, 1005, + 1009, 1013, 1017, 1021, 1025, 1029, 1033, 1037, 1041, 1043, + 1045, 1046, 1052, 1053, 1054, 1062, 1063, 1069, 1071, 1074, + 1077, 1080, 1083, 1086, 1089, 1092, 1095, 1096, 1100, 1102, + 1104, 1106, 1110, 1113, 1115, 1116, 1127, 1128, 1140, 1143, + 1146, 1151, 1156, 1161, 1166, 1171, 1176, 1180, 1182, 1183, + 1188, 1192, 1197, 1199, 1202, 1203, 1207, 1208, 1214, 1215, + 1220, 1221, 1227, 1228, 1234, 1235, 1241, 1242, 1248, 1249, + 1253, 1255, 1257, 1261, 1264, 1266, 1270, 1273, 1275, 1277, + 1278, 1279, 1286, 1288, 1291, 1292, 1295, 1296, 1299, 1301, + 1302, 1304, 1306, 1307, 1309, 1311, 1313, 1315, 1317, 1319, + 1321, 1323, 1325, 1327, 1329, 1333, 1336, 1338, 1340, 1344, + 1347, 1350, 1353, 1358, 1362, 1364, 1366, 1370, 1372, 1374, + 1376, 1380, 1383, 1385, 1389, 1393, 1395, 1396, 1399, 1400, + 1402, 1408, 1412, 1416, 1418, 1420, 1422, 1426, 1430, 1432, + 1434, 1436, 1437, 1438, 1446, 1448, 1451, 1452, 1453, 1458, + 1463, 1468, 1469, 1472, 1474, 1476, 1477, 1479, 1482, 1486, + 1490, 1492, 1497, 1498, 1504, 1506, 1508, 1510, 1512, 1515, + 1517, 1522, 1527, 1529, 1531, 1536, 1537, 1539, 1541, 1542, + 1545, 1550, 1555, 1557, 1559, 1563, 1565, 1568, 1572, 1574, + 1576, 1577, 1583, 1584, 1585, 1588, 1594, 1598, 1602, 1604, + 1611, 1616, 1621, 1624, 1627, 1630, 1632, 1635, 1637, 1638, + 1644, 1648, 1652, 1659, 1663, 1665, 1667, 1669, 1674, 1679, + 1684, 1687, 1690, 1695, 1698, 1701, 1703, 1704, 1709, 1711, + 1713, 1717 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 159, 0, -1, 160, -1, -1, 160, 161, 163, -1, - -1, 71, -1, 162, 148, 71, -1, 172, -1, 203, - -1, 204, -1, 117, 149, 150, 151, -1, 145, 162, - 151, -1, -1, 145, 162, 152, 164, 160, 153, -1, - -1, 145, 152, 165, 160, 153, -1, 104, 166, 151, - -1, 168, 151, -1, 166, 8, 167, -1, 167, -1, - 162, -1, 162, 90, 71, -1, 148, 162, -1, 148, - 162, 90, 71, -1, 168, 8, 71, 13, 316, -1, - 99, 71, 13, 316, -1, -1, 169, 170, 171, -1, - -1, 172, -1, 203, -1, 204, -1, 117, 149, 150, - 151, -1, 173, -1, 71, 26, -1, 152, 169, 153, - -1, -1, -1, 65, 149, 322, 150, 174, 172, 175, - 229, 233, -1, -1, -1, 65, 149, 322, 150, 26, - 176, 169, 177, 231, 234, 68, 151, -1, -1, -1, - 82, 149, 178, 322, 150, 179, 228, -1, -1, -1, - 81, 180, 172, 82, 149, 181, 322, 150, 151, -1, - -1, -1, -1, 84, 149, 267, 151, 182, 267, 151, - 183, 267, 150, 184, 219, -1, -1, 91, 149, 322, - 150, 185, 223, -1, 95, 151, -1, 95, 322, 151, - -1, 96, 151, -1, 96, 322, 151, -1, 100, 151, - -1, 100, 278, 151, -1, 100, 326, 151, -1, 106, - 240, 151, -1, 112, 242, 151, -1, 80, 266, 151, - -1, 75, -1, 322, 151, -1, 114, 149, 201, 150, - 151, -1, -1, -1, 86, 149, 326, 90, 186, 218, - 217, 150, 187, 220, -1, -1, -1, 86, 149, 278, - 90, 188, 326, 217, 150, 189, 220, -1, -1, 88, - 190, 149, 222, 150, 221, -1, 151, -1, -1, -1, - -1, -1, -1, 101, 191, 152, 169, 153, 102, 149, - 192, 305, 193, 73, 150, 194, 152, 169, 153, 195, - 196, -1, 103, 322, 151, -1, 97, 71, 151, -1, - 197, -1, -1, 198, -1, 197, 198, -1, -1, -1, - 102, 149, 305, 199, 73, 150, 200, 152, 169, 153, - -1, 202, -1, 201, 8, 202, -1, 326, -1, 206, - -1, 208, -1, -1, 31, -1, -1, 292, 205, 71, - 207, 149, 235, 150, 152, 169, 153, -1, -1, 211, - 71, 212, 209, 215, 152, 243, 153, -1, -1, 213, - 71, 210, 214, 152, 243, 153, -1, 118, -1, 111, - 118, -1, 119, -1, 110, 118, -1, -1, 121, 305, - -1, 120, -1, -1, 121, 216, -1, -1, 122, 216, - -1, 305, -1, 216, 8, 305, -1, -1, 124, 218, - -1, 326, -1, 31, 326, -1, 172, -1, 26, 169, - 85, 151, -1, 172, -1, 26, 169, 87, 151, -1, - 172, -1, 26, 169, 89, 151, -1, 71, 13, 316, - -1, 222, 8, 71, 13, 316, -1, 152, 224, 153, - -1, 152, 151, 224, 153, -1, 26, 224, 92, 151, - -1, 26, 151, 224, 92, 151, -1, -1, -1, 224, - 93, 322, 227, 225, 169, -1, -1, 224, 94, 227, - 226, 169, -1, 26, -1, 151, -1, 172, -1, 26, - 169, 83, 151, -1, -1, -1, 229, 66, 149, 322, - 150, 230, 172, -1, -1, -1, 231, 66, 149, 322, - 150, 26, 232, 169, -1, -1, 67, 172, -1, -1, - 67, 26, 169, -1, 236, -1, -1, 237, 73, -1, - 237, 31, 73, -1, 237, 31, 73, 13, 316, -1, - 237, 73, 13, 316, -1, 236, 8, 237, 73, -1, - 236, 8, 237, 31, 73, -1, 236, 8, 237, 31, - 73, 13, 316, -1, 236, 8, 237, 73, 13, 316, - -1, -1, 126, -1, 127, -1, 305, -1, 239, -1, - -1, 278, -1, 326, -1, 31, 324, -1, 239, 8, - 278, -1, 239, 8, 326, -1, 239, 8, 31, 324, - -1, 240, 8, 241, -1, 241, -1, 73, -1, 154, - 323, -1, 154, 152, 322, 153, -1, 242, 8, 73, - -1, 242, 8, 73, 13, 316, -1, 73, -1, 73, - 13, 316, -1, 243, 244, -1, -1, -1, 260, 245, - 264, 151, -1, 265, 151, -1, 247, -1, -1, 261, - 292, 205, 71, 246, 149, 235, 150, 259, -1, 104, - 248, 249, -1, 305, -1, 248, 8, 305, -1, 151, - -1, 152, 250, 153, -1, -1, 251, -1, 252, -1, - 251, 252, -1, 253, 151, -1, 257, 151, -1, 256, - 105, 254, -1, 305, -1, 254, 8, 305, -1, 71, - -1, 256, -1, 305, 144, 71, -1, 255, 90, 258, - 71, -1, 255, 90, 263, -1, -1, 263, -1, 151, - -1, 152, 169, 153, -1, 262, -1, 113, -1, -1, - 262, -1, 263, -1, 262, 263, -1, 107, -1, 108, - -1, 109, -1, 112, -1, 111, -1, 110, -1, 264, - 8, 73, -1, 264, 8, 73, 13, 316, -1, 73, - -1, 73, 13, 316, -1, 265, 8, 71, 13, 316, - -1, 99, 71, 13, 316, -1, 266, 8, 322, -1, - 322, -1, -1, 268, -1, -1, 268, 8, 269, 322, - -1, 322, -1, 270, 330, -1, 330, -1, 271, 61, - 345, 155, -1, 61, 345, 155, -1, -1, 271, 273, - 270, -1, 271, -1, 270, -1, -1, -1, 275, 272, - -1, -1, 63, 306, 277, 314, -1, -1, 125, 149, - 279, 351, 150, 13, 322, -1, 326, 13, 322, -1, - 326, 13, 31, 326, -1, -1, 326, 13, 31, 63, - 306, 280, 314, -1, 62, 322, -1, 326, 24, 322, - -1, 326, 23, 322, -1, 326, 22, 322, -1, 326, - 21, 322, -1, 326, 20, 322, -1, 326, 19, 322, - -1, 326, 18, 322, -1, 326, 17, 322, -1, 326, - 16, 322, -1, 326, 15, 322, -1, 326, 14, 322, - -1, 325, 60, -1, 60, 325, -1, 325, 59, -1, - 59, 325, -1, -1, 322, 27, 281, 322, -1, -1, - 322, 28, 282, 322, -1, -1, 322, 9, 283, 322, - -1, -1, 322, 11, 284, 322, -1, 322, 10, 322, - -1, 322, 29, 322, -1, 322, 31, 322, -1, 322, - 30, 322, -1, 322, 44, 322, -1, 322, 42, 322, - -1, 322, 43, 322, -1, 322, 45, 322, -1, 322, - 46, 322, -1, 322, 47, 322, -1, 322, 41, 322, - -1, 322, 40, 322, -1, 42, 322, -1, 43, 322, - -1, 48, 322, -1, 50, 322, -1, 322, 33, 322, - -1, 322, 32, 322, -1, 322, 35, 322, -1, 322, - 34, 322, -1, 322, 36, 322, -1, 322, 39, 322, - -1, 322, 37, 322, -1, 322, 38, 322, -1, 322, - 49, 306, -1, 149, 322, 150, -1, 276, -1, -1, - 149, 276, 150, 285, 274, -1, -1, -1, 322, 25, - 286, 322, 26, 287, 322, -1, -1, 322, 25, 26, - 288, 322, -1, 360, -1, 58, 322, -1, 57, 322, - -1, 56, 322, -1, 55, 322, -1, 54, 322, -1, - 53, 322, -1, 52, 322, -1, 64, 312, -1, -1, - 51, 289, 322, -1, 318, -1, 126, 149, 354, 150, - -1, 61, 354, 155, -1, 156, 313, 156, -1, 12, - 322, -1, -1, 292, 205, 149, 290, 235, 150, 293, - 152, 169, 153, -1, -1, 112, 292, 205, 149, 291, - 235, 150, 293, 152, 169, 153, -1, 98, -1, -1, - 104, 149, 294, 150, -1, 294, 8, 73, -1, 294, - 8, 31, 73, -1, 73, -1, 31, 73, -1, -1, - 162, 149, 296, 238, 150, -1, -1, 145, 148, 162, - 149, 297, 238, 150, -1, -1, 148, 162, 149, 298, - 238, 150, -1, -1, 304, 144, 349, 149, 299, 238, - 150, -1, -1, 304, 144, 336, 149, 300, 238, 150, - -1, -1, 338, 144, 349, 149, 301, 238, 150, -1, - -1, 338, 144, 336, 149, 302, 238, 150, -1, -1, - 336, 149, 303, 238, 150, -1, 112, -1, 162, -1, - 145, 148, 162, -1, 148, 162, -1, 162, -1, 145, - 148, 162, -1, 148, 162, -1, 304, -1, 307, -1, - -1, -1, 342, 123, 308, 346, 309, 310, -1, 342, - -1, 310, 311, -1, -1, 123, 346, -1, -1, 149, - 150, -1, 149, 322, 150, -1, -1, 78, -1, 356, - -1, -1, 149, 238, 150, -1, 69, -1, 70, -1, - 79, -1, 132, -1, 133, -1, 147, -1, 129, -1, - 130, -1, 131, -1, 146, -1, 140, 78, 141, -1, - 140, 141, -1, 315, -1, 162, -1, 145, 148, 162, - -1, 148, 162, -1, 42, 316, -1, 43, 316, -1, - 126, 149, 319, 150, -1, 61, 319, 155, -1, 317, - -1, 128, -1, 304, 144, 71, -1, 72, -1, 363, - -1, 162, -1, 145, 148, 162, -1, 148, 162, -1, - 315, -1, 157, 356, 157, -1, 140, 356, 141, -1, - 128, -1, -1, 321, 320, -1, -1, 8, -1, 321, - 8, 316, 124, 316, -1, 321, 8, 316, -1, 316, - 124, 316, -1, 316, -1, 323, -1, 278, -1, 326, - -1, 326, -1, 326, -1, -1, -1, 341, 123, 327, - 346, 328, 335, 329, -1, 341, -1, 329, 330, -1, - -1, -1, 123, 346, 331, 335, -1, 332, 61, 345, - 155, -1, 333, 61, 345, 155, -1, -1, 149, 334, - 238, 150, -1, 333, -1, 332, -1, -1, 343, -1, - 350, 343, -1, 304, 144, 336, -1, 338, 144, 336, - -1, 343, -1, 339, 61, 345, 155, -1, -1, 295, - 340, 61, 345, 155, -1, 342, -1, 339, -1, 295, - -1, 343, -1, 350, 343, -1, 337, -1, 343, 61, - 345, 155, -1, 343, 152, 322, 153, -1, 344, -1, - 73, -1, 154, 152, 322, 153, -1, -1, 322, -1, - 348, -1, -1, 336, 347, -1, 348, 61, 345, 155, - -1, 348, 152, 322, 153, -1, 349, -1, 71, -1, - 152, 322, 153, -1, 154, -1, 350, 154, -1, 351, - 8, 352, -1, 352, -1, 326, -1, -1, 125, 149, - 353, 351, 150, -1, -1, -1, 355, 320, -1, 355, - 8, 322, 124, 322, -1, 355, 8, 322, -1, 322, - 124, 322, -1, 322, -1, 355, 8, 322, 124, 31, - 324, -1, 355, 8, 31, 324, -1, 322, 124, 31, - 324, -1, 31, 324, -1, 356, 357, -1, 356, 78, - -1, 357, -1, 78, 357, -1, 73, -1, -1, 73, - 61, 358, 359, 155, -1, 73, 123, 71, -1, 142, - 322, 153, -1, 142, 72, 61, 322, 155, 153, -1, - 143, 326, 153, -1, 71, -1, 74, -1, 73, -1, - 115, 149, 361, 150, -1, 116, 149, 326, 150, -1, - 7, 322, -1, 6, 322, -1, 5, 149, 322, 150, - -1, 4, 322, -1, 3, 322, -1, 326, -1, -1, - 361, 8, 362, 326, -1, 304, 144, 71, -1, 338, - 144, 71, -1 + 161, 0, -1, 162, -1, -1, 162, 163, 165, -1, + -1, 72, -1, 164, 150, 72, -1, 174, -1, 209, + -1, 210, -1, 119, 151, 152, 153, -1, 147, 164, + 153, -1, -1, 147, 164, 154, 166, 162, 155, -1, + -1, 147, 154, 167, 162, 155, -1, 106, 168, 153, + -1, 170, 153, -1, 168, 8, 169, -1, 169, -1, + 164, -1, 164, 91, 72, -1, 150, 164, -1, 150, + 164, 91, 72, -1, 170, 8, 72, 14, 326, -1, + 100, 72, 14, 326, -1, -1, 171, 172, 173, -1, + -1, 174, -1, 209, -1, 210, -1, 119, 151, 152, + 153, -1, 175, -1, 72, 27, -1, 154, 171, 155, + -1, -1, -1, 66, 333, 176, 174, 177, 236, 240, + -1, -1, -1, 66, 333, 27, 178, 171, 179, 238, + 241, 69, 153, -1, -1, -1, 83, 180, 333, 181, + 235, -1, -1, -1, 82, 182, 174, 83, 183, 333, + 153, -1, -1, -1, -1, 85, 151, 274, 153, 184, + 274, 153, 185, 274, 152, 186, 226, -1, -1, 92, + 333, 187, 230, -1, 96, 153, -1, 96, 332, 153, + -1, 97, 153, -1, 97, 332, 153, -1, 101, 153, + -1, 101, 285, 153, -1, 101, 337, 153, -1, 299, + 153, -1, 108, 247, 153, -1, 114, 249, 153, -1, + 81, 273, 153, -1, 76, -1, 332, 153, -1, 116, + 151, 207, 152, 153, -1, -1, -1, 87, 151, 337, + 91, 188, 224, 223, 152, 189, 227, -1, -1, -1, + 87, 151, 285, 91, 190, 224, 223, 152, 191, 227, + -1, -1, 89, 192, 151, 229, 152, 228, -1, 153, + -1, -1, -1, 102, 193, 154, 171, 155, 195, 194, + 200, -1, 105, 332, 153, -1, 98, 72, 153, -1, + -1, -1, -1, -1, -1, 103, 151, 196, 315, 197, + 74, 152, 198, 154, 171, 155, 199, 202, -1, -1, + -1, 104, 201, 154, 171, 155, -1, 203, -1, -1, + 204, -1, 203, 204, -1, -1, -1, 103, 151, 315, + 205, 74, 152, 206, 154, 171, 155, -1, 208, -1, + 207, 8, 208, -1, 337, -1, 212, -1, 214, -1, + -1, 32, -1, -1, 302, 211, 72, 213, 151, 242, + 152, 154, 171, 155, -1, -1, 217, 72, 218, 215, + 221, 154, 250, 155, -1, -1, 219, 72, 216, 220, + 154, 250, 155, -1, 120, -1, 113, 120, -1, 121, + -1, 112, 120, -1, -1, 123, 315, -1, 122, -1, + -1, 123, 222, -1, -1, 124, 222, -1, 315, -1, + 222, 8, 315, -1, -1, 126, 224, -1, 337, -1, + 32, 337, -1, -1, 127, 151, 225, 362, 152, -1, + 174, -1, 27, 171, 86, 153, -1, 174, -1, 27, + 171, 88, 153, -1, 174, -1, 27, 171, 90, 153, + -1, 72, 14, 326, -1, 229, 8, 72, 14, 326, + -1, 154, 231, 155, -1, 154, 153, 231, 155, -1, + 27, 231, 93, 153, -1, 27, 153, 231, 93, 153, + -1, -1, -1, 231, 94, 332, 234, 232, 171, -1, + -1, 231, 95, 234, 233, 171, -1, 27, -1, 153, + -1, 174, -1, 27, 171, 84, 153, -1, -1, -1, + 236, 67, 333, 237, 174, -1, -1, -1, 238, 67, + 333, 27, 239, 171, -1, -1, 68, 174, -1, -1, + 68, 27, 171, -1, 243, -1, -1, 244, 74, -1, + 244, 32, 74, -1, 244, 32, 74, 14, 326, -1, + 244, 74, 14, 326, -1, 243, 8, 244, 74, -1, + 243, 8, 244, 32, 74, -1, 243, 8, 244, 32, + 74, 14, 326, -1, 243, 8, 244, 74, 14, 326, + -1, -1, 128, -1, 129, -1, 315, -1, 151, 152, + -1, 151, 246, 152, -1, 151, 299, 152, -1, 285, + -1, 337, -1, 32, 335, -1, 246, 8, 285, -1, + 246, 8, 337, -1, 246, 8, 32, 335, -1, 247, + 8, 248, -1, 248, -1, 74, -1, 156, 334, -1, + 156, 154, 332, 155, -1, 249, 8, 74, -1, 249, + 8, 74, 14, 326, -1, 74, -1, 74, 14, 326, + -1, 250, 251, -1, -1, -1, 267, 252, 271, 153, + -1, 272, 153, -1, 254, -1, -1, 268, 302, 211, + 72, 253, 151, 242, 152, 266, -1, 106, 255, 256, + -1, 315, -1, 255, 8, 315, -1, 153, -1, 154, + 257, 155, -1, -1, 258, -1, 259, -1, 258, 259, + -1, 260, 153, -1, 264, 153, -1, 263, 107, 261, + -1, 315, -1, 261, 8, 315, -1, 72, -1, 263, + -1, 315, 146, 72, -1, 262, 91, 265, 72, -1, + 262, 91, 270, -1, -1, 270, -1, 153, -1, 154, + 171, 155, -1, 269, -1, 115, -1, -1, 269, -1, + 270, -1, 269, 270, -1, 109, -1, 110, -1, 111, + -1, 114, -1, 113, -1, 112, -1, 271, 8, 74, + -1, 271, 8, 74, 14, 326, -1, 74, -1, 74, + 14, 326, -1, 272, 8, 72, 14, 326, -1, 100, + 72, 14, 326, -1, 273, 8, 332, -1, 332, -1, + -1, 275, -1, -1, 275, 8, 276, 332, -1, 332, + -1, 277, 341, -1, 341, -1, 278, 62, 356, 157, + -1, 62, 356, 157, -1, -1, 278, 280, 277, -1, + 278, -1, 277, -1, -1, -1, 282, 279, -1, -1, + 64, 316, 284, 324, -1, -1, 127, 151, 286, 362, + 152, 14, 332, -1, 337, 14, 332, -1, 337, 14, + 32, 337, -1, -1, 337, 14, 32, 64, 316, 287, + 324, -1, 63, 332, -1, 337, 25, 332, -1, 337, + 24, 332, -1, 337, 23, 332, -1, 337, 22, 332, + -1, 337, 21, 332, -1, 337, 20, 332, -1, 337, + 19, 332, -1, 337, 18, 332, -1, 337, 17, 332, + -1, 337, 16, 332, -1, 337, 15, 332, -1, 336, + 61, -1, 61, 336, -1, 336, 60, -1, 60, 336, + -1, -1, 332, 28, 288, 332, -1, -1, 332, 29, + 289, 332, -1, -1, 332, 9, 290, 332, -1, -1, + 332, 11, 291, 332, -1, 332, 10, 332, -1, 332, + 30, 332, -1, 332, 32, 332, -1, 332, 31, 332, + -1, 332, 45, 332, -1, 332, 43, 332, -1, 332, + 44, 332, -1, 332, 46, 332, -1, 332, 47, 332, + -1, 332, 48, 332, -1, 332, 42, 332, -1, 332, + 41, 332, -1, 43, 332, -1, 44, 332, -1, 49, + 332, -1, 51, 332, -1, 332, 34, 332, -1, 332, + 33, 332, -1, 332, 36, 332, -1, 332, 35, 332, + -1, 332, 37, 332, -1, 332, 40, 332, -1, 332, + 38, 332, -1, 332, 39, 332, -1, 332, 50, 316, + -1, 333, -1, 283, -1, -1, 151, 283, 152, 292, + 281, -1, -1, -1, 332, 26, 293, 332, 27, 294, + 332, -1, -1, 332, 26, 27, 295, 332, -1, 371, + -1, 59, 332, -1, 58, 332, -1, 57, 332, -1, + 56, 332, -1, 55, 332, -1, 54, 332, -1, 53, + 332, -1, 65, 322, -1, -1, 52, 296, 332, -1, + 328, -1, 300, -1, 301, -1, 158, 323, 158, -1, + 12, 332, -1, 13, -1, -1, 302, 211, 297, 151, + 242, 152, 303, 154, 171, 155, -1, -1, 114, 302, + 211, 298, 151, 242, 152, 303, 154, 171, 155, -1, + 13, 285, -1, 13, 337, -1, 13, 332, 126, 285, + -1, 13, 332, 126, 337, -1, 301, 62, 356, 157, + -1, 300, 62, 356, 157, -1, 80, 62, 356, 157, + -1, 128, 151, 365, 152, -1, 62, 365, 157, -1, + 99, -1, -1, 106, 151, 304, 152, -1, 304, 8, + 74, -1, 304, 8, 32, 74, -1, 74, -1, 32, + 74, -1, -1, 164, 306, 245, -1, -1, 147, 150, + 164, 307, 245, -1, -1, 150, 164, 308, 245, -1, + -1, 314, 146, 360, 309, 245, -1, -1, 314, 146, + 347, 310, 245, -1, -1, 349, 146, 360, 311, 245, + -1, -1, 349, 146, 347, 312, 245, -1, -1, 347, + 313, 245, -1, 114, -1, 164, -1, 147, 150, 164, + -1, 150, 164, -1, 164, -1, 147, 150, 164, -1, + 150, 164, -1, 314, -1, 317, -1, -1, -1, 353, + 125, 318, 357, 319, 320, -1, 353, -1, 320, 321, + -1, -1, 125, 357, -1, -1, 151, 152, -1, 333, + -1, -1, 79, -1, 367, -1, -1, 245, -1, 70, + -1, 71, -1, 80, -1, 134, -1, 135, -1, 149, + -1, 131, -1, 132, -1, 133, -1, 148, -1, 142, + 79, 143, -1, 142, 143, -1, 325, -1, 164, -1, + 147, 150, 164, -1, 150, 164, -1, 43, 326, -1, + 44, 326, -1, 128, 151, 329, 152, -1, 62, 329, + 157, -1, 327, -1, 130, -1, 314, 146, 72, -1, + 73, -1, 375, -1, 164, -1, 147, 150, 164, -1, + 150, 164, -1, 325, -1, 159, 367, 159, -1, 142, + 367, 143, -1, 130, -1, -1, 331, 330, -1, -1, + 8, -1, 331, 8, 326, 126, 326, -1, 331, 8, + 326, -1, 326, 126, 326, -1, 326, -1, 334, -1, + 285, -1, 151, 332, 152, -1, 151, 299, 152, -1, + 337, -1, 337, -1, 337, -1, -1, -1, 352, 125, + 338, 357, 339, 346, 340, -1, 352, -1, 340, 341, + -1, -1, -1, 125, 357, 342, 346, -1, 343, 62, + 356, 157, -1, 344, 62, 356, 157, -1, -1, 345, + 245, -1, 344, -1, 343, -1, -1, 354, -1, 361, + 354, -1, 314, 146, 347, -1, 349, 146, 347, -1, + 354, -1, 350, 62, 356, 157, -1, -1, 305, 351, + 62, 356, 157, -1, 353, -1, 350, -1, 305, -1, + 354, -1, 361, 354, -1, 348, -1, 354, 62, 356, + 157, -1, 354, 154, 332, 155, -1, 355, -1, 74, + -1, 156, 154, 332, 155, -1, -1, 332, -1, 359, + -1, -1, 347, 358, -1, 359, 62, 356, 157, -1, + 359, 154, 332, 155, -1, 360, -1, 72, -1, 154, + 332, 155, -1, 156, -1, 361, 156, -1, 362, 8, + 363, -1, 363, -1, 337, -1, -1, 127, 151, 364, + 362, 152, -1, -1, -1, 366, 330, -1, 366, 8, + 332, 126, 332, -1, 366, 8, 332, -1, 332, 126, + 332, -1, 332, -1, 366, 8, 332, 126, 32, 335, + -1, 366, 8, 32, 335, -1, 332, 126, 32, 335, + -1, 32, 335, -1, 367, 368, -1, 367, 79, -1, + 368, -1, 79, 368, -1, 74, -1, -1, 74, 62, + 369, 370, 157, -1, 74, 125, 72, -1, 144, 332, + 155, -1, 144, 73, 62, 332, 157, 155, -1, 145, + 337, 155, -1, 72, -1, 75, -1, 74, -1, 117, + 151, 372, 152, -1, 118, 151, 337, 152, -1, 118, + 151, 285, 152, -1, 7, 332, -1, 6, 332, -1, + 5, 151, 332, 152, -1, 4, 332, -1, 3, 332, + -1, 374, -1, -1, 372, 8, 373, 374, -1, 337, + -1, 285, -1, 314, 146, 72, -1, 349, 146, 72, + -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 214, 214, 218, 218, 219, 223, 224, 228, 229, - 230, 231, 232, 233, 233, 235, 235, 237, 238, 242, - 243, 247, 248, 249, 250, 254, 255, 259, 259, 260, - 265, 266, 267, 268, 273, 274, 278, 279, 279, 279, - 280, 280, 280, 281, 281, 281, 282, 282, 282, 286, - 288, 290, 283, 292, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 307, 308, - 306, 311, 312, 310, 314, 314, 315, 316, 317, 318, - 319, 320, 316, 322, 323, 328, 329, 333, 334, 339, - 339, 339, 344, 345, 349, 353, 357, 362, 363, 368, - 368, 374, 373, 380, 379, 389, 390, 391, 392, 396, - 397, 401, 404, 406, 409, 411, 415, 416, 420, 421, - 426, 427, 431, 432, 437, 438, 443, 444, 449, 450, - 455, 456, 457, 458, 463, 464, 464, 465, 465, 470, - 471, 476, 477, 482, 484, 484, 488, 490, 490, 494, - 496, 500, 502, 507, 508, 513, 514, 515, 516, 517, - 518, 519, 520, 525, 526, 527, 528, 533, 534, 539, - 540, 541, 542, 543, 544, 548, 549, 554, 555, 556, - 561, 562, 563, 564, 570, 571, 576, 576, 577, 578, - 579, 579, 584, 588, 589, 593, 594, 597, 599, 603, - 604, 608, 609, 613, 617, 618, 622, 623, 627, 631, - 632, 636, 637, 641, 642, 646, 647, 651, 652, 656, - 657, 661, 662, 663, 664, 665, 666, 670, 671, 672, - 673, 677, 678, 682, 683, 688, 689, 693, 693, 694, - 698, 699, 703, 704, 708, 708, 709, 710, 714, 715, - 715, 720, 720, 724, 724, 725, 726, 727, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 744, 745, 745, 746, - 746, 747, 747, 748, 749, 750, 751, 752, 753, 754, - 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 775, 776, 777, 776, 779, 779, 781, 782, 783, - 784, 785, 786, 787, 788, 789, 790, 790, 791, 792, - 793, 794, 795, 796, 796, 798, 798, 803, 806, 808, - 812, 813, 814, 815, 819, 819, 822, 822, 825, 825, - 828, 828, 831, 831, 834, 834, 837, 837, 840, 840, - 846, 847, 848, 849, 853, 854, 855, 861, 862, 867, - 868, 867, 870, 875, 876, 881, 885, 886, 887, 891, - 892, 893, 898, 899, 904, 905, 906, 907, 908, 909, - 910, 911, 912, 913, 914, 915, 920, 921, 922, 923, - 924, 925, 926, 927, 928, 929, 933, 937, 938, 939, - 940, 941, 942, 943, 944, 945, 950, 951, 954, 956, - 960, 961, 962, 963, 967, 968, 973, 978, 983, 988, - 989, 988, 991, 995, 996, 1001, 1001, 1005, 1006, 1010, - 1010, 1016, 1017, 1018, 1022, 1023, 1027, 1028, 1033, 1037, - 1038, 1038, 1043, 1044, 1045, 1050, 1051, 1052, 1056, 1057, - 1058, 1063, 1064, 1068, 1069, 1074, 1075, 1075, 1079, 1080, - 1081, 1085, 1086, 1090, 1091, 1095, 1096, 1101, 1102, 1102, - 1103, 1108, 1109, 1113, 1114, 1115, 1116, 1117, 1118, 1119, - 1120, 1124, 1125, 1126, 1127, 1133, 1134, 1134, 1135, 1136, - 1137, 1138, 1143, 1144, 1145, 1150, 1151, 1152, 1153, 1154, - 1155, 1156, 1160, 1161, 1161, 1165, 1166 + 0, 217, 217, 221, 221, 222, 226, 227, 231, 232, + 233, 234, 235, 236, 236, 238, 238, 240, 241, 245, + 246, 250, 251, 252, 253, 257, 258, 262, 262, 263, + 268, 269, 270, 271, 276, 277, 281, 282, 282, 282, + 283, 283, 283, 284, 284, 284, 285, 285, 285, 289, + 291, 293, 286, 295, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 311, + 312, 310, 315, 316, 314, 318, 318, 319, 320, 321, + 320, 323, 324, 328, 329, 330, 331, 332, 329, 336, + 337, 337, 341, 342, 346, 347, 351, 351, 351, 355, + 356, 360, 364, 368, 372, 373, 378, 378, 385, 384, + 391, 390, 400, 401, 402, 403, 407, 408, 412, 415, + 417, 420, 422, 426, 427, 431, 432, 436, 437, 438, + 438, 442, 443, 448, 449, 454, 455, 460, 461, 466, + 467, 468, 469, 474, 475, 475, 476, 476, 481, 482, + 487, 488, 493, 495, 495, 499, 501, 501, 505, 507, + 511, 513, 518, 519, 524, 525, 526, 527, 528, 529, + 530, 531, 536, 537, 538, 539, 544, 545, 546, 551, + 552, 553, 554, 555, 556, 560, 561, 566, 567, 568, + 573, 574, 575, 576, 582, 583, 588, 588, 589, 590, + 591, 591, 597, 601, 602, 606, 607, 610, 612, 616, + 617, 621, 622, 626, 630, 631, 635, 636, 640, 644, + 645, 649, 650, 654, 655, 659, 660, 664, 665, 669, + 670, 674, 675, 676, 677, 678, 679, 683, 684, 685, + 686, 690, 691, 695, 696, 701, 702, 706, 706, 707, + 711, 712, 716, 717, 721, 721, 722, 723, 727, 728, + 728, 733, 733, 737, 737, 738, 739, 740, 740, 741, + 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, + 752, 753, 754, 755, 756, 757, 757, 758, 758, 759, + 759, 760, 760, 761, 762, 763, 764, 765, 766, 767, + 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, + 788, 788, 789, 790, 789, 792, 792, 794, 795, 796, + 797, 798, 799, 800, 801, 802, 803, 803, 804, 805, + 806, 807, 808, 809, 810, 810, 813, 813, 819, 820, + 821, 822, 826, 827, 828, 831, 832, 835, 838, 840, + 844, 845, 846, 847, 851, 851, 853, 853, 855, 855, + 857, 857, 859, 859, 861, 861, 863, 863, 865, 865, + 870, 871, 872, 873, 877, 878, 879, 885, 886, 891, + 892, 891, 894, 899, 900, 905, 909, 910, 911, 915, + 916, 917, 922, 923, 928, 929, 930, 931, 932, 933, + 934, 935, 936, 937, 938, 939, 944, 945, 946, 947, + 948, 949, 950, 951, 952, 953, 957, 961, 962, 963, + 964, 965, 966, 967, 968, 969, 974, 975, 978, 980, + 984, 985, 986, 987, 991, 992, 996, 997, 1002, 1007, + 1012, 1017, 1018, 1017, 1020, 1024, 1025, 1030, 1030, 1034, + 1035, 1039, 1039, 1044, 1045, 1046, 1050, 1051, 1055, 1056, + 1061, 1065, 1066, 1066, 1071, 1072, 1073, 1078, 1079, 1080, + 1084, 1085, 1086, 1091, 1092, 1096, 1097, 1102, 1103, 1103, + 1107, 1108, 1109, 1113, 1114, 1118, 1119, 1123, 1124, 1129, + 1130, 1130, 1131, 1136, 1137, 1141, 1142, 1143, 1144, 1145, + 1146, 1147, 1148, 1152, 1153, 1154, 1155, 1161, 1162, 1162, + 1163, 1164, 1165, 1166, 1171, 1172, 1173, 1178, 1179, 1180, + 1181, 1182, 1183, 1184, 1185, 1189, 1190, 1190, 1194, 1195, + 1199, 1200 }; #endif @@ -998,9 +1019,9 @@ static const char *const yytname[] = "\"eval (T_EVAL)\"", "\"include_once (T_INCLUDE_ONCE)\"", "\"include (T_INCLUDE)\"", "','", "\"or (T_LOGICAL_OR)\"", "\"xor (T_LOGICAL_XOR)\"", "\"and (T_LOGICAL_AND)\"", - "\"print (T_PRINT)\"", "'='", "\">>= (T_SR_EQUAL)\"", - "\"<<= (T_SL_EQUAL)\"", "\"^= (T_XOR_EQUAL)\"", "\"|= (T_OR_EQUAL)\"", - "\"&= (T_AND_EQUAL)\"", "\"%= (T_MOD_EQUAL)\"", + "\"print (T_PRINT)\"", "\"yield (T_YIELD)\"", "'='", + "\">>= (T_SR_EQUAL)\"", "\"<<= (T_SL_EQUAL)\"", "\"^= (T_XOR_EQUAL)\"", + "\"|= (T_OR_EQUAL)\"", "\"&= (T_AND_EQUAL)\"", "\"%= (T_MOD_EQUAL)\"", "\".= (T_CONCAT_EQUAL)\"", "\"/= (T_DIV_EQUAL)\"", "\"*= (T_MUL_EQUAL)\"", "\"-= (T_MINUS_EQUAL)\"", "\"+= (T_PLUS_EQUAL)\"", "'?'", "':'", "\"|| (T_BOOLEAN_OR)\"", @@ -1032,12 +1053,12 @@ static const char *const yytname[] = "\"continue (T_CONTINUE)\"", "\"goto (T_GOTO)\"", "\"function (T_FUNCTION)\"", "\"const (T_CONST)\"", "\"return (T_RETURN)\"", "\"try (T_TRY)\"", "\"catch (T_CATCH)\"", - "\"throw (T_THROW)\"", "\"use (T_USE)\"", "\"insteadof (T_INSTEADOF)\"", - "\"global (T_GLOBAL)\"", "\"public (T_PUBLIC)\"", - "\"protected (T_PROTECTED)\"", "\"private (T_PRIVATE)\"", - "\"final (T_FINAL)\"", "\"abstract (T_ABSTRACT)\"", - "\"static (T_STATIC)\"", "\"var (T_VAR)\"", "\"unset (T_UNSET)\"", - "\"isset (T_ISSET)\"", "\"empty (T_EMPTY)\"", + "\"finally (T_FINALLY)\"", "\"throw (T_THROW)\"", "\"use (T_USE)\"", + "\"insteadof (T_INSTEADOF)\"", "\"global (T_GLOBAL)\"", + "\"public (T_PUBLIC)\"", "\"protected (T_PROTECTED)\"", + "\"private (T_PRIVATE)\"", "\"final (T_FINAL)\"", + "\"abstract (T_ABSTRACT)\"", "\"static (T_STATIC)\"", "\"var (T_VAR)\"", + "\"unset (T_UNSET)\"", "\"isset (T_ISSET)\"", "\"empty (T_EMPTY)\"", "\"__halt_compiler (T_HALT_COMPILER)\"", "\"class (T_CLASS)\"", "\"trait (T_TRAIT)\"", "\"interface (T_INTERFACE)\"", "\"extends (T_EXTENDS)\"", "\"implements (T_IMPLEMENTS)\"", @@ -1055,27 +1076,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", "@24", "@25", "@26", - "additional_catches", "non_empty_additional_catches", "additional_catch", - "@27", "@28", "unset_variables", "unset_variable", + "']'", "'`'", "'\"'", "$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", "@29", - "unticked_class_declaration_statement", "@30", "@31", "class_entry_type", - "extends_from", "interface_entry", "interface_extends_list", - "implements_list", "interface_list", "foreach_optional_arg", - "foreach_variable", "for_statement", "foreach_statement", - "declare_statement", "declare_list", "switch_case_list", "case_list", - "@32", "@33", "case_separator", "while_statement", "elseif_list", "@34", - "new_elseif_list", "@35", "else_single", "new_else_single", - "parameter_list", "non_empty_parameter_list", "optional_class_type", + "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", "@36", "@37", + "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", @@ -1083,32 +1106,34 @@ 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", "@38", + "echo_expr_list", "for_expr", "non_empty_for_expr", "$@41", "chaining_method_or_property", "chaining_dereference", - "chaining_instance_call", "@39", "instance_call", "@40", "new_expr", - "@41", "expr_without_variable", "@42", "@43", "@44", "@45", "@46", "@47", - "@48", "@49", "@50", "@51", "@52", "@53", "@54", "function", - "lexical_vars", "lexical_var_list", "function_call", "@55", "@56", "@57", - "@58", "@59", "@60", "@61", "@62", "class_name", + "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", "@63", "@64", + "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", - "r_variable", "w_variable", "rw_variable", "variable", "@65", "@66", - "variable_properties", "variable_property", "@67", - "array_method_dereference", "method", "@68", "method_or_not", + "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_without_objects", "static_member", "variable_class_name", - "array_function_dereference", "@69", "base_variable_with_function_calls", - "base_variable", "reference_variable", "compound_variable", "dim_offset", - "object_property", "@70", "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", "@71", "array_pair_list", - "non_empty_array_pair_list", "encaps_list", "encaps_var", "@72", + "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", - "@73", "class_constant", 0 + "$@76", "isset_variable", "class_constant", 0 }; #endif @@ -1118,12 +1143,12 @@ static const char *const yytname[] = static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 44, 263, - 264, 265, 266, 61, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 63, 58, 278, 279, 124, - 94, 38, 280, 281, 282, 283, 60, 62, 284, 285, - 286, 287, 43, 45, 46, 42, 47, 37, 33, 288, - 126, 64, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 91, 298, 299, 300, 301, 302, 303, 304, 305, + 264, 265, 266, 267, 61, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 63, 58, 279, 280, + 124, 94, 38, 281, 282, 283, 284, 60, 62, 285, + 286, 287, 288, 43, 45, 46, 42, 47, 37, 33, + 289, 126, 64, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 91, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, @@ -1131,66 +1156,69 @@ static const yytype_uint16 yytoknum[] = 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 40, - 41, 59, 123, 125, 36, 93, 96, 34 + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 40, 41, 59, 123, 125, 36, 93, 96, 34 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 158, 159, 161, 160, 160, 162, 162, 163, 163, - 163, 163, 163, 164, 163, 165, 163, 163, 163, 166, - 166, 167, 167, 167, 167, 168, 168, 170, 169, 169, - 171, 171, 171, 171, 172, 172, 173, 174, 175, 173, - 176, 177, 173, 178, 179, 173, 180, 181, 173, 182, - 183, 184, 173, 185, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 186, 187, - 173, 188, 189, 173, 190, 173, 173, 191, 192, 193, - 194, 195, 173, 173, 173, 196, 196, 197, 197, 199, - 200, 198, 201, 201, 202, 203, 204, 205, 205, 207, - 206, 209, 208, 210, 208, 211, 211, 211, 211, 212, - 212, 213, 214, 214, 215, 215, 216, 216, 217, 217, - 218, 218, 219, 219, 220, 220, 221, 221, 222, 222, - 223, 223, 223, 223, 224, 225, 224, 226, 224, 227, - 227, 228, 228, 229, 230, 229, 231, 232, 231, 233, - 233, 234, 234, 235, 235, 236, 236, 236, 236, 236, - 236, 236, 236, 237, 237, 237, 237, 238, 238, 239, - 239, 239, 239, 239, 239, 240, 240, 241, 241, 241, - 242, 242, 242, 242, 243, 243, 245, 244, 244, 244, - 246, 244, 247, 248, 248, 249, 249, 250, 250, 251, - 251, 252, 252, 253, 254, 254, 255, 255, 256, 257, - 257, 258, 258, 259, 259, 260, 260, 261, 261, 262, - 262, 263, 263, 263, 263, 263, 263, 264, 264, 264, - 264, 265, 265, 266, 266, 267, 267, 269, 268, 268, - 270, 270, 271, 271, 273, 272, 272, 272, 274, 275, - 274, 277, 276, 279, 278, 278, 278, 280, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 281, 278, 282, 278, 283, - 278, 284, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 285, 278, 286, 287, 278, 288, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 289, 278, 278, 278, - 278, 278, 278, 290, 278, 291, 278, 292, 293, 293, - 294, 294, 294, 294, 296, 295, 297, 295, 298, 295, - 299, 295, 300, 295, 301, 295, 302, 295, 303, 295, - 304, 304, 304, 304, 305, 305, 305, 306, 306, 308, - 309, 307, 307, 310, 310, 311, 312, 312, 312, 313, - 313, 313, 314, 314, 315, 315, 315, 315, 315, 315, - 315, 315, 315, 315, 315, 315, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 317, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 319, 319, 320, 320, - 321, 321, 321, 321, 322, 322, 323, 324, 325, 327, - 328, 326, 326, 329, 329, 331, 330, 332, 332, 334, - 333, 335, 335, 335, 336, 336, 337, 337, 338, 339, - 340, 339, 341, 341, 341, 342, 342, 342, 343, 343, - 343, 344, 344, 345, 345, 346, 347, 346, 348, 348, - 348, 349, 349, 350, 350, 351, 351, 352, 353, 352, - 352, 354, 354, 355, 355, 355, 355, 355, 355, 355, - 355, 356, 356, 356, 356, 357, 358, 357, 357, 357, - 357, 357, 359, 359, 359, 360, 360, 360, 360, 360, - 360, 360, 361, 362, 361, 363, 363 + 0, 160, 161, 163, 162, 162, 164, 164, 165, 165, + 165, 165, 165, 166, 165, 167, 165, 165, 165, 168, + 168, 169, 169, 169, 169, 170, 170, 172, 171, 171, + 173, 173, 173, 173, 174, 174, 175, 176, 177, 175, + 178, 179, 175, 180, 181, 175, 182, 183, 175, 184, + 185, 186, 175, 187, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 188, + 189, 175, 190, 191, 175, 192, 175, 175, 193, 194, + 175, 175, 175, 195, 196, 197, 198, 199, 195, 200, + 201, 200, 202, 202, 203, 203, 205, 206, 204, 207, + 207, 208, 209, 210, 211, 211, 213, 212, 215, 214, + 216, 214, 217, 217, 217, 217, 218, 218, 219, 220, + 220, 221, 221, 222, 222, 223, 223, 224, 224, 225, + 224, 226, 226, 227, 227, 228, 228, 229, 229, 230, + 230, 230, 230, 231, 232, 231, 233, 231, 234, 234, + 235, 235, 236, 237, 236, 238, 239, 238, 240, 240, + 241, 241, 242, 242, 243, 243, 243, 243, 243, 243, + 243, 243, 244, 244, 244, 244, 245, 245, 245, 246, + 246, 246, 246, 246, 246, 247, 247, 248, 248, 248, + 249, 249, 249, 249, 250, 250, 252, 251, 251, 251, + 253, 251, 254, 255, 255, 256, 256, 257, 257, 258, + 258, 259, 259, 260, 261, 261, 262, 262, 263, 264, + 264, 265, 265, 266, 266, 267, 267, 268, 268, 269, + 269, 270, 270, 270, 270, 270, 270, 271, 271, 271, + 271, 272, 272, 273, 273, 274, 274, 276, 275, 275, + 277, 277, 278, 278, 280, 279, 279, 279, 281, 282, + 281, 284, 283, 286, 285, 285, 285, 287, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 288, 285, 289, 285, 290, + 285, 291, 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, + 292, 285, 293, 294, 285, 295, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 296, 285, 285, 285, + 285, 285, 285, 285, 297, 285, 298, 285, 299, 299, + 299, 299, 300, 300, 300, 301, 301, 302, 303, 303, + 304, 304, 304, 304, 306, 305, 307, 305, 308, 305, + 309, 305, 310, 305, 311, 305, 312, 305, 313, 305, + 314, 314, 314, 314, 315, 315, 315, 316, 316, 318, + 319, 317, 317, 320, 320, 321, 322, 322, 322, 323, + 323, 323, 324, 324, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 327, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 329, 329, 330, 330, + 331, 331, 331, 331, 332, 332, 333, 333, 334, 335, + 336, 338, 339, 337, 337, 340, 340, 342, 341, 343, + 343, 345, 344, 346, 346, 346, 347, 347, 348, 348, + 349, 350, 351, 350, 352, 352, 352, 353, 353, 353, + 354, 354, 354, 355, 355, 356, 356, 357, 358, 357, + 359, 359, 359, 360, 360, 361, 361, 362, 362, 363, + 364, 363, 363, 365, 365, 366, 366, 366, 366, 366, + 366, 366, 366, 367, 367, 367, 367, 368, 369, 368, + 368, 368, 368, 368, 370, 370, 370, 371, 371, 371, + 371, 371, 371, 371, 371, 372, 373, 372, 374, 374, + 375, 375 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1199,20 +1227,21 @@ static const yytype_uint8 yyr2[] = 0, 2, 1, 0, 3, 0, 1, 3, 1, 1, 1, 4, 3, 0, 6, 0, 5, 3, 2, 3, 1, 1, 3, 2, 4, 5, 4, 0, 3, 0, - 1, 1, 1, 4, 1, 2, 3, 0, 0, 9, - 0, 0, 12, 0, 0, 7, 0, 0, 9, 0, - 0, 0, 12, 0, 6, 2, 3, 2, 3, 2, - 3, 3, 3, 3, 3, 1, 2, 5, 0, 0, - 10, 0, 0, 10, 0, 6, 1, 0, 0, 0, - 0, 0, 18, 3, 3, 1, 0, 1, 2, 0, - 0, 10, 1, 3, 1, 1, 1, 0, 1, 0, - 10, 0, 8, 0, 7, 1, 2, 1, 2, 0, - 2, 1, 0, 2, 0, 2, 1, 3, 0, 2, - 1, 2, 1, 4, 1, 4, 1, 4, 3, 5, - 3, 4, 4, 5, 0, 0, 6, 0, 5, 1, - 1, 1, 4, 0, 0, 7, 0, 0, 8, 0, - 2, 0, 3, 1, 0, 2, 3, 5, 4, 4, - 5, 7, 6, 0, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 4, 1, 2, 3, 0, 0, 7, + 0, 0, 10, 0, 0, 5, 0, 0, 7, 0, + 0, 0, 12, 0, 4, 2, 3, 2, 3, 2, + 3, 3, 2, 3, 3, 3, 1, 2, 5, 0, + 0, 10, 0, 0, 10, 0, 6, 1, 0, 0, + 8, 3, 3, 0, 0, 0, 0, 0, 13, 0, + 0, 5, 1, 0, 1, 2, 0, 0, 10, 1, + 3, 1, 1, 1, 0, 1, 0, 10, 0, 8, + 0, 7, 1, 2, 1, 2, 0, 2, 1, 0, + 2, 0, 2, 1, 3, 0, 2, 1, 2, 0, + 5, 1, 4, 1, 4, 1, 4, 3, 5, 3, + 4, 4, 5, 0, 0, 6, 0, 5, 1, 1, + 1, 4, 0, 0, 5, 0, 0, 6, 0, 2, + 0, 3, 1, 0, 2, 3, 5, 4, 4, 5, + 7, 6, 0, 1, 1, 1, 2, 3, 3, 1, 1, 2, 3, 3, 4, 3, 1, 1, 2, 4, 3, 5, 1, 3, 2, 0, 0, 4, 2, 1, 0, 9, 3, 1, 3, 1, 3, 0, 1, 1, @@ -1226,1474 +1255,1450 @@ static const yytype_uint8 yyr2[] = 3, 2, 2, 2, 2, 0, 4, 0, 4, 0, 4, 0, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, + 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 0, 5, 0, 0, 7, 0, 5, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 0, 3, 1, 4, - 3, 3, 2, 0, 10, 0, 11, 1, 0, 4, - 3, 4, 1, 2, 0, 5, 0, 7, 0, 6, - 0, 7, 0, 7, 0, 7, 0, 7, 0, 5, + 2, 2, 2, 2, 2, 2, 0, 3, 1, 1, + 1, 3, 2, 1, 0, 10, 0, 11, 2, 2, + 4, 4, 4, 4, 4, 4, 3, 1, 0, 4, + 3, 4, 1, 2, 0, 3, 0, 5, 0, 4, + 0, 5, 0, 5, 0, 5, 0, 5, 0, 3, 1, 1, 3, 2, 1, 3, 2, 1, 1, 0, - 0, 6, 1, 2, 0, 2, 0, 2, 3, 0, - 1, 1, 0, 3, 1, 1, 1, 1, 1, 1, + 0, 6, 1, 2, 0, 2, 0, 2, 1, 0, + 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 3, 2, 2, 2, 4, 3, 1, 1, 3, 1, 1, 1, 3, 2, 1, 3, 3, 1, 0, 2, 0, 1, - 5, 3, 3, 1, 1, 1, 1, 1, 1, 0, - 0, 7, 1, 2, 0, 0, 4, 4, 4, 0, - 4, 1, 1, 0, 1, 2, 3, 3, 1, 4, - 0, 5, 1, 1, 1, 1, 2, 1, 4, 4, - 1, 1, 4, 0, 1, 1, 0, 2, 4, 4, - 1, 1, 3, 1, 2, 3, 1, 1, 0, 5, - 0, 0, 2, 5, 3, 3, 1, 6, 4, 4, - 2, 2, 2, 1, 2, 1, 0, 5, 3, 3, - 6, 3, 1, 1, 1, 4, 4, 2, 2, 4, - 2, 2, 1, 0, 4, 3, 3 + 5, 3, 3, 1, 1, 1, 3, 3, 1, 1, + 1, 0, 0, 7, 1, 2, 0, 0, 4, 4, + 4, 0, 2, 1, 1, 0, 1, 2, 3, 3, + 1, 4, 0, 5, 1, 1, 1, 1, 2, 1, + 4, 4, 1, 1, 4, 0, 1, 1, 0, 2, + 4, 4, 1, 1, 3, 1, 2, 3, 1, 1, + 0, 5, 0, 0, 2, 5, 3, 3, 1, 6, + 4, 4, 2, 2, 2, 1, 2, 1, 0, 5, + 3, 3, 6, 3, 1, 1, 1, 4, 4, 4, + 2, 2, 4, 2, 2, 1, 0, 4, 1, 1, + 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[] = { 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 481, 0, 0, 376, 0, - 384, 385, 6, 407, 461, 65, 386, 0, 46, 0, - 0, 0, 74, 0, 0, 0, 0, 337, 0, 0, - 77, 0, 0, 0, 0, 0, 360, 0, 0, 0, - 0, 105, 107, 111, 0, 0, 415, 390, 391, 392, - 387, 388, 0, 0, 393, 389, 0, 0, 76, 29, - 473, 379, 0, 409, 4, 0, 8, 34, 9, 10, - 95, 96, 0, 0, 309, 425, 97, 454, 0, 412, - 328, 0, 424, 0, 426, 0, 457, 0, 453, 432, - 452, 455, 460, 0, 317, 408, 6, 360, 0, 97, - 511, 510, 0, 508, 507, 332, 295, 296, 297, 298, - 0, 324, 323, 322, 321, 320, 319, 318, 360, 0, - 0, 361, 0, 274, 428, 0, 272, 0, 486, 0, - 418, 259, 0, 0, 361, 367, 251, 368, 0, 372, - 455, 0, 0, 325, 0, 35, 0, 234, 0, 43, - 235, 0, 0, 0, 55, 0, 57, 0, 0, 0, - 59, 425, 0, 426, 0, 0, 0, 21, 0, 20, - 177, 0, 0, 176, 108, 106, 182, 0, 97, 0, - 0, 0, 0, 253, 481, 495, 0, 395, 0, 0, - 0, 493, 0, 15, 0, 411, 309, 0, 27, 0, - 380, 0, 381, 0, 0, 0, 344, 0, 18, 109, - 103, 98, 0, 0, 0, 279, 0, 281, 312, 275, - 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 343, 0, 0, 0, 0, 336, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 503, 0, 0, 396, + 0, 404, 405, 6, 427, 483, 66, 406, 0, 46, + 43, 0, 0, 75, 0, 0, 0, 0, 357, 0, + 0, 78, 0, 0, 0, 0, 0, 380, 0, 0, + 0, 0, 112, 114, 118, 0, 0, 435, 410, 411, + 412, 407, 408, 0, 0, 413, 409, 0, 0, 77, + 29, 495, 399, 0, 429, 4, 0, 8, 34, 9, + 10, 102, 103, 0, 0, 319, 445, 0, 339, 340, + 104, 476, 0, 432, 338, 0, 318, 444, 0, 448, + 378, 479, 0, 475, 454, 474, 477, 482, 0, 327, + 428, 343, 6, 380, 0, 104, 534, 533, 0, 531, + 530, 342, 445, 0, 448, 305, 306, 307, 308, 0, + 334, 333, 332, 331, 330, 329, 328, 380, 0, 0, + 364, 0, 284, 450, 0, 282, 0, 508, 0, 438, + 269, 0, 0, 381, 387, 261, 388, 0, 392, 477, + 0, 0, 335, 398, 0, 37, 35, 485, 0, 244, + 0, 0, 245, 0, 0, 53, 55, 0, 57, 0, + 0, 0, 59, 445, 0, 448, 0, 0, 0, 21, + 0, 20, 187, 0, 0, 186, 115, 113, 192, 0, + 104, 0, 0, 0, 0, 263, 503, 517, 0, 415, + 0, 0, 0, 515, 0, 15, 0, 431, 319, 0, + 0, 27, 0, 400, 0, 401, 0, 0, 0, 0, + 0, 18, 116, 110, 62, 485, 485, 105, 344, 0, + 0, 289, 0, 291, 322, 285, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 66, 273, 271, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 358, 0, 463, 429, - 463, 0, 474, 456, 0, 0, 327, 0, 363, 0, - 0, 490, 427, 0, 330, 419, 482, 0, 363, 0, - 382, 0, 369, 456, 377, 0, 0, 0, 64, 0, - 0, 0, 236, 239, 425, 426, 0, 0, 56, 58, - 84, 0, 60, 61, 29, 83, 23, 0, 0, 17, - 0, 178, 426, 0, 62, 0, 0, 63, 0, 0, - 92, 94, 512, 0, 0, 0, 480, 0, 496, 0, - 394, 494, 407, 0, 0, 492, 414, 491, 410, 5, - 12, 13, 348, 310, 308, 36, 0, 0, 331, 413, - 7, 168, 0, 0, 101, 112, 99, 333, 463, 515, - 0, 446, 444, 0, 0, 0, 283, 0, 315, 0, - 0, 0, 284, 286, 285, 300, 299, 302, 301, 303, - 305, 306, 304, 294, 293, 288, 289, 287, 290, 291, - 292, 307, 0, 255, 270, 269, 268, 267, 266, 265, - 264, 263, 262, 261, 260, 168, 516, 447, 0, 464, - 0, 0, 0, 0, 509, 362, 471, 0, 485, 0, - 484, 362, 446, 168, 252, 447, 0, 378, 37, 233, - 0, 0, 49, 237, 71, 68, 0, 0, 53, 0, - 0, 416, 0, 405, 0, 0, 0, 397, 0, 396, - 26, 404, 27, 0, 22, 19, 0, 175, 183, 180, - 335, 0, 0, 513, 505, 506, 11, 0, 477, 0, - 476, 329, 0, 498, 0, 499, 501, 346, 3, 5, - 168, 248, 0, 28, 30, 31, 32, 462, 0, 0, - 167, 425, 426, 0, 0, 0, 364, 110, 114, 0, - 0, 0, 163, 0, 0, 352, 350, 445, 280, 282, - 0, 0, 276, 278, 0, 256, 0, 356, 354, 449, - 466, 430, 465, 470, 458, 459, 489, 488, 0, 0, - 370, 40, 0, 47, 44, 235, 0, 0, 0, 0, - 0, 0, 0, 400, 401, 423, 0, 418, 416, 0, - 0, 399, 0, 0, 24, 179, 0, 163, 93, 67, - 0, 478, 480, 0, 502, 504, 503, 0, 0, 168, - 16, 3, 0, 311, 0, 0, 171, 345, 0, 25, - 0, 366, 0, 0, 113, 116, 185, 163, 164, 165, - 0, 153, 0, 166, 451, 472, 168, 168, 316, 313, - 257, 359, 168, 168, 467, 443, 463, 0, 0, 483, - 383, 374, 29, 38, 0, 0, 0, 238, 118, 0, - 118, 120, 128, 0, 29, 126, 75, 134, 134, 54, - 0, 403, 419, 417, 0, 398, 406, 0, 181, 0, - 514, 480, 475, 0, 497, 0, 0, 14, 349, 463, - 0, 247, 246, 250, 241, 0, 0, 425, 426, 365, - 115, 185, 0, 217, 0, 338, 163, 0, 155, 0, - 0, 0, 382, 0, 0, 439, 442, 441, 434, 0, - 0, 487, 371, 27, 143, 0, 29, 141, 45, 50, - 0, 0, 121, 0, 0, 27, 134, 0, 134, 0, - 422, 421, 402, 78, 338, 0, 254, 500, 347, 0, - 435, 240, 463, 0, 33, 174, 217, 117, 0, 0, - 221, 222, 223, 226, 225, 224, 216, 104, 184, 189, - 186, 0, 215, 219, 0, 0, 0, 0, 0, 156, - 0, 353, 351, 314, 258, 357, 355, 168, 463, 463, - 431, 468, 469, 0, 373, 146, 149, 0, 27, 235, - 119, 72, 69, 129, 0, 0, 0, 0, 0, 0, - 130, 0, 0, 0, 479, 243, 443, 0, 245, 102, - 0, 0, 193, 0, 97, 220, 0, 188, 29, 0, - 29, 0, 159, 0, 158, 0, 0, 0, 433, 375, - 151, 0, 0, 39, 48, 0, 0, 0, 0, 127, - 0, 132, 0, 139, 140, 137, 131, 420, 79, 29, - 436, 242, 0, 0, 195, 197, 192, 229, 0, 0, - 0, 27, 0, 342, 0, 27, 160, 0, 157, 440, - 437, 438, 0, 0, 0, 0, 150, 142, 51, 29, - 124, 73, 70, 133, 135, 29, 0, 27, 232, 194, - 6, 0, 198, 199, 0, 0, 207, 0, 0, 0, - 0, 187, 190, 0, 100, 343, 0, 339, 334, 0, - 162, 0, 29, 0, 0, 0, 27, 29, 27, 0, - 336, 196, 200, 201, 211, 0, 202, 0, 230, 227, - 0, 231, 0, 340, 161, 0, 27, 42, 144, 29, - 122, 52, 0, 27, 80, 0, 210, 203, 204, 208, - 0, 163, 341, 0, 0, 27, 125, 0, 209, 0, - 228, 0, 147, 145, 0, 29, 205, 0, 29, 123, - 27, 213, 29, 191, 27, 81, 27, 86, 214, 0, - 82, 85, 87, 0, 88, 89, 0, 0, 90, 0, - 29, 27, 91 + 0, 0, 0, 0, 0, 0, 0, 67, 283, 281, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 485, 451, 485, 0, 496, 478, + 344, 0, 0, 337, 0, 368, 0, 0, 512, 449, + 0, 356, 439, 504, 0, 383, 0, 402, 0, 389, + 478, 397, 40, 0, 486, 0, 0, 65, 0, 44, + 0, 246, 249, 445, 448, 0, 0, 56, 58, 82, + 0, 60, 61, 29, 81, 23, 0, 0, 17, 0, + 188, 448, 0, 63, 0, 0, 64, 346, 0, 99, + 101, 445, 448, 0, 535, 445, 448, 0, 502, 0, + 518, 0, 414, 516, 427, 0, 0, 514, 434, 513, + 430, 5, 12, 13, 0, 320, 447, 446, 36, 0, + 0, 341, 433, 7, 0, 365, 0, 0, 108, 119, + 0, 0, 106, 0, 485, 540, 0, 468, 466, 370, + 0, 0, 293, 0, 325, 0, 0, 0, 294, 296, + 295, 310, 309, 312, 311, 313, 315, 316, 314, 304, + 303, 298, 299, 297, 300, 301, 302, 317, 0, 265, + 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, + 270, 379, 541, 469, 374, 0, 0, 0, 0, 532, + 445, 448, 366, 493, 0, 507, 0, 506, 382, 468, + 403, 262, 469, 0, 29, 38, 354, 243, 47, 0, + 49, 247, 72, 69, 0, 0, 143, 143, 54, 0, + 0, 436, 406, 0, 425, 0, 0, 0, 417, 0, + 416, 26, 424, 27, 0, 22, 19, 0, 185, 193, + 190, 0, 0, 0, 536, 527, 529, 528, 11, 0, + 499, 0, 498, 355, 0, 520, 0, 521, 523, 0, + 3, 5, 369, 258, 0, 28, 30, 31, 32, 484, + 0, 176, 0, 445, 0, 448, 0, 0, 0, 384, + 117, 121, 0, 0, 353, 352, 0, 172, 0, 0, + 0, 0, 467, 290, 292, 0, 0, 286, 288, 0, + 266, 0, 0, 471, 488, 452, 487, 492, 480, 481, + 511, 510, 0, 390, 27, 152, 0, 29, 150, 45, + 245, 0, 0, 0, 0, 0, 0, 143, 0, 143, + 0, 420, 421, 443, 0, 438, 436, 0, 0, 419, + 0, 83, 24, 189, 0, 172, 100, 68, 0, 500, + 502, 0, 524, 526, 525, 0, 0, 367, 16, 3, + 321, 0, 0, 181, 0, 177, 178, 25, 0, 386, + 0, 0, 120, 123, 195, 172, 173, 174, 0, 162, + 0, 175, 473, 494, 373, 371, 326, 323, 267, 377, + 375, 489, 465, 485, 0, 0, 505, 394, 155, 158, + 0, 27, 0, 248, 0, 0, 125, 127, 125, 137, + 0, 29, 135, 76, 0, 0, 0, 0, 0, 139, + 0, 423, 439, 437, 0, 418, 426, 0, 79, 191, + 0, 537, 502, 497, 0, 519, 0, 14, 485, 0, + 257, 256, 260, 251, 0, 0, 445, 448, 385, 122, + 195, 0, 227, 0, 358, 172, 0, 164, 0, 402, + 464, 463, 0, 456, 0, 0, 509, 391, 160, 0, + 0, 39, 48, 0, 50, 128, 129, 0, 0, 0, + 0, 27, 0, 141, 0, 148, 149, 146, 140, 442, + 441, 422, 84, 89, 358, 0, 264, 522, 0, 457, + 250, 485, 0, 33, 184, 227, 124, 0, 0, 231, + 232, 233, 236, 235, 234, 226, 111, 194, 199, 196, + 0, 225, 229, 0, 0, 0, 0, 0, 165, 0, + 324, 268, 485, 485, 462, 453, 490, 491, 0, 393, + 0, 0, 0, 153, 159, 151, 245, 502, 126, 73, + 70, 138, 0, 142, 144, 29, 0, 0, 90, 80, + 0, 501, 253, 465, 0, 255, 109, 0, 0, 203, + 0, 104, 230, 0, 198, 29, 0, 29, 0, 168, + 0, 167, 0, 0, 455, 395, 0, 29, 0, 0, + 0, 0, 0, 0, 136, 29, 27, 440, 85, 0, + 29, 458, 252, 0, 0, 205, 207, 202, 239, 0, + 0, 0, 27, 0, 362, 0, 27, 169, 0, 166, + 459, 460, 156, 27, 42, 154, 51, 130, 29, 133, + 74, 71, 27, 0, 29, 27, 242, 204, 6, 0, + 208, 209, 0, 0, 217, 0, 0, 0, 0, 197, + 200, 0, 107, 363, 0, 359, 345, 0, 171, 29, + 0, 27, 0, 27, 347, 206, 210, 211, 221, 0, + 212, 0, 240, 237, 0, 241, 0, 360, 170, 27, + 29, 131, 52, 0, 86, 91, 0, 220, 213, 214, + 218, 0, 172, 361, 27, 134, 0, 219, 0, 238, + 0, 0, 29, 215, 0, 132, 27, 223, 29, 201, + 87, 27, 93, 224, 0, 88, 92, 94, 0, 95, + 96, 0, 0, 97, 0, 29, 27, 98 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 2, 4, 83, 84, 499, 359, 188, 189, - 85, 218, 366, 503, 870, 87, 552, 704, 632, 775, - 310, 635, 168, 634, 555, 779, 905, 562, 558, 828, - 557, 827, 172, 184, 792, 876, 947, 967, 970, 971, - 972, 976, 979, 339, 340, 88, 89, 232, 90, 521, - 91, 518, 375, 92, 374, 93, 520, 603, 604, 711, - 640, 931, 871, 646, 457, 649, 717, 907, 875, 835, - 708, 776, 944, 820, 958, 823, 864, 610, 611, 612, - 509, 510, 192, 193, 197, 683, 748, 803, 920, 749, - 801, 846, 881, 882, 883, 884, 937, 885, 886, 887, - 935, 963, 750, 751, 752, 753, 848, 754, 166, 311, - 312, 556, 671, 672, 673, 733, 593, 594, 94, 300, - 95, 346, 692, 390, 391, 385, 387, 501, 389, 691, - 530, 130, 522, 577, 119, 757, 854, 97, 371, 589, - 500, 617, 616, 623, 622, 425, 98, 613, 156, 157, - 446, 631, 702, 774, 163, 221, 444, 99, 565, 471, - 100, 566, 296, 567, 182, 102, 291, 103, 104, 431, - 625, 770, 674, 796, 696, 697, 767, 698, 105, 106, - 107, 108, 233, 109, 110, 111, 112, 430, 541, 624, - 542, 543, 113, 489, 490, 661, 149, 150, 210, 211, - 492, 587, 114, 343, 580, 115 + -1, 1, 2, 4, 84, 85, 531, 381, 200, 201, + 86, 231, 389, 535, 899, 88, 323, 585, 474, 668, + 181, 479, 180, 586, 590, 816, 930, 336, 593, 863, + 592, 862, 184, 196, 763, 698, 827, 903, 966, 982, + 829, 869, 985, 986, 987, 991, 994, 358, 359, 89, + 90, 248, 91, 556, 92, 551, 399, 93, 398, 94, + 553, 641, 642, 748, 676, 817, 952, 900, 683, 485, + 488, 598, 865, 825, 757, 589, 669, 859, 738, 929, + 741, 812, 648, 649, 650, 470, 542, 204, 205, 209, + 722, 787, 840, 944, 788, 838, 877, 909, 910, 911, + 912, 958, 913, 914, 915, 956, 979, 789, 790, 791, + 792, 879, 793, 178, 330, 331, 591, 710, 711, 712, + 772, 630, 631, 95, 317, 96, 368, 729, 416, 417, + 411, 413, 533, 415, 728, 565, 139, 403, 511, 97, + 98, 99, 125, 796, 885, 101, 239, 529, 384, 561, + 560, 572, 571, 292, 102, 651, 165, 166, 473, 667, + 737, 809, 172, 234, 471, 103, 603, 502, 104, 604, + 313, 605, 105, 106, 107, 308, 108, 109, 456, 662, + 805, 713, 833, 730, 731, 732, 733, 110, 111, 112, + 113, 249, 114, 115, 116, 117, 325, 575, 661, 576, + 577, 118, 521, 522, 702, 158, 159, 222, 223, 524, + 625, 119, 363, 618, 364, 120 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -736 +#define YYPACT_NINF -769 static const yytype_int16 yypact[] = { - -736, 64, 80, -736, 1600, 3962, 3962, -83, 3962, 3962, - 3962, 3962, 3962, 3962, 3962, -736, 3962, 3962, 3962, 3962, - 3962, 3962, 3962, 171, 171, 2521, 3962, 187, -54, -52, - -736, -736, 76, -736, -736, -736, -736, 3962, -736, -44, - -36, 68, -736, 86, 2652, 2783, 57, -736, 82, 2914, - -736, 3962, -15, -13, 145, 153, -11, 100, 124, 152, - 168, -736, -736, -736, 185, 195, -736, -736, -736, -736, - -736, -736, 172, 127, -736, -736, 205, 3962, -736, -736, - 179, 178, 303, -66, -736, 11, -736, -736, -736, -736, - -736, -736, 282, 295, -736, -736, 338, 323, 252, -736, - -736, 4480, -736, 341, 1199, 249, -736, 261, 349, 292, - -736, -10, -736, 27, -736, -736, -736, 320, 287, 338, - 5120, 5120, 3962, 5120, 5120, 1452, -736, -736, 399, -736, - 3962, -736, -736, -736, -736, -736, -736, -736, -736, 296, - 205, -77, 306, -736, -736, 336, -736, 171, 1506, 302, - 456, -736, 334, 205, 340, 345, -736, -736, 347, 361, - -17, 27, 3045, -736, 3962, -736, 14, 5120, 2390, -736, - 3962, 3962, 346, 3962, -736, 4521, -736, 4562, 358, 485, - -736, 359, 5120, 1056, 362, 4605, 205, 98, 16, -736, - -736, -8, 18, -736, -736, -736, 487, 19, 338, 171, - 171, 171, 365, -736, 2521, 131, 63, -736, 4093, 171, - 290, -736, 205, -736, 260, -58, 366, 4646, 364, 3962, - 231, 367, 317, 231, 53, 450, -736, 455, -736, 416, - -736, -736, 5, 477, 45, -736, 3962, -736, 513, -736, - -736, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, - 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, - 187, -736, -736, -736, 3176, 3962, 3962, 3962, 3962, 3962, - 3962, 3962, 3962, 3962, 3962, 3962, -736, 170, 3962, -736, - 3962, 3962, 179, -27, 391, 4687, -736, 205, 281, 188, - 188, -736, -736, 3307, -736, 3438, -736, 205, 340, 39, - 392, 39, -736, -9, -736, 4730, 4772, 3962, -736, 461, - 3962, 393, 540, 5120, 460, 1219, 481, 4813, -736, -736, - -736, 1020, -736, -736, -736, -736, 162, 484, -15, -736, - 3962, -736, -736, -13, -736, 1020, 488, -736, 413, 30, - -736, -736, -736, 32, 414, 415, 143, 417, -736, 497, - -736, -736, 514, 1549, 425, -736, -736, -736, -50, -736, - -736, -736, -736, -736, -736, -736, 1731, 4226, -736, -736, - -736, 3569, 569, 148, -736, 462, -736, -736, 3962, 432, - 3962, 437, -9, 438, 27, 3962, 5197, 3962, -736, 3962, - 3962, 3962, 2571, 1582, 1373, 2700, 2700, 2700, 2700, 1288, - 1288, 1288, 1288, 568, 568, 61, 61, 61, 399, 399, - 399, -736, -16, 1452, 1452, 1452, 1452, 1452, 1452, 1452, - 1452, 1452, 1452, 1452, 1452, 3569, 432, 444, 446, 5120, - 443, 188, 447, 4267, -736, 319, -736, 171, 5120, 171, - 5020, 340, -736, 3569, -736, -736, 188, -736, 573, 5120, - 452, 4854, -736, -736, -736, -736, 590, 33, -736, 1020, - 1020, 1020, 457, -736, 25, 459, 205, -56, 464, -736, - -736, -736, 451, 549, -736, -736, 4308, -736, -736, 608, - -736, 171, 471, -736, -736, -736, -736, 475, -736, 34, - -736, -736, 221, -736, 3962, -736, -736, -736, 473, -736, - 3569, 159, 492, -736, -736, -736, -736, -736, 171, 480, - 634, 35, 210, 1020, 495, 205, 340, -736, 522, 148, - 494, 498, 235, 493, 4353, -736, -736, -9, 5160, 1452, - 3962, 5063, 5242, 5263, 187, -736, 499, -736, -736, -736, - -736, -736, 0, -736, -736, -736, -736, -736, 3700, 500, - -736, -736, 2390, -736, -736, 3962, 3962, 171, 2, 1020, - 583, 1863, -1, -736, -736, 531, 501, 652, 1020, 520, - 205, 118, 601, 572, -736, -736, 1020, 235, -736, -736, - 171, -736, 143, 662, -736, -736, -736, 521, 1418, 3569, - -736, 525, 530, -736, 206, 532, -736, -736, 3831, -736, - 205, 340, 148, 529, 675, -736, -736, 235, -736, -736, - 534, 677, 36, -736, -736, -736, 3569, 3569, 5220, -736, - -736, -736, 3569, 3569, -736, 537, 3962, 3962, 171, 5120, - -736, -736, -736, -736, 3962, 1995, 541, 5120, 574, 171, - 574, -736, -736, 680, -736, -736, -736, 545, 546, -736, - 1020, -736, 1020, -736, 550, 163, -736, 552, -736, 554, - -736, 143, -736, 3962, -736, 553, 557, -736, -736, 3962, - 188, 576, 225, -736, -736, 551, 171, 37, 1034, 340, - 675, -736, 148, 420, 559, 606, 182, 638, 700, 564, - 565, 3962, 392, 570, 571, -736, 657, 663, -736, 577, - 4394, -736, 600, 311, -736, 4896, -736, -736, -736, -736, - 2, 575, -736, 578, 1020, 640, -736, 328, -736, 310, - -736, 603, -736, -736, 606, 40, 1452, -736, -736, 580, - -736, -736, 3962, 576, -736, -736, 524, -736, 660, 148, - -736, -736, -736, -736, -736, -736, -736, -736, -736, -736, - -736, 320, 396, -736, 22, 581, 585, 605, 46, 745, - 1020, -736, -736, 5220, -736, -736, -736, 3569, 3962, 3962, - 576, -736, -736, 188, -736, -736, 395, 611, 681, 3962, - -736, -736, -736, -736, 612, 348, 615, 3962, 43, 313, - -736, 1020, 148, 618, -736, -736, 537, 619, 576, -736, - 754, 6, -736, 702, 338, -736, 706, -736, -736, 48, - -736, 707, 760, 1020, -736, 631, 627, 628, -736, -736, - 403, 635, 2390, -736, -736, 636, 641, 2127, 2127, -736, - 642, -736, 4437, -736, -736, -736, -736, -736, -736, -736, - -736, -736, 1020, 148, -736, 209, -736, 773, 24, 721, - 781, 643, 722, -736, 41, 644, 786, 1020, -736, -736, - -736, -736, 651, 775, 736, 3962, -736, -736, -736, -736, - -736, -736, -736, -736, -736, -736, 729, 653, -736, -736, - 715, 654, 209, -736, 658, 718, 705, 661, 671, 1020, - 743, -736, -736, 1020, -736, -736, 50, -736, -736, 1020, - -736, 3962, -736, 666, 4937, 2259, 731, -736, 294, 673, - -736, -736, -736, -736, 558, 148, -736, 750, -736, 811, - 682, -736, 756, -736, -736, 4978, 762, -736, -736, -736, - -736, -736, 684, 299, -736, 761, 766, 825, -736, -736, - 1020, 235, -736, 810, 2390, 753, -736, 688, -736, 148, - -736, 691, -736, -736, 692, -736, -736, 324, -736, -736, - 689, -736, -736, -736, 387, -736, 693, 742, -736, 696, - -736, 742, -736, 148, -736, -736, 776, 698, -736, 699, - -736, 697, -736 + -769, 118, 121, -769, 1586, 3871, 3871, -25, 3871, 3871, + 3871, 3871, 3871, 3871, 3871, 3871, -769, 3871, 3871, 3871, + 3871, 3871, 3871, 3871, 187, 187, 2541, 3871, 349, -22, + -20, -769, -769, 107, -769, -769, -769, 74, 3871, -769, + -769, 47, 78, -769, -20, 2674, 2807, 163, -769, 170, + 2940, -769, 3871, -47, -26, 26, 111, 14, 109, 112, + 114, 116, -769, -769, -769, 149, 164, -769, -769, -769, + -769, -769, -769, 374, -27, -769, -769, 200, 4004, -769, + -769, 150, 194, 253, 278, -769, 13, -769, -769, -769, + -769, -769, -769, 247, 275, -769, -769, 172, 288, 303, + 340, 315, 249, -769, -769, 4485, -769, -769, 29, 2292, + -769, -769, 255, 364, 307, -769, 66, -769, -16, -769, + -769, -769, -769, 369, 285, 340, 4938, 4938, 3871, 4938, + 4938, 937, -11, 4737, 1760, -769, -769, 353, -769, 3871, + -769, -769, -769, -769, -769, -769, -769, -769, 299, 200, + -49, 334, -769, -769, 338, -769, 187, 4780, 344, 498, + -769, 360, 200, 362, 377, -769, -769, 386, 390, -35, + -16, 3073, -769, -769, 4004, 503, -769, 3871, 20, 4938, + 2275, -20, 3871, 3871, 387, -769, -769, 4527, -769, 4569, + 388, 526, -769, 391, 4938, 1380, 392, 4611, 200, -5, + 23, -769, -769, 246, 24, -769, -769, -769, 535, 25, + 340, 187, 3871, 3871, 401, -769, 2541, 100, 131, -769, + 4137, 187, 413, -769, 200, -769, 306, 293, 402, 412, + 4653, 416, 3871, 144, 420, 359, 144, 158, 507, 429, + 509, -769, 462, -769, -769, 3871, 3871, -769, 514, 527, + 220, -769, 3871, -769, 565, -769, -769, 3871, 3871, 3871, + 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, + 3871, 3871, 3871, 3871, 3871, 3871, 349, -769, -769, -769, + 3206, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, + 3871, 3871, 429, 235, 3871, -769, 3871, 3871, 150, -7, + -769, 4695, 3871, -769, 200, -38, 250, 250, -769, -769, + 3339, -769, 3472, -769, 200, 362, -8, 429, -8, -769, + 36, -769, -769, 2275, 4938, 436, 3871, -769, 511, -769, + 445, 592, 4938, 512, 1208, 534, 10, -769, -769, -769, + 757, -769, -769, -769, -769, 162, 538, -47, -769, 3871, + -769, -769, -26, -769, 757, 533, -769, -769, 33, -769, + -769, 34, 56, 41, -769, 461, 1560, 464, 280, 463, + -769, 546, -769, -769, 557, 1066, 465, -769, -769, -769, + 304, -769, -769, -769, 429, -769, -769, -769, -769, 1743, + 1327, -769, -769, -769, 2408, -769, 609, 89, -769, 504, + 469, 471, -769, 479, 3871, 480, 3871, 481, 36, -769, + -16, 3871, 5017, 3871, -769, 3871, 3871, 3871, 2458, 2591, + 2722, 2855, 2855, 2855, 2855, 1563, 1563, 1563, 1563, 642, + 642, 370, 370, 370, 353, 353, 353, -769, 219, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, -769, 480, 486, -769, 483, 250, 487, 4271, -769, + 210, 2026, -36, -769, 187, 4938, 187, 4839, 362, -769, + -769, -769, -769, 250, -769, -769, -769, 4938, -769, 1404, + -769, -769, -769, -769, 624, 49, 490, 495, -769, 757, + 757, 757, -769, 500, -769, 45, 499, 200, -49, 506, + -769, -769, -769, 501, 581, -769, -769, 4313, -769, -769, + 640, 508, 187, 505, -769, -769, -769, -769, -769, 513, + -769, 51, -769, -769, 207, -769, 3871, -769, -769, 429, + 502, -769, -769, 153, 516, -769, -769, -769, -769, -769, + 187, -769, 52, 54, 510, 135, 757, 515, 200, 362, + -769, 536, 89, 518, -769, -769, 519, 350, 517, 4355, + 429, 429, 36, 4979, 937, 3871, 4881, 5062, 5083, 349, + -769, 429, 429, -769, -769, -769, 53, -769, -769, -769, + -769, -769, 3605, -769, 341, -769, -20, -769, -769, -769, + 3871, 3871, 234, 234, 757, 597, 1876, -769, 382, -769, + 176, -769, -769, 550, 522, 672, 757, 539, 200, -38, + 622, 595, -769, -769, 757, 350, -769, -769, 3871, -769, + 280, 681, -769, -769, -769, 543, 985, -769, -769, 547, + -769, 159, 551, -769, 3738, -769, -769, -769, 200, 362, + 89, 553, 696, -769, -769, 350, -769, -769, 563, 697, + 59, -769, -769, -769, -769, -769, 5040, -769, -769, -769, + -769, -769, 568, 3871, 3871, 187, 4938, -769, -769, 384, + 567, 632, 569, 4938, 187, 573, 603, -769, 603, -769, + 716, -769, -769, -769, 441, 579, 3871, 58, 291, -769, + 757, -769, 757, -769, 589, -36, -769, 582, -769, -769, + 590, -769, 280, -769, 3871, -769, 591, -769, 3871, 250, + 623, 171, -769, -769, 594, 187, 57, 1227, 362, 696, + -769, 89, 650, 599, 646, 284, 679, 743, 3871, 429, + 705, 706, 429, -769, 612, 4399, -769, 645, 394, -20, + 2275, -769, -769, 618, -769, -769, -769, 234, 625, 627, + 757, 684, 628, -769, 4443, -769, -769, -769, -769, -769, + 652, -769, -769, 678, 646, 61, 937, -769, 619, -769, + -769, 3871, 623, -769, -769, 1167, -769, 711, 89, -769, + -769, -769, -769, -769, -769, -769, -769, -769, -769, -769, + 369, 600, -769, 27, 630, 634, 633, 212, 772, 757, + 5040, -769, 3871, 3871, -769, 623, -769, -769, 250, -769, + -20, 761, 722, -769, -769, -769, 3871, 280, -769, -769, + -769, -769, 639, -769, -769, -769, 757, 89, -769, -769, + 641, -769, -769, 568, 637, 623, -769, 783, 18, -769, + 730, 340, -769, 736, -769, -769, 351, -769, 735, 796, + 757, -769, 654, 655, -769, -769, 787, -769, 662, 2275, + 664, 75, 2009, 2009, -769, -769, 155, -769, -769, 663, + -769, -769, -769, 757, 89, -769, 91, -769, 804, 28, + 749, 808, 668, 750, -769, 76, 670, 816, 757, -769, + -769, -769, -769, 763, -769, -769, -769, -769, -769, -769, + -769, -769, 204, 759, -769, 680, -769, -769, 747, 685, + 91, -769, 686, 751, 727, 688, 698, 757, 771, -769, + -769, 757, -769, -769, 367, -769, -769, 757, -769, -769, + 2142, 758, 695, 693, -769, -769, -769, -769, 626, 89, + -769, 779, -769, 839, 704, -769, 782, -769, -769, 493, + -769, -769, -769, 708, -769, -769, 785, 786, 851, -769, + -769, 757, 350, -769, 777, -769, 712, -769, 89, -769, + 713, 714, -769, -769, 336, -769, 715, -769, -769, -769, + -769, 718, 765, -769, 723, -769, 765, -769, 89, -769, + -769, 801, 724, -769, 725, -769, 726, -769 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -736, -736, -328, -736, -23, -736, -736, -736, -736, 527, - -736, -250, -736, -736, 4, -736, -736, -736, -736, -736, - -736, -736, -736, -736, -736, -736, -736, -736, -736, -736, - -736, -736, -736, -736, -736, -736, -736, -736, -736, -736, - -119, -736, -736, -736, 372, 491, 496, -114, -736, -736, - -736, -736, -736, -736, -736, -736, -736, -736, 256, 220, - 151, -736, 44, -736, -736, -736, -367, -736, -736, 31, - -736, -736, -736, -736, -736, -736, -736, -570, -736, 181, - -415, -736, -736, 535, -736, 184, -736, -736, -736, -736, - -736, -736, -736, -736, -7, -736, -736, -736, -736, -736, - -736, -736, -736, -736, -736, -735, -736, -736, -736, -539, - -736, -736, 138, -736, -736, -736, -736, -736, 796, -736, - -26, -736, -736, -736, -736, -736, -736, -736, -736, -736, - -736, -736, -736, -736, -2, 150, -736, -736, -736, -736, - -736, -736, -736, -736, -736, -736, 12, -364, -249, -736, - -736, -736, -736, -736, -736, -736, 186, 579, 368, -736, - -736, 309, 312, -736, 734, 694, -419, 454, 765, -736, - -736, -736, -650, -736, -736, -736, -736, 84, -231, -736, - 137, -736, -736, -736, -21, -12, -736, -267, -434, -736, - -736, 13, 66, 222, 300, -736, 683, -736, 405, 203, - -736, -736, -736, -736, -736, -736 + -769, -769, -362, -769, -24, -769, -769, -769, -769, 530, + -769, -223, -769, -769, 3, -769, -769, -769, -769, -769, + -769, -769, -769, -769, -769, -769, -769, -769, -769, -769, + -769, -769, -769, -769, -769, -769, -769, -769, -769, -769, + -769, -769, -769, -769, -108, -769, -769, -769, 368, 494, + 520, -123, -769, -769, -769, -769, -769, -769, -769, -769, + -769, -769, 242, 206, -579, -769, -769, 31, -769, -769, + -769, -383, -769, -769, 141, -769, -769, -769, -769, -769, + -769, -769, -607, -769, 175, -193, -769, -769, 544, -769, + 181, -769, -769, -769, -769, -769, -769, -769, -769, 0, + -769, -769, -769, -769, -769, -769, -769, -769, -769, -769, + -768, -769, -769, -769, -573, -769, -769, 139, -769, -769, + -769, -769, -769, 834, -769, 11, -769, -769, -769, -769, + -769, -769, -769, -769, -769, -769, -769, -769, -769, -65, + -769, -769, -1, 160, -769, -769, -769, -769, -769, -769, + -769, -769, -769, -769, -19, -363, -264, -769, -769, -769, + -769, -769, -769, -769, 203, 459, 466, -769, -769, 333, + 331, -769, 908, -14, 737, -446, 470, 43, -769, -769, + -769, -670, -769, -769, -769, -769, 108, -211, -769, 19, + -769, -769, -769, -18, 64, -769, -194, -462, -769, -769, + 236, 35, -678, 323, -769, 729, -769, 443, 330, -769, + -769, -769, -769, -769, 329, -769 }; /* 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. */ -#define YYTABLE_NINF -472 + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -540 static const yytype_int16 yytable[] = { - 141, 141, 96, 381, 154, 284, 159, 659, 86, 517, - 536, 411, 550, 432, 843, 160, 636, 805, 546, 227, - 547, 731, 307, 181, 328, 647, 333, 336, 549, 187, - 806, 498, 890, 639, 280, 142, 142, 684, 481, 155, - 483, 560, 582, -169, 280, -172, 427, 534, 582, 896, - 214, 280, 280, 215, 198, 116, 116, 34, 381, 427, - 190, 626, 196, 116, 3, 34, 122, 687, 442, 833, - 445, 225, 226, 116, 472, 34, 376, 811, -361, 852, - -2, 922, 225, 226, 338, 592, -363, 47, -361, 596, - 225, 362, 225, 161, -362, 162, 138, 164, 225, 497, - 34, 283, 165, 569, 138, 169, 257, 258, 259, 688, - 260, 523, 34, 170, 138, 198, 379, 288, 34, 812, - 818, 853, -445, 923, 141, 281, 205, -448, 178, 139, - 298, 355, 140, 186, -448, 281, 205, 139, 80, -444, - 140, 191, 281, 281, 330, 314, 80, 139, 731, 303, - 140, 648, 627, 179, 377, 605, 80, 844, 845, 142, - 145, 145, 228, 326, 158, 308, 207, 329, 141, 334, - 337, 591, 309, 807, 666, 891, 141, 141, 141, 936, - 482, 282, 484, 561, 583, -169, 141, -172, 327, 358, - 794, 897, 348, 80, 834, 208, 209, 380, 116, 80, - 540, 689, 690, 142, 350, 208, 209, 693, 694, 701, - 369, 142, 142, 142, 116, 540, 34, 171, -170, 116, - -249, 142, 382, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 173, 730, 154, 605, 159, - 826, 426, 116, 34, 34, 205, 225, 383, 160, 199, - 206, 205, 473, 116, 349, 138, 220, 735, 116, 436, - 34, 34, -363, 194, 435, 382, 225, 669, 487, -428, - -428, 195, 155, 200, 441, 212, 116, 382, 382, 213, - 880, 719, -249, 138, 145, 620, 732, 382, 139, 382, - 428, 140, 584, 514, 585, 586, 515, 80, 467, 138, - 384, 201, 383, 428, 205, 187, 116, -362, 608, 609, - 225, 225, 467, 207, 208, 209, 139, 202, 737, 140, - 208, 209, 380, 141, 80, 80, 161, 514, 145, 670, - 515, 219, 152, 468, 203, 153, 145, 145, 145, 819, - 380, 80, 80, 384, 204, 511, 145, 468, -244, 785, - 516, 789, 815, 229, 514, 384, 384, 515, 142, 699, - -170, 608, 609, 205, 96, 384, 230, 384, 355, 231, - 504, 951, 527, 208, 209, 802, 205, -41, -41, -41, - 514, 223, 703, 515, -450, -154, -138, -138, -138, 141, - 205, -136, -136, -136, 715, 355, 234, 158, 276, 511, - 262, 263, 729, 787, 788, 277, 787, 788, 225, 351, - 278, 360, 361, 357, 141, 279, 141, 511, 47, 382, - 786, 787, 788, 351, 142, 357, 351, 357, 838, 225, - 362, 356, 208, 209, 382, 212, 467, 467, 467, 540, - 830, 787, 788, 571, 287, 208, 209, -138, 260, 142, - 289, 142, -136, -148, -148, -148, 778, 294, 141, 208, - 209, 821, 822, 790, 295, 797, 836, 225, 497, 862, - 863, 468, 468, 468, 511, 961, 962, 143, 146, 879, - 290, 888, 297, 145, 302, 141, 222, 224, 225, 299, - 467, 301, 601, 142, -218, 316, 516, 384, 321, 516, - 335, 816, 817, 740, 741, 742, 743, 744, 745, 320, - 322, 154, 384, 159, 324, 345, 363, 365, 888, 738, - 142, 370, 160, 368, 739, 468, 372, 740, 741, 742, - 743, 744, 745, 746, 141, 141, 467, 373, 378, 388, - 377, 443, 540, 450, 452, 467, 155, 655, 453, 145, - 454, 938, 456, 467, 516, 474, 633, 141, 851, 141, - 855, 479, 480, 511, 485, 645, 486, 491, 493, 142, - 142, 468, 677, 747, 145, 494, 145, 679, 496, 516, - 468, -471, 513, 519, 516, 956, 525, 526, 468, 877, - 511, 511, 142, 537, 142, 538, 511, 511, 539, 551, - 161, 553, 544, 559, 573, 141, 568, 570, 572, 975, - 254, 255, 256, 257, 258, 259, 141, 260, 145, 906, - 574, 576, 579, 738, 581, 908, 590, 467, 739, 467, - 597, 740, 741, 742, 743, 744, 745, 746, 141, 707, - 142, 595, 598, 600, 602, 145, 606, 607, 614, 621, - 630, 142, 926, 141, 643, 650, 651, 933, 382, 516, - 652, 350, 468, 516, 468, 740, 741, 742, 743, 744, - 745, 158, 656, 142, 657, 663, 664, 799, 667, 945, - 668, 681, 675, 682, 685, 686, 695, 141, 142, 470, - 849, 467, 709, 714, 145, 145, 716, 718, 710, 670, - 722, 723, 734, 478, 724, 960, 727, 728, 964, 755, - 756, 759, 966, 760, 761, 762, 516, 145, 768, 145, - 765, 766, 142, 773, 769, 781, 468, 791, 782, 784, - 981, 800, 771, 808, 809, 795, 384, 467, 101, 120, - 121, 511, 123, 124, 125, 126, 127, 128, 129, 804, - 131, 132, 133, 134, 135, 136, 137, 810, 813, 148, - 151, 382, 824, 829, 825, 145, 831, 842, 467, 516, - 839, 167, 468, 857, 841, 847, 145, 850, 175, 177, - 856, 859, 860, 861, 865, 185, 889, 867, 144, 144, - 467, 868, 892, 873, 893, 895, 894, 898, 145, 899, - 901, 902, 909, 468, 903, -206, 910, 911, 914, 913, - 915, 217, 916, 145, 183, 917, 919, 927, 932, 467, - 516, 939, 516, 934, 940, 468, 866, 563, 564, 942, - -152, 941, 948, 949, 467, 946, 952, -212, 954, 384, - 955, 957, 965, 959, 969, 973, 968, 145, 978, 977, - 982, 980, 974, 578, 468, 475, 285, 505, 680, 516, - 713, 780, 506, 874, 286, 736, 467, 758, 477, 468, - 467, 798, 872, 216, 793, 912, 467, 654, 764, 653, - 840, 599, 662, 725, 0, 331, 0, 347, 0, 0, - 0, 0, 516, 0, 0, 0, 305, 0, 306, 0, - 469, 468, 101, 0, 313, 468, 0, 317, 0, 930, - 0, 468, 292, 0, 469, 0, 0, 467, 516, 0, - 0, 0, 0, 0, 0, 0, 516, 642, 0, 0, - 0, 0, 0, 0, 0, 0, 315, 0, 148, 0, - 0, 0, 353, 0, 658, 0, 0, 0, 953, 0, - 516, 0, 468, 367, 0, 0, 332, 0, 0, 0, - 0, 0, 0, 0, 341, 342, 344, 0, 0, 0, - 386, 0, 0, 0, 354, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 0, 0, 0, 0, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 0, 0, 429, 0, 429, 433, 0, 0, 720, 0, - 721, 0, 0, 0, 0, 0, 0, 438, 0, 440, - 0, 0, 0, 0, 0, 0, 0, 0, 469, 469, - 469, 449, -173, 0, 451, 0, 0, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 0, - 0, 0, 459, 460, 476, 0, 0, 0, 0, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 461, 783, 0, 0, 0, 0, 0, 0, 30, - 31, 116, 469, -428, -428, 0, 0, 0, 0, 36, - 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 488, 429, 0, 524, -428, -428, 0, 0, 528, - 0, 529, 0, 531, 532, 533, 0, 0, 814, 0, - 0, 0, 138, 0, 0, 0, 512, 0, 469, 0, - 0, 0, 0, 0, 0, 0, 462, 469, 463, 67, - 68, 69, 70, 71, 0, 469, 0, 0, 0, 837, - 464, 0, 0, 0, 0, 465, 74, 75, 466, 0, - 0, 0, 0, 0, 0, 0, 0, 535, 0, 0, - 0, 858, 0, 0, -173, 0, 0, 0, 0, 0, - 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 292, 0, 292, 0, 0, 323, 512, 0, - 878, 0, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 0, 900, 0, 0, 588, 469, - 0, 469, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 0, 0, 341, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 918, -428, -428, - 0, 921, 0, 0, 618, 512, 0, 924, 0, 0, - 0, 0, 0, 292, 0, 0, 0, 0, -428, -428, - 0, 0, 629, 0, 0, 0, 101, 0, 0, 313, - 637, 0, 0, 469, 0, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 950, 455, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 638, 641, -472, -472, -472, -472, 252, 253, - 254, 255, 256, 257, 258, 259, 0, 260, 0, 469, - 0, 0, 0, 0, 0, 660, 0, 488, 0, 0, - 0, 0, 0, 0, 512, 0, 0, 0, 0, 0, - 429, 700, 0, 678, 0, 0, 0, 0, 705, 101, - 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 512, 512, 0, 0, 0, 0, 512, 512, 0, - 0, 0, 469, 292, 0, 0, 0, 726, 0, 0, - 0, 0, 0, 429, 712, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 469, 260, 0, 0, 763, 488, 235, 236, 237, - 0, 0, 0, 0, 0, 0, 469, 0, 0, 0, - 0, 292, 0, 238, 0, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 429, 260, 469, 0, - 0, 0, 469, 0, 0, 641, 0, 238, 469, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 0, 260, 429, 429, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 313, 0, 235, 236, 237, 0, 469, - 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 238, 512, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 0, 260, 101, 0, 235, 236, - 237, 101, 101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 665, 238, 0, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 0, 260, 904, - 0, 0, 0, 5, 6, 7, 8, 9, 0, 0, - 0, 0, 10, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 293, 260, 0, 0, 0, 925, 0, 0, 0, 101, - 0, 0, 11, 12, 0, 0, 0, 0, 13, 0, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 0, 0, 0, 30, - 31, 32, 33, 34, 0, 35, 0, 0, 101, 36, - 37, 38, 39, 0, 40, 0, 41, 0, 42, 0, - 0, 43, 0, 0, 0, 44, 45, 46, 47, 48, - 49, 50, 495, 51, 52, 0, 53, 0, 0, 0, - 54, 55, 56, 0, 57, 58, 59, 60, 61, 62, - 63, 0, 0, 0, 0, 64, 65, 0, 66, 67, - 68, 69, 70, 71, 5, 6, 7, 8, 9, 0, - 72, 0, 0, 10, 0, 73, 74, 75, 76, 77, - 0, 78, 79, 0, 80, 0, 81, 82, 0, 0, + 150, 150, 300, 100, 163, 151, 151, 87, 700, 164, + 168, 583, 437, 229, 678, 173, 175, 672, 580, 530, + 581, 240, 132, 842, 765, 122, 874, 296, 326, 199, + 185, 347, 352, 355, 550, 843, 918, 486, 723, 407, + 770, 512, -539, 154, 154, 122, 395, 167, 202, 514, + 226, 400, 401, 227, 134, 296, 210, 595, 35, 620, + 634, 193, -179, 170, -538, -182, 35, 153, 153, 620, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 453, 620, 924, 755, 346, 357, 208, 278, + 279, 726, 169, 195, 633, 407, 453, -381, 296, 451, + 455, 238, 457, 198, 600, 469, 229, 472, -383, 229, + -382, -470, 238, 48, 238, 663, -450, -450, 3, 297, + 503, -2, 210, 224, 607, 305, 128, 225, 296, 171, + 203, 174, 150, 727, 176, 854, 177, 151, 315, 861, + 298, -348, -348, -180, -467, 238, 206, 297, 81, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 122, 370, 908, 487, 770, 241, 329, 818, 629, + 957, 875, 876, 327, 345, 154, 348, 353, 356, 150, + 844, 919, 299, 328, 151, 513, -539, 150, 219, 643, + 297, 532, 151, 515, 333, -450, -450, 150, 182, 309, + 380, 596, 151, 621, 635, 217, -179, 664, -538, -182, + 558, 756, -470, 831, 684, -259, 688, -466, 217, 736, + 297, 708, 154, 361, 365, 371, 334, 897, 925, 183, + 154, 207, 217, 771, 320, 190, 547, 377, 547, 548, + 154, 548, 191, 860, 848, 574, 351, 769, -147, -147, + -147, 584, 163, 504, 360, 362, 366, 164, 168, 122, + 211, 35, 574, 212, 376, 213, 674, 214, 217, 774, + 686, 687, 122, 233, 372, 220, 221, 643, -259, 622, + 462, 623, 624, 569, 709, 410, 849, -180, 220, 221, + 468, 122, 405, 35, 35, 167, -254, -145, -145, -145, + 215, 147, 220, 221, 232, 658, 122, 452, 35, 35, + -147, 170, 238, 460, 408, 216, 498, 392, 122, 242, + 35, 499, 463, 199, 35, 244, 475, 217, 410, 544, + 498, 689, 236, 147, 148, 499, 627, 149, 220, 221, + 169, 410, 410, 81, 150, 461, 855, 243, 147, 151, + 245, 410, 122, 410, 35, 970, 122, 408, 776, -145, + 147, 675, -350, -350, 671, 246, 148, 654, 655, 149, + 408, 408, 247, 549, 406, 81, 81, -472, 659, 660, + 408, 148, 408, 883, 149, 686, 687, 154, 100, 406, + 81, 81, 536, 148, 147, 250, 149, 220, 221, 946, + 349, 293, 81, 276, 406, 543, 81, 519, -41, -41, + -41, 520, 646, 647, 150, 839, 273, 274, 275, 151, + 276, 122, 122, 35, -381, 884, 294, 148, 238, -364, + 149, 547, 295, 217, 548, 224, 81, 545, 377, -383, + 150, 947, 150, 238, -368, 151, 758, 151, 217, 304, + -382, 739, 740, 218, 238, -366, 238, 154, 751, 382, + 383, 810, 811, 147, 868, 498, 498, 498, 48, 734, + 499, 499, 499, 609, 562, 685, 686, 687, 646, 647, + 306, 570, 588, 154, 307, 154, 409, 217, 150, 977, + 978, 410, 377, 151, 152, 155, 161, 547, 574, 162, + 548, 311, -163, 220, 221, 81, 312, 309, 410, 309, + 314, 907, 238, 916, 768, 319, 150, 219, 220, 221, + 408, 151, 498, 316, 639, 235, 237, 499, 549, 454, + 322, 154, 318, 549, 752, 686, 687, 408, 335, 804, + 340, 339, 409, 454, 341, 163, 343, 916, 373, 354, + 164, 168, 379, 367, 385, 360, 378, 220, 221, 154, + -157, -157, -157, 373, 386, 379, 373, 379, 150, 150, + 498, 388, 670, 151, 151, 499, 959, 834, 391, 393, + 394, 396, 498, 309, 695, 397, 402, 499, 167, 404, + 498, 549, 414, 476, 478, 499, 150, 574, 480, 682, + 481, 151, 866, 482, 170, 973, 484, 510, 852, 853, + 505, 154, 154, 516, 718, 523, 549, 518, 525, 526, + 528, 549, 882, 546, 886, 990, 554, 552, 555, 361, + 557, -493, -372, 169, 893, 677, 677, -376, 594, 154, + 573, 150, 902, 597, 578, 716, 151, 905, 599, 608, + 150, 606, 610, 612, 614, 151, 611, 628, 617, 615, + 640, 362, 636, 520, 619, 638, 498, 632, 498, 680, + 645, 499, 644, 499, 652, 931, 690, 717, 150, 691, + 692, 933, 372, 151, 154, 270, 271, 272, 273, 274, + 275, 150, 276, 154, 696, 704, 151, 549, 697, -228, + 705, 549, 707, 714, 721, 725, 949, 720, 309, 779, + 780, 781, 782, 783, 784, 724, 743, 745, 880, -461, + 742, 154, 744, 150, 746, 813, 498, 964, 151, 747, + 750, 499, 753, 762, 154, 779, 780, 781, 782, 783, + 784, 761, 764, 814, 410, 520, 767, 773, 709, 976, + 777, 794, 795, 798, 549, 981, 778, 799, 309, 779, + 780, 781, 782, 783, 784, 785, 154, 802, 803, 806, + 808, 815, 996, 408, 822, 498, 832, 819, 826, 820, + 499, 823, 828, 837, 845, 846, 850, 847, 857, 841, + 677, 858, 864, 150, 872, 870, 856, 873, 151, 500, + 489, 490, 498, 549, 878, 786, 501, 499, 881, 887, + 888, 890, 891, 500, 892, 894, 896, 904, 917, 491, + 509, 920, 921, 922, 923, 926, 498, 31, 32, 122, + 927, 499, -161, 932, 939, 934, 154, 492, -216, 937, + 935, 940, 938, 410, 941, 943, 953, 954, 955, 498, + 549, 960, 549, 961, 499, 962, 963, 967, -222, 968, + 520, 965, 895, 971, 498, 974, 972, 975, 984, 499, + 980, 147, 408, 983, 988, 992, 993, 506, 989, 995, + 616, 997, 719, 537, 749, 493, 549, 494, 68, 69, + 70, 71, 72, 498, 901, 824, 508, 498, 499, 495, + 797, 775, 499, 498, 496, 75, 76, 497, 499, 538, + 936, 835, 228, 126, 127, 549, 129, 130, 131, 133, + 135, 136, 137, 138, 830, 140, 141, 142, 143, 144, + 145, 146, 801, 951, 157, 160, 693, 498, 549, 694, + 350, 871, 499, 703, 549, 369, 179, 701, 500, 500, + 500, 0, 0, 187, 189, 601, 602, 0, 194, 0, + 197, 0, 0, 254, 549, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 230, 276, 0, 0, + 0, 0, 0, 0, 251, 252, 253, 0, 0, 0, + 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, + 0, 254, 637, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 0, 276, 301, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 303, 0, 0, + 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, + 679, 0, 0, 0, 0, 500, 0, 0, 0, 0, + 0, 0, 0, 500, 0, 251, 252, 253, 0, 230, + 699, 0, 230, 0, 0, 324, 0, 0, 0, 0, + 332, 194, 254, 0, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 0, 276, 0, 0, 0, + 194, 194, 0, 0, 157, 0, 0, 0, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 12, 0, 0, 0, 0, 13, - 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 0, 0, 0, - 30, 31, 32, 33, 34, 0, 35, 0, 0, 0, - 36, 37, 38, 39, 0, 40, 0, 41, 0, 42, - 0, 0, 43, 0, 0, 0, 44, 45, 46, 47, - 0, 49, 50, 0, 51, 0, 0, 53, 0, 0, - 0, 54, 55, 56, 0, 57, 58, 59, 502, 61, - 62, 63, 0, 0, 0, 0, 64, 65, 0, 66, - 67, 68, 69, 70, 71, 0, 5, 6, 7, 8, - 9, 72, 0, 0, 0, 10, 118, 74, 75, 76, - 77, 0, 78, 79, 0, 80, 0, 81, 82, 644, + 390, 0, 706, 0, 0, 0, 0, 0, 0, 500, + 0, 500, 0, 324, 324, 0, 759, 0, 760, 0, + 412, 0, 0, 0, 0, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 0, 0, 0, 0, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 0, 0, 324, 0, 324, 458, 0, 0, 0, 500, + 194, 0, 0, 0, 0, 0, 821, 0, 465, 0, + 467, 527, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 477, -183, 0, 0, 0, 0, + 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 0, 0, 0, 0, 507, 500, 0, + 0, 0, 0, 0, 0, 851, 0, 777, -450, -450, + 0, 0, 0, 778, 0, 0, 779, 780, 781, 782, + 783, 784, 785, 0, 0, 500, 0, -450, -450, 0, + 0, 0, 867, 0, 0, 0, 0, 0, 0, 483, + 0, 0, 194, 0, 0, 0, 0, 0, 0, 500, + 0, 0, 324, 0, 559, 0, 889, 0, 0, 563, + 0, 564, 836, 566, 567, 568, 0, 0, 0, 0, + 0, 0, 500, 0, 0, 0, 251, 252, 253, 906, + 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, + 0, 0, 0, 254, 928, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 500, 276, 0, -183, + 500, 0, 0, 942, 0, 0, 500, 945, 0, 0, + 0, 0, 0, 948, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 0, 5, 6, 7, + 8, 9, 0, 0, 0, 0, 10, 11, 0, 0, + 500, 0, 0, 0, 0, 0, 0, 969, 0, 0, + 0, 587, 0, 0, 626, 0, 0, 0, 0, 0, + -450, -450, 0, 0, 0, 0, 0, 12, 13, 0, + 0, 0, 0, 14, 0, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 0, 0, 656, 31, 32, 33, 34, 35, 0, + 36, 0, 539, 0, 37, 38, 39, 40, 0, 41, + 666, 42, 0, 43, 0, 0, 44, 0, 332, 673, + 45, 46, 47, 48, 0, 50, 51, 0, 0, 52, + 0, 0, 54, 0, 0, 0, 0, 0, 57, 0, + 58, 59, 60, 0, 0, 0, 194, 0, 0, 0, + 0, 65, 66, 342, 67, 68, 69, 70, 71, 72, + 0, 0, 194, 0, 0, 0, 73, 0, 0, 0, + 0, 124, 75, 76, 77, 78, 0, 79, 80, 0, + 81, 0, 82, 83, 0, 0, 0, 0, 0, 0, + 0, 324, 735, 0, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 0, 0, 0, 5, + 6, 7, 8, 9, 754, 0, 0, 0, 10, 11, + -540, -540, -540, -540, 268, 269, 270, 271, 272, 273, + 274, 275, 766, 276, 0, 0, 324, 0, 0, 0, + -450, -450, 0, 0, 0, 0, 0, 0, 0, 12, + 13, 0, 0, 0, 0, 14, 800, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 0, 0, 0, 31, 32, 33, 34, + 35, 0, 36, 0, 0, 0, 37, 38, 39, 40, + 0, 41, 0, 42, 0, 43, 0, 0, 44, 324, + 0, 0, 45, 46, 47, 48, 49, 50, 51, 0, + 0, 52, 53, 0, 54, 0, 0, 0, 55, 56, + 57, 0, 58, 59, 60, 61, 62, 63, 64, 0, + 324, 324, 517, 65, 66, 0, 67, 68, 69, 70, + 71, 72, 0, 0, 332, 0, 0, 0, 73, 0, + 0, 0, 0, 74, 75, 76, 77, 78, 0, 79, + 80, 0, 81, 0, 82, 83, 5, 6, 7, 8, + 9, 0, 0, 0, 0, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 12, 0, 0, 0, - 0, 13, 0, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 0, - 0, 0, 30, 31, 32, 33, 34, 0, 35, 0, - 0, 0, 36, 37, 38, 39, 0, 40, 0, 41, - 0, 42, 0, 0, 43, 0, 0, 0, 44, 45, - 46, 47, 0, 49, 50, 0, 51, 0, 0, 53, - 0, 0, 0, 0, 0, 56, 0, 57, 58, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, - 0, 66, 67, 68, 69, 70, 71, 0, 5, 6, - 7, 8, 9, 72, 0, 0, 0, 10, 118, 74, - 75, 76, 77, 0, 78, 79, 0, 80, 0, 81, - 82, 706, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 11, 12, 0, - 0, 0, 0, 13, 0, 14, 15, 16, 17, 18, + 0, 0, 0, 0, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 12, 13, 0, 0, + 0, 0, 14, 0, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 0, 0, 0, 31, 32, 33, 34, 35, 0, 36, + -450, -450, 0, 37, 38, 39, 40, 0, 41, 0, + 42, 0, 43, 0, 0, 44, 0, 0, 0, 45, + 46, 47, 48, 0, 50, 51, 0, 0, 52, 0, + 0, 54, 0, 0, 0, 55, 56, 57, 0, 58, + 59, 60, 534, 62, 63, 64, 0, 0, 0, 0, + 65, 66, 0, 67, 68, 69, 70, 71, 72, 5, + 6, 7, 8, 9, 0, 73, 0, 0, 10, 11, + 124, 75, 76, 77, 78, 0, 79, 80, 0, 81, + 0, 82, 83, 681, 0, 0, 0, 0, 0, 0, + 0, 0, -349, -349, 0, 0, 0, 0, 0, 12, + 13, 0, 0, 0, 0, 14, 0, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 0, 0, 0, 31, 32, 33, 34, + 35, 0, 36, 0, 0, 0, 37, 38, 39, 40, + 0, 41, 0, 42, 0, 43, 0, 0, 44, 0, + 0, 0, 45, 46, 47, 48, 0, 50, 51, 0, + 0, 52, 0, 0, 54, 0, 0, 0, 0, 0, + 57, 0, 58, 59, 60, 0, 0, 0, 0, 0, + 0, 0, 0, 65, 66, 0, 67, 68, 69, 70, + 71, 72, 5, 6, 7, 8, 9, 0, 73, 0, + 0, 10, 11, 124, 75, 76, 77, 78, 0, 79, + 80, 0, 81, 0, 82, 83, 898, 0, 0, 0, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 12, 13, 0, 0, 0, 0, 14, 0, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 0, 0, 0, 31, + 32, 33, 34, 35, 0, 36, -450, -450, 0, 37, + 38, 39, 40, 0, 41, 0, 42, 0, 43, 0, + 0, 44, 0, 0, 0, 45, 46, 47, 48, 0, + 50, 51, 0, 0, 52, 0, 0, 54, 0, 0, + 0, 0, 0, 57, 0, 58, 59, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 65, 66, 0, 67, + 68, 69, 70, 71, 72, 5, 6, 7, 8, 9, + 0, 73, 0, 0, 10, 11, 124, 75, 76, 77, + 78, 0, 79, 80, 0, 81, 0, 82, 83, 950, + 0, 0, 0, 0, 0, 0, 0, 0, -351, -351, + 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, + 0, 14, 0, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 0, + 0, 0, 31, 32, 33, 34, 35, 0, 36, 0, + 0, 0, 37, 38, 39, 40, 0, 41, 0, 42, + 0, 43, 0, 0, 44, 0, 0, 0, 45, 46, + 47, 48, 0, 50, 51, 0, 0, 52, 0, 0, + 54, 0, 0, 0, 0, 0, 57, 0, 58, 59, + 60, 0, 0, 0, 0, 0, 0, 0, 0, 65, + 66, 0, 67, 68, 69, 70, 71, 72, 5, 6, + 7, 8, 9, 0, 73, 0, 0, 10, 11, 124, + 75, 76, 77, 78, 0, 79, 80, 0, 81, 0, + 82, 83, 0, 0, 0, 0, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 12, 13, + 0, 0, 0, 0, 14, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 0, 0, 0, 30, 31, 32, 33, 34, 0, - 35, 0, 0, 0, 36, 37, 38, 39, 0, 40, - 0, 41, 0, 42, 0, 0, 43, 0, 0, 0, - 44, 45, 46, 47, 0, 49, 50, 0, 51, 0, - 0, 53, 0, 0, 0, 0, 0, 56, 0, 57, - 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 65, 0, 66, 67, 68, 69, 70, 71, 0, - 5, 6, 7, 8, 9, 72, 0, 0, 0, 10, - 118, 74, 75, 76, 77, 0, 78, 79, 0, 80, - 0, 81, 82, 869, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, - 12, 0, 0, 0, 0, 13, 0, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 0, 0, 0, 30, 31, 32, 33, - 34, 0, 35, 0, 0, 0, 36, 37, 38, 39, - 0, 40, 0, 41, 0, 42, 0, 0, 43, 0, - 0, 0, 44, 45, 46, 47, 0, 49, 50, 0, - 51, 0, 0, 53, 0, 0, 0, 0, 0, 56, - 0, 57, 58, 59, 0, 0, 0, 0, 0, 0, - 0, 0, 64, 65, 0, 66, 67, 68, 69, 70, - 71, 0, 5, 6, 7, 8, 9, 72, 0, 0, - 0, 10, 118, 74, 75, 76, 77, 0, 78, 79, - 0, 80, 0, 81, 82, 929, 0, 0, 0, 0, + 29, 30, 0, 0, 0, 31, 32, 33, 34, 35, + 0, 36, -450, -450, 0, 37, 38, 39, 40, 0, + 41, 0, 42, 0, 43, 0, 0, 44, 0, 0, + 0, 45, 46, 47, 48, 0, 50, 51, 0, 0, + 52, 0, 0, 54, 0, 0, 0, 0, 0, 57, + 0, 58, 59, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 65, 66, 0, 67, 68, 69, 70, 71, + 72, 5, 6, 7, 8, 9, 0, 73, 0, 0, + 10, 11, 124, 75, 76, 77, 78, 0, 79, 80, + 0, 81, 0, 82, 83, 0, 0, 0, 0, 0, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 12, 13, 0, 0, 0, 0, 14, 0, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 0, 0, 0, 0, 31, 32, + 122, 34, 35, 0, 0, 0, 0, 0, 37, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 48, 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 12, 0, 0, 0, 0, 13, 0, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 0, 0, 0, 30, 31, - 32, 33, 34, 0, 35, 0, 0, 0, 36, 37, - 38, 39, 0, 40, 0, 41, 0, 42, 0, 0, - 43, 0, 0, 0, 44, 45, 46, 47, 0, 49, - 50, 0, 51, 0, 0, 53, 0, 0, 0, 0, - 0, 56, 0, 57, 58, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 65, 0, 66, 67, 68, - 69, 70, 71, 5, 6, 7, 8, 9, 0, 72, - 0, 0, 10, 0, 118, 74, 75, 76, 77, 0, - 78, 79, 0, 80, 0, 81, 82, 0, 0, 0, + 0, 0, 123, 0, 0, 59, 60, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 66, 0, 67, 68, + 69, 70, 71, 72, 5, 6, 7, 8, 9, 0, + 73, 0, 0, 10, 121, 124, 75, 76, 77, 78, + 541, 0, 0, 0, 81, 0, 82, 83, 0, 0, + 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, + 14, 0, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 0, 0, 0, + 0, 31, 32, 122, 34, 35, 0, 0, 0, 0, + 0, 37, 0, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 48, 276, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 123, 0, 0, 59, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, + 0, 67, 68, 69, 70, 71, 72, 5, 6, 7, + 8, 9, 0, 73, 0, 0, 10, 121, 124, 75, + 76, 77, 78, 0, 0, 0, 0, 81, 0, 82, + 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, + 0, 0, 0, 14, 0, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 0, 0, 0, 0, 31, 32, 122, 34, 35, 0, + 0, 0, 0, 0, 37, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 0, 276, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, + 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, + 0, 65, 66, 0, 67, 68, 69, 70, 71, 72, + 5, 6, 7, 8, 9, 0, 73, 0, 0, 10, + 121, 124, 75, 76, 77, 78, 0, 186, 0, 0, + 81, 0, 82, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 11, 12, 0, 0, 0, 0, 13, 0, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 0, 0, 0, 30, - 31, 32, 33, 34, 0, 35, 0, 0, 0, 36, - 37, 38, 39, 0, 40, 0, 41, 0, 42, 0, - 0, 43, 0, 0, 0, 44, 45, 46, 47, 0, - 49, 50, 0, 51, 0, 0, 53, 0, 0, 0, - 0, 0, 56, 0, 57, 58, 59, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 65, 0, 66, 67, - 68, 69, 70, 71, 5, 6, 7, 8, 9, 0, - 72, 0, 0, 10, 0, 118, 74, 75, 76, 77, - 0, 78, 79, 0, 80, 0, 81, 82, 0, 0, - 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 12, 0, 0, 0, 0, 13, - 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 0, 0, 0, 0, - 30, 31, 116, 33, 34, 0, 0, 0, 0, 0, - 36, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 47, - 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 0, 0, 58, 59, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 65, 0, 66, - 67, 68, 69, 70, 71, 5, 6, 7, 8, 9, - 0, 72, 0, 0, 10, 0, 118, 74, 75, 76, - 77, 0, 0, 0, 0, 80, 0, 81, 82, 0, + 12, 13, 0, 0, 0, 0, 14, 0, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 0, 0, 0, 0, 31, 32, 122, + 34, 35, 0, 0, 0, 0, 0, 37, -540, -540, + -540, -540, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 0, 276, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 12, 0, 0, 0, 0, - 13, 0, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 0, 0, 0, - 0, 30, 31, 116, 33, 34, 0, 0, 0, 0, - 0, 36, -472, -472, -472, -472, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 0, 260, - 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 0, 0, 58, 59, 0, - 0, 0, 0, 0, 0, 0, 0, 64, 65, 0, - 66, 67, 68, 69, 70, 71, 5, 6, 7, 8, - 9, 0, 72, 0, 0, 10, 0, 118, 74, 75, - 76, 77, 0, 174, 0, 0, 80, 0, 81, 82, + 0, 123, 0, 0, 59, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 65, 66, 0, 67, 68, 69, + 70, 71, 72, 5, 6, 7, 8, 9, 0, 73, + 0, 0, 10, 121, 124, 75, 76, 77, 78, 0, + 188, 0, 0, 81, 0, 82, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 12, 0, 0, 0, - 0, 13, 0, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 0, 0, - 0, 0, 30, 31, 116, 33, 34, 0, 0, 0, - 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 13, 0, 0, 0, 0, 14, + 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 0, 0, 0, 0, + 31, 32, 122, 34, 35, 0, 0, 0, 0, 0, + 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 0, 0, 58, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, - 0, 66, 67, 68, 69, 70, 71, 5, 6, 7, - 8, 9, 0, 72, 0, 0, 10, 0, 118, 74, - 75, 76, 77, 0, 176, 0, 0, 80, 0, 81, - 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 12, 0, 0, - 0, 0, 13, 0, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, - 0, 0, 0, 30, 31, 116, 33, 34, 0, 0, - 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 123, 0, 0, 59, 60, 0, + 0, 0, 0, 0, 0, 0, 0, 65, 66, 0, + 67, 68, 69, 70, 71, 72, 5, 6, 7, 8, + 9, 0, 73, 0, 0, 10, 11, 124, 75, 76, + 77, 78, 0, 192, 0, 0, 81, 0, 82, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 117, 0, 0, 58, - 59, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 65, 0, 66, 67, 68, 69, 70, 71, 5, 6, - 7, 8, 9, 0, 72, 0, 0, 10, 0, 118, - 74, 75, 76, 77, 0, 180, 0, 0, 80, 0, - 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 11, 12, 0, - 0, 0, 0, 13, 0, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 0, 0, 0, 0, 30, 31, 116, 33, 34, 0, - 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, + 0, 0, 14, 0, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 0, + 0, 0, 0, 31, 32, 122, 34, 35, 0, 0, + 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, - 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 65, 0, 66, 67, 68, 69, 70, 71, 5, - 6, 7, 8, 9, 0, 72, 0, 0, 10, 0, - 118, 74, 75, 76, 77, 304, 0, 0, 0, 80, - 0, 81, 82, 0, 0, 0, 0, 412, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, - 0, 0, 0, 0, 13, 0, 14, 15, 16, 17, + 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, + 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 65, 66, 0, 67, 68, 69, 70, 71, 72, 5, + 6, 7, 8, 9, 0, 73, 0, 0, 10, 121, + 124, 75, 76, 77, 78, 321, 0, 0, 0, 81, + 0, 82, 83, 0, 0, 0, 0, 0, 438, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 13, 0, 0, 0, 0, 14, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 0, 0, 0, 0, 30, 31, 116, 33, 34, - 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, + 28, 29, 0, 0, 0, 0, 31, 32, 122, 34, + 35, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, - 0, 58, 59, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 65, 0, 66, 67, 68, 69, 70, 71, - 5, 6, 7, 8, 9, 0, 72, 0, 0, 10, - 0, 118, 74, 75, 76, 77, 0, 0, 0, 0, - 80, 0, 81, 82, 0, 0, 0, 0, 437, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, - 12, 0, 0, 0, 0, 13, 0, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 0, 0, 0, 0, 30, 31, 116, 33, - 34, 0, 0, 0, 0, 0, 36, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 0, 0, 58, 59, 0, 0, 0, 0, 0, 0, - 0, 0, 64, 65, 0, 66, 67, 68, 69, 70, - 71, 5, 6, 7, 8, 9, 0, 72, 0, 0, - 10, 0, 118, 74, 75, 76, 77, 0, 0, 0, - 0, 80, 0, 81, 82, 0, 0, 0, 0, 439, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 12, 0, 0, 0, 0, 13, 0, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 0, 0, 0, 0, 30, 31, 116, - 33, 34, 0, 0, 0, 0, 0, 36, 0, 0, + 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 117, 0, 0, 58, 59, 0, 0, 0, 0, 0, - 0, 0, 0, 64, 65, 0, 66, 67, 68, 69, - 70, 71, 5, 6, 7, 8, 9, 0, 72, 0, - 0, 10, 0, 118, 74, 75, 76, 77, 0, 0, - 0, 0, 80, 0, 81, 82, 0, 0, 0, 0, - 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 12, 0, 0, 0, 0, 13, 0, 14, + 123, 0, 0, 59, 60, 0, 0, 0, 0, 0, + 0, 0, 0, 65, 66, 0, 67, 68, 69, 70, + 71, 72, 5, 6, 7, 8, 9, 0, 73, 0, + 0, 10, 121, 124, 75, 76, 77, 78, 0, 0, + 0, 0, 81, 0, 82, 83, 0, 0, 0, 0, + 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 13, 0, 0, 0, 0, 14, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 0, 0, 0, 0, 30, 31, - 116, 33, 34, 0, 0, 0, 0, 0, 36, 0, + 25, 26, 27, 28, 29, 0, 0, 0, 0, 31, + 32, 122, 34, 35, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 0, 0, 58, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 65, 0, 66, 67, 68, - 69, 70, 71, 5, 6, 7, 8, 9, 0, 72, - 0, 0, 10, 0, 118, 74, 75, 76, 77, 0, - 0, 0, 0, 80, 0, 81, 82, 0, 0, 0, - 0, 628, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 11, 12, 0, 0, 0, 0, 13, 0, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 0, 0, 0, 0, 30, - 31, 116, 33, 34, 0, 0, 0, 0, 0, 36, + 0, 0, 0, 123, 0, 0, 59, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 65, 66, 0, 67, + 68, 69, 70, 71, 72, 5, 6, 7, 8, 9, + 0, 73, 0, 0, 10, 121, 124, 75, 76, 77, + 78, 0, 0, 0, 0, 81, 0, 82, 83, 0, + 0, 0, 0, 0, 466, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, + 0, 14, 0, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 0, 0, + 0, 0, 31, 32, 122, 34, 35, 0, 0, 0, + 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, + 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 123, 0, 0, 59, + 60, 0, 0, 0, 0, 0, 0, 0, 0, 65, + 66, 0, 67, 68, 69, 70, 71, 72, 5, 6, + 7, 8, 9, 0, 73, 0, 0, 10, 121, 124, + 75, 76, 77, 78, 0, 0, 0, 0, 81, 0, + 82, 83, 0, 0, 0, 0, 0, 665, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, + 0, 0, 0, 0, 14, 0, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 0, 0, 0, 0, 31, 32, 122, 34, 35, + 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 117, 0, 0, 58, 59, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 65, 0, 66, 67, - 68, 69, 70, 71, 5, 6, 7, 8, 9, 0, - 72, 0, 0, 10, 0, 118, 74, 75, 76, 77, - 0, 0, 0, 0, 80, 0, 81, 82, 0, 0, - 0, 0, 676, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 12, 0, 0, 0, 0, 13, - 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 0, 0, 0, 0, - 30, 31, 116, 33, 34, 0, 0, 0, 0, 0, - 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, + 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, + 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 65, 66, 0, 67, 68, 69, 70, 71, + 72, 5, 6, 7, 8, 9, 0, 73, 0, 0, + 10, 121, 124, 75, 76, 77, 78, 0, 0, 0, + 0, 81, 0, 82, 83, 0, 0, 0, 0, 0, + 715, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 12, 13, 0, 0, 0, 0, 14, 0, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 0, 0, 0, 0, 31, 32, + 122, 34, 35, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 0, 0, 58, 59, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 65, 0, 66, - 67, 68, 69, 70, 71, 5, 6, 7, 8, 9, - 0, 72, 0, 0, 10, 0, 118, 74, 75, 76, - 77, 0, 0, 0, 0, 80, 0, 81, 82, 0, + 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 12, 0, 0, 0, 0, - 13, 0, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 0, 0, 0, - 0, 30, 31, 116, 33, 34, 0, 0, 0, 0, - 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 123, 0, 0, 59, 60, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 66, 0, 67, 68, + 69, 70, 71, 72, 5, 6, 7, 8, 9, 0, + 73, 0, 0, 10, 121, 124, 75, 76, 77, 78, + 0, 0, 0, 0, 81, 0, 82, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 0, 0, 58, 59, 0, - 0, 0, 0, 0, 0, 0, 0, 64, 65, 0, - 66, 67, 68, 69, 70, 71, 5, 6, 7, 8, - 9, 0, 72, 0, 0, 10, 0, 118, 74, 75, - 76, 77, 0, 0, 0, 0, 80, 0, 81, 82, + 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, + 14, 0, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 0, 0, 0, + 0, 31, 32, 122, 34, 35, 0, 0, 0, 0, + 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 12, 0, 0, 0, - 0, 13, 0, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 0, 0, - 0, 0, 30, 31, 116, 352, 34, 0, 0, 0, - 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 123, 0, 0, 59, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, + 0, 67, 68, 69, 70, 71, 72, 5, 6, 7, + 8, 9, 0, 73, 0, 0, 10, 11, 124, 75, + 76, 77, 78, 0, 0, 0, 0, 81, 0, 82, + 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, + 0, 0, 0, 14, 0, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 0, 0, 0, 0, 31, 32, 122, 34, 35, 0, + 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 0, 0, 58, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, - 0, 66, 67, 68, 69, 70, 71, 0, 0, 0, - 0, 0, 0, 72, 0, 235, 236, 237, 118, 74, - 75, 76, 77, 0, 0, 0, 0, 80, 0, 81, - 82, 238, 0, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 0, 260, 235, 236, 237, 0, + 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, + 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, + 0, 65, 66, 0, 67, 68, 69, 70, 71, 72, + 5, 6, 7, 8, 9, 0, 73, 0, 0, 10, + 121, 124, 75, 76, 77, 78, 0, 0, 0, 0, + 81, 0, 82, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 238, 0, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 0, 260, 235, 236, 237, + 12, 13, 0, 0, 0, 0, 14, 0, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 0, 0, 0, 0, 31, 32, 122, + 374, 35, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 238, 0, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 0, 260, 0, 0, - 0, 0, 235, 236, 237, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 238, 507, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 0, 260, 235, 236, 237, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, - 545, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 0, 260, 0, 0, 235, 236, 237, 0, + 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 575, 238, 833, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 0, 260, 0, 0, 235, - 236, 237, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 238, 615, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 0, 260, - 235, 236, 237, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 238, 772, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 0, - 260, 235, 236, 237, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 238, 834, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 0, 260, 0, 0, 235, 236, 237, 0, 0, 0, + 0, 123, 0, 0, 59, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 65, 66, 0, 67, 68, 69, + 70, 71, 72, 0, 0, 0, 0, 0, 0, 73, + 251, 252, 253, 0, 124, 75, 76, 77, 78, 0, + 0, 0, 0, 81, 0, 82, 83, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 0, 276, 251, 252, 253, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 0, 276, 251, 252, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 238, 261, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 0, 260, 235, 236, 237, 0, 0, + 0, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 0, 276, 0, 0, 251, 252, + 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 254, 579, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 0, 276, + 0, 0, 251, 252, 253, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 613, 254, + 755, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 0, 276, 251, 252, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 238, 318, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 0, 260, 235, 236, 237, 0, + 653, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 0, 276, 251, 252, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 238, 319, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 0, 260, 0, 0, 235, - 236, 237, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 238, 325, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 0, 260, - 0, 235, 236, 237, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 364, 238, 0, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 0, 260, 235, 236, 237, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 434, 238, 0, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 0, 260, 235, 236, 237, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, - 447, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 0, 260, 0, 235, 236, 237, 0, 0, + 0, 0, 0, 254, 807, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 0, 276, 251, 252, + 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 254, 756, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 0, 276, + 251, 252, 253, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 254, 277, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 0, 276, 251, 252, 253, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, + 337, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 0, 276, 251, 252, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 238, 448, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 0, 260, 235, 236, 237, 0, + 0, 254, 338, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 0, 276, 251, 252, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 238, 458, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 0, 260, 235, 236, 237, + 0, 0, 0, 254, 344, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 0, 276, 0, 251, + 252, 253, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 387, 254, 0, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 0, + 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 459, 251, 252, + 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 302, 0, 254, 0, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 0, 276, + 251, 252, 253, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 310, 254, 657, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 0, 276, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 251, 252, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 238, 554, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 0, 260, 0, 235, - 236, 237, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 238, 777, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 0, 260, - 0, 0, 235, 236, 237, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 928, 238, 619, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 0, 260, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 943, 235, - 236, 237, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 548, 238, 0, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 0, 260, - 236, 237, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 238, 0, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 237, 260, + 0, 0, 0, 0, 254, 582, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 0, 276, 252, + 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 254, 0, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 253, 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 238, 0, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 0, 260, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 0, 260, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 0, 260, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 0, 260 + 0, 0, 0, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 0, 276, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 0, + 276, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 0, 276, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 0, 276 }; +#define yypact_value_is_default(yystate) \ + ((yystate) == (-769)) + +#define yytable_value_is_error(yytable_value) \ + ((yytable_value) == (-540)) + static const yytype_int16 yycheck[] = { - 23, 24, 4, 234, 27, 119, 27, 577, 4, 373, - 425, 260, 446, 280, 8, 27, 555, 752, 437, 8, - 439, 671, 8, 49, 8, 26, 8, 8, 443, 52, - 8, 359, 8, 31, 61, 23, 24, 607, 8, 27, - 8, 8, 8, 8, 61, 8, 277, 63, 8, 8, - 73, 61, 61, 76, 56, 71, 71, 73, 289, 290, - 73, 61, 73, 71, 0, 73, 149, 31, 299, 26, - 301, 148, 149, 71, 324, 73, 71, 31, 144, 31, - 0, 31, 148, 149, 198, 500, 144, 98, 144, 508, - 148, 149, 148, 27, 144, 149, 112, 149, 148, 149, - 73, 113, 26, 78, 112, 149, 45, 46, 47, 73, - 49, 378, 73, 149, 112, 117, 71, 140, 73, 73, - 770, 73, 149, 73, 147, 152, 73, 144, 71, 145, - 153, 78, 148, 148, 144, 152, 73, 145, 154, 149, - 148, 154, 152, 152, 152, 171, 154, 145, 798, 161, - 148, 152, 152, 71, 149, 519, 154, 151, 152, 147, - 23, 24, 151, 186, 27, 151, 141, 151, 191, 151, - 151, 499, 168, 151, 589, 151, 199, 200, 201, 914, - 150, 154, 150, 150, 150, 150, 209, 150, 90, 212, - 150, 150, 61, 154, 151, 142, 143, 152, 71, 154, - 431, 616, 617, 191, 141, 142, 143, 622, 623, 628, - 157, 199, 200, 201, 71, 446, 73, 149, 8, 71, - 61, 209, 234, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 149, 670, 260, 602, 260, - 779, 71, 71, 73, 73, 73, 148, 234, 260, 149, - 78, 73, 90, 71, 123, 112, 78, 676, 71, 71, - 73, 73, 144, 118, 287, 277, 148, 61, 125, 59, - 60, 118, 260, 149, 297, 148, 71, 289, 290, 152, - 71, 648, 123, 112, 147, 534, 61, 299, 145, 301, - 277, 148, 71, 145, 73, 74, 148, 154, 321, 112, - 234, 149, 289, 290, 73, 328, 71, 144, 126, 127, - 148, 148, 335, 141, 142, 143, 145, 149, 682, 148, - 142, 143, 152, 346, 154, 154, 260, 145, 191, 123, - 148, 152, 145, 321, 149, 148, 199, 200, 201, 773, - 152, 154, 154, 277, 149, 371, 209, 335, 123, 716, - 373, 718, 767, 71, 145, 289, 290, 148, 346, 626, - 150, 126, 127, 73, 366, 299, 71, 301, 78, 31, - 366, 941, 384, 142, 143, 739, 73, 66, 67, 68, - 145, 78, 632, 148, 61, 150, 92, 93, 94, 412, - 73, 92, 93, 94, 644, 78, 144, 260, 149, 425, - 59, 60, 669, 93, 94, 144, 93, 94, 148, 206, - 61, 151, 152, 210, 437, 123, 439, 443, 98, 431, - 92, 93, 94, 220, 412, 222, 223, 224, 792, 148, - 149, 141, 142, 143, 446, 148, 459, 460, 461, 670, - 92, 93, 94, 466, 148, 142, 143, 153, 49, 437, - 144, 439, 153, 66, 67, 68, 706, 155, 481, 142, - 143, 66, 67, 153, 8, 732, 153, 148, 149, 66, - 67, 459, 460, 461, 500, 151, 152, 23, 24, 843, - 144, 845, 148, 346, 123, 508, 81, 82, 148, 144, - 513, 144, 515, 481, 98, 149, 519, 431, 13, 522, - 13, 768, 769, 107, 108, 109, 110, 111, 112, 151, - 151, 534, 446, 534, 152, 150, 150, 153, 882, 99, - 508, 71, 534, 156, 104, 513, 71, 107, 108, 109, - 110, 111, 112, 113, 557, 558, 559, 121, 61, 26, - 149, 149, 773, 82, 151, 568, 534, 570, 8, 412, - 90, 915, 71, 576, 577, 71, 552, 580, 808, 582, - 810, 73, 149, 589, 150, 561, 151, 150, 71, 557, - 558, 559, 598, 153, 437, 61, 439, 600, 153, 602, - 568, 149, 13, 121, 607, 949, 149, 149, 576, 839, - 616, 617, 580, 149, 582, 149, 622, 623, 155, 26, - 534, 149, 155, 13, 153, 628, 149, 148, 144, 973, - 42, 43, 44, 45, 46, 47, 639, 49, 481, 869, - 71, 13, 151, 99, 149, 875, 153, 650, 104, 652, - 150, 107, 108, 109, 110, 111, 112, 113, 661, 635, - 628, 149, 8, 148, 122, 508, 152, 149, 155, 150, - 150, 639, 902, 676, 71, 124, 155, 907, 670, 682, - 8, 141, 650, 686, 652, 107, 108, 109, 110, 111, - 112, 534, 71, 661, 102, 13, 155, 153, 153, 929, - 150, 152, 150, 8, 150, 8, 149, 710, 676, 321, - 804, 714, 151, 13, 557, 558, 151, 151, 124, 123, - 150, 149, 151, 335, 150, 955, 153, 150, 958, 150, - 104, 73, 962, 13, 150, 150, 739, 580, 61, 582, - 150, 150, 710, 123, 61, 150, 714, 124, 150, 89, - 980, 71, 155, 152, 149, 155, 670, 760, 4, 5, - 6, 767, 8, 9, 10, 11, 12, 13, 14, 751, - 16, 17, 18, 19, 20, 21, 22, 152, 13, 25, - 26, 773, 151, 151, 83, 628, 151, 13, 791, 792, - 152, 37, 760, 13, 155, 73, 639, 71, 44, 45, - 73, 150, 155, 155, 149, 51, 13, 151, 23, 24, - 813, 150, 71, 151, 13, 73, 153, 153, 661, 13, - 149, 26, 73, 791, 68, 90, 153, 153, 90, 151, - 105, 77, 151, 676, 49, 144, 73, 151, 87, 842, - 843, 71, 845, 150, 13, 813, 822, 459, 460, 73, - 68, 149, 71, 8, 857, 151, 26, 71, 85, 773, - 152, 150, 153, 151, 102, 149, 153, 710, 150, 73, - 153, 152, 971, 481, 842, 328, 122, 366, 602, 882, - 640, 710, 366, 832, 130, 681, 889, 686, 333, 857, - 893, 733, 828, 77, 724, 882, 899, 568, 692, 567, - 796, 513, 582, 661, -1, 191, -1, 204, -1, -1, - -1, -1, 915, -1, -1, -1, 162, -1, 164, -1, - 321, 889, 168, -1, 170, 893, -1, 173, -1, 905, - -1, 899, 147, -1, 335, -1, -1, 940, 941, -1, - -1, -1, -1, -1, -1, -1, 949, 559, -1, -1, - -1, -1, -1, -1, -1, -1, 171, -1, 204, -1, - -1, -1, 208, -1, 576, -1, -1, -1, 944, -1, - 973, -1, 940, 219, -1, -1, 191, -1, -1, -1, - -1, -1, -1, -1, 199, 200, 201, -1, -1, -1, - 236, -1, -1, -1, 209, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, -1, -1, -1, -1, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - -1, -1, 278, -1, 280, 281, -1, -1, 650, -1, - 652, -1, -1, -1, -1, -1, -1, 293, -1, 295, - -1, -1, -1, -1, -1, -1, -1, -1, 459, 460, - 461, 307, 8, -1, 310, -1, -1, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, -1, - -1, -1, 42, 43, 330, -1, -1, -1, -1, 13, + 24, 25, 125, 4, 28, 24, 25, 4, 615, 28, + 28, 473, 276, 78, 593, 29, 30, 590, 464, 381, + 466, 8, 11, 791, 702, 72, 8, 62, 8, 53, + 44, 8, 8, 8, 397, 8, 8, 27, 645, 250, + 710, 8, 8, 24, 25, 72, 239, 28, 74, 8, + 74, 245, 246, 77, 11, 62, 57, 8, 74, 8, + 8, 50, 8, 28, 8, 8, 74, 24, 25, 8, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 61, 714, -1, -1, -1, -1, -1, -1, 69, - 70, 71, 513, 59, 60, -1, -1, -1, -1, 79, - 366, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 346, 378, -1, 380, 59, 60, -1, -1, 385, - -1, 387, -1, 389, 390, 391, -1, -1, 760, -1, - -1, -1, 112, -1, -1, -1, 371, -1, 559, -1, - -1, -1, -1, -1, -1, -1, 126, 568, 128, 129, - 130, 131, 132, 133, -1, 576, -1, -1, -1, 791, - 140, -1, -1, -1, -1, 145, 146, 147, 148, -1, - -1, -1, -1, -1, -1, -1, -1, 412, -1, -1, - -1, 813, -1, -1, 150, -1, -1, -1, -1, -1, - 425, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 437, -1, 439, -1, -1, 151, 443, -1, - 842, -1, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, -1, 857, -1, -1, 494, 650, - -1, 652, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, -1, -1, 481, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 889, 59, 60, - -1, 893, -1, -1, 530, 500, -1, 899, -1, -1, - -1, -1, -1, 508, -1, -1, -1, -1, 59, 60, - -1, -1, 548, -1, -1, -1, 552, -1, -1, 555, - 556, -1, -1, 714, -1, 561, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 940, 90, + 24, 25, 293, 8, 8, 27, 91, 210, 74, 60, + 61, 32, 28, 50, 540, 306, 307, 146, 62, 292, + 294, 150, 296, 150, 487, 316, 171, 318, 146, 174, + 146, 146, 150, 99, 150, 62, 60, 61, 0, 154, + 343, 0, 123, 150, 79, 149, 151, 154, 62, 151, + 156, 151, 156, 74, 27, 805, 62, 156, 162, 817, + 156, 152, 153, 8, 151, 150, 120, 154, 156, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 72, 62, 72, 154, 835, 153, 181, 747, 531, + 938, 153, 154, 153, 198, 156, 153, 153, 153, 203, + 153, 153, 118, 180, 203, 152, 152, 211, 143, 552, + 154, 384, 211, 152, 183, 60, 61, 221, 151, 156, + 224, 152, 221, 152, 152, 74, 152, 154, 152, 152, + 404, 153, 146, 152, 597, 62, 599, 151, 74, 665, + 154, 62, 203, 212, 213, 125, 183, 152, 152, 151, + 211, 120, 74, 62, 170, 72, 147, 79, 147, 150, + 221, 150, 72, 816, 32, 456, 203, 709, 93, 94, + 95, 474, 276, 91, 211, 212, 213, 276, 276, 72, + 151, 74, 473, 151, 221, 151, 32, 151, 74, 715, + 94, 95, 72, 79, 143, 144, 145, 640, 125, 72, + 304, 74, 75, 64, 125, 250, 74, 152, 144, 145, + 314, 72, 72, 74, 74, 276, 125, 93, 94, 95, + 151, 114, 144, 145, 154, 569, 72, 72, 74, 74, + 155, 276, 150, 302, 250, 151, 340, 159, 72, 72, + 74, 340, 72, 347, 74, 153, 323, 74, 293, 394, + 354, 155, 79, 114, 147, 354, 529, 150, 144, 145, + 276, 306, 307, 156, 368, 302, 808, 72, 114, 368, + 62, 316, 72, 318, 74, 962, 72, 293, 721, 155, + 114, 127, 152, 153, 587, 62, 147, 560, 561, 150, + 306, 307, 32, 397, 154, 156, 156, 62, 571, 572, + 316, 147, 318, 32, 150, 94, 95, 368, 389, 154, + 156, 156, 389, 147, 114, 146, 150, 144, 145, 32, + 154, 146, 156, 50, 154, 394, 156, 127, 67, 68, + 69, 368, 128, 129, 438, 778, 46, 47, 48, 438, + 50, 72, 72, 74, 146, 74, 62, 147, 150, 151, + 150, 147, 125, 74, 150, 150, 156, 394, 79, 146, + 464, 74, 466, 150, 151, 464, 155, 466, 74, 150, + 146, 67, 68, 79, 150, 151, 150, 438, 681, 153, + 154, 67, 68, 114, 827, 489, 490, 491, 99, 663, + 489, 490, 491, 497, 410, 93, 94, 95, 128, 129, + 146, 438, 479, 464, 146, 466, 250, 74, 512, 153, + 154, 456, 79, 512, 24, 25, 147, 147, 709, 150, + 150, 157, 152, 144, 145, 156, 8, 464, 473, 466, + 150, 874, 150, 876, 708, 125, 540, 143, 144, 145, + 456, 540, 546, 146, 548, 82, 83, 546, 552, 293, + 27, 512, 146, 557, 93, 94, 95, 473, 151, 732, + 14, 153, 306, 307, 153, 569, 154, 910, 218, 14, + 569, 569, 222, 152, 152, 512, 143, 144, 145, 540, + 67, 68, 69, 233, 152, 235, 236, 237, 592, 593, + 594, 155, 586, 592, 593, 594, 939, 771, 158, 72, + 151, 72, 606, 540, 608, 123, 72, 606, 569, 62, + 614, 615, 27, 157, 83, 614, 620, 808, 153, 596, + 8, 620, 825, 91, 569, 968, 72, 74, 802, 803, + 72, 592, 593, 152, 638, 152, 640, 153, 72, 62, + 155, 645, 845, 14, 847, 988, 157, 123, 157, 618, + 151, 151, 151, 569, 857, 592, 593, 151, 14, 620, + 157, 665, 865, 153, 157, 634, 665, 870, 153, 150, + 674, 151, 146, 72, 14, 674, 155, 155, 153, 151, + 124, 618, 152, 620, 151, 150, 690, 151, 692, 72, + 151, 690, 154, 692, 157, 898, 126, 634, 702, 157, + 8, 904, 143, 702, 665, 43, 44, 45, 46, 47, + 48, 715, 50, 674, 72, 14, 715, 721, 103, 99, + 157, 725, 155, 152, 8, 8, 929, 154, 665, 109, + 110, 111, 112, 113, 114, 152, 84, 674, 841, 151, + 153, 702, 153, 747, 151, 739, 750, 950, 747, 126, + 14, 750, 153, 151, 715, 109, 110, 111, 112, 113, + 114, 152, 152, 740, 709, 702, 155, 153, 125, 972, + 100, 152, 106, 74, 778, 978, 106, 14, 715, 109, + 110, 111, 112, 113, 114, 115, 747, 62, 62, 157, + 125, 153, 995, 709, 90, 799, 157, 152, 126, 152, + 799, 153, 104, 72, 154, 151, 14, 154, 27, 790, + 747, 69, 153, 817, 157, 154, 810, 14, 817, 340, + 43, 44, 826, 827, 74, 155, 340, 826, 72, 74, + 14, 157, 157, 354, 27, 153, 152, 154, 14, 62, + 354, 72, 14, 155, 74, 155, 850, 70, 71, 72, + 14, 850, 69, 74, 107, 155, 817, 80, 91, 153, + 155, 153, 91, 808, 146, 74, 88, 152, 155, 873, + 874, 72, 876, 14, 873, 151, 74, 72, 72, 8, + 817, 153, 859, 86, 888, 152, 154, 153, 103, 888, + 155, 114, 808, 155, 151, 74, 152, 347, 986, 154, + 512, 155, 640, 389, 678, 128, 910, 130, 131, 132, + 133, 134, 135, 917, 863, 754, 352, 921, 917, 142, + 725, 720, 921, 927, 147, 148, 149, 150, 927, 389, + 910, 772, 78, 5, 6, 939, 8, 9, 10, 11, + 12, 13, 14, 15, 764, 17, 18, 19, 20, 21, + 22, 23, 729, 930, 26, 27, 605, 961, 962, 606, + 203, 833, 961, 620, 968, 216, 38, 618, 489, 490, + 491, -1, -1, 45, 46, 489, 490, -1, 50, -1, + 52, -1, -1, 26, 988, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 78, 50, -1, -1, + -1, -1, -1, -1, 9, 10, 11, -1, -1, -1, + -1, -1, -1, -1, -1, 546, -1, -1, -1, -1, + -1, 26, 546, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, -1, 50, 128, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 139, -1, -1, + -1, -1, -1, 594, -1, -1, -1, -1, -1, -1, + 594, -1, -1, -1, -1, 606, -1, -1, -1, -1, + -1, -1, -1, 614, -1, 9, 10, 11, -1, 171, + 614, -1, 174, -1, -1, 177, -1, -1, -1, -1, + 182, 183, 26, -1, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, -1, 50, -1, -1, -1, + 212, 213, -1, -1, 216, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 557, 558, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, -1, 49, -1, 760, - -1, -1, -1, -1, -1, 580, -1, 582, -1, -1, - -1, -1, -1, -1, 589, -1, -1, -1, -1, -1, - 626, 627, -1, 598, -1, -1, -1, -1, 634, 635, - 791, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 616, 617, -1, -1, -1, -1, 622, 623, -1, - -1, -1, 813, 628, -1, -1, -1, 663, -1, -1, - -1, -1, -1, 669, 639, 32, 33, 34, 35, 36, + 232, -1, 157, -1, -1, -1, -1, -1, -1, 690, + -1, 692, -1, 245, 246, -1, 690, -1, 692, -1, + 252, -1, -1, -1, -1, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, -1, -1, -1, -1, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + -1, -1, 294, -1, 296, 297, -1, -1, -1, 750, + 302, -1, -1, -1, -1, -1, 750, -1, 310, -1, + 312, 155, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 326, 8, -1, -1, -1, -1, + -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, -1, -1, -1, -1, 349, 799, -1, + -1, -1, -1, -1, -1, 799, -1, 100, 60, 61, + -1, -1, -1, 106, -1, -1, 109, 110, 111, 112, + 113, 114, 115, -1, -1, 826, -1, 60, 61, -1, + -1, -1, 826, -1, -1, -1, -1, -1, -1, 91, + -1, -1, 394, -1, -1, -1, -1, -1, -1, 850, + -1, -1, 404, -1, 406, -1, 850, -1, -1, 411, + -1, 413, 155, 415, 416, 417, -1, -1, -1, -1, + -1, -1, 873, -1, -1, -1, 9, 10, 11, 873, + -1, -1, -1, -1, -1, -1, -1, 888, -1, -1, + -1, -1, -1, 26, 888, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 917, 50, -1, 152, + 921, -1, -1, 917, -1, -1, 927, 921, -1, -1, + -1, -1, -1, 927, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 3, 4, 5, + 6, 7, -1, -1, -1, -1, 12, 13, -1, -1, + 961, -1, -1, -1, -1, -1, -1, 961, -1, -1, + -1, 27, -1, -1, 526, -1, -1, -1, -1, -1, + 60, 61, -1, -1, -1, -1, -1, 43, 44, -1, + -1, -1, -1, 49, -1, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, -1, -1, 565, 70, 71, 72, 73, 74, -1, + 76, -1, 155, -1, 80, 81, 82, 83, -1, 85, + 582, 87, -1, 89, -1, -1, 92, -1, 590, 591, + 96, 97, 98, 99, -1, 101, 102, -1, -1, 105, + -1, -1, 108, -1, -1, -1, -1, -1, 114, -1, + 116, 117, 118, -1, -1, -1, 618, -1, -1, -1, + -1, 127, 128, 153, 130, 131, 132, 133, 134, 135, + -1, -1, 634, -1, -1, -1, 142, -1, -1, -1, + -1, 147, 148, 149, 150, 151, -1, 153, 154, -1, + 156, -1, 158, 159, -1, -1, -1, -1, -1, -1, + -1, 663, 664, -1, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, -1, -1, -1, 3, + 4, 5, 6, 7, 686, -1, -1, -1, 12, 13, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 842, 49, -1, -1, 691, 661, 9, 10, 11, - -1, -1, -1, -1, -1, -1, 857, -1, -1, -1, - -1, 676, -1, 25, -1, 27, 28, 29, 30, 31, + 47, 48, 704, 50, -1, -1, 708, -1, -1, -1, + 60, 61, -1, -1, -1, -1, -1, -1, -1, 43, + 44, -1, -1, -1, -1, 49, 728, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, -1, -1, -1, 70, 71, 72, 73, + 74, -1, 76, -1, -1, -1, 80, 81, 82, 83, + -1, 85, -1, 87, -1, 89, -1, -1, 92, 771, + -1, -1, 96, 97, 98, 99, 100, 101, 102, -1, + -1, 105, 106, -1, 108, -1, -1, -1, 112, 113, + 114, -1, 116, 117, 118, 119, 120, 121, 122, -1, + 802, 803, 152, 127, 128, -1, 130, 131, 132, 133, + 134, 135, -1, -1, 816, -1, -1, -1, 142, -1, + -1, -1, -1, 147, 148, 149, 150, 151, -1, 153, + 154, -1, 156, -1, 158, 159, 3, 4, 5, 6, + 7, -1, -1, -1, -1, 12, 13, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 43, 44, -1, -1, + -1, -1, 49, -1, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, 70, 71, 72, 73, 74, -1, 76, + 60, 61, -1, 80, 81, 82, 83, -1, 85, -1, + 87, -1, 89, -1, -1, 92, -1, -1, -1, 96, + 97, 98, 99, -1, 101, 102, -1, -1, 105, -1, + -1, 108, -1, -1, -1, 112, 113, 114, -1, 116, + 117, 118, 119, 120, 121, 122, -1, -1, -1, -1, + 127, 128, -1, 130, 131, 132, 133, 134, 135, 3, + 4, 5, 6, 7, -1, 142, -1, -1, 12, 13, + 147, 148, 149, 150, 151, -1, 153, 154, -1, 156, + -1, 158, 159, 27, -1, -1, -1, -1, -1, -1, + -1, -1, 152, 153, -1, -1, -1, -1, -1, 43, + 44, -1, -1, -1, -1, 49, -1, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, -1, -1, -1, 70, 71, 72, 73, + 74, -1, 76, -1, -1, -1, 80, 81, 82, 83, + -1, 85, -1, 87, -1, 89, -1, -1, 92, -1, + -1, -1, 96, 97, 98, 99, -1, 101, 102, -1, + -1, 105, -1, -1, 108, -1, -1, -1, -1, -1, + 114, -1, 116, 117, 118, -1, -1, -1, -1, -1, + -1, -1, -1, 127, 128, -1, 130, 131, 132, 133, + 134, 135, 3, 4, 5, 6, 7, -1, 142, -1, + -1, 12, 13, 147, 148, 149, 150, 151, -1, 153, + 154, -1, 156, -1, 158, 159, 27, -1, -1, -1, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 43, 44, -1, -1, -1, -1, 49, -1, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, -1, -1, -1, 70, + 71, 72, 73, 74, -1, 76, 60, 61, -1, 80, + 81, 82, 83, -1, 85, -1, 87, -1, 89, -1, + -1, 92, -1, -1, -1, 96, 97, 98, 99, -1, + 101, 102, -1, -1, 105, -1, -1, 108, -1, -1, + -1, -1, -1, 114, -1, 116, 117, 118, -1, -1, + -1, -1, -1, -1, -1, -1, 127, 128, -1, 130, + 131, 132, 133, 134, 135, 3, 4, 5, 6, 7, + -1, 142, -1, -1, 12, 13, 147, 148, 149, 150, + 151, -1, 153, 154, -1, 156, -1, 158, 159, 27, + -1, -1, -1, -1, -1, -1, -1, -1, 152, 153, + -1, -1, -1, -1, -1, 43, 44, -1, -1, -1, + -1, 49, -1, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, + -1, -1, 70, 71, 72, 73, 74, -1, 76, -1, + -1, -1, 80, 81, 82, 83, -1, 85, -1, 87, + -1, 89, -1, -1, 92, -1, -1, -1, 96, 97, + 98, 99, -1, 101, 102, -1, -1, 105, -1, -1, + 108, -1, -1, -1, -1, -1, 114, -1, 116, 117, + 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, + 128, -1, 130, 131, 132, 133, 134, 135, 3, 4, + 5, 6, 7, -1, 142, -1, -1, 12, 13, 147, + 148, 149, 150, 151, -1, 153, 154, -1, 156, -1, + 158, 159, -1, -1, -1, -1, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 43, 44, + -1, -1, -1, -1, 49, -1, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, -1, -1, -1, 70, 71, 72, 73, 74, + -1, 76, 60, 61, -1, 80, 81, 82, 83, -1, + 85, -1, 87, -1, 89, -1, -1, 92, -1, -1, + -1, 96, 97, 98, 99, -1, 101, 102, -1, -1, + 105, -1, -1, 108, -1, -1, -1, -1, -1, 114, + -1, 116, 117, 118, -1, -1, -1, -1, -1, -1, + -1, -1, 127, 128, -1, 130, 131, 132, 133, 134, + 135, 3, 4, 5, 6, 7, -1, 142, -1, -1, + 12, 13, 147, 148, 149, 150, 151, -1, 153, 154, + -1, 156, -1, 158, 159, -1, -1, -1, -1, -1, + 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 43, 44, -1, -1, -1, -1, 49, -1, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, + 72, 73, 74, -1, -1, -1, -1, -1, 80, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 732, 49, 889, -1, - -1, -1, 893, -1, -1, 710, -1, 25, 899, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - -1, 49, 768, 769, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 779, -1, 9, 10, 11, -1, 940, - -1, 787, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 25, 767, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, -1, 49, 822, -1, 9, 10, - 11, 827, 828, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 155, 25, -1, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, -1, 49, 865, - -1, -1, -1, 3, 4, 5, 6, 7, -1, -1, - -1, -1, 12, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 124, 49, -1, -1, -1, 901, -1, -1, -1, 905, - -1, -1, 42, 43, -1, -1, -1, -1, 48, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, -1, -1, -1, 69, - 70, 71, 72, 73, -1, 75, -1, -1, 944, 79, - 80, 81, 82, -1, 84, -1, 86, -1, 88, -1, - -1, 91, -1, -1, -1, 95, 96, 97, 98, 99, - 100, 101, 153, 103, 104, -1, 106, -1, -1, -1, - 110, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, -1, -1, -1, 125, 126, -1, 128, 129, - 130, 131, 132, 133, 3, 4, 5, 6, 7, -1, - 140, -1, -1, 12, -1, 145, 146, 147, 148, 149, - -1, 151, 152, -1, 154, -1, 156, 157, -1, -1, + 42, 43, 44, 45, 46, 47, 48, 99, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 42, 43, -1, -1, -1, -1, 48, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, + -1, -1, 114, -1, -1, 117, 118, -1, -1, -1, + -1, -1, -1, -1, -1, 127, 128, -1, 130, 131, + 132, 133, 134, 135, 3, 4, 5, 6, 7, -1, + 142, -1, -1, 12, 13, 147, 148, 149, 150, 151, + 152, -1, -1, -1, 156, -1, 158, 159, -1, -1, + -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 43, 44, -1, -1, -1, -1, + 49, -1, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, -1, -1, - 69, 70, 71, 72, 73, -1, 75, -1, -1, -1, - 79, 80, 81, 82, -1, 84, -1, 86, -1, 88, - -1, -1, 91, -1, -1, -1, 95, 96, 97, 98, - -1, 100, 101, -1, 103, -1, -1, 106, -1, -1, - -1, 110, 111, 112, -1, 114, 115, 116, 117, 118, - 119, 120, -1, -1, -1, -1, 125, 126, -1, 128, - 129, 130, 131, 132, 133, -1, 3, 4, 5, 6, - 7, 140, -1, -1, -1, 12, 145, 146, 147, 148, - 149, -1, 151, 152, -1, 154, -1, 156, 157, 26, + -1, 70, 71, 72, 73, 74, -1, -1, -1, -1, + -1, 80, -1, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 99, 50, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 114, -1, -1, 117, 118, + -1, -1, -1, -1, -1, -1, -1, -1, 127, 128, + -1, 130, 131, 132, 133, 134, 135, 3, 4, 5, + 6, 7, -1, 142, -1, -1, 12, 13, 147, 148, + 149, 150, 151, -1, -1, -1, -1, 156, -1, 158, + 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 43, 44, -1, + -1, -1, -1, 49, -1, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + -1, -1, -1, -1, 70, 71, 72, 73, 74, -1, + -1, -1, -1, -1, 80, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, -1, 50, 99, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, + -1, 117, 118, -1, -1, -1, -1, -1, -1, -1, + -1, 127, 128, -1, 130, 131, 132, 133, 134, 135, + 3, 4, 5, 6, 7, -1, 142, -1, -1, 12, + 13, 147, 148, 149, 150, 151, -1, 153, -1, -1, + 156, -1, 158, 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 42, 43, -1, -1, -1, - -1, 48, -1, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, - -1, -1, 69, 70, 71, 72, 73, -1, 75, -1, - -1, -1, 79, 80, 81, 82, -1, 84, -1, 86, - -1, 88, -1, -1, 91, -1, -1, -1, 95, 96, - 97, 98, -1, 100, 101, -1, 103, -1, -1, 106, - -1, -1, -1, -1, -1, 112, -1, 114, 115, 116, - -1, -1, -1, -1, -1, -1, -1, -1, 125, 126, - -1, 128, 129, 130, 131, 132, 133, -1, 3, 4, - 5, 6, 7, 140, -1, -1, -1, 12, 145, 146, - 147, 148, 149, -1, 151, 152, -1, 154, -1, 156, - 157, 26, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 42, 43, -1, - -1, -1, -1, 48, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, -1, -1, -1, 69, 70, 71, 72, 73, -1, - 75, -1, -1, -1, 79, 80, 81, 82, -1, 84, - -1, 86, -1, 88, -1, -1, 91, -1, -1, -1, - 95, 96, 97, 98, -1, 100, 101, -1, 103, -1, - -1, 106, -1, -1, -1, -1, -1, 112, -1, 114, - 115, 116, -1, -1, -1, -1, -1, -1, -1, -1, - 125, 126, -1, 128, 129, 130, 131, 132, 133, -1, - 3, 4, 5, 6, 7, 140, -1, -1, -1, 12, - 145, 146, 147, 148, 149, -1, 151, 152, -1, 154, - -1, 156, 157, 26, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, - 43, -1, -1, -1, -1, 48, -1, 50, 51, 52, + 43, 44, -1, -1, -1, -1, 49, -1, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, 69, 70, 71, 72, - 73, -1, 75, -1, -1, -1, 79, 80, 81, 82, - -1, 84, -1, 86, -1, 88, -1, -1, 91, -1, - -1, -1, 95, 96, 97, 98, -1, 100, 101, -1, - 103, -1, -1, 106, -1, -1, -1, -1, -1, 112, - -1, 114, 115, 116, -1, -1, -1, -1, -1, -1, - -1, -1, 125, 126, -1, 128, 129, 130, 131, 132, - 133, -1, 3, 4, 5, 6, 7, 140, -1, -1, - -1, 12, 145, 146, 147, 148, 149, -1, 151, 152, - -1, 154, -1, 156, 157, 26, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 42, 43, -1, -1, -1, -1, 48, -1, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, 69, 70, - 71, 72, 73, -1, 75, -1, -1, -1, 79, 80, - 81, 82, -1, 84, -1, 86, -1, 88, -1, -1, - 91, -1, -1, -1, 95, 96, 97, 98, -1, 100, - 101, -1, 103, -1, -1, 106, -1, -1, -1, -1, - -1, 112, -1, 114, 115, 116, -1, -1, -1, -1, - -1, -1, -1, -1, 125, 126, -1, 128, 129, 130, - 131, 132, 133, 3, 4, 5, 6, 7, -1, 140, - -1, -1, 12, -1, 145, 146, 147, 148, 149, -1, - 151, 152, -1, 154, -1, 156, 157, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 42, 43, -1, -1, -1, -1, 48, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, -1, -1, -1, 69, - 70, 71, 72, 73, -1, 75, -1, -1, -1, 79, - 80, 81, 82, -1, 84, -1, 86, -1, 88, -1, - -1, 91, -1, -1, -1, 95, 96, 97, 98, -1, - 100, 101, -1, 103, -1, -1, 106, -1, -1, -1, - -1, -1, 112, -1, 114, 115, 116, -1, -1, -1, - -1, -1, -1, -1, -1, 125, 126, -1, 128, 129, - 130, 131, 132, 133, 3, 4, 5, 6, 7, -1, - 140, -1, -1, 12, -1, 145, 146, 147, 148, 149, - -1, 151, 152, -1, 154, -1, 156, 157, -1, -1, - -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 42, 43, -1, -1, -1, -1, 48, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, -1, -1, -1, -1, - 69, 70, 71, 72, 73, -1, -1, -1, -1, -1, - 79, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 98, - 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 112, -1, -1, 115, 116, -1, -1, - -1, -1, -1, -1, -1, -1, 125, 126, -1, 128, - 129, 130, 131, 132, 133, 3, 4, 5, 6, 7, - -1, 140, -1, -1, 12, -1, 145, 146, 147, 148, - 149, -1, -1, -1, -1, 154, -1, 156, 157, -1, + 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, + 73, 74, -1, -1, -1, -1, -1, 80, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, -1, 50, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 42, 43, -1, -1, -1, -1, - 48, -1, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, -1, -1, -1, - -1, 69, 70, 71, 72, 73, -1, -1, -1, -1, - -1, 79, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, - 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 112, -1, -1, 115, 116, -1, - -1, -1, -1, -1, -1, -1, -1, 125, 126, -1, - 128, 129, 130, 131, 132, 133, 3, 4, 5, 6, - 7, -1, 140, -1, -1, 12, -1, 145, 146, 147, - 148, 149, -1, 151, -1, -1, 154, -1, 156, 157, + -1, 114, -1, -1, 117, 118, -1, -1, -1, -1, + -1, -1, -1, -1, 127, 128, -1, 130, 131, 132, + 133, 134, 135, 3, 4, 5, 6, 7, -1, 142, + -1, -1, 12, 13, 147, 148, 149, 150, 151, -1, + 153, -1, -1, 156, -1, 158, 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 42, 43, -1, -1, -1, - -1, 48, -1, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, -1, - -1, -1, 69, 70, 71, 72, 73, -1, -1, -1, - -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 43, 44, -1, -1, -1, -1, 49, + -1, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, -1, -1, -1, -1, + 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, + 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 112, -1, -1, 115, 116, - -1, -1, -1, -1, -1, -1, -1, -1, 125, 126, - -1, 128, 129, 130, 131, 132, 133, 3, 4, 5, - 6, 7, -1, 140, -1, -1, 12, -1, 145, 146, - 147, 148, 149, -1, 151, -1, -1, 154, -1, 156, - 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 42, 43, -1, -1, - -1, -1, 48, -1, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - -1, -1, -1, 69, 70, 71, 72, 73, -1, -1, - -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 114, -1, -1, 117, 118, -1, + -1, -1, -1, -1, -1, -1, -1, 127, 128, -1, + 130, 131, 132, 133, 134, 135, 3, 4, 5, 6, + 7, -1, 142, -1, -1, 12, 13, 147, 148, 149, + 150, 151, -1, 153, -1, -1, 156, -1, 158, 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 112, -1, -1, 115, - 116, -1, -1, -1, -1, -1, -1, -1, -1, 125, - 126, -1, 128, 129, 130, 131, 132, 133, 3, 4, - 5, 6, 7, -1, 140, -1, -1, 12, -1, 145, - 146, 147, 148, 149, -1, 151, -1, -1, 154, -1, - 156, 157, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 42, 43, -1, - -1, -1, -1, 48, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - -1, -1, -1, -1, 69, 70, 71, 72, 73, -1, - -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, + -1, -1, 49, -1, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, -1, 70, 71, 72, 73, 74, -1, -1, + -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 112, -1, -1, - 115, 116, -1, -1, -1, -1, -1, -1, -1, -1, - 125, 126, -1, 128, 129, 130, 131, 132, 133, 3, - 4, 5, 6, 7, -1, 140, -1, -1, 12, -1, - 145, 146, 147, 148, 149, 150, -1, -1, -1, 154, - -1, 156, 157, -1, -1, -1, -1, 31, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, - -1, -1, -1, -1, 48, -1, 50, 51, 52, 53, + -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 114, -1, -1, + 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, + 127, 128, -1, 130, 131, 132, 133, 134, 135, 3, + 4, 5, 6, 7, -1, 142, -1, -1, 12, 13, + 147, 148, 149, 150, 151, 152, -1, -1, -1, 156, + -1, 158, 159, -1, -1, -1, -1, -1, 32, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, + 44, -1, -1, -1, -1, 49, -1, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, -1, -1, -1, 69, 70, 71, 72, 73, - -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 112, -1, - -1, 115, 116, -1, -1, -1, -1, -1, -1, -1, - -1, 125, 126, -1, 128, 129, 130, 131, 132, 133, - 3, 4, 5, 6, 7, -1, 140, -1, -1, 12, - -1, 145, 146, 147, 148, 149, -1, -1, -1, -1, - 154, -1, 156, 157, -1, -1, -1, -1, 31, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, - 43, -1, -1, -1, -1, 48, -1, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, -1, -1, -1, -1, 69, 70, 71, 72, - 73, -1, -1, -1, -1, -1, 79, -1, -1, -1, + 64, 65, -1, -1, -1, -1, 70, 71, 72, 73, + 74, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 112, - -1, -1, 115, 116, -1, -1, -1, -1, -1, -1, - -1, -1, 125, 126, -1, 128, 129, 130, 131, 132, - 133, 3, 4, 5, 6, 7, -1, 140, -1, -1, - 12, -1, 145, 146, 147, 148, 149, -1, -1, -1, - -1, 154, -1, 156, 157, -1, -1, -1, -1, 31, + -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 42, 43, -1, -1, -1, -1, 48, -1, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, -1, -1, -1, 69, 70, 71, - 72, 73, -1, -1, -1, -1, -1, 79, -1, -1, + 114, -1, -1, 117, 118, -1, -1, -1, -1, -1, + -1, -1, -1, 127, 128, -1, 130, 131, 132, 133, + 134, 135, 3, 4, 5, 6, 7, -1, 142, -1, + -1, 12, 13, 147, 148, 149, 150, 151, -1, -1, + -1, -1, 156, -1, 158, 159, -1, -1, -1, -1, + -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 43, 44, -1, -1, -1, -1, 49, -1, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, -1, -1, -1, -1, 70, + 71, 72, 73, 74, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 112, -1, -1, 115, 116, -1, -1, -1, -1, -1, - -1, -1, -1, 125, 126, -1, 128, 129, 130, 131, - 132, 133, 3, 4, 5, 6, 7, -1, 140, -1, - -1, 12, -1, 145, 146, 147, 148, 149, -1, -1, - -1, -1, 154, -1, 156, 157, -1, -1, -1, -1, - 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 42, 43, -1, -1, -1, -1, 48, -1, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, -1, -1, -1, 69, 70, - 71, 72, 73, -1, -1, -1, -1, -1, 79, -1, + -1, -1, -1, 114, -1, -1, 117, 118, -1, -1, + -1, -1, -1, -1, -1, -1, 127, 128, -1, 130, + 131, 132, 133, 134, 135, 3, 4, 5, 6, 7, + -1, 142, -1, -1, 12, 13, 147, 148, 149, 150, + 151, -1, -1, -1, -1, 156, -1, 158, 159, -1, + -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 43, 44, -1, -1, -1, + -1, 49, -1, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, -1, -1, + -1, -1, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, + -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 114, -1, -1, 117, + 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, + 128, -1, 130, 131, 132, 133, 134, 135, 3, 4, + 5, 6, 7, -1, 142, -1, -1, 12, 13, 147, + 148, 149, 150, 151, -1, -1, -1, -1, 156, -1, + 158, 159, -1, -1, -1, -1, -1, 32, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, + -1, -1, -1, -1, 49, -1, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, -1, -1, -1, -1, 70, 71, 72, 73, 74, + -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 112, -1, -1, 115, 116, -1, -1, -1, -1, - -1, -1, -1, -1, 125, 126, -1, 128, 129, 130, - 131, 132, 133, 3, 4, 5, 6, 7, -1, 140, - -1, -1, 12, -1, 145, 146, 147, 148, 149, -1, - -1, -1, -1, 154, -1, 156, 157, -1, -1, -1, - -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 42, 43, -1, -1, -1, -1, 48, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, 69, - 70, 71, 72, 73, -1, -1, -1, -1, -1, 79, + -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, + -1, -1, 117, 118, -1, -1, -1, -1, -1, -1, + -1, -1, 127, 128, -1, 130, 131, 132, 133, 134, + 135, 3, 4, 5, 6, 7, -1, 142, -1, -1, + 12, 13, 147, 148, 149, 150, 151, -1, -1, -1, + -1, 156, -1, 158, 159, -1, -1, -1, -1, -1, + 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 43, 44, -1, -1, -1, -1, 49, -1, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, + 72, 73, 74, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, + -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 112, -1, -1, 115, 116, -1, -1, -1, - -1, -1, -1, -1, -1, 125, 126, -1, 128, 129, - 130, 131, 132, 133, 3, 4, 5, 6, 7, -1, - 140, -1, -1, 12, -1, 145, 146, 147, 148, 149, - -1, -1, -1, -1, 154, -1, 156, 157, -1, -1, - -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 42, 43, -1, -1, -1, -1, 48, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, -1, -1, -1, -1, - 69, 70, 71, 72, 73, -1, -1, -1, -1, -1, - 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, + -1, -1, 114, -1, -1, 117, 118, -1, -1, -1, + -1, -1, -1, -1, -1, 127, 128, -1, 130, 131, + 132, 133, 134, 135, 3, 4, 5, 6, 7, -1, + 142, -1, -1, 12, 13, 147, 148, 149, 150, 151, + -1, -1, -1, -1, 156, -1, 158, 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 112, -1, -1, 115, 116, -1, -1, - -1, -1, -1, -1, -1, -1, 125, 126, -1, 128, - 129, 130, 131, 132, 133, 3, 4, 5, 6, 7, - -1, 140, -1, -1, 12, -1, 145, 146, 147, 148, - 149, -1, -1, -1, -1, 154, -1, 156, 157, -1, + -1, -1, -1, -1, 43, 44, -1, -1, -1, -1, + 49, -1, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, -1, -1, -1, + -1, 70, 71, 72, 73, 74, -1, -1, -1, -1, + -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 42, 43, -1, -1, -1, -1, - 48, -1, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, -1, -1, -1, - -1, 69, 70, 71, 72, 73, -1, -1, -1, -1, - -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, + 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 114, -1, -1, 117, 118, + -1, -1, -1, -1, -1, -1, -1, -1, 127, 128, + -1, 130, 131, 132, 133, 134, 135, 3, 4, 5, + 6, 7, -1, 142, -1, -1, 12, 13, 147, 148, + 149, 150, 151, -1, -1, -1, -1, 156, -1, 158, + 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 43, 44, -1, + -1, -1, -1, 49, -1, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + -1, -1, -1, -1, 70, 71, 72, 73, 74, -1, + -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 112, -1, -1, 115, 116, -1, - -1, -1, -1, -1, -1, -1, -1, 125, 126, -1, - 128, 129, 130, 131, 132, 133, 3, 4, 5, 6, - 7, -1, 140, -1, -1, 12, -1, 145, 146, 147, - 148, 149, -1, -1, -1, -1, 154, -1, 156, 157, + -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, + -1, 117, 118, -1, -1, -1, -1, -1, -1, -1, + -1, 127, 128, -1, 130, 131, 132, 133, 134, 135, + 3, 4, 5, 6, 7, -1, 142, -1, -1, 12, + 13, 147, 148, 149, 150, 151, -1, -1, -1, -1, + 156, -1, 158, 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 42, 43, -1, -1, -1, - -1, 48, -1, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, -1, - -1, -1, 69, 70, 71, 72, 73, -1, -1, -1, - -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, + 43, 44, -1, -1, -1, -1, 49, -1, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, + 73, 74, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 112, -1, -1, 115, 116, - -1, -1, -1, -1, -1, -1, -1, -1, 125, 126, - -1, 128, 129, 130, 131, 132, 133, -1, -1, -1, - -1, -1, -1, 140, -1, 9, 10, 11, 145, 146, - 147, 148, 149, -1, -1, -1, -1, 154, -1, 156, - 157, 25, -1, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, -1, 49, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 25, -1, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, -1, 49, 9, 10, 11, + -1, 114, -1, -1, 117, 118, -1, -1, -1, -1, + -1, -1, -1, -1, 127, 128, -1, 130, 131, 132, + 133, 134, 135, -1, -1, -1, -1, -1, -1, 142, + 9, 10, 11, -1, 147, 148, 149, 150, 151, -1, + -1, -1, -1, 156, -1, 158, 159, 26, -1, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + -1, 50, 9, 10, 11, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, + -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, -1, 50, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 25, -1, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, -1, 49, -1, -1, + -1, 26, -1, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, -1, 50, -1, -1, 9, 10, + 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 26, 155, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, -1, 50, -1, -1, 9, 10, 11, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 25, 153, + -1, -1, -1, -1, -1, -1, -1, -1, 155, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, -1, 49, 9, 10, 11, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, - 153, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, -1, 49, -1, -1, 9, 10, 11, -1, + 47, 48, -1, 50, 9, 10, 11, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 155, 26, -1, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, -1, 50, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 153, 25, 26, 27, 28, 29, 30, 31, 32, + -1, -1, -1, 26, 155, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, -1, 49, -1, -1, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 25, 153, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, + 43, 44, 45, 46, 47, 48, -1, 50, 9, 10, + 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 26, 153, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, -1, 50, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 25, 153, 27, 28, + -1, -1, -1, -1, -1, -1, -1, 26, 153, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, - 49, 9, 10, 11, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 25, 151, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - -1, 49, -1, -1, 9, 10, 11, -1, -1, -1, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + -1, 50, 9, 10, 11, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, + 153, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, -1, 50, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 25, 151, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 26, 153, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, -1, 49, 9, 10, 11, -1, -1, + 45, 46, 47, 48, -1, 50, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 25, 151, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, -1, 49, 9, 10, 11, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 25, 151, 27, 28, 29, 30, 31, 32, + -1, -1, -1, 26, 153, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, -1, 49, -1, -1, 9, + 43, 44, 45, 46, 47, 48, -1, 50, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 25, 151, 27, 28, 29, + -1, -1, -1, -1, -1, 152, 26, -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, - -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 150, 25, -1, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - -1, 49, 9, 10, 11, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 150, 25, -1, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, -1, 49, 9, 10, 11, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, - 150, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, -1, 49, -1, 9, 10, 11, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 25, 150, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, -1, 49, 9, 10, 11, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 25, 150, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, -1, 49, 9, 10, 11, + 40, 41, 42, 43, 44, 45, 46, 47, 48, -1, + 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 152, 9, 10, + 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 126, -1, 26, -1, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, -1, 50, + 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 126, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 25, 150, 27, 28, 29, 30, 31, + -1, -1, -1, -1, 26, 126, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, -1, 49, -1, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 25, 150, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, - -1, -1, 9, 10, 11, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 150, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, -1, 49, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 150, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 124, 25, -1, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, - 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 25, -1, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 11, 49, + 42, 43, 44, 45, 46, 47, 48, -1, 50, 10, + 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 26, -1, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 11, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 25, -1, 27, 28, 29, 30, 31, 32, + -1, -1, -1, 26, -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, -1, 49, 27, 28, 29, + 43, 44, 45, 46, 47, 48, -1, 50, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 40, 41, 42, 43, 44, 45, 46, 47, 48, -1, + 50, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - -1, 49, 29, 30, 31, 32, 33, 34, 35, 36, + 48, -1, 50, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, -1, 49 + 47, 48, -1, 50 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 159, 160, 0, 161, 3, 4, 5, 6, 7, - 12, 42, 43, 48, 50, 51, 52, 53, 54, 55, + 0, 161, 162, 0, 163, 3, 4, 5, 6, 7, + 12, 13, 43, 44, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 69, 70, 71, 72, 73, 75, 79, 80, 81, 82, - 84, 86, 88, 91, 95, 96, 97, 98, 99, 100, - 101, 103, 104, 106, 110, 111, 112, 114, 115, 116, - 117, 118, 119, 120, 125, 126, 128, 129, 130, 131, - 132, 133, 140, 145, 146, 147, 148, 149, 151, 152, - 154, 156, 157, 162, 163, 168, 172, 173, 203, 204, - 206, 208, 211, 213, 276, 278, 292, 295, 304, 315, - 318, 322, 323, 325, 326, 336, 337, 338, 339, 341, - 342, 343, 344, 350, 360, 363, 71, 112, 145, 292, - 322, 322, 149, 322, 322, 322, 322, 322, 322, 322, - 289, 322, 322, 322, 322, 322, 322, 322, 112, 145, - 148, 162, 304, 325, 326, 338, 325, 31, 322, 354, - 355, 322, 145, 148, 162, 304, 306, 307, 338, 342, - 343, 350, 149, 312, 149, 26, 266, 322, 180, 149, - 149, 149, 190, 149, 151, 322, 151, 322, 71, 71, - 151, 278, 322, 326, 191, 322, 148, 162, 166, 167, - 73, 154, 240, 241, 118, 118, 73, 242, 292, 149, - 149, 149, 149, 149, 149, 73, 78, 141, 142, 143, - 356, 357, 148, 152, 162, 162, 276, 322, 169, 152, - 78, 313, 356, 78, 356, 148, 149, 8, 151, 71, - 71, 31, 205, 340, 144, 9, 10, 11, 25, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 49, 151, 59, 60, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 149, 144, 61, 123, - 61, 152, 154, 343, 205, 322, 322, 148, 162, 144, - 144, 324, 326, 124, 155, 8, 320, 148, 162, 144, - 277, 144, 123, 343, 150, 322, 322, 8, 151, 172, - 178, 267, 268, 322, 278, 326, 149, 322, 151, 151, - 151, 13, 151, 151, 152, 151, 162, 90, 8, 151, - 152, 323, 326, 8, 151, 13, 8, 151, 205, 201, - 202, 326, 326, 361, 326, 150, 279, 354, 61, 123, - 141, 357, 72, 322, 326, 78, 141, 357, 162, 165, - 151, 152, 149, 150, 150, 153, 170, 322, 156, 157, - 71, 296, 71, 121, 212, 210, 71, 149, 61, 71, - 152, 336, 343, 349, 350, 283, 322, 284, 26, 286, - 281, 282, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 306, 31, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 303, 71, 336, 349, 322, - 345, 327, 345, 322, 150, 162, 71, 31, 322, 31, - 322, 162, 336, 149, 314, 336, 308, 150, 150, 322, - 82, 322, 151, 8, 90, 90, 71, 222, 150, 42, - 43, 61, 126, 128, 140, 145, 148, 162, 304, 315, - 316, 317, 169, 90, 71, 167, 322, 241, 316, 73, - 149, 8, 150, 8, 150, 150, 151, 125, 326, 351, - 352, 150, 358, 71, 61, 153, 153, 149, 160, 164, - 298, 285, 117, 171, 172, 203, 204, 153, 31, 238, - 239, 278, 326, 13, 145, 148, 162, 305, 209, 121, - 214, 207, 290, 345, 322, 149, 149, 343, 322, 322, - 288, 322, 322, 322, 63, 326, 238, 149, 149, 155, - 336, 346, 348, 349, 155, 153, 324, 324, 124, 238, - 346, 26, 174, 149, 150, 182, 269, 188, 186, 13, - 8, 150, 185, 316, 316, 316, 319, 321, 149, 78, - 148, 162, 144, 153, 71, 153, 13, 291, 202, 151, - 362, 149, 8, 150, 71, 73, 74, 359, 322, 297, - 153, 160, 238, 274, 275, 149, 324, 150, 8, 316, - 148, 162, 122, 215, 216, 305, 152, 149, 126, 127, - 235, 236, 237, 305, 155, 153, 300, 299, 322, 26, - 306, 150, 302, 301, 347, 328, 61, 152, 31, 322, - 150, 309, 176, 172, 181, 179, 267, 322, 326, 31, - 218, 326, 316, 71, 26, 172, 221, 26, 152, 223, - 124, 155, 8, 320, 319, 162, 71, 102, 316, 235, - 326, 353, 352, 13, 155, 155, 238, 153, 150, 61, - 123, 270, 271, 272, 330, 150, 31, 278, 326, 162, - 216, 152, 8, 243, 235, 150, 8, 31, 73, 238, - 238, 287, 280, 238, 238, 149, 332, 333, 335, 345, - 322, 324, 310, 169, 175, 322, 26, 172, 228, 151, - 124, 217, 326, 217, 13, 169, 151, 224, 151, 224, - 316, 316, 150, 149, 150, 351, 322, 153, 150, 345, - 346, 330, 61, 273, 151, 324, 243, 305, 99, 104, - 107, 108, 109, 110, 111, 112, 113, 153, 244, 247, - 260, 261, 262, 263, 265, 150, 104, 293, 237, 73, - 13, 150, 150, 322, 314, 150, 150, 334, 61, 61, - 329, 155, 153, 123, 311, 177, 229, 150, 169, 183, - 218, 150, 150, 316, 89, 224, 92, 93, 94, 224, - 153, 124, 192, 293, 150, 155, 331, 345, 270, 153, - 71, 248, 305, 245, 292, 263, 8, 151, 152, 149, - 152, 31, 73, 13, 316, 238, 345, 345, 330, 346, - 231, 66, 67, 233, 151, 83, 267, 189, 187, 151, - 92, 151, 322, 26, 151, 227, 153, 316, 305, 152, - 335, 155, 13, 8, 151, 152, 249, 73, 264, 205, - 71, 169, 31, 73, 294, 169, 73, 13, 316, 150, - 155, 155, 66, 67, 234, 149, 172, 151, 150, 26, - 172, 220, 220, 151, 227, 226, 193, 169, 316, 305, - 71, 250, 251, 252, 253, 255, 256, 257, 305, 13, - 8, 151, 71, 13, 153, 73, 8, 150, 153, 13, - 316, 149, 26, 68, 322, 184, 169, 225, 169, 73, - 153, 153, 252, 151, 90, 105, 151, 144, 316, 73, - 246, 316, 31, 73, 316, 322, 169, 151, 150, 26, - 172, 219, 87, 169, 150, 258, 263, 254, 305, 71, - 13, 149, 73, 150, 230, 169, 151, 194, 71, 8, - 316, 235, 26, 172, 85, 152, 305, 150, 232, 151, - 169, 151, 152, 259, 169, 153, 169, 195, 153, 102, - 196, 197, 198, 149, 198, 305, 199, 73, 150, 200, - 152, 169, 153 + 66, 70, 71, 72, 73, 74, 76, 80, 81, 82, + 83, 85, 87, 89, 92, 96, 97, 98, 99, 100, + 101, 102, 105, 106, 108, 112, 113, 114, 116, 117, + 118, 119, 120, 121, 122, 127, 128, 130, 131, 132, + 133, 134, 135, 142, 147, 148, 149, 150, 151, 153, + 154, 156, 158, 159, 164, 165, 170, 174, 175, 209, + 210, 212, 214, 217, 219, 283, 285, 299, 300, 301, + 302, 305, 314, 325, 328, 332, 333, 334, 336, 337, + 347, 348, 349, 350, 352, 353, 354, 355, 361, 371, + 375, 13, 72, 114, 147, 302, 332, 332, 151, 332, + 332, 332, 285, 332, 337, 332, 332, 332, 332, 296, + 332, 332, 332, 332, 332, 332, 332, 114, 147, 150, + 164, 314, 336, 337, 349, 336, 32, 332, 365, 366, + 332, 147, 150, 164, 314, 316, 317, 349, 353, 354, + 361, 151, 322, 333, 151, 333, 27, 62, 273, 332, + 182, 180, 151, 151, 192, 333, 153, 332, 153, 332, + 72, 72, 153, 285, 332, 337, 193, 332, 150, 164, + 168, 169, 74, 156, 247, 248, 120, 120, 74, 249, + 302, 151, 151, 151, 151, 151, 151, 74, 79, 143, + 144, 145, 367, 368, 150, 154, 164, 164, 283, 299, + 332, 171, 154, 79, 323, 367, 79, 367, 150, 306, + 8, 153, 72, 72, 153, 62, 62, 32, 211, 351, + 146, 9, 10, 11, 26, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 50, 153, 60, 61, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 313, 146, 62, 125, 62, 154, 156, 354, + 211, 332, 126, 332, 150, 164, 146, 146, 335, 337, + 126, 157, 8, 330, 150, 164, 146, 284, 146, 125, + 354, 152, 27, 176, 332, 356, 8, 153, 174, 333, + 274, 275, 332, 285, 337, 151, 187, 153, 153, 153, + 14, 153, 153, 154, 153, 164, 91, 8, 153, 154, + 334, 337, 8, 153, 14, 8, 153, 211, 207, 208, + 337, 285, 337, 372, 374, 285, 337, 152, 286, 365, + 62, 125, 143, 368, 73, 332, 337, 79, 143, 368, + 164, 167, 153, 154, 308, 152, 152, 152, 155, 172, + 332, 158, 159, 72, 151, 245, 72, 123, 218, 216, + 356, 356, 72, 297, 62, 72, 154, 347, 354, 360, + 361, 290, 332, 291, 27, 293, 288, 289, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 316, 32, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 245, 72, 347, 360, 356, 338, 356, 332, 152, + 285, 337, 164, 72, 32, 332, 32, 332, 164, 347, + 245, 324, 347, 318, 178, 174, 157, 332, 83, 181, + 153, 8, 91, 91, 72, 229, 27, 154, 230, 43, + 44, 62, 80, 128, 130, 142, 147, 150, 164, 314, + 325, 326, 327, 171, 91, 72, 169, 332, 248, 326, + 74, 298, 8, 152, 8, 152, 152, 152, 153, 127, + 337, 362, 363, 152, 369, 72, 62, 155, 155, 307, + 162, 166, 245, 292, 119, 173, 174, 209, 210, 155, + 32, 152, 246, 285, 299, 337, 14, 147, 150, 164, + 315, 215, 123, 220, 157, 157, 213, 151, 356, 332, + 310, 309, 354, 332, 332, 295, 332, 332, 332, 64, + 337, 312, 311, 157, 347, 357, 359, 360, 157, 155, + 335, 335, 126, 357, 171, 177, 183, 27, 174, 235, + 184, 276, 190, 188, 14, 8, 152, 153, 231, 153, + 231, 326, 326, 326, 329, 331, 151, 79, 150, 164, + 146, 155, 72, 155, 14, 151, 208, 153, 373, 151, + 8, 152, 72, 74, 75, 370, 332, 245, 155, 162, + 281, 282, 151, 335, 8, 152, 152, 326, 150, 164, + 124, 221, 222, 315, 154, 151, 128, 129, 242, 243, + 244, 315, 157, 155, 245, 245, 332, 27, 316, 245, + 245, 358, 339, 62, 154, 32, 332, 319, 179, 236, + 333, 171, 274, 332, 32, 127, 224, 337, 224, 326, + 72, 27, 174, 228, 231, 93, 94, 95, 231, 155, + 126, 157, 8, 330, 329, 164, 72, 103, 195, 326, + 242, 374, 364, 363, 14, 157, 157, 155, 62, 125, + 277, 278, 279, 341, 152, 32, 285, 337, 164, 222, + 154, 8, 250, 242, 152, 8, 32, 74, 294, 287, + 343, 344, 345, 346, 356, 332, 335, 320, 238, 67, + 68, 240, 153, 84, 153, 337, 151, 126, 223, 223, + 14, 171, 93, 153, 332, 27, 153, 234, 155, 326, + 326, 152, 151, 194, 152, 362, 332, 155, 356, 357, + 341, 62, 280, 153, 335, 250, 315, 100, 106, 109, + 110, 111, 112, 113, 114, 115, 155, 251, 254, 267, + 268, 269, 270, 272, 152, 106, 303, 244, 74, 14, + 332, 324, 62, 62, 245, 340, 157, 155, 125, 321, + 67, 68, 241, 333, 174, 153, 185, 225, 224, 152, + 152, 326, 90, 153, 234, 233, 126, 196, 104, 200, + 303, 152, 157, 342, 356, 277, 155, 72, 255, 315, + 252, 302, 270, 8, 153, 154, 151, 154, 32, 74, + 14, 326, 356, 356, 341, 357, 333, 27, 69, 237, + 274, 362, 191, 189, 153, 232, 171, 326, 315, 201, + 154, 346, 157, 14, 8, 153, 154, 256, 74, 271, + 211, 72, 171, 32, 74, 304, 171, 74, 14, 326, + 157, 157, 27, 171, 153, 174, 152, 152, 27, 174, + 227, 227, 171, 197, 154, 171, 326, 315, 72, 257, + 258, 259, 260, 262, 263, 264, 315, 14, 8, 153, + 72, 14, 155, 74, 8, 152, 155, 14, 326, 239, + 186, 171, 74, 171, 155, 155, 259, 153, 91, 107, + 153, 146, 326, 74, 253, 326, 32, 74, 326, 171, + 27, 174, 226, 88, 152, 155, 265, 270, 261, 315, + 72, 14, 151, 74, 171, 153, 198, 72, 8, 326, + 242, 86, 154, 315, 152, 153, 171, 153, 154, 266, + 155, 171, 199, 155, 103, 202, 203, 204, 151, 204, + 315, 205, 74, 152, 206, 154, 171, 155 }; #define yyerrok (yyerrstatus = 0) @@ -2708,9 +2713,18 @@ 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) @@ -2720,7 +2734,6 @@ do \ { \ yychar = (Token); \ yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ @@ -2762,19 +2775,10 @@ while (YYID (0)) #endif -/* 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 defined YYLTYPE_IS_TRIVIAL && 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 @@ -2878,17 +2882,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"); } @@ -2922,11 +2929,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"); } } @@ -2963,7 +2970,6 @@ int yydebug; # define YYMAXDEPTH 10000 #endif - #if YYERROR_VERBOSE @@ -3066,115 +3072,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 (0, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = 0; + /* 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 (0, 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. | @@ -3206,10 +3239,9 @@ yydestruct (yymsg, yytype, yyvaluep) break; } } - -/* Prevent warnings from -Wmissing-prototypes. */ +/* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); @@ -3225,10 +3257,6 @@ int yyparse (); #endif /* ! YYPARSE_PARAM */ - - - - /*----------. | yyparse. | `----------*/ @@ -3255,74 +3283,75 @@ yyparse () #endif #endif { - /* The look-ahead symbol. */ +/* The lookahead symbol. */ int yychar; -/* The semantic value of the look-ahead symbol. */ +/* The semantic value of the lookahead symbol. */ YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - int yystate; - int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + /* Number of syntax errors so far. */ + int yynerrs; - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; - YYSIZE_T yystacksize = YYINITDEPTH; + YYSIZE_T yystacksize; + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ + yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss; yyvsp = yyvs; @@ -3352,7 +3381,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 @@ -3360,7 +3388,6 @@ int yynerrs; yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); yyss = yyss1; @@ -3383,9 +3410,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); @@ -3396,7 +3422,6 @@ int yynerrs; yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); @@ -3406,6 +3431,9 @@ int yynerrs; YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + if (yystate == YYFINAL) + YYACCEPT; + goto yybackup; /*-----------. @@ -3414,16 +3442,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: ")); @@ -3449,26 +3477,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; @@ -3644,12 +3668,12 @@ yyreduce: case 37: - { zend_do_if_cond(&(yyvsp[(3) - (4)]), &(yyvsp[(4) - (4)]) TSRMLS_CC); } + { zend_do_if_cond(&(yyvsp[(2) - (2)]), &(yyvsp[(1) - (2)]) TSRMLS_CC); } break; case 38: - { zend_do_if_after_statement(&(yyvsp[(4) - (6)]), 1 TSRMLS_CC); } + { zend_do_if_after_statement(&(yyvsp[(1) - (4)]), 1 TSRMLS_CC); } break; case 39: @@ -3659,12 +3683,12 @@ yyreduce: case 40: - { zend_do_if_cond(&(yyvsp[(3) - (5)]), &(yyvsp[(4) - (5)]) TSRMLS_CC); } + { zend_do_if_cond(&(yyvsp[(2) - (3)]), &(yyvsp[(1) - (3)]) TSRMLS_CC); } break; case 41: - { zend_do_if_after_statement(&(yyvsp[(4) - (7)]), 1 TSRMLS_CC); } + { zend_do_if_after_statement(&(yyvsp[(1) - (5)]), 1 TSRMLS_CC); } break; case 42: @@ -3674,17 +3698,17 @@ yyreduce: case 43: - { (yyvsp[(1) - (2)]).u.op.opline_num = get_next_op_number(CG(active_op_array)); } + { (yyvsp[(1) - (1)]).u.op.opline_num = get_next_op_number(CG(active_op_array)); } break; case 44: - { zend_do_while_cond(&(yyvsp[(4) - (5)]), &(yyvsp[(5) - (5)]) TSRMLS_CC); } + { zend_do_while_cond(&(yyvsp[(3) - (3)]), &(yyval) TSRMLS_CC); } break; case 45: - { zend_do_while_end(&(yyvsp[(1) - (7)]), &(yyvsp[(5) - (7)]) TSRMLS_CC); } + { zend_do_while_end(&(yyvsp[(1) - (5)]), &(yyvsp[(4) - (5)]) TSRMLS_CC); } break; case 46: @@ -3694,12 +3718,12 @@ yyreduce: case 47: - { (yyvsp[(5) - (5)]).u.op.opline_num = get_next_op_number(CG(active_op_array)); } + { (yyvsp[(4) - (4)]).u.op.opline_num = get_next_op_number(CG(active_op_array)); } break; case 48: - { zend_do_do_while_end(&(yyvsp[(1) - (9)]), &(yyvsp[(5) - (9)]), &(yyvsp[(7) - (9)]) TSRMLS_CC); } + { zend_do_do_while_end(&(yyvsp[(1) - (7)]), &(yyvsp[(4) - (7)]), &(yyvsp[(6) - (7)]) TSRMLS_CC); } break; case 49: @@ -3724,12 +3748,12 @@ yyreduce: case 53: - { zend_do_switch_cond(&(yyvsp[(3) - (4)]) TSRMLS_CC); } + { zend_do_switch_cond(&(yyvsp[(2) - (2)]) TSRMLS_CC); } break; case 54: - { zend_do_switch_end(&(yyvsp[(6) - (6)]) TSRMLS_CC); } + { zend_do_switch_end(&(yyvsp[(4) - (4)]) TSRMLS_CC); } break; case 55: @@ -3767,2043 +3791,2178 @@ yyreduce: { zend_do_return(&(yyvsp[(2) - (3)]), 1 TSRMLS_CC); } break; - case 65: + case 62: - { zend_do_echo(&(yyvsp[(1) - (1)]) TSRMLS_CC); } + { (yyval) = (yyvsp[(1) - (2)]); } break; case 66: - { zend_do_free(&(yyvsp[(1) - (2)]) TSRMLS_CC); } + { zend_do_echo(&(yyvsp[(1) - (1)]) TSRMLS_CC); } break; - case 68: + case 67: - { zend_do_foreach_begin(&(yyvsp[(1) - (4)]), &(yyvsp[(2) - (4)]), &(yyvsp[(3) - (4)]), &(yyvsp[(4) - (4)]), 1 TSRMLS_CC); } + { zend_do_free(&(yyvsp[(1) - (2)]) TSRMLS_CC); } break; case 69: - { zend_do_foreach_cont(&(yyvsp[(1) - (8)]), &(yyvsp[(2) - (8)]), &(yyvsp[(4) - (8)]), &(yyvsp[(6) - (8)]), &(yyvsp[(7) - (8)]) TSRMLS_CC); } + { zend_do_foreach_begin(&(yyvsp[(1) - (4)]), &(yyvsp[(2) - (4)]), &(yyvsp[(3) - (4)]), &(yyvsp[(4) - (4)]), 1 TSRMLS_CC); } break; case 70: - { zend_do_foreach_end(&(yyvsp[(1) - (10)]), &(yyvsp[(4) - (10)]) TSRMLS_CC); } + { zend_do_foreach_cont(&(yyvsp[(1) - (8)]), &(yyvsp[(2) - (8)]), &(yyvsp[(4) - (8)]), &(yyvsp[(6) - (8)]), &(yyvsp[(7) - (8)]) TSRMLS_CC); } break; case 71: - { zend_do_foreach_begin(&(yyvsp[(1) - (4)]), &(yyvsp[(2) - (4)]), &(yyvsp[(3) - (4)]), &(yyvsp[(4) - (4)]), 0 TSRMLS_CC); } + { zend_do_foreach_end(&(yyvsp[(1) - (10)]), &(yyvsp[(4) - (10)]) TSRMLS_CC); } break; case 72: - { zend_check_writable_variable(&(yyvsp[(6) - (8)])); zend_do_foreach_cont(&(yyvsp[(1) - (8)]), &(yyvsp[(2) - (8)]), &(yyvsp[(4) - (8)]), &(yyvsp[(6) - (8)]), &(yyvsp[(7) - (8)]) TSRMLS_CC); } + { zend_do_foreach_begin(&(yyvsp[(1) - (4)]), &(yyvsp[(2) - (4)]), &(yyvsp[(3) - (4)]), &(yyvsp[(4) - (4)]), 0 TSRMLS_CC); } break; case 73: - { zend_do_foreach_end(&(yyvsp[(1) - (10)]), &(yyvsp[(4) - (10)]) TSRMLS_CC); } + { zend_do_foreach_cont(&(yyvsp[(1) - (8)]), &(yyvsp[(2) - (8)]), &(yyvsp[(4) - (8)]), &(yyvsp[(6) - (8)]), &(yyvsp[(7) - (8)]) TSRMLS_CC); } break; case 74: - { (yyvsp[(1) - (1)]).u.op.opline_num = get_next_op_number(CG(active_op_array)); zend_do_declare_begin(TSRMLS_C); } + { zend_do_foreach_end(&(yyvsp[(1) - (10)]), &(yyvsp[(4) - (10)]) TSRMLS_CC); } break; case 75: - { zend_do_declare_end(&(yyvsp[(1) - (6)]) TSRMLS_CC); } + { (yyvsp[(1) - (1)]).u.op.opline_num = get_next_op_number(CG(active_op_array)); zend_do_declare_begin(TSRMLS_C); } break; - case 77: + case 76: - { zend_do_try(&(yyvsp[(1) - (1)]) TSRMLS_CC); } + { zend_do_declare_end(&(yyvsp[(1) - (6)]) TSRMLS_CC); } break; case 78: - { zend_initialize_try_catch_element(&(yyvsp[(1) - (7)]) TSRMLS_CC); } + { zend_do_try(&(yyvsp[(1) - (1)]) TSRMLS_CC); } break; case 79: - { zend_do_first_catch(&(yyvsp[(7) - (9)]) TSRMLS_CC); } + { zend_do_bind_catch(&(yyvsp[(1) - (6)]), &(yyvsp[(6) - (6)]) TSRMLS_CC); } break; case 80: - { zend_do_begin_catch(&(yyvsp[(1) - (12)]), &(yyvsp[(9) - (12)]), &(yyvsp[(11) - (12)]), &(yyvsp[(7) - (12)]) TSRMLS_CC); } + { zend_do_end_finally(&(yyvsp[(1) - (8)]), &(yyvsp[(6) - (8)]), &(yyvsp[(8) - (8)]) TSRMLS_CC); } break; case 81: - { zend_do_end_catch(&(yyvsp[(1) - (16)]) TSRMLS_CC); } + { zend_do_throw(&(yyvsp[(2) - (3)]) TSRMLS_CC); } break; case 82: - { zend_do_mark_last_catch(&(yyvsp[(7) - (18)]), &(yyvsp[(18) - (18)]) TSRMLS_CC); } + { zend_do_goto(&(yyvsp[(2) - (3)]) TSRMLS_CC); } break; case 83: - { zend_do_throw(&(yyvsp[(2) - (3)]) TSRMLS_CC); } + { (yyval).op_type = IS_UNUSED; } break; case 84: - { zend_do_goto(&(yyvsp[(2) - (3)]) TSRMLS_CC); } + { zend_initialize_try_catch_element(&(yyvsp[(1) - (2)]) TSRMLS_CC); } break; case 85: - { (yyval) = (yyvsp[(1) - (1)]); } + { zend_do_first_catch(&(yyvsp[(2) - (4)]) TSRMLS_CC); } break; case 86: - { (yyval).u.op.opline_num = -1; } + { zend_do_begin_catch(&(yyvsp[(1) - (7)]), &(yyvsp[(4) - (7)]), &(yyvsp[(6) - (7)]), &(yyvsp[(2) - (7)]) TSRMLS_CC); } break; case 87: - { (yyval) = (yyvsp[(1) - (1)]); } + { zend_do_end_catch(&(yyvsp[(1) - (11)]) TSRMLS_CC); } break; case 88: - { (yyval) = (yyvsp[(2) - (2)]); } + { zend_do_mark_last_catch(&(yyvsp[(2) - (13)]), &(yyvsp[(13) - (13)]) TSRMLS_CC); (yyval) = (yyvsp[(1) - (13)]);} break; case 89: - { (yyval).u.op.opline_num = get_next_op_number(CG(active_op_array)); } + { (yyval).op_type = IS_UNUSED; } break; case 90: - { zend_do_begin_catch(&(yyvsp[(1) - (6)]), &(yyvsp[(3) - (6)]), &(yyvsp[(5) - (6)]), NULL TSRMLS_CC); } + { zend_do_finally(&(yyvsp[(1) - (1)]) TSRMLS_CC); } break; case 91: - { zend_do_end_catch(&(yyvsp[(1) - (10)]) TSRMLS_CC); } + { (yyval) = (yyvsp[(1) - (5)]); } + break; + + case 92: + + { (yyval) = (yyvsp[(1) - (1)]); } + break; + + case 93: + + { (yyval).u.op.opline_num = -1; } break; case 94: - { zend_do_end_variable_parse(&(yyvsp[(1) - (1)]), BP_VAR_UNSET, 0 TSRMLS_CC); zend_do_unset(&(yyvsp[(1) - (1)]) TSRMLS_CC); } + { (yyval) = (yyvsp[(1) - (1)]); } break; case 95: - { DO_TICKS(); } + { (yyval) = (yyvsp[(2) - (2)]); } break; case 96: - { DO_TICKS(); } + { (yyval).u.op.opline_num = get_next_op_number(CG(active_op_array)); } break; case 97: - { (yyval).op_type = ZEND_RETURN_VAL; } + { zend_do_begin_catch(&(yyvsp[(1) - (6)]), &(yyvsp[(3) - (6)]), &(yyvsp[(5) - (6)]), NULL TSRMLS_CC); } break; case 98: + { zend_do_end_catch(&(yyvsp[(1) - (10)]) TSRMLS_CC); } + break; + + case 101: + + { zend_do_end_variable_parse(&(yyvsp[(1) - (1)]), BP_VAR_UNSET, 0 TSRMLS_CC); zend_do_unset(&(yyvsp[(1) - (1)]) TSRMLS_CC); } + break; + + case 102: + + { DO_TICKS(); } + break; + + case 103: + + { DO_TICKS(); } + break; + + case 104: + + { (yyval).op_type = ZEND_RETURN_VAL; } + break; + + case 105: + { (yyval).op_type = ZEND_RETURN_REF; } break; - case 99: + case 106: { zend_do_begin_function_declaration(&(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]), 0, (yyvsp[(2) - (3)]).op_type, NULL TSRMLS_CC); } break; - case 100: + case 107: { zend_do_end_function_declaration(&(yyvsp[(1) - (10)]) TSRMLS_CC); } break; - case 101: + case 108: { zend_do_begin_class_declaration(&(yyvsp[(1) - (3)]), &(yyvsp[(2) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 102: + case 109: { zend_do_end_class_declaration(&(yyvsp[(1) - (8)]), &(yyvsp[(2) - (8)]) TSRMLS_CC); } break; - case 103: + case 110: { zend_do_begin_class_declaration(&(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]), NULL TSRMLS_CC); } break; - case 104: + case 111: { zend_do_end_class_declaration(&(yyvsp[(1) - (7)]), &(yyvsp[(2) - (7)]) TSRMLS_CC); } break; - case 105: + case 112: { (yyval).u.op.opline_num = CG(zend_lineno); (yyval).EA = 0; } break; - case 106: + case 113: { (yyval).u.op.opline_num = CG(zend_lineno); (yyval).EA = ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; } break; - case 107: + case 114: { (yyval).u.op.opline_num = CG(zend_lineno); (yyval).EA = ZEND_ACC_TRAIT; } break; - case 108: + case 115: { (yyval).u.op.opline_num = CG(zend_lineno); (yyval).EA = ZEND_ACC_FINAL_CLASS; } break; - case 109: + case 116: { (yyval).op_type = IS_UNUSED; } break; - case 110: + case 117: { zend_do_fetch_class(&(yyval), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 111: + case 118: { (yyval).u.op.opline_num = CG(zend_lineno); (yyval).EA = ZEND_ACC_INTERFACE; } break; - case 116: + case 123: { zend_do_implements_interface(&(yyvsp[(1) - (1)]) TSRMLS_CC); } break; - case 117: + case 124: { zend_do_implements_interface(&(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 118: + case 125: { (yyval).op_type = IS_UNUSED; } break; - case 119: + case 126: { (yyval) = (yyvsp[(2) - (2)]); } break; - case 120: + case 127: { zend_check_writable_variable(&(yyvsp[(1) - (1)])); (yyval) = (yyvsp[(1) - (1)]); } break; - case 121: + case 128: { zend_check_writable_variable(&(yyvsp[(2) - (2)])); (yyval) = (yyvsp[(2) - (2)]); (yyval).EA |= ZEND_PARSED_REFERENCE_VARIABLE; } break; - case 128: + case 129: + + { zend_do_list_init(TSRMLS_C); } + break; + + case 130: + + { (yyval) = (yyvsp[(1) - (5)]); (yyval).EA = ZEND_PARSED_LIST_EXPR; } + break; + + case 137: { zend_do_declare_stmt(&(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 129: + case 138: { zend_do_declare_stmt(&(yyvsp[(3) - (5)]), &(yyvsp[(5) - (5)]) TSRMLS_CC); } break; - case 130: + case 139: { (yyval) = (yyvsp[(2) - (3)]); } break; - case 131: + case 140: { (yyval) = (yyvsp[(3) - (4)]); } break; - case 132: + case 141: { (yyval) = (yyvsp[(2) - (4)]); } break; - case 133: + case 142: { (yyval) = (yyvsp[(3) - (5)]); } break; - case 134: + case 143: { (yyval).op_type = IS_UNUSED; } break; - case 135: + case 144: { zend_do_extended_info(TSRMLS_C); zend_do_case_before_statement(&(yyvsp[(1) - (4)]), &(yyvsp[(2) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } break; - case 136: + case 145: { zend_do_case_after_statement(&(yyval), &(yyvsp[(2) - (6)]) TSRMLS_CC); (yyval).op_type = IS_CONST; } break; - case 137: + case 146: { zend_do_extended_info(TSRMLS_C); zend_do_default_before_statement(&(yyvsp[(1) - (3)]), &(yyvsp[(2) - (3)]) TSRMLS_CC); } break; - case 138: + case 147: { zend_do_case_after_statement(&(yyval), &(yyvsp[(2) - (5)]) TSRMLS_CC); (yyval).op_type = IS_CONST; } break; - case 144: + case 153: - { zend_do_if_cond(&(yyvsp[(4) - (5)]), &(yyvsp[(5) - (5)]) TSRMLS_CC); } + { zend_do_if_cond(&(yyvsp[(3) - (3)]), &(yyvsp[(2) - (3)]) TSRMLS_CC); } break; - case 145: + case 154: - { zend_do_if_after_statement(&(yyvsp[(5) - (7)]), 0 TSRMLS_CC); } + { zend_do_if_after_statement(&(yyvsp[(2) - (5)]), 0 TSRMLS_CC); } break; - case 147: + case 156: - { zend_do_if_cond(&(yyvsp[(4) - (6)]), &(yyvsp[(5) - (6)]) TSRMLS_CC); } + { zend_do_if_cond(&(yyvsp[(3) - (4)]), &(yyvsp[(2) - (4)]) TSRMLS_CC); } break; - case 148: + case 157: - { zend_do_if_after_statement(&(yyvsp[(5) - (8)]), 0 TSRMLS_CC); } + { zend_do_if_after_statement(&(yyvsp[(2) - (6)]), 0 TSRMLS_CC); } break; - case 155: + case 164: { (yyval).op_type = IS_UNUSED; (yyval).u.op.num=1; zend_do_receive_arg(ZEND_RECV, &(yyvsp[(2) - (2)]), &(yyval), NULL, &(yyvsp[(1) - (2)]), 0 TSRMLS_CC); } break; - case 156: + case 165: { (yyval).op_type = IS_UNUSED; (yyval).u.op.num=1; zend_do_receive_arg(ZEND_RECV, &(yyvsp[(3) - (3)]), &(yyval), NULL, &(yyvsp[(1) - (3)]), 1 TSRMLS_CC); } break; - case 157: + case 166: { (yyval).op_type = IS_UNUSED; (yyval).u.op.num=1; zend_do_receive_arg(ZEND_RECV_INIT, &(yyvsp[(3) - (5)]), &(yyval), &(yyvsp[(5) - (5)]), &(yyvsp[(1) - (5)]), 1 TSRMLS_CC); } break; - case 158: + case 167: { (yyval).op_type = IS_UNUSED; (yyval).u.op.num=1; zend_do_receive_arg(ZEND_RECV_INIT, &(yyvsp[(2) - (4)]), &(yyval), &(yyvsp[(4) - (4)]), &(yyvsp[(1) - (4)]), 0 TSRMLS_CC); } break; - case 159: + case 168: { (yyval)=(yyvsp[(1) - (4)]); (yyval).u.op.num++; zend_do_receive_arg(ZEND_RECV, &(yyvsp[(4) - (4)]), &(yyval), NULL, &(yyvsp[(3) - (4)]), 0 TSRMLS_CC); } break; - case 160: + case 169: { (yyval)=(yyvsp[(1) - (5)]); (yyval).u.op.num++; zend_do_receive_arg(ZEND_RECV, &(yyvsp[(5) - (5)]), &(yyval), NULL, &(yyvsp[(3) - (5)]), 1 TSRMLS_CC); } break; - case 161: + case 170: { (yyval)=(yyvsp[(1) - (7)]); (yyval).u.op.num++; zend_do_receive_arg(ZEND_RECV_INIT, &(yyvsp[(5) - (7)]), &(yyval), &(yyvsp[(7) - (7)]), &(yyvsp[(3) - (7)]), 1 TSRMLS_CC); } break; - case 162: + case 171: { (yyval)=(yyvsp[(1) - (6)]); (yyval).u.op.num++; zend_do_receive_arg(ZEND_RECV_INIT, &(yyvsp[(4) - (6)]), &(yyval), &(yyvsp[(6) - (6)]), &(yyvsp[(3) - (6)]), 0 TSRMLS_CC); } break; - case 163: + case 172: { (yyval).op_type = IS_UNUSED; } break; - case 164: + case 173: { (yyval).op_type = IS_CONST; Z_TYPE((yyval).u.constant)=IS_ARRAY; } break; - case 165: + case 174: { (yyval).op_type = IS_CONST; Z_TYPE((yyval).u.constant)=IS_CALLABLE; } break; - case 166: + case 175: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 167: + case 176: - { (yyval) = (yyvsp[(1) - (1)]); } + { Z_LVAL((yyval).u.constant) = 0; } break; - case 168: + case 177: - { Z_LVAL((yyval).u.constant) = 0; } + { (yyval) = (yyvsp[(2) - (3)]); } break; - case 169: + case 178: + + { Z_LVAL((yyval).u.constant) = 1; zend_do_pass_param(&(yyvsp[(2) - (3)]), ZEND_SEND_VAL, Z_LVAL((yyval).u.constant) TSRMLS_CC); } + break; + + case 179: { Z_LVAL((yyval).u.constant) = 1; zend_do_pass_param(&(yyvsp[(1) - (1)]), ZEND_SEND_VAL, Z_LVAL((yyval).u.constant) TSRMLS_CC); } break; - case 170: + case 180: { Z_LVAL((yyval).u.constant) = 1; zend_do_pass_param(&(yyvsp[(1) - (1)]), ZEND_SEND_VAR, Z_LVAL((yyval).u.constant) TSRMLS_CC); } break; - case 171: + case 181: { Z_LVAL((yyval).u.constant) = 1; zend_do_pass_param(&(yyvsp[(2) - (2)]), ZEND_SEND_REF, Z_LVAL((yyval).u.constant) TSRMLS_CC); } break; - case 172: + case 182: { Z_LVAL((yyval).u.constant)=Z_LVAL((yyvsp[(1) - (3)]).u.constant)+1; zend_do_pass_param(&(yyvsp[(3) - (3)]), ZEND_SEND_VAL, Z_LVAL((yyval).u.constant) TSRMLS_CC); } break; - case 173: + case 183: { Z_LVAL((yyval).u.constant)=Z_LVAL((yyvsp[(1) - (3)]).u.constant)+1; zend_do_pass_param(&(yyvsp[(3) - (3)]), ZEND_SEND_VAR, Z_LVAL((yyval).u.constant) TSRMLS_CC); } break; - case 174: + case 184: { Z_LVAL((yyval).u.constant)=Z_LVAL((yyvsp[(1) - (4)]).u.constant)+1; zend_do_pass_param(&(yyvsp[(4) - (4)]), ZEND_SEND_REF, Z_LVAL((yyval).u.constant) TSRMLS_CC); } break; - case 175: + case 185: { zend_do_fetch_global_variable(&(yyvsp[(3) - (3)]), NULL, ZEND_FETCH_GLOBAL_LOCK TSRMLS_CC); } break; - case 176: + case 186: { zend_do_fetch_global_variable(&(yyvsp[(1) - (1)]), NULL, ZEND_FETCH_GLOBAL_LOCK TSRMLS_CC); } break; - case 177: + case 187: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 178: + case 188: { (yyval) = (yyvsp[(2) - (2)]); } break; - case 179: + case 189: { (yyval) = (yyvsp[(3) - (4)]); } break; - case 180: + case 190: { zend_do_fetch_static_variable(&(yyvsp[(3) - (3)]), NULL, ZEND_FETCH_STATIC TSRMLS_CC); } break; - case 181: + case 191: { zend_do_fetch_static_variable(&(yyvsp[(3) - (5)]), &(yyvsp[(5) - (5)]), ZEND_FETCH_STATIC TSRMLS_CC); } break; - case 182: + case 192: { zend_do_fetch_static_variable(&(yyvsp[(1) - (1)]), NULL, ZEND_FETCH_STATIC TSRMLS_CC); } break; - case 183: + case 193: { zend_do_fetch_static_variable(&(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]), ZEND_FETCH_STATIC TSRMLS_CC); } break; - case 186: + case 196: { CG(access_type) = Z_LVAL((yyvsp[(1) - (1)]).u.constant); } break; - case 190: + case 200: { zend_do_begin_function_declaration(&(yyvsp[(2) - (4)]), &(yyvsp[(4) - (4)]), 1, (yyvsp[(3) - (4)]).op_type, &(yyvsp[(1) - (4)]) TSRMLS_CC); } break; - case 191: + case 201: { zend_do_abstract_method(&(yyvsp[(4) - (9)]), &(yyvsp[(1) - (9)]), &(yyvsp[(9) - (9)]) TSRMLS_CC); zend_do_end_function_declaration(&(yyvsp[(2) - (9)]) TSRMLS_CC); } break; - case 193: + case 203: { zend_do_implements_trait(&(yyvsp[(1) - (1)]) TSRMLS_CC); } break; - case 194: + case 204: { zend_do_implements_trait(&(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 201: + case 211: { zend_add_trait_precedence(&(yyvsp[(1) - (2)]) TSRMLS_CC); } break; - case 202: + case 212: { zend_add_trait_alias(&(yyvsp[(1) - (2)]) TSRMLS_CC); } break; - case 203: + case 213: { zend_prepare_trait_precedence(&(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 204: + case 214: { zend_resolve_class_name(&(yyvsp[(1) - (1)]), ZEND_FETCH_CLASS_GLOBAL, 1 TSRMLS_CC); zend_init_list(&(yyval).u.op.ptr, Z_STRVAL((yyvsp[(1) - (1)]).u.constant) TSRMLS_CC); } break; - case 205: + case 215: { zend_resolve_class_name(&(yyvsp[(3) - (3)]), ZEND_FETCH_CLASS_GLOBAL, 1 TSRMLS_CC); zend_add_to_list(&(yyvsp[(1) - (3)]).u.op.ptr, Z_STRVAL((yyvsp[(3) - (3)]).u.constant) TSRMLS_CC); (yyval) = (yyvsp[(1) - (3)]); } break; - case 206: + case 216: { zend_prepare_reference(&(yyval), NULL, &(yyvsp[(1) - (1)]) TSRMLS_CC); } break; - case 207: + case 217: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 208: + case 218: { zend_prepare_reference(&(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 209: + case 219: { zend_prepare_trait_alias(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]), &(yyvsp[(4) - (4)]) TSRMLS_CC); } break; - case 210: + case 220: { zend_prepare_trait_alias(&(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]), NULL TSRMLS_CC); } break; - case 211: + case 221: { Z_LVAL((yyval).u.constant) = 0x0; } break; - case 212: + case 222: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 213: + case 223: { Z_LVAL((yyval).u.constant) = ZEND_ACC_ABSTRACT; } break; - case 214: + case 224: { Z_LVAL((yyval).u.constant) = 0; } break; - case 215: + case 225: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 216: + case 226: { Z_LVAL((yyval).u.constant) = ZEND_ACC_PUBLIC; } break; - case 217: + case 227: { Z_LVAL((yyval).u.constant) = ZEND_ACC_PUBLIC; } break; - case 218: + case 228: { (yyval) = (yyvsp[(1) - (1)]); if (!(Z_LVAL((yyval).u.constant) & ZEND_ACC_PPP_MASK)) { Z_LVAL((yyval).u.constant) |= ZEND_ACC_PUBLIC; } } break; - case 219: + case 229: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 220: + case 230: { Z_LVAL((yyval).u.constant) = zend_do_verify_access_types(&(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); } break; - case 221: + case 231: { Z_LVAL((yyval).u.constant) = ZEND_ACC_PUBLIC; } break; - case 222: + case 232: { Z_LVAL((yyval).u.constant) = ZEND_ACC_PROTECTED; } break; - case 223: + case 233: { Z_LVAL((yyval).u.constant) = ZEND_ACC_PRIVATE; } break; - case 224: + case 234: { Z_LVAL((yyval).u.constant) = ZEND_ACC_STATIC; } break; - case 225: + case 235: { Z_LVAL((yyval).u.constant) = ZEND_ACC_ABSTRACT; } break; - case 226: + case 236: { Z_LVAL((yyval).u.constant) = ZEND_ACC_FINAL; } break; - case 227: + case 237: { zend_do_declare_property(&(yyvsp[(3) - (3)]), NULL, CG(access_type) TSRMLS_CC); } break; - case 228: + case 238: { zend_do_declare_property(&(yyvsp[(3) - (5)]), &(yyvsp[(5) - (5)]), CG(access_type) TSRMLS_CC); } break; - case 229: + case 239: { zend_do_declare_property(&(yyvsp[(1) - (1)]), NULL, CG(access_type) TSRMLS_CC); } break; - case 230: + case 240: { zend_do_declare_property(&(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]), CG(access_type) TSRMLS_CC); } break; - case 231: + case 241: { zend_do_declare_class_constant(&(yyvsp[(3) - (5)]), &(yyvsp[(5) - (5)]) TSRMLS_CC); } break; - case 232: + case 242: { zend_do_declare_class_constant(&(yyvsp[(2) - (4)]), &(yyvsp[(4) - (4)]) TSRMLS_CC); } break; - case 233: + case 243: { zend_do_echo(&(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 234: + case 244: { zend_do_echo(&(yyvsp[(1) - (1)]) TSRMLS_CC); } break; - case 235: + case 245: { (yyval).op_type = IS_CONST; Z_TYPE((yyval).u.constant) = IS_BOOL; Z_LVAL((yyval).u.constant) = 1; } break; - case 236: + case 246: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 237: + case 247: { zend_do_free(&(yyvsp[(1) - (2)]) TSRMLS_CC); } break; - case 238: + case 248: { (yyval) = (yyvsp[(4) - (4)]); } break; - case 239: + case 249: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 240: + case 250: { (yyval).EA = (yyvsp[(2) - (2)]).EA; } break; - case 241: + case 251: { (yyval).EA = (yyvsp[(1) - (1)]).EA; } break; - case 242: + case 252: { fetch_array_dim(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } break; - case 243: + case 253: { zend_do_pop_object(&(yyvsp[(1) - (3)]) TSRMLS_CC); fetch_array_dim(&(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(2) - (3)]) TSRMLS_CC); } break; - case 244: + case 254: { zend_do_push_object(&(yyvsp[(1) - (1)]) TSRMLS_CC); } break; - case 245: + case 255: { (yyval) = (yyvsp[(3) - (3)]); } break; - case 246: + case 256: { zend_do_push_object(&(yyvsp[(1) - (1)]) TSRMLS_CC); (yyval) = (yyvsp[(1) - (1)]); } break; - case 247: + case 257: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 248: + case 258: { (yyval) = (yyvsp[(0) - (0)]); } break; - case 249: + case 259: { zend_do_push_object(&(yyvsp[(0) - (0)]) TSRMLS_CC); zend_do_begin_variable_parse(TSRMLS_C); } break; - case 250: + case 260: { zend_do_pop_object(&(yyval) TSRMLS_CC); zend_do_end_variable_parse(&(yyvsp[(2) - (2)]), BP_VAR_R, 0 TSRMLS_CC); } break; - case 251: + case 261: { zend_do_extended_fcall_begin(TSRMLS_C); zend_do_begin_new_object(&(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 252: + case 262: { zend_do_end_new_object(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(4) - (4)]) TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} break; - case 253: + case 263: { zend_do_list_init(TSRMLS_C); } break; - case 254: + case 264: { zend_do_list_end(&(yyval), &(yyvsp[(7) - (7)]) TSRMLS_CC); } break; - case 255: + case 265: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_assign(&(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 256: + case 266: { zend_check_writable_variable(&(yyvsp[(1) - (4)])); zend_do_end_variable_parse(&(yyvsp[(4) - (4)]), BP_VAR_W, 1 TSRMLS_CC); zend_do_end_variable_parse(&(yyvsp[(1) - (4)]), BP_VAR_W, 0 TSRMLS_CC); zend_do_assign_ref(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(4) - (4)]) TSRMLS_CC); } break; - case 257: + case 267: { zend_error(E_DEPRECATED, "Assigning the return value of new by reference is deprecated"); zend_check_writable_variable(&(yyvsp[(1) - (5)])); zend_do_extended_fcall_begin(TSRMLS_C); zend_do_begin_new_object(&(yyvsp[(4) - (5)]), &(yyvsp[(5) - (5)]) TSRMLS_CC); } break; - case 258: + case 268: { zend_do_end_new_object(&(yyvsp[(3) - (7)]), &(yyvsp[(4) - (7)]), &(yyvsp[(7) - (7)]) TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); zend_do_end_variable_parse(&(yyvsp[(1) - (7)]), BP_VAR_W, 0 TSRMLS_CC); (yyvsp[(3) - (7)]).EA = ZEND_PARSED_NEW; zend_do_assign_ref(&(yyval), &(yyvsp[(1) - (7)]), &(yyvsp[(3) - (7)]) TSRMLS_CC); } break; - case 259: + case 269: { zend_do_clone(&(yyval), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 260: + case 270: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_end_variable_parse(&(yyvsp[(1) - (3)]), BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_ADD, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 261: + case 271: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_end_variable_parse(&(yyvsp[(1) - (3)]), BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_SUB, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 262: + case 272: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_end_variable_parse(&(yyvsp[(1) - (3)]), BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_MUL, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 263: + case 273: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_end_variable_parse(&(yyvsp[(1) - (3)]), BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_DIV, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 264: + case 274: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_end_variable_parse(&(yyvsp[(1) - (3)]), BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_CONCAT, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 265: + case 275: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_end_variable_parse(&(yyvsp[(1) - (3)]), BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_MOD, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 266: + case 276: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_end_variable_parse(&(yyvsp[(1) - (3)]), BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_BW_AND, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 267: + case 277: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_end_variable_parse(&(yyvsp[(1) - (3)]), BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_BW_OR, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 268: + case 278: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_end_variable_parse(&(yyvsp[(1) - (3)]), BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_BW_XOR, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 269: + case 279: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_end_variable_parse(&(yyvsp[(1) - (3)]), BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_SL, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 270: + case 280: { zend_check_writable_variable(&(yyvsp[(1) - (3)])); zend_do_end_variable_parse(&(yyvsp[(1) - (3)]), BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_SR, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 271: + case 281: { zend_do_post_incdec(&(yyval), &(yyvsp[(1) - (2)]), ZEND_POST_INC TSRMLS_CC); } break; - case 272: + case 282: { zend_do_pre_incdec(&(yyval), &(yyvsp[(2) - (2)]), ZEND_PRE_INC TSRMLS_CC); } break; - case 273: + case 283: { zend_do_post_incdec(&(yyval), &(yyvsp[(1) - (2)]), ZEND_POST_DEC TSRMLS_CC); } break; - case 274: + case 284: { zend_do_pre_incdec(&(yyval), &(yyvsp[(2) - (2)]), ZEND_PRE_DEC TSRMLS_CC); } break; - case 275: + case 285: { zend_do_boolean_or_begin(&(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 276: + case 286: { zend_do_boolean_or_end(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(4) - (4)]), &(yyvsp[(2) - (4)]) TSRMLS_CC); } break; - case 277: + case 287: { zend_do_boolean_and_begin(&(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 278: + case 288: { zend_do_boolean_and_end(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(4) - (4)]), &(yyvsp[(2) - (4)]) TSRMLS_CC); } break; - case 279: + case 289: { zend_do_boolean_or_begin(&(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 280: + case 290: { zend_do_boolean_or_end(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(4) - (4)]), &(yyvsp[(2) - (4)]) TSRMLS_CC); } break; - case 281: + case 291: { zend_do_boolean_and_begin(&(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 282: + case 292: { zend_do_boolean_and_end(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(4) - (4)]), &(yyvsp[(2) - (4)]) TSRMLS_CC); } break; - case 283: + case 293: { zend_do_binary_op(ZEND_BOOL_XOR, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 284: + case 294: { zend_do_binary_op(ZEND_BW_OR, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 285: + case 295: { zend_do_binary_op(ZEND_BW_AND, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 286: + case 296: { zend_do_binary_op(ZEND_BW_XOR, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 287: + case 297: { zend_do_binary_op(ZEND_CONCAT, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 288: + case 298: { zend_do_binary_op(ZEND_ADD, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 289: + case 299: { zend_do_binary_op(ZEND_SUB, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 290: + case 300: { zend_do_binary_op(ZEND_MUL, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 291: + case 301: { zend_do_binary_op(ZEND_DIV, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 292: + case 302: { zend_do_binary_op(ZEND_MOD, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 293: + case 303: { zend_do_binary_op(ZEND_SL, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 294: + case 304: { zend_do_binary_op(ZEND_SR, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 295: + case 305: { ZVAL_LONG(&(yyvsp[(1) - (2)]).u.constant, 0); if ((yyvsp[(2) - (2)]).op_type == IS_CONST) { add_function(&(yyvsp[(2) - (2)]).u.constant, &(yyvsp[(1) - (2)]).u.constant, &(yyvsp[(2) - (2)]).u.constant TSRMLS_CC); (yyval) = (yyvsp[(2) - (2)]); } else { (yyvsp[(1) - (2)]).op_type = IS_CONST; INIT_PZVAL(&(yyvsp[(1) - (2)]).u.constant); zend_do_binary_op(ZEND_ADD, &(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } } break; - case 296: + case 306: { ZVAL_LONG(&(yyvsp[(1) - (2)]).u.constant, 0); if ((yyvsp[(2) - (2)]).op_type == IS_CONST) { sub_function(&(yyvsp[(2) - (2)]).u.constant, &(yyvsp[(1) - (2)]).u.constant, &(yyvsp[(2) - (2)]).u.constant TSRMLS_CC); (yyval) = (yyvsp[(2) - (2)]); } else { (yyvsp[(1) - (2)]).op_type = IS_CONST; INIT_PZVAL(&(yyvsp[(1) - (2)]).u.constant); zend_do_binary_op(ZEND_SUB, &(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } } break; - case 297: + case 307: { zend_do_unary_op(ZEND_BOOL_NOT, &(yyval), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 298: + case 308: { zend_do_unary_op(ZEND_BW_NOT, &(yyval), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 299: + case 309: { zend_do_binary_op(ZEND_IS_IDENTICAL, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 300: + case 310: { zend_do_binary_op(ZEND_IS_NOT_IDENTICAL, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 301: + case 311: { zend_do_binary_op(ZEND_IS_EQUAL, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 302: + case 312: { zend_do_binary_op(ZEND_IS_NOT_EQUAL, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 303: + case 313: { zend_do_binary_op(ZEND_IS_SMALLER, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 304: + case 314: { zend_do_binary_op(ZEND_IS_SMALLER_OR_EQUAL, &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 305: + case 315: { zend_do_binary_op(ZEND_IS_SMALLER, &(yyval), &(yyvsp[(3) - (3)]), &(yyvsp[(1) - (3)]) TSRMLS_CC); } break; - case 306: + case 316: { zend_do_binary_op(ZEND_IS_SMALLER_OR_EQUAL, &(yyval), &(yyvsp[(3) - (3)]), &(yyvsp[(1) - (3)]) TSRMLS_CC); } break; - case 307: + case 317: { zend_do_instanceof(&(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]), 0 TSRMLS_CC); } break; - case 308: + case 318: - { (yyval) = (yyvsp[(2) - (3)]); } + { (yyval) = (yyvsp[(1) - (1)]); } break; - case 309: + case 319: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 310: + case 320: { (yyval) = (yyvsp[(2) - (3)]); } break; - case 311: + case 321: { (yyval) = (yyvsp[(5) - (5)]); } break; - case 312: + case 322: { zend_do_begin_qm_op(&(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 313: + case 323: { zend_do_qm_true(&(yyvsp[(4) - (5)]), &(yyvsp[(2) - (5)]), &(yyvsp[(5) - (5)]) TSRMLS_CC); } break; - case 314: + case 324: { zend_do_qm_false(&(yyval), &(yyvsp[(7) - (7)]), &(yyvsp[(2) - (7)]), &(yyvsp[(5) - (7)]) TSRMLS_CC); } break; - case 315: + case 325: { zend_do_jmp_set(&(yyvsp[(1) - (3)]), &(yyvsp[(2) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 316: + case 326: { zend_do_jmp_set_else(&(yyval), &(yyvsp[(5) - (5)]), &(yyvsp[(2) - (5)]), &(yyvsp[(3) - (5)]) TSRMLS_CC); } break; - case 317: + case 327: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 318: + case 328: { zend_do_cast(&(yyval), &(yyvsp[(2) - (2)]), IS_LONG TSRMLS_CC); } break; - case 319: + case 329: { zend_do_cast(&(yyval), &(yyvsp[(2) - (2)]), IS_DOUBLE TSRMLS_CC); } break; - case 320: + case 330: { zend_do_cast(&(yyval), &(yyvsp[(2) - (2)]), IS_STRING TSRMLS_CC); } break; - case 321: + case 331: { zend_do_cast(&(yyval), &(yyvsp[(2) - (2)]), IS_ARRAY TSRMLS_CC); } break; - case 322: + case 332: { zend_do_cast(&(yyval), &(yyvsp[(2) - (2)]), IS_OBJECT TSRMLS_CC); } break; - case 323: + case 333: { zend_do_cast(&(yyval), &(yyvsp[(2) - (2)]), IS_BOOL TSRMLS_CC); } break; - case 324: + case 334: { zend_do_cast(&(yyval), &(yyvsp[(2) - (2)]), IS_NULL TSRMLS_CC); } break; - case 325: + case 335: { zend_do_exit(&(yyval), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 326: + case 336: { zend_do_begin_silence(&(yyvsp[(1) - (1)]) TSRMLS_CC); } break; - case 327: + case 337: { zend_do_end_silence(&(yyvsp[(1) - (3)]) TSRMLS_CC); (yyval) = (yyvsp[(3) - (3)]); } break; - case 328: + case 338: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 329: + case 339: - { (yyval) = (yyvsp[(3) - (4)]); } + { zend_do_end_variable_parse(&(yyvsp[(1) - (1)]), BP_VAR_R, 0 TSRMLS_CC); } break; - case 330: + case 340: - { (yyval) = (yyvsp[(2) - (3)]); } + { (yyval) = (yyvsp[(1) - (1)]); } break; - case 331: + case 341: { zend_do_shell_exec(&(yyval), &(yyvsp[(2) - (3)]) TSRMLS_CC); } break; - case 332: + case 342: { zend_do_print(&(yyval), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 333: + case 343: - { zend_do_begin_lambda_function_declaration(&(yyval), &(yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]).op_type, 0 TSRMLS_CC); } + { zend_do_yield(&(yyval), NULL, NULL, 0 TSRMLS_CC); } break; - case 334: + case 344: - { zend_do_end_function_declaration(&(yyvsp[(1) - (10)]) TSRMLS_CC); (yyval) = (yyvsp[(4) - (10)]); } + { zend_do_begin_lambda_function_declaration(&(yyval), &(yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]).op_type, 0 TSRMLS_CC); } break; - case 335: + case 345: - { zend_do_begin_lambda_function_declaration(&(yyval), &(yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]).op_type, 1 TSRMLS_CC); } + { zend_do_end_function_declaration(&(yyvsp[(1) - (10)]) TSRMLS_CC); (yyval) = (yyvsp[(3) - (10)]); } break; - case 336: + case 346: - { zend_do_end_function_declaration(&(yyvsp[(2) - (11)]) TSRMLS_CC); (yyval) = (yyvsp[(5) - (11)]); } + { zend_do_begin_lambda_function_declaration(&(yyval), &(yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]).op_type, 1 TSRMLS_CC); } break; - case 337: + case 347: + + { zend_do_end_function_declaration(&(yyvsp[(2) - (11)]) TSRMLS_CC); (yyval) = (yyvsp[(4) - (11)]); } + break; + + case 348: + + { zend_do_yield(&(yyval), &(yyvsp[(2) - (2)]), NULL, 0 TSRMLS_CC); } + break; + + case 349: + + { zend_do_yield(&(yyval), &(yyvsp[(2) - (2)]), NULL, 1 TSRMLS_CC); } + break; + + case 350: + + { zend_do_yield(&(yyval), &(yyvsp[(4) - (4)]), &(yyvsp[(2) - (4)]), 0 TSRMLS_CC); } + break; + + case 351: + + { zend_do_yield(&(yyval), &(yyvsp[(4) - (4)]), &(yyvsp[(2) - (4)]), 1 TSRMLS_CC); } + break; + + case 352: + + { zend_do_begin_variable_parse(TSRMLS_C); fetch_array_dim(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } + break; + + case 353: + + { fetch_array_dim(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } + break; + + case 354: + + { (yyvsp[(1) - (4)]).EA = 0; zend_do_begin_variable_parse(TSRMLS_C); fetch_array_dim(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } + break; + + case 355: + + { (yyval) = (yyvsp[(3) - (4)]); } + break; + + case 356: + + { (yyval) = (yyvsp[(2) - (3)]); } + break; + + case 357: { (yyval).u.op.opline_num = CG(zend_lineno); } break; - case 340: + case 360: { zend_do_fetch_lexical_variable(&(yyvsp[(3) - (3)]), 0 TSRMLS_CC); } break; - case 341: + case 361: { zend_do_fetch_lexical_variable(&(yyvsp[(4) - (4)]), 1 TSRMLS_CC); } break; - case 342: + case 362: { zend_do_fetch_lexical_variable(&(yyvsp[(1) - (1)]), 0 TSRMLS_CC); } break; - case 343: + case 363: { zend_do_fetch_lexical_variable(&(yyvsp[(2) - (2)]), 1 TSRMLS_CC); } break; - case 344: + case 364: - { (yyvsp[(2) - (2)]).u.op.opline_num = zend_do_begin_function_call(&(yyvsp[(1) - (2)]), 1 TSRMLS_CC); } + { (yyval).u.op.opline_num = zend_do_begin_function_call(&(yyvsp[(1) - (1)]), 1 TSRMLS_CC); } break; - case 345: + case 365: - { zend_do_end_function_call(&(yyvsp[(1) - (5)]), &(yyval), &(yyvsp[(4) - (5)]), 0, (yyvsp[(2) - (5)]).u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + { zend_do_end_function_call(&(yyvsp[(1) - (3)]), &(yyval), &(yyvsp[(3) - (3)]), 0, (yyvsp[(2) - (3)]).u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } break; - case 346: + case 366: - { (yyvsp[(1) - (4)]).op_type = IS_CONST; ZVAL_EMPTY_STRING(&(yyvsp[(1) - (4)]).u.constant); zend_do_build_namespace_name(&(yyvsp[(1) - (4)]), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); (yyvsp[(4) - (4)]).u.op.opline_num = zend_do_begin_function_call(&(yyvsp[(1) - (4)]), 0 TSRMLS_CC); } + { (yyvsp[(1) - (3)]).op_type = IS_CONST; ZVAL_EMPTY_STRING(&(yyvsp[(1) - (3)]).u.constant); zend_do_build_namespace_name(&(yyvsp[(1) - (3)]), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); (yyval).u.op.opline_num = zend_do_begin_function_call(&(yyvsp[(1) - (3)]), 0 TSRMLS_CC); } break; - case 347: + case 367: - { zend_do_end_function_call(&(yyvsp[(1) - (7)]), &(yyval), &(yyvsp[(6) - (7)]), 0, (yyvsp[(4) - (7)]).u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + { zend_do_end_function_call(&(yyvsp[(1) - (5)]), &(yyval), &(yyvsp[(5) - (5)]), 0, (yyvsp[(4) - (5)]).u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } break; - case 348: + case 368: - { (yyvsp[(3) - (3)]).u.op.opline_num = zend_do_begin_function_call(&(yyvsp[(2) - (3)]), 0 TSRMLS_CC); } + { (yyval).u.op.opline_num = zend_do_begin_function_call(&(yyvsp[(2) - (2)]), 0 TSRMLS_CC); } break; - case 349: + case 369: - { zend_do_end_function_call(&(yyvsp[(2) - (6)]), &(yyval), &(yyvsp[(5) - (6)]), 0, (yyvsp[(3) - (6)]).u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + { zend_do_end_function_call(&(yyvsp[(2) - (4)]), &(yyval), &(yyvsp[(4) - (4)]), 0, (yyvsp[(3) - (4)]).u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } break; - case 350: + case 370: - { (yyvsp[(4) - (4)]).u.op.opline_num = zend_do_begin_class_member_function_call(&(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } + { (yyval).u.op.opline_num = zend_do_begin_class_member_function_call(&(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 351: + case 371: - { zend_do_end_function_call((yyvsp[(4) - (7)]).u.op.opline_num?NULL:&(yyvsp[(3) - (7)]), &(yyval), &(yyvsp[(6) - (7)]), (yyvsp[(4) - (7)]).u.op.opline_num, (yyvsp[(4) - (7)]).u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + { zend_do_end_function_call((yyvsp[(4) - (5)]).u.op.opline_num?NULL:&(yyvsp[(3) - (5)]), &(yyval), &(yyvsp[(5) - (5)]), (yyvsp[(4) - (5)]).u.op.opline_num, (yyvsp[(4) - (5)]).u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} break; - case 352: + case 372: - { zend_do_end_variable_parse(&(yyvsp[(3) - (4)]), BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } + { zend_do_end_variable_parse(&(yyvsp[(3) - (3)]), BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 353: + case 373: - { zend_do_end_function_call(NULL, &(yyval), &(yyvsp[(6) - (7)]), 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + { zend_do_end_function_call(NULL, &(yyval), &(yyvsp[(5) - (5)]), 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} break; - case 354: + case 374: - { zend_do_begin_class_member_function_call(&(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } + { zend_do_begin_class_member_function_call(&(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 355: + case 375: - { zend_do_end_function_call(NULL, &(yyval), &(yyvsp[(6) - (7)]), 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + { zend_do_end_function_call(NULL, &(yyval), &(yyvsp[(5) - (5)]), 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} break; - case 356: + case 376: - { zend_do_end_variable_parse(&(yyvsp[(3) - (4)]), BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } + { zend_do_end_variable_parse(&(yyvsp[(3) - (3)]), BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 357: + case 377: - { zend_do_end_function_call(NULL, &(yyval), &(yyvsp[(6) - (7)]), 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + { zend_do_end_function_call(NULL, &(yyval), &(yyvsp[(5) - (5)]), 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} break; - case 358: + case 378: - { zend_do_end_variable_parse(&(yyvsp[(1) - (2)]), BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_dynamic_function_call(&(yyvsp[(1) - (2)]), 0 TSRMLS_CC); } + { zend_do_end_variable_parse(&(yyvsp[(1) - (1)]), BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_dynamic_function_call(&(yyvsp[(1) - (1)]), 0 TSRMLS_CC); } break; - case 359: + case 379: - { zend_do_end_function_call(&(yyvsp[(1) - (5)]), &(yyval), &(yyvsp[(4) - (5)]), 0, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + { zend_do_end_function_call(&(yyvsp[(1) - (3)]), &(yyval), &(yyvsp[(3) - (3)]), 0, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} break; - case 360: + case 380: { (yyval).op_type = IS_CONST; ZVAL_STRINGL(&(yyval).u.constant, "static", sizeof("static")-1, 1);} break; - case 361: + case 381: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 362: + case 382: { (yyval).op_type = IS_CONST; ZVAL_EMPTY_STRING(&(yyval).u.constant); zend_do_build_namespace_name(&(yyval), &(yyval), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 363: + case 383: { char *tmp = estrndup(Z_STRVAL((yyvsp[(2) - (2)]).u.constant), Z_STRLEN((yyvsp[(2) - (2)]).u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL((yyvsp[(2) - (2)]).u.constant), Z_STRLEN((yyvsp[(2) - (2)]).u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL((yyvsp[(2) - (2)]).u.constant)); Z_STRVAL((yyvsp[(2) - (2)]).u.constant) = tmp; ++Z_STRLEN((yyvsp[(2) - (2)]).u.constant); (yyval) = (yyvsp[(2) - (2)]); } break; - case 364: + case 384: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 365: + case 385: { (yyval).op_type = IS_CONST; ZVAL_EMPTY_STRING(&(yyval).u.constant); zend_do_build_namespace_name(&(yyval), &(yyval), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 366: + case 386: { char *tmp = estrndup(Z_STRVAL((yyvsp[(2) - (2)]).u.constant), Z_STRLEN((yyvsp[(2) - (2)]).u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL((yyvsp[(2) - (2)]).u.constant), Z_STRLEN((yyvsp[(2) - (2)]).u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL((yyvsp[(2) - (2)]).u.constant)); Z_STRVAL((yyvsp[(2) - (2)]).u.constant) = tmp; ++Z_STRLEN((yyvsp[(2) - (2)]).u.constant); (yyval) = (yyvsp[(2) - (2)]); } break; - case 367: + case 387: { zend_do_fetch_class(&(yyval), &(yyvsp[(1) - (1)]) TSRMLS_CC); } break; - case 368: + case 388: { zend_do_end_variable_parse(&(yyvsp[(1) - (1)]), BP_VAR_R, 0 TSRMLS_CC); zend_do_fetch_class(&(yyval), &(yyvsp[(1) - (1)]) TSRMLS_CC); } break; - case 369: + case 389: { zend_do_push_object(&(yyvsp[(1) - (2)]) TSRMLS_CC); } break; - case 370: + case 390: { zend_do_push_object(&(yyvsp[(4) - (4)]) TSRMLS_CC); } break; - case 371: + case 391: { zend_do_pop_object(&(yyval) TSRMLS_CC); (yyval).EA = ZEND_PARSED_MEMBER; } break; - case 372: + case 392: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 375: + case 395: { zend_do_push_object(&(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 376: + case 396: { memset(&(yyval), 0, sizeof(znode)); (yyval).op_type = IS_UNUSED; } break; - case 377: + case 397: { memset(&(yyval), 0, sizeof(znode)); (yyval).op_type = IS_UNUSED; } break; - case 378: + case 398: - { (yyval) = (yyvsp[(2) - (3)]); } + { (yyval) = (yyvsp[(1) - (1)]); } break; - case 379: + case 399: { ZVAL_EMPTY_STRING(&(yyval).u.constant); INIT_PZVAL(&(yyval).u.constant); (yyval).op_type = IS_CONST; } break; - case 380: + case 400: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 381: + case 401: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 382: + case 402: - { Z_LVAL((yyval).u.constant)=0; } + { Z_LVAL((yyval).u.constant) = 0; } break; - case 383: + case 403: - { (yyval) = (yyvsp[(2) - (3)]); } + { (yyval) = (yyvsp[(1) - (1)]); } break; - case 384: + case 404: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 385: + case 405: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 386: + case 406: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 387: + case 407: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 388: + case 408: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 389: + case 409: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 390: + case 410: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 391: + case 411: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 392: + case 412: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 393: + case 413: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 394: + case 414: - { (yyval) = (yyvsp[(2) - (3)]); CG(heredoc) = Z_STRVAL((yyvsp[(1) - (3)]).u.constant); CG(heredoc_len) = Z_STRLEN((yyvsp[(1) - (3)]).u.constant); } + { (yyval) = (yyvsp[(2) - (3)]); } break; - case 395: + case 415: - { ZVAL_EMPTY_STRING(&(yyval).u.constant); INIT_PZVAL(&(yyval).u.constant); (yyval).op_type = IS_CONST; CG(heredoc) = Z_STRVAL((yyvsp[(1) - (2)]).u.constant); CG(heredoc_len) = Z_STRLEN((yyvsp[(1) - (2)]).u.constant); } + { ZVAL_EMPTY_STRING(&(yyval).u.constant); INIT_PZVAL(&(yyval).u.constant); (yyval).op_type = IS_CONST; } break; - case 396: + case 416: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 397: + case 417: { zend_do_fetch_constant(&(yyval), NULL, &(yyvsp[(1) - (1)]), ZEND_CT, 1 TSRMLS_CC); } break; - case 398: + case 418: { (yyval).op_type = IS_CONST; ZVAL_EMPTY_STRING(&(yyval).u.constant); zend_do_build_namespace_name(&(yyval), &(yyval), &(yyvsp[(3) - (3)]) TSRMLS_CC); (yyvsp[(3) - (3)]) = (yyval); zend_do_fetch_constant(&(yyval), NULL, &(yyvsp[(3) - (3)]), ZEND_CT, 0 TSRMLS_CC); } break; - case 399: + case 419: { char *tmp = estrndup(Z_STRVAL((yyvsp[(2) - (2)]).u.constant), Z_STRLEN((yyvsp[(2) - (2)]).u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL((yyvsp[(2) - (2)]).u.constant), Z_STRLEN((yyvsp[(2) - (2)]).u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL((yyvsp[(2) - (2)]).u.constant)); Z_STRVAL((yyvsp[(2) - (2)]).u.constant) = tmp; ++Z_STRLEN((yyvsp[(2) - (2)]).u.constant); zend_do_fetch_constant(&(yyval), NULL, &(yyvsp[(2) - (2)]), ZEND_CT, 0 TSRMLS_CC); } break; - case 400: + case 420: { ZVAL_LONG(&(yyvsp[(1) - (2)]).u.constant, 0); add_function(&(yyvsp[(2) - (2)]).u.constant, &(yyvsp[(1) - (2)]).u.constant, &(yyvsp[(2) - (2)]).u.constant TSRMLS_CC); (yyval) = (yyvsp[(2) - (2)]); } break; - case 401: + case 421: { ZVAL_LONG(&(yyvsp[(1) - (2)]).u.constant, 0); sub_function(&(yyvsp[(2) - (2)]).u.constant, &(yyvsp[(1) - (2)]).u.constant, &(yyvsp[(2) - (2)]).u.constant TSRMLS_CC); (yyval) = (yyvsp[(2) - (2)]); } break; - case 402: + case 422: { (yyval) = (yyvsp[(3) - (4)]); Z_TYPE((yyval).u.constant) = IS_CONSTANT_ARRAY; } break; - case 403: + case 423: { (yyval) = (yyvsp[(2) - (3)]); Z_TYPE((yyval).u.constant) = IS_CONSTANT_ARRAY; } break; - case 404: + case 424: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 405: + case 425: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 406: + case 426: { zend_do_fetch_constant(&(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]), ZEND_CT, 0 TSRMLS_CC); } break; - case 407: + case 427: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 408: + case 428: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 409: + case 429: { zend_do_fetch_constant(&(yyval), NULL, &(yyvsp[(1) - (1)]), ZEND_RT, 1 TSRMLS_CC); } break; - case 410: + case 430: { (yyval).op_type = IS_CONST; ZVAL_EMPTY_STRING(&(yyval).u.constant); zend_do_build_namespace_name(&(yyval), &(yyval), &(yyvsp[(3) - (3)]) TSRMLS_CC); (yyvsp[(3) - (3)]) = (yyval); zend_do_fetch_constant(&(yyval), NULL, &(yyvsp[(3) - (3)]), ZEND_RT, 0 TSRMLS_CC); } break; - case 411: + case 431: { char *tmp = estrndup(Z_STRVAL((yyvsp[(2) - (2)]).u.constant), Z_STRLEN((yyvsp[(2) - (2)]).u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL((yyvsp[(2) - (2)]).u.constant), Z_STRLEN((yyvsp[(2) - (2)]).u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL((yyvsp[(2) - (2)]).u.constant)); Z_STRVAL((yyvsp[(2) - (2)]).u.constant) = tmp; ++Z_STRLEN((yyvsp[(2) - (2)]).u.constant); zend_do_fetch_constant(&(yyval), NULL, &(yyvsp[(2) - (2)]), ZEND_RT, 0 TSRMLS_CC); } break; - case 412: + case 432: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 413: + case 433: { (yyval) = (yyvsp[(2) - (3)]); } break; - case 414: + case 434: - { (yyval) = (yyvsp[(2) - (3)]); CG(heredoc) = Z_STRVAL((yyvsp[(1) - (3)]).u.constant); CG(heredoc_len) = Z_STRLEN((yyvsp[(1) - (3)]).u.constant); } + { (yyval) = (yyvsp[(2) - (3)]); } break; - case 415: + case 435: { if (Z_TYPE((yyvsp[(1) - (1)]).u.constant) == IS_CONSTANT) {zend_do_fetch_constant(&(yyval), NULL, &(yyvsp[(1) - (1)]), ZEND_RT, 1 TSRMLS_CC);} else {(yyval) = (yyvsp[(1) - (1)]);} } break; - case 416: + case 436: { (yyval).op_type = IS_CONST; INIT_PZVAL(&(yyval).u.constant); array_init(&(yyval).u.constant); } break; - case 417: + case 437: { (yyval) = (yyvsp[(1) - (2)]); } break; - case 420: + case 440: { zend_do_add_static_array_element(&(yyval), &(yyvsp[(3) - (5)]), &(yyvsp[(5) - (5)])); } break; - case 421: + case 441: { zend_do_add_static_array_element(&(yyval), NULL, &(yyvsp[(3) - (3)])); } break; - case 422: + case 442: { (yyval).op_type = IS_CONST; INIT_PZVAL(&(yyval).u.constant); array_init(&(yyval).u.constant); zend_do_add_static_array_element(&(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)])); } break; - case 423: + case 443: { (yyval).op_type = IS_CONST; INIT_PZVAL(&(yyval).u.constant); array_init(&(yyval).u.constant); zend_do_add_static_array_element(&(yyval), NULL, &(yyvsp[(1) - (1)])); } break; - case 424: + case 444: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 425: + case 445: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 426: + case 446: + + { (yyval) = (yyvsp[(2) - (3)]); } + break; + + case 447: + + { (yyval) = (yyvsp[(2) - (3)]); } + break; + + case 448: { zend_do_end_variable_parse(&(yyvsp[(1) - (1)]), BP_VAR_R, 0 TSRMLS_CC); (yyval) = (yyvsp[(1) - (1)]); } break; - case 427: + case 449: { zend_do_end_variable_parse(&(yyvsp[(1) - (1)]), BP_VAR_W, 0 TSRMLS_CC); (yyval) = (yyvsp[(1) - (1)]); zend_check_writable_variable(&(yyvsp[(1) - (1)])); } break; - case 428: + case 450: { zend_do_end_variable_parse(&(yyvsp[(1) - (1)]), BP_VAR_RW, 0 TSRMLS_CC); (yyval) = (yyvsp[(1) - (1)]); zend_check_writable_variable(&(yyvsp[(1) - (1)])); } break; - case 429: + case 451: { zend_do_push_object(&(yyvsp[(1) - (2)]) TSRMLS_CC); } break; - case 430: + case 452: { zend_do_push_object(&(yyvsp[(4) - (4)]) TSRMLS_CC); } break; - case 431: + case 453: { zend_do_pop_object(&(yyval) TSRMLS_CC); (yyval).EA = (yyvsp[(1) - (7)]).EA | ((yyvsp[(7) - (7)]).EA ? (yyvsp[(7) - (7)]).EA : (yyvsp[(6) - (7)]).EA); } break; - case 432: + case 454: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 433: + case 455: { (yyval).EA = (yyvsp[(2) - (2)]).EA; } break; - case 434: + case 456: { (yyval).EA = 0; } break; - case 435: + case 457: { zend_do_push_object(&(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 436: + case 458: { (yyval).EA = (yyvsp[(4) - (4)]).EA; } break; - case 437: + case 459: { fetch_array_dim(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } break; - case 438: + case 460: { (yyvsp[(1) - (4)]).EA = ZEND_PARSED_METHOD_CALL; fetch_array_dim(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } break; - case 439: + case 461: - { zend_do_pop_object(&(yyvsp[(1) - (1)]) TSRMLS_CC); zend_do_begin_method_call(&(yyvsp[(1) - (1)]) TSRMLS_CC); } + { zend_do_pop_object(&(yyval) TSRMLS_CC); zend_do_begin_method_call(&(yyval) TSRMLS_CC); } break; - case 440: + case 462: - { zend_do_end_function_call(&(yyvsp[(1) - (4)]), &(yyval), &(yyvsp[(3) - (4)]), 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + { zend_do_end_function_call(&(yyvsp[(1) - (2)]), &(yyval), &(yyvsp[(2) - (2)]), 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } break; - case 441: + case 463: { (yyval) = (yyvsp[(1) - (1)]); (yyval).EA = ZEND_PARSED_METHOD_CALL; zend_do_push_object(&(yyval) TSRMLS_CC); } break; - case 442: + case 464: { (yyval) = (yyvsp[(1) - (1)]); zend_do_push_object(&(yyval) TSRMLS_CC); } break; - case 443: + case 465: { (yyval).EA = ZEND_PARSED_MEMBER; } break; - case 444: + case 466: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 445: + case 467: { zend_do_indirect_references(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 446: + case 468: { (yyval) = (yyvsp[(3) - (3)]); zend_do_fetch_static_member(&(yyval), &(yyvsp[(1) - (3)]) TSRMLS_CC); } break; - case 447: + case 469: { (yyval) = (yyvsp[(3) - (3)]); zend_do_fetch_static_member(&(yyval), &(yyvsp[(1) - (3)]) TSRMLS_CC); } break; - case 448: + case 470: { zend_do_end_variable_parse(&(yyvsp[(1) - (1)]), BP_VAR_R, 0 TSRMLS_CC); (yyval)=(yyvsp[(1) - (1)]);; } break; - case 449: + case 471: { fetch_array_dim(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } break; - case 450: + case 472: { zend_do_begin_variable_parse(TSRMLS_C); (yyvsp[(1) - (1)]).EA = ZEND_PARSED_FUNCTION_CALL; } break; - case 451: + case 473: { fetch_array_dim(&(yyval), &(yyvsp[(1) - (5)]), &(yyvsp[(4) - (5)]) TSRMLS_CC); } break; - case 452: + case 474: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 453: + case 475: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 454: + case 476: { zend_do_begin_variable_parse(TSRMLS_C); (yyval) = (yyvsp[(1) - (1)]); (yyval).EA = ZEND_PARSED_FUNCTION_CALL; } break; - case 455: + case 477: { (yyval) = (yyvsp[(1) - (1)]); (yyval).EA = ZEND_PARSED_VARIABLE; } break; - case 456: + case 478: { zend_do_indirect_references(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); (yyval).EA = ZEND_PARSED_VARIABLE; } break; - case 457: + case 479: { (yyval) = (yyvsp[(1) - (1)]); (yyval).EA = ZEND_PARSED_STATIC_MEMBER; } break; - case 458: + case 480: { fetch_array_dim(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } break; - case 459: + case 481: { fetch_string_offset(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } break; - case 460: + case 482: { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&(yyval), &(yyvsp[(1) - (1)]), 1 TSRMLS_CC); } break; - case 461: + case 483: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 462: + case 484: { (yyval) = (yyvsp[(3) - (4)]); } break; - case 463: + case 485: { (yyval).op_type = IS_UNUSED; } break; - case 464: + case 486: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 465: + case 487: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 466: + case 488: { zend_do_end_variable_parse(&(yyvsp[(1) - (1)]), BP_VAR_R, 0 TSRMLS_CC); } break; - case 467: + case 489: { znode tmp_znode; zend_do_pop_object(&tmp_znode TSRMLS_CC); zend_do_fetch_property(&(yyval), &tmp_znode, &(yyvsp[(1) - (2)]) TSRMLS_CC);} break; - case 468: + case 490: { fetch_array_dim(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } break; - case 469: + case 491: { fetch_string_offset(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)]) TSRMLS_CC); } break; - case 470: + case 492: { znode tmp_znode; zend_do_pop_object(&tmp_znode TSRMLS_CC); zend_do_fetch_property(&(yyval), &tmp_znode, &(yyvsp[(1) - (1)]) TSRMLS_CC);} break; - case 471: + case 493: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 472: + case 494: { (yyval) = (yyvsp[(2) - (3)]); } break; - case 473: + case 495: { Z_LVAL((yyval).u.constant) = 1; } break; - case 474: + case 496: { Z_LVAL((yyval).u.constant)++; } break; - case 477: + case 499: { zend_do_add_list_element(&(yyvsp[(1) - (1)]) TSRMLS_CC); } break; - case 478: + case 500: { zend_do_new_list_begin(TSRMLS_C); } break; - case 479: + case 501: { zend_do_new_list_end(TSRMLS_C); } break; - case 480: + case 502: { zend_do_add_list_element(NULL TSRMLS_CC); } break; - case 481: + case 503: { zend_do_init_array(&(yyval), NULL, NULL, 0 TSRMLS_CC); } break; - case 482: + case 504: { (yyval) = (yyvsp[(1) - (2)]); } break; - case 483: + case 505: { zend_do_add_array_element(&(yyval), &(yyvsp[(5) - (5)]), &(yyvsp[(3) - (5)]), 0 TSRMLS_CC); } break; - case 484: + case 506: { zend_do_add_array_element(&(yyval), &(yyvsp[(3) - (3)]), NULL, 0 TSRMLS_CC); } break; - case 485: + case 507: { zend_do_init_array(&(yyval), &(yyvsp[(3) - (3)]), &(yyvsp[(1) - (3)]), 0 TSRMLS_CC); } break; - case 486: + case 508: { zend_do_init_array(&(yyval), &(yyvsp[(1) - (1)]), NULL, 0 TSRMLS_CC); } break; - case 487: + case 509: { zend_do_add_array_element(&(yyval), &(yyvsp[(6) - (6)]), &(yyvsp[(3) - (6)]), 1 TSRMLS_CC); } break; - case 488: + case 510: { zend_do_add_array_element(&(yyval), &(yyvsp[(4) - (4)]), NULL, 1 TSRMLS_CC); } break; - case 489: + case 511: { zend_do_init_array(&(yyval), &(yyvsp[(4) - (4)]), &(yyvsp[(1) - (4)]), 1 TSRMLS_CC); } break; - case 490: + case 512: { zend_do_init_array(&(yyval), &(yyvsp[(2) - (2)]), NULL, 1 TSRMLS_CC); } break; - case 491: + case 513: { zend_do_end_variable_parse(&(yyvsp[(2) - (2)]), BP_VAR_R, 0 TSRMLS_CC); zend_do_add_variable(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 492: + case 514: { zend_do_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 493: + case 515: { zend_do_end_variable_parse(&(yyvsp[(1) - (1)]), BP_VAR_R, 0 TSRMLS_CC); zend_do_add_variable(&(yyval), NULL, &(yyvsp[(1) - (1)]) TSRMLS_CC); } break; - case 494: + case 516: { zend_do_add_string(&(yyval), NULL, &(yyvsp[(1) - (2)]) TSRMLS_CC); zend_do_end_variable_parse(&(yyvsp[(2) - (2)]), BP_VAR_R, 0 TSRMLS_CC); zend_do_add_variable(&(yyval), &(yyval), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 495: + case 517: { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&(yyval), &(yyvsp[(1) - (1)]), 1 TSRMLS_CC); } break; - case 496: + case 518: { zend_do_begin_variable_parse(TSRMLS_C); } break; - case 497: + case 519: { fetch_array_begin(&(yyval), &(yyvsp[(1) - (5)]), &(yyvsp[(4) - (5)]) TSRMLS_CC); } break; - case 498: + case 520: { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&(yyvsp[(2) - (3)]), &(yyvsp[(1) - (3)]), 1 TSRMLS_CC); zend_do_fetch_property(&(yyval), &(yyvsp[(2) - (3)]), &(yyvsp[(3) - (3)]) TSRMLS_CC); } break; - case 499: + case 521: { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&(yyval), &(yyvsp[(2) - (3)]), 1 TSRMLS_CC); } break; - case 500: + case 522: { zend_do_begin_variable_parse(TSRMLS_C); fetch_array_begin(&(yyval), &(yyvsp[(2) - (6)]), &(yyvsp[(4) - (6)]) TSRMLS_CC); } break; - case 501: + case 523: { (yyval) = (yyvsp[(2) - (3)]); } break; - case 502: + case 524: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 503: + case 525: { (yyval) = (yyvsp[(1) - (1)]); } break; - case 504: + case 526: { fetch_simple_variable(&(yyval), &(yyvsp[(1) - (1)]), 1 TSRMLS_CC); } break; - case 505: + case 527: { (yyval) = (yyvsp[(3) - (4)]); } break; - case 506: + case 528: { zend_do_isset_or_isempty(ZEND_ISEMPTY, &(yyval), &(yyvsp[(3) - (4)]) TSRMLS_CC); } break; - case 507: + case 529: + + { zend_do_unary_op(ZEND_BOOL_NOT, &(yyval), &(yyvsp[(3) - (4)]) TSRMLS_CC); } + break; + + case 530: { zend_do_include_or_eval(ZEND_INCLUDE, &(yyval), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 508: + case 531: { zend_do_include_or_eval(ZEND_INCLUDE_ONCE, &(yyval), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 509: + case 532: { zend_do_include_or_eval(ZEND_EVAL, &(yyval), &(yyvsp[(3) - (4)]) TSRMLS_CC); } break; - case 510: + case 533: { zend_do_include_or_eval(ZEND_REQUIRE, &(yyval), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 511: + case 534: { zend_do_include_or_eval(ZEND_REQUIRE_ONCE, &(yyval), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 512: + case 535: - { zend_do_isset_or_isempty(ZEND_ISSET, &(yyval), &(yyvsp[(1) - (1)]) TSRMLS_CC); } + { (yyval) = (yyvsp[(1) - (1)]); } break; - case 513: + case 536: { zend_do_boolean_and_begin(&(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)]) TSRMLS_CC); } break; - case 514: + case 537: - { znode tmp; zend_do_isset_or_isempty(ZEND_ISSET, &tmp, &(yyvsp[(4) - (4)]) TSRMLS_CC); zend_do_boolean_and_end(&(yyval), &(yyvsp[(1) - (4)]), &tmp, &(yyvsp[(2) - (4)]) TSRMLS_CC); } + { zend_do_boolean_and_end(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(4) - (4)]), &(yyvsp[(2) - (4)]) TSRMLS_CC); } break; - case 515: + case 538: + + { zend_do_isset_or_isempty(ZEND_ISSET, &(yyval), &(yyvsp[(1) - (1)]) TSRMLS_CC); } + break; + + case 539: + + { zend_error(E_COMPILE_ERROR, "Cannot use isset() on the result of an expression (you can use \"null !== expression\" instead)"); } + break; + + case 540: { zend_do_fetch_constant(&(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]), ZEND_RT, 0 TSRMLS_CC); } break; - case 516: + case 541: { zend_do_fetch_constant(&(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]), ZEND_RT, 0 TSRMLS_CC); } 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); @@ -5812,7 +5971,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. */ @@ -5832,6 +5990,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) { @@ -5839,37 +6001,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 } @@ -5877,7 +6038,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) @@ -5894,7 +6055,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; @@ -5928,7 +6089,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) @@ -5951,9 +6112,6 @@ yyerrlab1: YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - *++yyvsp = yylval; @@ -5978,7 +6136,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#ifndef yyoverflow +#if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -5989,9 +6147,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 152ff00e7..ee3362cff 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.5. */ -/* 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-2011 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,11 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ + /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE @@ -49,124 +47,126 @@ T_LOGICAL_XOR = 264, T_LOGICAL_AND = 265, T_PRINT = 266, - T_SR_EQUAL = 267, - T_SL_EQUAL = 268, - T_XOR_EQUAL = 269, - T_OR_EQUAL = 270, - T_AND_EQUAL = 271, - T_MOD_EQUAL = 272, - T_CONCAT_EQUAL = 273, - T_DIV_EQUAL = 274, - T_MUL_EQUAL = 275, - T_MINUS_EQUAL = 276, - T_PLUS_EQUAL = 277, - T_BOOLEAN_OR = 278, - T_BOOLEAN_AND = 279, - T_IS_NOT_IDENTICAL = 280, - T_IS_IDENTICAL = 281, - T_IS_NOT_EQUAL = 282, - T_IS_EQUAL = 283, - T_IS_GREATER_OR_EQUAL = 284, - T_IS_SMALLER_OR_EQUAL = 285, - T_SR = 286, - T_SL = 287, - T_INSTANCEOF = 288, - T_UNSET_CAST = 289, - T_BOOL_CAST = 290, - T_OBJECT_CAST = 291, - T_ARRAY_CAST = 292, - T_STRING_CAST = 293, - T_DOUBLE_CAST = 294, - T_INT_CAST = 295, - T_DEC = 296, - T_INC = 297, - T_CLONE = 298, - T_NEW = 299, - T_EXIT = 300, - T_IF = 301, - T_ELSEIF = 302, - T_ELSE = 303, - T_ENDIF = 304, - T_LNUMBER = 305, - T_DNUMBER = 306, - T_STRING = 307, - T_STRING_VARNAME = 308, - T_VARIABLE = 309, - T_NUM_STRING = 310, - T_INLINE_HTML = 311, - T_CHARACTER = 312, - T_BAD_CHARACTER = 313, - T_ENCAPSED_AND_WHITESPACE = 314, - T_CONSTANT_ENCAPSED_STRING = 315, - T_ECHO = 316, - T_DO = 317, - T_WHILE = 318, - T_ENDWHILE = 319, - T_FOR = 320, - T_ENDFOR = 321, - T_FOREACH = 322, - T_ENDFOREACH = 323, - T_DECLARE = 324, - T_ENDDECLARE = 325, - T_AS = 326, - T_SWITCH = 327, - T_ENDSWITCH = 328, - T_CASE = 329, - T_DEFAULT = 330, - T_BREAK = 331, - T_CONTINUE = 332, - T_GOTO = 333, - T_FUNCTION = 334, - T_CONST = 335, - T_RETURN = 336, - T_TRY = 337, - T_CATCH = 338, - T_THROW = 339, - T_USE = 340, - T_INSTEADOF = 341, - T_GLOBAL = 342, - T_PUBLIC = 343, - T_PROTECTED = 344, - T_PRIVATE = 345, - T_FINAL = 346, - T_ABSTRACT = 347, - T_STATIC = 348, - T_VAR = 349, - T_UNSET = 350, - T_ISSET = 351, - T_EMPTY = 352, - T_HALT_COMPILER = 353, - T_CLASS = 354, - T_TRAIT = 355, - T_INTERFACE = 356, - T_EXTENDS = 357, - T_IMPLEMENTS = 358, - T_OBJECT_OPERATOR = 359, - T_DOUBLE_ARROW = 360, - T_LIST = 361, - T_ARRAY = 362, - T_CALLABLE = 363, - T_CLASS_C = 364, - T_TRAIT_C = 365, - T_METHOD_C = 366, - T_FUNC_C = 367, - T_LINE = 368, - T_FILE = 369, - T_COMMENT = 370, - T_DOC_COMMENT = 371, - T_OPEN_TAG = 372, - T_OPEN_TAG_WITH_ECHO = 373, - T_CLOSE_TAG = 374, - T_WHITESPACE = 375, - T_START_HEREDOC = 376, - T_END_HEREDOC = 377, - T_DOLLAR_OPEN_CURLY_BRACES = 378, - T_CURLY_OPEN = 379, - T_PAAMAYIM_NEKUDOTAYIM = 380, - T_NAMESPACE = 381, - T_NS_C = 382, - T_DIR = 383, - T_NS_SEPARATOR = 384 + T_YIELD = 267, + T_SR_EQUAL = 268, + T_SL_EQUAL = 269, + T_XOR_EQUAL = 270, + T_OR_EQUAL = 271, + T_AND_EQUAL = 272, + T_MOD_EQUAL = 273, + T_CONCAT_EQUAL = 274, + T_DIV_EQUAL = 275, + T_MUL_EQUAL = 276, + T_MINUS_EQUAL = 277, + T_PLUS_EQUAL = 278, + T_BOOLEAN_OR = 279, + T_BOOLEAN_AND = 280, + T_IS_NOT_IDENTICAL = 281, + T_IS_IDENTICAL = 282, + T_IS_NOT_EQUAL = 283, + T_IS_EQUAL = 284, + T_IS_GREATER_OR_EQUAL = 285, + T_IS_SMALLER_OR_EQUAL = 286, + T_SR = 287, + T_SL = 288, + T_INSTANCEOF = 289, + T_UNSET_CAST = 290, + T_BOOL_CAST = 291, + T_OBJECT_CAST = 292, + T_ARRAY_CAST = 293, + T_STRING_CAST = 294, + T_DOUBLE_CAST = 295, + T_INT_CAST = 296, + T_DEC = 297, + T_INC = 298, + T_CLONE = 299, + T_NEW = 300, + T_EXIT = 301, + T_IF = 302, + T_ELSEIF = 303, + T_ELSE = 304, + T_ENDIF = 305, + T_LNUMBER = 306, + T_DNUMBER = 307, + T_STRING = 308, + T_STRING_VARNAME = 309, + T_VARIABLE = 310, + T_NUM_STRING = 311, + T_INLINE_HTML = 312, + T_CHARACTER = 313, + T_BAD_CHARACTER = 314, + T_ENCAPSED_AND_WHITESPACE = 315, + T_CONSTANT_ENCAPSED_STRING = 316, + T_ECHO = 317, + T_DO = 318, + T_WHILE = 319, + T_ENDWHILE = 320, + T_FOR = 321, + T_ENDFOR = 322, + T_FOREACH = 323, + T_ENDFOREACH = 324, + T_DECLARE = 325, + T_ENDDECLARE = 326, + T_AS = 327, + T_SWITCH = 328, + T_ENDSWITCH = 329, + T_CASE = 330, + T_DEFAULT = 331, + T_BREAK = 332, + T_CONTINUE = 333, + T_GOTO = 334, + T_FUNCTION = 335, + T_CONST = 336, + T_RETURN = 337, + T_TRY = 338, + T_CATCH = 339, + T_FINALLY = 340, + T_THROW = 341, + T_USE = 342, + T_INSTEADOF = 343, + T_GLOBAL = 344, + T_PUBLIC = 345, + T_PROTECTED = 346, + T_PRIVATE = 347, + T_FINAL = 348, + T_ABSTRACT = 349, + T_STATIC = 350, + T_VAR = 351, + T_UNSET = 352, + T_ISSET = 353, + T_EMPTY = 354, + T_HALT_COMPILER = 355, + T_CLASS = 356, + T_TRAIT = 357, + T_INTERFACE = 358, + T_EXTENDS = 359, + T_IMPLEMENTS = 360, + T_OBJECT_OPERATOR = 361, + T_DOUBLE_ARROW = 362, + T_LIST = 363, + T_ARRAY = 364, + T_CALLABLE = 365, + T_CLASS_C = 366, + T_TRAIT_C = 367, + T_METHOD_C = 368, + T_FUNC_C = 369, + T_LINE = 370, + T_FILE = 371, + T_COMMENT = 372, + T_DOC_COMMENT = 373, + T_OPEN_TAG = 374, + T_OPEN_TAG_WITH_ECHO = 375, + T_CLOSE_TAG = 376, + T_WHITESPACE = 377, + T_START_HEREDOC = 378, + T_END_HEREDOC = 379, + T_DOLLAR_OPEN_CURLY_BRACES = 380, + T_CURLY_OPEN = 381, + T_PAAMAYIM_NEKUDOTAYIM = 382, + T_NAMESPACE = 383, + T_NS_C = 384, + T_DIR = 385, + T_NS_SEPARATOR = 386 }; #endif /* Tokens. */ @@ -180,134 +180,137 @@ #define T_LOGICAL_XOR 264 #define T_LOGICAL_AND 265 #define T_PRINT 266 -#define T_SR_EQUAL 267 -#define T_SL_EQUAL 268 -#define T_XOR_EQUAL 269 -#define T_OR_EQUAL 270 -#define T_AND_EQUAL 271 -#define T_MOD_EQUAL 272 -#define T_CONCAT_EQUAL 273 -#define T_DIV_EQUAL 274 -#define T_MUL_EQUAL 275 -#define T_MINUS_EQUAL 276 -#define T_PLUS_EQUAL 277 -#define T_BOOLEAN_OR 278 -#define T_BOOLEAN_AND 279 -#define T_IS_NOT_IDENTICAL 280 -#define T_IS_IDENTICAL 281 -#define T_IS_NOT_EQUAL 282 -#define T_IS_EQUAL 283 -#define T_IS_GREATER_OR_EQUAL 284 -#define T_IS_SMALLER_OR_EQUAL 285 -#define T_SR 286 -#define T_SL 287 -#define T_INSTANCEOF 288 -#define T_UNSET_CAST 289 -#define T_BOOL_CAST 290 -#define T_OBJECT_CAST 291 -#define T_ARRAY_CAST 292 -#define T_STRING_CAST 293 -#define T_DOUBLE_CAST 294 -#define T_INT_CAST 295 -#define T_DEC 296 -#define T_INC 297 -#define T_CLONE 298 -#define T_NEW 299 -#define T_EXIT 300 -#define T_IF 301 -#define T_ELSEIF 302 -#define T_ELSE 303 -#define T_ENDIF 304 -#define T_LNUMBER 305 -#define T_DNUMBER 306 -#define T_STRING 307 -#define T_STRING_VARNAME 308 -#define T_VARIABLE 309 -#define T_NUM_STRING 310 -#define T_INLINE_HTML 311 -#define T_CHARACTER 312 -#define T_BAD_CHARACTER 313 -#define T_ENCAPSED_AND_WHITESPACE 314 -#define T_CONSTANT_ENCAPSED_STRING 315 -#define T_ECHO 316 -#define T_DO 317 -#define T_WHILE 318 -#define T_ENDWHILE 319 -#define T_FOR 320 -#define T_ENDFOR 321 -#define T_FOREACH 322 -#define T_ENDFOREACH 323 -#define T_DECLARE 324 -#define T_ENDDECLARE 325 -#define T_AS 326 -#define T_SWITCH 327 -#define T_ENDSWITCH 328 -#define T_CASE 329 -#define T_DEFAULT 330 -#define T_BREAK 331 -#define T_CONTINUE 332 -#define T_GOTO 333 -#define T_FUNCTION 334 -#define T_CONST 335 -#define T_RETURN 336 -#define T_TRY 337 -#define T_CATCH 338 -#define T_THROW 339 -#define T_USE 340 -#define T_INSTEADOF 341 -#define T_GLOBAL 342 -#define T_PUBLIC 343 -#define T_PROTECTED 344 -#define T_PRIVATE 345 -#define T_FINAL 346 -#define T_ABSTRACT 347 -#define T_STATIC 348 -#define T_VAR 349 -#define T_UNSET 350 -#define T_ISSET 351 -#define T_EMPTY 352 -#define T_HALT_COMPILER 353 -#define T_CLASS 354 -#define T_TRAIT 355 -#define T_INTERFACE 356 -#define T_EXTENDS 357 -#define T_IMPLEMENTS 358 -#define T_OBJECT_OPERATOR 359 -#define T_DOUBLE_ARROW 360 -#define T_LIST 361 -#define T_ARRAY 362 -#define T_CALLABLE 363 -#define T_CLASS_C 364 -#define T_TRAIT_C 365 -#define T_METHOD_C 366 -#define T_FUNC_C 367 -#define T_LINE 368 -#define T_FILE 369 -#define T_COMMENT 370 -#define T_DOC_COMMENT 371 -#define T_OPEN_TAG 372 -#define T_OPEN_TAG_WITH_ECHO 373 -#define T_CLOSE_TAG 374 -#define T_WHITESPACE 375 -#define T_START_HEREDOC 376 -#define T_END_HEREDOC 377 -#define T_DOLLAR_OPEN_CURLY_BRACES 378 -#define T_CURLY_OPEN 379 -#define T_PAAMAYIM_NEKUDOTAYIM 380 -#define T_NAMESPACE 381 -#define T_NS_C 382 -#define T_DIR 383 -#define T_NS_SEPARATOR 384 +#define T_YIELD 267 +#define T_SR_EQUAL 268 +#define T_SL_EQUAL 269 +#define T_XOR_EQUAL 270 +#define T_OR_EQUAL 271 +#define T_AND_EQUAL 272 +#define T_MOD_EQUAL 273 +#define T_CONCAT_EQUAL 274 +#define T_DIV_EQUAL 275 +#define T_MUL_EQUAL 276 +#define T_MINUS_EQUAL 277 +#define T_PLUS_EQUAL 278 +#define T_BOOLEAN_OR 279 +#define T_BOOLEAN_AND 280 +#define T_IS_NOT_IDENTICAL 281 +#define T_IS_IDENTICAL 282 +#define T_IS_NOT_EQUAL 283 +#define T_IS_EQUAL 284 +#define T_IS_GREATER_OR_EQUAL 285 +#define T_IS_SMALLER_OR_EQUAL 286 +#define T_SR 287 +#define T_SL 288 +#define T_INSTANCEOF 289 +#define T_UNSET_CAST 290 +#define T_BOOL_CAST 291 +#define T_OBJECT_CAST 292 +#define T_ARRAY_CAST 293 +#define T_STRING_CAST 294 +#define T_DOUBLE_CAST 295 +#define T_INT_CAST 296 +#define T_DEC 297 +#define T_INC 298 +#define T_CLONE 299 +#define T_NEW 300 +#define T_EXIT 301 +#define T_IF 302 +#define T_ELSEIF 303 +#define T_ELSE 304 +#define T_ENDIF 305 +#define T_LNUMBER 306 +#define T_DNUMBER 307 +#define T_STRING 308 +#define T_STRING_VARNAME 309 +#define T_VARIABLE 310 +#define T_NUM_STRING 311 +#define T_INLINE_HTML 312 +#define T_CHARACTER 313 +#define T_BAD_CHARACTER 314 +#define T_ENCAPSED_AND_WHITESPACE 315 +#define T_CONSTANT_ENCAPSED_STRING 316 +#define T_ECHO 317 +#define T_DO 318 +#define T_WHILE 319 +#define T_ENDWHILE 320 +#define T_FOR 321 +#define T_ENDFOR 322 +#define T_FOREACH 323 +#define T_ENDFOREACH 324 +#define T_DECLARE 325 +#define T_ENDDECLARE 326 +#define T_AS 327 +#define T_SWITCH 328 +#define T_ENDSWITCH 329 +#define T_CASE 330 +#define T_DEFAULT 331 +#define T_BREAK 332 +#define T_CONTINUE 333 +#define T_GOTO 334 +#define T_FUNCTION 335 +#define T_CONST 336 +#define T_RETURN 337 +#define T_TRY 338 +#define T_CATCH 339 +#define T_FINALLY 340 +#define T_THROW 341 +#define T_USE 342 +#define T_INSTEADOF 343 +#define T_GLOBAL 344 +#define T_PUBLIC 345 +#define T_PROTECTED 346 +#define T_PRIVATE 347 +#define T_FINAL 348 +#define T_ABSTRACT 349 +#define T_STATIC 350 +#define T_VAR 351 +#define T_UNSET 352 +#define T_ISSET 353 +#define T_EMPTY 354 +#define T_HALT_COMPILER 355 +#define T_CLASS 356 +#define T_TRAIT 357 +#define T_INTERFACE 358 +#define T_EXTENDS 359 +#define T_IMPLEMENTS 360 +#define T_OBJECT_OPERATOR 361 +#define T_DOUBLE_ARROW 362 +#define T_LIST 363 +#define T_ARRAY 364 +#define T_CALLABLE 365 +#define T_CLASS_C 366 +#define T_TRAIT_C 367 +#define T_METHOD_C 368 +#define T_FUNC_C 369 +#define T_LINE 370 +#define T_FILE 371 +#define T_COMMENT 372 +#define T_DOC_COMMENT 373 +#define T_OPEN_TAG 374 +#define T_OPEN_TAG_WITH_ECHO 375 +#define T_CLOSE_TAG 376 +#define T_WHITESPACE 377 +#define T_START_HEREDOC 378 +#define T_END_HEREDOC 379 +#define T_DOLLAR_OPEN_CURLY_BRACES 380 +#define T_CURLY_OPEN 381 +#define T_PAAMAYIM_NEKUDOTAYIM 382 +#define T_NAMESPACE 383 +#define T_NS_C 384 +#define T_DIR 385 +#define T_NS_SEPARATOR 386 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif + diff --git a/Zend/zend_language_parser.output b/Zend/zend_language_parser.output index a67c1a458..bac71177e 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 @@ -10,8 +10,8 @@ Terminals which are not used "whitespace (T_WHITESPACE)" -State 216 conflicts: 1 shift/reduce -State 776 conflicts: 2 shift/reduce +State 228 conflicts: 1 shift/reduce +State 669 conflicts: 2 shift/reduce Grammar @@ -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)" '(' 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)" '(' 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 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 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)" '(' 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)" ';' @@ -112,1289 +112,1350 @@ Grammar 58 | "return (T_RETURN)" ';' 59 | "return (T_RETURN)" expr_without_variable ';' 60 | "return (T_RETURN)" variable ';' - 61 | "global (T_GLOBAL)" global_var_list ';' - 62 | "static (T_STATIC)" static_var_list ';' - 63 | "echo (T_ECHO)" echo_expr_list ';' - 64 | T_INLINE_HTML - 65 | expr ';' - 66 | "unset (T_UNSET)" '(' unset_variables ')' ';' + 61 | yield_expr ';' + 62 | "global (T_GLOBAL)" global_var_list ';' + 63 | "static (T_STATIC)" static_var_list ';' + 64 | "echo (T_ECHO)" echo_expr_list ';' + 65 | T_INLINE_HTML + 66 | expr ';' + 67 | "unset (T_UNSET)" '(' unset_variables ')' ';' - 67 @17: /* empty */ + 68 $@17: /* empty */ - 68 @18: /* empty */ + 69 $@18: /* empty */ - 69 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 - 70 @19: /* empty */ + 71 $@19: /* empty */ - 71 @20: /* empty */ + 72 $@20: /* empty */ - 72 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 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 - 73 @21: /* empty */ + 74 $@21: /* empty */ - 74 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list ')' declare_statement - 75 | ';' + 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list ')' declare_statement + 76 | ';' - 76 @22: /* empty */ + 77 $@22: /* empty */ - 77 @23: /* empty */ + 78 $@23: /* empty */ - 78 @24: /* empty */ + 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)" ';' - 79 @25: /* empty */ + 82 catch_statement: /* empty */ - 80 @26: /* empty */ + 83 $@24: /* empty */ - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches - 82 | "throw (T_THROW)" expr ';' - 83 | "goto (T_GOTO)" "identifier (T_STRING)" ';' + 84 $@25: /* empty */ - 84 additional_catches: non_empty_additional_catches - 85 | /* empty */ + 85 $@26: /* empty */ - 86 non_empty_additional_catches: additional_catch - 87 | non_empty_additional_catches additional_catch + 86 $@27: /* empty */ - 88 @27: /* empty */ + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches - 89 @28: /* empty */ + 88 finally_statement: /* empty */ - 90 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @27 "variable (T_VARIABLE)" ')' @28 '{' inner_statement_list '}' + 89 $@28: /* empty */ - 91 unset_variables: unset_variable - 92 | unset_variables ',' unset_variable + 90 finally_statement: "finally (T_FINALLY)" $@28 '{' inner_statement_list '}' - 93 unset_variable: variable + 91 additional_catches: non_empty_additional_catches + 92 | /* empty */ - 94 function_declaration_statement: unticked_function_declaration_statement + 93 non_empty_additional_catches: additional_catch + 94 | non_empty_additional_catches additional_catch - 95 class_declaration_statement: unticked_class_declaration_statement + 95 @29: /* empty */ - 96 is_reference: /* empty */ - 97 | '&' + 96 $@30: /* empty */ - 98 @29: /* empty */ + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}' - 99 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @29 '(' parameter_list ')' '{' inner_statement_list '}' + 98 unset_variables: unset_variable + 99 | unset_variables ',' unset_variable - 100 @30: /* empty */ + 100 unset_variable: variable - 101 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @30 implements_list '{' class_statement_list '}' + 101 function_declaration_statement: unticked_function_declaration_statement - 102 @31: /* empty */ + 102 class_declaration_statement: unticked_class_declaration_statement - 103 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @31 interface_extends_list '{' class_statement_list '}' + 103 is_reference: /* empty */ + 104 | '&' - 104 class_entry_type: "class (T_CLASS)" - 105 | "abstract (T_ABSTRACT)" "class (T_CLASS)" - 106 | "trait (T_TRAIT)" - 107 | "final (T_FINAL)" "class (T_CLASS)" + 105 $@31: /* empty */ - 108 extends_from: /* empty */ - 109 | "extends (T_EXTENDS)" fully_qualified_class_name + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list '}' - 110 interface_entry: "interface (T_INTERFACE)" + 107 $@32: /* empty */ - 111 interface_extends_list: /* empty */ - 112 | "extends (T_EXTENDS)" interface_list + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list '{' class_statement_list '}' - 113 implements_list: /* empty */ - 114 | "implements (T_IMPLEMENTS)" interface_list + 109 $@33: /* empty */ - 115 interface_list: fully_qualified_class_name - 116 | interface_list ',' fully_qualified_class_name + 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list '{' class_statement_list '}' - 117 foreach_optional_arg: /* empty */ - 118 | "=> (T_DOUBLE_ARROW)" foreach_variable + 111 class_entry_type: "class (T_CLASS)" + 112 | "abstract (T_ABSTRACT)" "class (T_CLASS)" + 113 | "trait (T_TRAIT)" + 114 | "final (T_FINAL)" "class (T_CLASS)" - 119 foreach_variable: variable - 120 | '&' variable + 115 extends_from: /* empty */ + 116 | "extends (T_EXTENDS)" fully_qualified_class_name - 121 for_statement: statement - 122 | ':' inner_statement_list "endfor (T_ENDFOR)" ';' + 117 interface_entry: "interface (T_INTERFACE)" - 123 foreach_statement: statement - 124 | ':' inner_statement_list "endforeach (T_ENDFOREACH)" ';' + 118 interface_extends_list: /* empty */ + 119 | "extends (T_EXTENDS)" interface_list - 125 declare_statement: statement - 126 | ':' inner_statement_list "enddeclare (T_ENDDECLARE)" ';' + 120 implements_list: /* empty */ + 121 | "implements (T_IMPLEMENTS)" interface_list - 127 declare_list: "identifier (T_STRING)" '=' static_scalar - 128 | declare_list ',' "identifier (T_STRING)" '=' static_scalar + 122 interface_list: fully_qualified_class_name + 123 | interface_list ',' fully_qualified_class_name - 129 switch_case_list: '{' case_list '}' - 130 | '{' ';' case_list '}' - 131 | ':' case_list "endswitch (T_ENDSWITCH)" ';' - 132 | ':' ';' case_list "endswitch (T_ENDSWITCH)" ';' + 124 foreach_optional_arg: /* empty */ + 125 | "=> (T_DOUBLE_ARROW)" foreach_variable - 133 case_list: /* empty */ + 126 foreach_variable: variable + 127 | '&' variable - 134 @32: /* empty */ + 128 $@34: /* empty */ - 135 case_list: case_list "case (T_CASE)" expr case_separator @32 inner_statement_list + 129 foreach_variable: "list (T_LIST)" '(' $@34 assignment_list ')' - 136 @33: /* empty */ + 130 for_statement: statement + 131 | ':' inner_statement_list "endfor (T_ENDFOR)" ';' - 137 case_list: case_list "default (T_DEFAULT)" case_separator @33 inner_statement_list + 132 foreach_statement: statement + 133 | ':' inner_statement_list "endforeach (T_ENDFOREACH)" ';' - 138 case_separator: ':' - 139 | ';' + 134 declare_statement: statement + 135 | ':' inner_statement_list "enddeclare (T_ENDDECLARE)" ';' - 140 while_statement: statement - 141 | ':' inner_statement_list "endwhile (T_ENDWHILE)" ';' + 136 declare_list: "identifier (T_STRING)" '=' static_scalar + 137 | declare_list ',' "identifier (T_STRING)" '=' static_scalar - 142 elseif_list: /* empty */ + 138 switch_case_list: '{' case_list '}' + 139 | '{' ';' case_list '}' + 140 | ':' case_list "endswitch (T_ENDSWITCH)" ';' + 141 | ':' ';' case_list "endswitch (T_ENDSWITCH)" ';' - 143 @34: /* empty */ + 142 case_list: /* empty */ - 144 elseif_list: elseif_list "elseif (T_ELSEIF)" '(' expr ')' @34 statement + 143 $@35: /* empty */ - 145 new_elseif_list: /* empty */ + 144 case_list: case_list "case (T_CASE)" expr case_separator $@35 inner_statement_list - 146 @35: /* empty */ + 145 $@36: /* empty */ - 147 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" '(' expr ')' ':' @35 inner_statement_list + 146 case_list: case_list "default (T_DEFAULT)" case_separator $@36 inner_statement_list - 148 else_single: /* empty */ - 149 | "else (T_ELSE)" statement + 147 case_separator: ':' + 148 | ';' - 150 new_else_single: /* empty */ - 151 | "else (T_ELSE)" ':' inner_statement_list + 149 while_statement: statement + 150 | ':' inner_statement_list "endwhile (T_ENDWHILE)" ';' - 152 parameter_list: non_empty_parameter_list - 153 | /* empty */ + 151 elseif_list: /* empty */ - 154 non_empty_parameter_list: optional_class_type "variable (T_VARIABLE)" - 155 | optional_class_type '&' "variable (T_VARIABLE)" - 156 | optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar - 157 | optional_class_type "variable (T_VARIABLE)" '=' static_scalar - 158 | non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" - 159 | non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" - 160 | non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar - 161 | non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" '=' static_scalar + 152 $@37: /* empty */ - 162 optional_class_type: /* empty */ - 163 | "array (T_ARRAY)" - 164 | "callable (T_CALLABLE)" - 165 | fully_qualified_class_name + 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr $@37 statement - 166 function_call_parameter_list: non_empty_function_call_parameter_list - 167 | /* empty */ + 154 new_elseif_list: /* empty */ - 168 non_empty_function_call_parameter_list: expr_without_variable - 169 | variable - 170 | '&' w_variable - 171 | non_empty_function_call_parameter_list ',' expr_without_variable - 172 | non_empty_function_call_parameter_list ',' variable - 173 | non_empty_function_call_parameter_list ',' '&' w_variable + 155 $@38: /* empty */ - 174 global_var_list: global_var_list ',' global_var - 175 | global_var + 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' $@38 inner_statement_list - 176 global_var: "variable (T_VARIABLE)" - 177 | '$' r_variable - 178 | '$' '{' expr '}' + 157 else_single: /* empty */ + 158 | "else (T_ELSE)" statement - 179 static_var_list: static_var_list ',' "variable (T_VARIABLE)" - 180 | static_var_list ',' "variable (T_VARIABLE)" '=' static_scalar - 181 | "variable (T_VARIABLE)" - 182 | "variable (T_VARIABLE)" '=' static_scalar + 159 new_else_single: /* empty */ + 160 | "else (T_ELSE)" ':' inner_statement_list - 183 class_statement_list: class_statement_list class_statement - 184 | /* empty */ + 161 parameter_list: non_empty_parameter_list + 162 | /* empty */ - 185 @36: /* empty */ + 163 non_empty_parameter_list: optional_class_type "variable (T_VARIABLE)" + 164 | optional_class_type '&' "variable (T_VARIABLE)" + 165 | optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar + 166 | optional_class_type "variable (T_VARIABLE)" '=' static_scalar + 167 | non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" + 168 | non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" + 169 | non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar + 170 | non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" '=' static_scalar - 186 class_statement: variable_modifiers @36 class_variable_declaration ';' - 187 | class_constant_declaration ';' - 188 | trait_use_statement + 171 optional_class_type: /* empty */ + 172 | "array (T_ARRAY)" + 173 | "callable (T_CALLABLE)" + 174 | fully_qualified_class_name - 189 @37: /* empty */ + 175 function_call_parameter_list: '(' ')' + 176 | '(' non_empty_function_call_parameter_list ')' + 177 | '(' yield_expr ')' - 190 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @37 '(' parameter_list ')' method_body + 178 non_empty_function_call_parameter_list: expr_without_variable + 179 | variable + 180 | '&' w_variable + 181 | non_empty_function_call_parameter_list ',' expr_without_variable + 182 | non_empty_function_call_parameter_list ',' variable + 183 | non_empty_function_call_parameter_list ',' '&' w_variable - 191 trait_use_statement: "use (T_USE)" trait_list trait_adaptations + 184 global_var_list: global_var_list ',' global_var + 185 | global_var - 192 trait_list: fully_qualified_class_name - 193 | trait_list ',' fully_qualified_class_name + 186 global_var: "variable (T_VARIABLE)" + 187 | '$' r_variable + 188 | '$' '{' expr '}' - 194 trait_adaptations: ';' - 195 | '{' trait_adaptation_list '}' + 189 static_var_list: static_var_list ',' "variable (T_VARIABLE)" + 190 | static_var_list ',' "variable (T_VARIABLE)" '=' static_scalar + 191 | "variable (T_VARIABLE)" + 192 | "variable (T_VARIABLE)" '=' static_scalar - 196 trait_adaptation_list: /* empty */ - 197 | non_empty_trait_adaptation_list + 193 class_statement_list: class_statement_list class_statement + 194 | /* empty */ - 198 non_empty_trait_adaptation_list: trait_adaptation_statement - 199 | non_empty_trait_adaptation_list trait_adaptation_statement + 195 $@39: /* empty */ - 200 trait_adaptation_statement: trait_precedence ';' - 201 | trait_alias ';' + 196 class_statement: variable_modifiers $@39 class_variable_declaration ';' + 197 | class_constant_declaration ';' + 198 | trait_use_statement - 202 trait_precedence: trait_method_reference_fully_qualified "insteadof (T_INSTEADOF)" trait_reference_list + 199 $@40: /* empty */ - 203 trait_reference_list: fully_qualified_class_name - 204 | trait_reference_list ',' fully_qualified_class_name + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body - 205 trait_method_reference: "identifier (T_STRING)" - 206 | trait_method_reference_fully_qualified + 201 trait_use_statement: "use (T_USE)" trait_list trait_adaptations - 207 trait_method_reference_fully_qualified: fully_qualified_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" + 202 trait_list: fully_qualified_class_name + 203 | trait_list ',' fully_qualified_class_name - 208 trait_alias: trait_method_reference "as (T_AS)" trait_modifiers "identifier (T_STRING)" - 209 | trait_method_reference "as (T_AS)" member_modifier + 204 trait_adaptations: ';' + 205 | '{' trait_adaptation_list '}' - 210 trait_modifiers: /* empty */ - 211 | member_modifier + 206 trait_adaptation_list: /* empty */ + 207 | non_empty_trait_adaptation_list - 212 method_body: ';' - 213 | '{' inner_statement_list '}' + 208 non_empty_trait_adaptation_list: trait_adaptation_statement + 209 | non_empty_trait_adaptation_list trait_adaptation_statement - 214 variable_modifiers: non_empty_member_modifiers - 215 | "var (T_VAR)" + 210 trait_adaptation_statement: trait_precedence ';' + 211 | trait_alias ';' - 216 method_modifiers: /* empty */ - 217 | non_empty_member_modifiers + 212 trait_precedence: trait_method_reference_fully_qualified "insteadof (T_INSTEADOF)" trait_reference_list - 218 non_empty_member_modifiers: member_modifier - 219 | non_empty_member_modifiers member_modifier + 213 trait_reference_list: fully_qualified_class_name + 214 | trait_reference_list ',' fully_qualified_class_name - 220 member_modifier: "public (T_PUBLIC)" - 221 | "protected (T_PROTECTED)" - 222 | "private (T_PRIVATE)" - 223 | "static (T_STATIC)" - 224 | "abstract (T_ABSTRACT)" - 225 | "final (T_FINAL)" + 215 trait_method_reference: "identifier (T_STRING)" + 216 | trait_method_reference_fully_qualified - 226 class_variable_declaration: class_variable_declaration ',' "variable (T_VARIABLE)" - 227 | class_variable_declaration ',' "variable (T_VARIABLE)" '=' static_scalar - 228 | "variable (T_VARIABLE)" - 229 | "variable (T_VARIABLE)" '=' static_scalar + 217 trait_method_reference_fully_qualified: fully_qualified_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" - 230 class_constant_declaration: class_constant_declaration ',' "identifier (T_STRING)" '=' static_scalar - 231 | "const (T_CONST)" "identifier (T_STRING)" '=' static_scalar + 218 trait_alias: trait_method_reference "as (T_AS)" trait_modifiers "identifier (T_STRING)" + 219 | trait_method_reference "as (T_AS)" member_modifier - 232 echo_expr_list: echo_expr_list ',' expr - 233 | expr + 220 trait_modifiers: /* empty */ + 221 | member_modifier - 234 for_expr: /* empty */ - 235 | non_empty_for_expr + 222 method_body: ';' + 223 | '{' inner_statement_list '}' - 236 @38: /* empty */ + 224 variable_modifiers: non_empty_member_modifiers + 225 | "var (T_VAR)" - 237 non_empty_for_expr: non_empty_for_expr ',' @38 expr - 238 | expr + 226 method_modifiers: /* empty */ + 227 | non_empty_member_modifiers - 239 chaining_method_or_property: chaining_method_or_property variable_property - 240 | variable_property + 228 non_empty_member_modifiers: member_modifier + 229 | non_empty_member_modifiers member_modifier - 241 chaining_dereference: chaining_dereference '[' dim_offset ']' - 242 | '[' dim_offset ']' + 230 member_modifier: "public (T_PUBLIC)" + 231 | "protected (T_PROTECTED)" + 232 | "private (T_PRIVATE)" + 233 | "static (T_STATIC)" + 234 | "abstract (T_ABSTRACT)" + 235 | "final (T_FINAL)" - 243 @39: /* empty */ + 236 class_variable_declaration: class_variable_declaration ',' "variable (T_VARIABLE)" + 237 | class_variable_declaration ',' "variable (T_VARIABLE)" '=' static_scalar + 238 | "variable (T_VARIABLE)" + 239 | "variable (T_VARIABLE)" '=' static_scalar - 244 chaining_instance_call: chaining_dereference @39 chaining_method_or_property - 245 | chaining_dereference - 246 | chaining_method_or_property + 240 class_constant_declaration: class_constant_declaration ',' "identifier (T_STRING)" '=' static_scalar + 241 | "const (T_CONST)" "identifier (T_STRING)" '=' static_scalar - 247 instance_call: /* empty */ + 242 echo_expr_list: echo_expr_list ',' expr + 243 | expr - 248 @40: /* empty */ + 244 for_expr: /* empty */ + 245 | non_empty_for_expr - 249 instance_call: @40 chaining_instance_call + 246 $@41: /* empty */ - 250 @41: /* empty */ + 247 non_empty_for_expr: non_empty_for_expr ',' $@41 expr + 248 | expr - 251 new_expr: "new (T_NEW)" class_name_reference @41 ctor_arguments + 249 chaining_method_or_property: chaining_method_or_property variable_property + 250 | variable_property - 252 @42: /* empty */ + 251 chaining_dereference: chaining_dereference '[' dim_offset ']' + 252 | '[' dim_offset ']' - 253 expr_without_variable: "list (T_LIST)" '(' @42 assignment_list ')' '=' expr - 254 | variable '=' expr - 255 | variable '=' '&' variable + 253 $@42: /* empty */ - 256 @43: /* empty */ + 254 chaining_instance_call: chaining_dereference $@42 chaining_method_or_property + 255 | chaining_dereference + 256 | chaining_method_or_property - 257 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference @43 ctor_arguments - 258 | "clone (T_CLONE)" expr - 259 | variable "+= (T_PLUS_EQUAL)" expr - 260 | variable "-= (T_MINUS_EQUAL)" expr - 261 | variable "*= (T_MUL_EQUAL)" expr - 262 | variable "/= (T_DIV_EQUAL)" expr - 263 | variable ".= (T_CONCAT_EQUAL)" expr - 264 | variable "%= (T_MOD_EQUAL)" expr - 265 | variable "&= (T_AND_EQUAL)" expr - 266 | variable "|= (T_OR_EQUAL)" expr - 267 | variable "^= (T_XOR_EQUAL)" expr - 268 | variable "<<= (T_SL_EQUAL)" expr - 269 | variable ">>= (T_SR_EQUAL)" expr - 270 | rw_variable "++ (T_INC)" - 271 | "++ (T_INC)" rw_variable - 272 | rw_variable "-- (T_DEC)" - 273 | "-- (T_DEC)" rw_variable + 257 instance_call: /* empty */ - 274 @44: /* empty */ + 258 $@43: /* empty */ - 275 expr_without_variable: expr "|| (T_BOOLEAN_OR)" @44 expr + 259 instance_call: $@43 chaining_instance_call - 276 @45: /* empty */ + 260 $@44: /* empty */ - 277 expr_without_variable: expr "&& (T_BOOLEAN_AND)" @45 expr + 261 new_expr: "new (T_NEW)" class_name_reference $@44 ctor_arguments - 278 @46: /* empty */ + 262 $@45: /* empty */ - 279 expr_without_variable: expr "or (T_LOGICAL_OR)" @46 expr + 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list ')' '=' expr + 264 | variable '=' expr + 265 | variable '=' '&' variable - 280 @47: /* empty */ + 266 $@46: /* empty */ - 281 expr_without_variable: expr "and (T_LOGICAL_AND)" @47 expr - 282 | expr "xor (T_LOGICAL_XOR)" expr - 283 | expr '|' expr - 284 | expr '&' expr - 285 | expr '^' expr - 286 | expr '.' expr - 287 | expr '+' expr - 288 | expr '-' expr - 289 | expr '*' expr - 290 | expr '/' expr - 291 | expr '%' expr - 292 | expr "<< (T_SL)" expr - 293 | expr ">> (T_SR)" expr - 294 | '+' expr - 295 | '-' expr - 296 | '!' expr - 297 | '~' expr - 298 | expr "=== (T_IS_IDENTICAL)" expr - 299 | expr "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr "== (T_IS_EQUAL)" expr - 301 | expr "!= (T_IS_NOT_EQUAL)" expr - 302 | expr '<' expr - 303 | expr "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr '>' expr - 305 | expr ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr "instanceof (T_INSTANCEOF)" class_name_reference - 307 | '(' expr ')' - 308 | new_expr + 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 + 271 | variable "*= (T_MUL_EQUAL)" expr + 272 | variable "/= (T_DIV_EQUAL)" expr + 273 | variable ".= (T_CONCAT_EQUAL)" expr + 274 | variable "%= (T_MOD_EQUAL)" expr + 275 | variable "&= (T_AND_EQUAL)" expr + 276 | variable "|= (T_OR_EQUAL)" expr + 277 | variable "^= (T_XOR_EQUAL)" expr + 278 | variable "<<= (T_SL_EQUAL)" expr + 279 | variable ">>= (T_SR_EQUAL)" expr + 280 | rw_variable "++ (T_INC)" + 281 | "++ (T_INC)" rw_variable + 282 | rw_variable "-- (T_DEC)" + 283 | "-- (T_DEC)" rw_variable - 309 @48: /* empty */ + 284 $@47: /* empty */ - 310 expr_without_variable: '(' new_expr ')' @48 instance_call + 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" $@47 expr - 311 @49: /* empty */ + 286 $@48: /* empty */ - 312 @50: /* empty */ + 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" $@48 expr - 313 expr_without_variable: expr '?' @49 expr ':' @50 expr + 288 $@49: /* empty */ - 314 @51: /* empty */ + 289 expr_without_variable: expr "or (T_LOGICAL_OR)" $@49 expr - 315 expr_without_variable: expr '?' ':' @51 expr - 316 | internal_functions_in_yacc - 317 | "(int) (T_INT_CAST)" expr - 318 | "(double) (T_DOUBLE_CAST)" expr - 319 | "(string) (T_STRING_CAST)" expr - 320 | "(array) (T_ARRAY_CAST)" expr - 321 | "(object) (T_OBJECT_CAST)" expr - 322 | "(bool) (T_BOOL_CAST)" expr - 323 | "(unset) (T_UNSET_CAST)" expr - 324 | "exit (T_EXIT)" exit_expr + 290 $@50: /* empty */ - 325 @52: /* empty */ + 291 expr_without_variable: expr "and (T_LOGICAL_AND)" $@50 expr + 292 | expr "xor (T_LOGICAL_XOR)" expr + 293 | expr '|' expr + 294 | expr '&' expr + 295 | expr '^' expr + 296 | expr '.' expr + 297 | expr '+' expr + 298 | expr '-' expr + 299 | expr '*' expr + 300 | expr '/' expr + 301 | expr '%' expr + 302 | expr "<< (T_SL)" expr + 303 | expr ">> (T_SR)" expr + 304 | '+' expr + 305 | '-' expr + 306 | '!' expr + 307 | '~' expr + 308 | expr "=== (T_IS_IDENTICAL)" expr + 309 | expr "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr "== (T_IS_EQUAL)" expr + 311 | expr "!= (T_IS_NOT_EQUAL)" expr + 312 | expr '<' expr + 313 | expr "<= (T_IS_SMALLER_OR_EQUAL)" expr + 314 | expr '>' expr + 315 | expr ">= (T_IS_GREATER_OR_EQUAL)" expr + 316 | expr "instanceof (T_INSTANCEOF)" class_name_reference + 317 | parenthesis_expr + 318 | new_expr - 326 expr_without_variable: '@' @52 expr - 327 | scalar - 328 | "array (T_ARRAY)" '(' array_pair_list ')' - 329 | '[' array_pair_list ']' - 330 | '`' backticks_expr '`' - 331 | "print (T_PRINT)" expr + 319 @51: /* empty */ - 332 @53: /* empty */ + 320 expr_without_variable: '(' new_expr ')' @51 instance_call - 333 expr_without_variable: function is_reference '(' @53 parameter_list ')' lexical_vars '{' inner_statement_list '}' + 321 $@52: /* empty */ - 334 @54: /* empty */ + 322 $@53: /* empty */ - 335 expr_without_variable: "static (T_STATIC)" function is_reference '(' @54 parameter_list ')' lexical_vars '{' inner_statement_list '}' + 323 expr_without_variable: expr '?' $@52 expr ':' $@53 expr - 336 function: "function (T_FUNCTION)" + 324 $@54: /* empty */ - 337 lexical_vars: /* empty */ - 338 | "use (T_USE)" '(' lexical_var_list ')' + 325 expr_without_variable: expr '?' ':' $@54 expr + 326 | internal_functions_in_yacc + 327 | "(int) (T_INT_CAST)" expr + 328 | "(double) (T_DOUBLE_CAST)" expr + 329 | "(string) (T_STRING_CAST)" expr + 330 | "(array) (T_ARRAY_CAST)" expr + 331 | "(object) (T_OBJECT_CAST)" expr + 332 | "(bool) (T_BOOL_CAST)" expr + 333 | "(unset) (T_UNSET_CAST)" expr + 334 | "exit (T_EXIT)" exit_expr - 339 lexical_var_list: lexical_var_list ',' "variable (T_VARIABLE)" - 340 | lexical_var_list ',' '&' "variable (T_VARIABLE)" - 341 | "variable (T_VARIABLE)" - 342 | '&' "variable (T_VARIABLE)" + 335 $@55: /* empty */ - 343 @55: /* empty */ + 336 expr_without_variable: '@' $@55 expr + 337 | scalar + 338 | combined_scalar_offset + 339 | combined_scalar + 340 | '`' backticks_expr '`' + 341 | "print (T_PRINT)" expr + 342 | "yield (T_YIELD)" - 344 function_call: namespace_name '(' @55 function_call_parameter_list ')' + 343 @56: /* empty */ - 345 @56: /* empty */ + 344 expr_without_variable: function is_reference @56 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' - 346 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name '(' @56 function_call_parameter_list ')' + 345 @57: /* empty */ - 347 @57: /* empty */ + 346 expr_without_variable: "static (T_STATIC)" function is_reference @57 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' - 348 function_call: "\\ (T_NS_SEPARATOR)" namespace_name '(' @57 function_call_parameter_list ')' + 347 yield_expr: "yield (T_YIELD)" expr_without_variable + 348 | "yield (T_YIELD)" variable + 349 | "yield (T_YIELD)" expr "=> (T_DOUBLE_ARROW)" expr_without_variable + 350 | "yield (T_YIELD)" expr "=> (T_DOUBLE_ARROW)" variable - 349 @58: /* empty */ + 351 combined_scalar_offset: combined_scalar '[' dim_offset ']' + 352 | combined_scalar_offset '[' dim_offset ']' + 353 | "quoted-string (T_CONSTANT_ENCAPSED_STRING)" '[' dim_offset ']' - 350 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @58 function_call_parameter_list ')' + 354 combined_scalar: "array (T_ARRAY)" '(' array_pair_list ')' + 355 | '[' array_pair_list ']' - 351 @59: /* empty */ + 356 function: "function (T_FUNCTION)" - 352 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @59 function_call_parameter_list ')' + 357 lexical_vars: /* empty */ + 358 | "use (T_USE)" '(' lexical_var_list ')' - 353 @60: /* empty */ + 359 lexical_var_list: lexical_var_list ',' "variable (T_VARIABLE)" + 360 | lexical_var_list ',' '&' "variable (T_VARIABLE)" + 361 | "variable (T_VARIABLE)" + 362 | '&' "variable (T_VARIABLE)" - 354 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @60 function_call_parameter_list ')' + 363 @58: /* empty */ - 355 @61: /* empty */ + 364 function_call: namespace_name @58 function_call_parameter_list - 356 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @61 function_call_parameter_list ')' + 365 @59: /* empty */ - 357 @62: /* empty */ + 366 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name @59 function_call_parameter_list - 358 function_call: variable_without_objects '(' @62 function_call_parameter_list ')' + 367 @60: /* empty */ - 359 class_name: "static (T_STATIC)" - 360 | namespace_name - 361 | "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name - 362 | "\\ (T_NS_SEPARATOR)" namespace_name + 368 function_call: "\\ (T_NS_SEPARATOR)" namespace_name @60 function_call_parameter_list - 363 fully_qualified_class_name: namespace_name - 364 | "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name - 365 | "\\ (T_NS_SEPARATOR)" namespace_name + 369 @61: /* empty */ - 366 class_name_reference: class_name - 367 | dynamic_class_name_reference + 370 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @61 function_call_parameter_list - 368 @63: /* empty */ + 371 $@62: /* empty */ - 369 @64: /* empty */ + 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 function_call_parameter_list - 370 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @63 object_property @64 dynamic_class_name_variable_properties - 371 | base_variable + 373 $@63: /* empty */ - 372 dynamic_class_name_variable_properties: dynamic_class_name_variable_properties dynamic_class_name_variable_property - 373 | /* empty */ + 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 function_call_parameter_list - 374 dynamic_class_name_variable_property: "-> (T_OBJECT_OPERATOR)" object_property + 375 $@64: /* empty */ - 375 exit_expr: /* empty */ - 376 | '(' ')' - 377 | '(' expr ')' + 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 function_call_parameter_list - 378 backticks_expr: /* empty */ - 379 | "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" - 380 | encaps_list + 377 $@65: /* empty */ - 381 ctor_arguments: /* empty */ - 382 | '(' function_call_parameter_list ')' + 378 function_call: variable_without_objects $@65 function_call_parameter_list - 383 common_scalar: "integer number (T_LNUMBER)" - 384 | "floating-point number (T_DNUMBER)" - 385 | "quoted-string (T_CONSTANT_ENCAPSED_STRING)" - 386 | "__LINE__ (T_LINE)" - 387 | "__FILE__ (T_FILE)" - 388 | "__DIR__ (T_DIR)" - 389 | "__TRAIT__ (T_TRAIT_C)" - 390 | "__METHOD__ (T_METHOD_C)" - 391 | "__FUNCTION__ (T_FUNC_C)" - 392 | "__NAMESPACE__ (T_NS_C)" - 393 | "heredoc start (T_START_HEREDOC)" "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" "heredoc end (T_END_HEREDOC)" - 394 | "heredoc start (T_START_HEREDOC)" "heredoc end (T_END_HEREDOC)" + 379 class_name: "static (T_STATIC)" + 380 | namespace_name + 381 | "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name + 382 | "\\ (T_NS_SEPARATOR)" namespace_name - 395 static_scalar: common_scalar - 396 | namespace_name - 397 | "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name - 398 | "\\ (T_NS_SEPARATOR)" namespace_name - 399 | '+' static_scalar - 400 | '-' static_scalar - 401 | "array (T_ARRAY)" '(' static_array_pair_list ')' - 402 | '[' static_array_pair_list ']' - 403 | static_class_constant - 404 | "__CLASS__ (T_CLASS_C)" + 383 fully_qualified_class_name: namespace_name + 384 | "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name + 385 | "\\ (T_NS_SEPARATOR)" namespace_name - 405 static_class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" + 386 class_name_reference: class_name + 387 | dynamic_class_name_reference - 406 scalar: "variable name (T_STRING_VARNAME)" - 407 | class_constant - 408 | namespace_name - 409 | "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name - 410 | "\\ (T_NS_SEPARATOR)" namespace_name - 411 | common_scalar - 412 | '"' encaps_list '"' - 413 | "heredoc start (T_START_HEREDOC)" encaps_list "heredoc end (T_END_HEREDOC)" - 414 | "__CLASS__ (T_CLASS_C)" + 388 $@66: /* empty */ - 415 static_array_pair_list: /* empty */ - 416 | non_empty_static_array_pair_list possible_comma + 389 $@67: /* empty */ - 417 possible_comma: /* empty */ - 418 | ',' + 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 object_property $@67 dynamic_class_name_variable_properties + 391 | base_variable - 419 non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' static_scalar "=> (T_DOUBLE_ARROW)" static_scalar - 420 | non_empty_static_array_pair_list ',' static_scalar - 421 | static_scalar "=> (T_DOUBLE_ARROW)" static_scalar - 422 | static_scalar + 392 dynamic_class_name_variable_properties: dynamic_class_name_variable_properties dynamic_class_name_variable_property + 393 | /* empty */ - 423 expr: r_variable - 424 | expr_without_variable + 394 dynamic_class_name_variable_property: "-> (T_OBJECT_OPERATOR)" object_property - 425 r_variable: variable + 395 exit_expr: /* empty */ + 396 | '(' ')' + 397 | parenthesis_expr - 426 w_variable: variable + 398 backticks_expr: /* empty */ + 399 | "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" + 400 | encaps_list - 427 rw_variable: variable + 401 ctor_arguments: /* empty */ + 402 | function_call_parameter_list - 428 @65: /* empty */ + 403 common_scalar: "integer number (T_LNUMBER)" + 404 | "floating-point number (T_DNUMBER)" + 405 | "quoted-string (T_CONSTANT_ENCAPSED_STRING)" + 406 | "__LINE__ (T_LINE)" + 407 | "__FILE__ (T_FILE)" + 408 | "__DIR__ (T_DIR)" + 409 | "__TRAIT__ (T_TRAIT_C)" + 410 | "__METHOD__ (T_METHOD_C)" + 411 | "__FUNCTION__ (T_FUNC_C)" + 412 | "__NAMESPACE__ (T_NS_C)" + 413 | "heredoc start (T_START_HEREDOC)" "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" "heredoc end (T_END_HEREDOC)" + 414 | "heredoc start (T_START_HEREDOC)" "heredoc end (T_END_HEREDOC)" - 429 @66: /* empty */ + 415 static_scalar: common_scalar + 416 | namespace_name + 417 | "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name + 418 | "\\ (T_NS_SEPARATOR)" namespace_name + 419 | '+' static_scalar + 420 | '-' static_scalar + 421 | "array (T_ARRAY)" '(' static_array_pair_list ')' + 422 | '[' static_array_pair_list ']' + 423 | static_class_constant + 424 | "__CLASS__ (T_CLASS_C)" - 430 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @65 object_property @66 method_or_not variable_properties - 431 | base_variable_with_function_calls + 425 static_class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" - 432 variable_properties: variable_properties variable_property - 433 | /* empty */ + 426 scalar: "variable name (T_STRING_VARNAME)" + 427 | class_constant + 428 | namespace_name + 429 | "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name + 430 | "\\ (T_NS_SEPARATOR)" namespace_name + 431 | common_scalar + 432 | '"' encaps_list '"' + 433 | "heredoc start (T_START_HEREDOC)" encaps_list "heredoc end (T_END_HEREDOC)" + 434 | "__CLASS__ (T_CLASS_C)" - 434 @67: /* empty */ + 435 static_array_pair_list: /* empty */ + 436 | non_empty_static_array_pair_list possible_comma - 435 variable_property: "-> (T_OBJECT_OPERATOR)" object_property @67 method_or_not + 437 possible_comma: /* empty */ + 438 | ',' - 436 array_method_dereference: array_method_dereference '[' dim_offset ']' - 437 | method '[' dim_offset ']' + 439 non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' static_scalar "=> (T_DOUBLE_ARROW)" static_scalar + 440 | non_empty_static_array_pair_list ',' static_scalar + 441 | static_scalar "=> (T_DOUBLE_ARROW)" static_scalar + 442 | static_scalar - 438 @68: /* empty */ + 443 expr: r_variable + 444 | expr_without_variable - 439 method: '(' @68 function_call_parameter_list ')' + 445 parenthesis_expr: '(' expr ')' + 446 | '(' yield_expr ')' - 440 method_or_not: method - 441 | array_method_dereference - 442 | /* empty */ + 447 r_variable: variable - 443 variable_without_objects: reference_variable - 444 | simple_indirect_reference reference_variable + 448 w_variable: variable - 445 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects - 446 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects + 449 rw_variable: variable - 447 variable_class_name: reference_variable + 450 $@68: /* empty */ - 448 array_function_dereference: array_function_dereference '[' dim_offset ']' + 451 $@69: /* empty */ - 449 @69: /* empty */ + 452 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not variable_properties + 453 | base_variable_with_function_calls - 450 array_function_dereference: function_call @69 '[' dim_offset ']' + 454 variable_properties: variable_properties variable_property + 455 | /* empty */ - 451 base_variable_with_function_calls: base_variable - 452 | array_function_dereference - 453 | function_call + 456 $@70: /* empty */ - 454 base_variable: reference_variable - 455 | simple_indirect_reference reference_variable - 456 | static_member + 457 variable_property: "-> (T_OBJECT_OPERATOR)" object_property $@70 method_or_not - 457 reference_variable: reference_variable '[' dim_offset ']' - 458 | reference_variable '{' expr '}' - 459 | compound_variable + 458 array_method_dereference: array_method_dereference '[' dim_offset ']' + 459 | method '[' dim_offset ']' - 460 compound_variable: "variable (T_VARIABLE)" - 461 | '$' '{' expr '}' + 460 @71: /* empty */ - 462 dim_offset: /* empty */ - 463 | expr + 461 method: @71 function_call_parameter_list - 464 object_property: object_dim_list + 462 method_or_not: method + 463 | array_method_dereference + 464 | /* empty */ - 465 @70: /* empty */ + 465 variable_without_objects: reference_variable + 466 | simple_indirect_reference reference_variable - 466 object_property: variable_without_objects @70 + 467 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects + 468 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects - 467 object_dim_list: object_dim_list '[' dim_offset ']' - 468 | object_dim_list '{' expr '}' - 469 | variable_name + 469 variable_class_name: reference_variable - 470 variable_name: "identifier (T_STRING)" - 471 | '{' expr '}' + 470 array_function_dereference: array_function_dereference '[' dim_offset ']' - 472 simple_indirect_reference: '$' - 473 | simple_indirect_reference '$' + 471 $@72: /* empty */ - 474 assignment_list: assignment_list ',' assignment_list_element - 475 | assignment_list_element + 472 array_function_dereference: function_call $@72 '[' dim_offset ']' - 476 assignment_list_element: variable + 473 base_variable_with_function_calls: base_variable + 474 | array_function_dereference + 475 | function_call - 477 @71: /* empty */ + 476 base_variable: reference_variable + 477 | simple_indirect_reference reference_variable + 478 | static_member - 478 assignment_list_element: "list (T_LIST)" '(' @71 assignment_list ')' - 479 | /* empty */ + 479 reference_variable: reference_variable '[' dim_offset ']' + 480 | reference_variable '{' expr '}' + 481 | compound_variable - 480 array_pair_list: /* empty */ - 481 | non_empty_array_pair_list possible_comma + 482 compound_variable: "variable (T_VARIABLE)" + 483 | '$' '{' expr '}' - 482 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" expr - 483 | non_empty_array_pair_list ',' expr - 484 | expr "=> (T_DOUBLE_ARROW)" expr - 485 | expr - 486 | non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" '&' w_variable - 487 | non_empty_array_pair_list ',' '&' w_variable - 488 | expr "=> (T_DOUBLE_ARROW)" '&' w_variable - 489 | '&' w_variable + 484 dim_offset: /* empty */ + 485 | expr - 490 encaps_list: encaps_list encaps_var - 491 | encaps_list "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" - 492 | encaps_var - 493 | "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" encaps_var + 486 object_property: object_dim_list - 494 encaps_var: "variable (T_VARIABLE)" + 487 $@73: /* empty */ - 495 @72: /* empty */ + 488 object_property: variable_without_objects $@73 - 496 encaps_var: "variable (T_VARIABLE)" '[' @72 encaps_var_offset ']' - 497 | "variable (T_VARIABLE)" "-> (T_OBJECT_OPERATOR)" "identifier (T_STRING)" - 498 | "${ (T_DOLLAR_OPEN_CURLY_BRACES)" expr '}' - 499 | "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr ']' '}' - 500 | "{$ (T_CURLY_OPEN)" variable '}' + 489 object_dim_list: object_dim_list '[' dim_offset ']' + 490 | object_dim_list '{' expr '}' + 491 | variable_name - 501 encaps_var_offset: "identifier (T_STRING)" - 502 | "number (T_NUM_STRING)" - 503 | "variable (T_VARIABLE)" + 492 variable_name: "identifier (T_STRING)" + 493 | '{' expr '}' - 504 internal_functions_in_yacc: "isset (T_ISSET)" '(' isset_variables ')' - 505 | "empty (T_EMPTY)" '(' variable ')' - 506 | "include (T_INCLUDE)" expr - 507 | "include_once (T_INCLUDE_ONCE)" expr - 508 | "eval (T_EVAL)" '(' expr ')' - 509 | "require (T_REQUIRE)" expr - 510 | "require_once (T_REQUIRE_ONCE)" expr + 494 simple_indirect_reference: '$' + 495 | simple_indirect_reference '$' - 511 isset_variables: variable + 496 assignment_list: assignment_list ',' assignment_list_element + 497 | assignment_list_element - 512 @73: /* empty */ + 498 assignment_list_element: variable - 513 isset_variables: isset_variables ',' @73 variable + 499 $@74: /* empty */ - 514 class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" - 515 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" + 500 assignment_list_element: "list (T_LIST)" '(' $@74 assignment_list ')' + 501 | /* empty */ + + 502 array_pair_list: /* empty */ + 503 | non_empty_array_pair_list possible_comma + + 504 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" expr + 505 | non_empty_array_pair_list ',' expr + 506 | expr "=> (T_DOUBLE_ARROW)" expr + 507 | expr + 508 | non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" '&' w_variable + 509 | non_empty_array_pair_list ',' '&' w_variable + 510 | expr "=> (T_DOUBLE_ARROW)" '&' w_variable + 511 | '&' w_variable + + 512 encaps_list: encaps_list encaps_var + 513 | encaps_list "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" + 514 | encaps_var + 515 | "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" encaps_var + + 516 encaps_var: "variable (T_VARIABLE)" + + 517 $@75: /* empty */ + + 518 encaps_var: "variable (T_VARIABLE)" '[' $@75 encaps_var_offset ']' + 519 | "variable (T_VARIABLE)" "-> (T_OBJECT_OPERATOR)" "identifier (T_STRING)" + 520 | "${ (T_DOLLAR_OPEN_CURLY_BRACES)" expr '}' + 521 | "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr ']' '}' + 522 | "{$ (T_CURLY_OPEN)" variable '}' + + 523 encaps_var_offset: "identifier (T_STRING)" + 524 | "number (T_NUM_STRING)" + 525 | "variable (T_VARIABLE)" + + 526 internal_functions_in_yacc: "isset (T_ISSET)" '(' isset_variables ')' + 527 | "empty (T_EMPTY)" '(' variable ')' + 528 | "empty (T_EMPTY)" '(' expr_without_variable ')' + 529 | "include (T_INCLUDE)" expr + 530 | "include_once (T_INCLUDE_ONCE)" expr + 531 | "eval (T_EVAL)" '(' expr ')' + 532 | "require (T_REQUIRE)" expr + 533 | "require_once (T_REQUIRE_ONCE)" expr + + 534 isset_variables: isset_variable + + 535 $@76: /* empty */ + + 536 isset_variables: isset_variables ',' $@76 isset_variable + + 537 isset_variable: variable + 538 | expr_without_variable + + 539 class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" + 540 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" Terminals, with rules where they appear "end of file" (0) 0 -'!' (33) 296 -'"' (34) 412 -'$' (36) 177 178 461 472 473 -'%' (37) 291 -'&' (38) 97 120 155 156 159 160 170 173 255 257 284 340 342 486 487 - 488 489 -'(' (40) 10 32 38 41 44 47 51 53 66 69 72 74 81 90 99 144 147 190 253 - 307 310 328 333 335 338 344 346 348 350 352 354 356 358 376 377 - 382 401 439 478 504 505 508 -')' (41) 10 32 38 41 44 47 51 53 66 69 72 74 81 90 99 144 147 190 253 - 307 310 328 333 335 338 344 346 348 350 352 354 356 358 376 377 - 382 401 439 478 504 505 508 -'*' (42) 289 -'+' (43) 287 294 399 -',' (44) 18 24 92 116 128 158 159 160 161 171 172 173 174 179 180 193 - 204 226 227 230 232 237 339 340 418 419 420 474 482 483 486 487 - 513 -'-' (45) 288 295 400 -'.' (46) 286 -'/' (47) 290 -':' (58) 34 41 122 124 126 131 132 138 141 147 151 313 315 -';' (59) 10 11 16 17 32 41 47 51 54 55 56 57 58 59 60 61 62 63 65 66 - 75 82 83 122 124 126 130 131 132 139 141 186 187 194 200 201 212 -'<' (60) 302 -'=' (61) 24 25 127 128 156 157 160 161 180 182 227 229 230 231 253 - 254 255 257 -'>' (62) 304 -'?' (63) 313 315 -'@' (64) 326 -'[' (91) 241 242 329 402 436 437 448 450 457 467 496 499 -']' (93) 241 242 329 402 436 437 448 450 457 467 496 499 -'^' (94) 285 -'`' (96) 330 -'{' (123) 13 15 35 81 90 99 101 103 129 130 178 195 213 333 335 458 - 461 468 471 -'|' (124) 283 -'}' (125) 13 15 35 81 90 99 101 103 129 130 178 195 213 333 335 458 - 461 468 471 498 499 500 -'~' (126) 297 +'!' (33) 306 +'"' (34) 432 +'$' (36) 187 188 483 494 495 +'%' (37) 301 +'&' (38) 104 127 164 165 168 169 180 183 265 267 294 360 362 508 509 + 510 511 +'(' (40) 10 32 51 67 70 73 75 87 97 106 129 175 176 177 200 263 320 + 344 346 354 358 396 421 445 446 500 526 527 528 531 +')' (41) 10 32 51 67 70 73 75 87 97 106 129 175 176 177 200 263 320 + 344 346 354 358 396 421 445 446 500 526 527 528 531 +'*' (42) 299 +'+' (43) 297 304 419 +',' (44) 18 24 99 123 137 167 168 169 170 181 182 183 184 189 190 203 + 214 236 237 240 242 247 359 360 438 439 440 496 504 505 508 509 + 536 +'-' (45) 298 305 420 +'.' (46) 296 +'/' (47) 300 +':' (58) 34 41 131 133 135 140 141 147 150 156 160 323 325 +';' (59) 10 11 16 17 32 41 47 51 54 55 56 57 58 59 60 61 62 63 64 66 + 67 76 80 81 131 133 135 139 140 141 148 150 196 197 204 210 211 + 222 +'<' (60) 312 +'=' (61) 24 25 136 137 165 166 169 170 190 192 237 239 240 241 263 + 264 265 267 +'>' (62) 314 +'?' (63) 323 325 +'@' (64) 336 +'[' (91) 251 252 351 352 353 355 422 458 459 470 472 479 489 518 521 +']' (93) 251 252 351 352 353 355 422 458 459 470 472 479 489 518 521 +'^' (94) 295 +'`' (96) 340 +'{' (123) 13 15 35 79 87 90 97 106 108 110 138 139 188 205 223 344 + 346 480 483 490 493 +'|' (124) 293 +'}' (125) 13 15 35 79 87 90 97 106 108 110 138 139 188 205 223 344 + 346 480 483 490 493 520 521 522 +'~' (126) 307 error (256) -"require_once (T_REQUIRE_ONCE)" (258) 510 -"require (T_REQUIRE)" (259) 509 -"eval (T_EVAL)" (260) 508 -"include_once (T_INCLUDE_ONCE)" (261) 507 -"include (T_INCLUDE)" (262) 506 -"or (T_LOGICAL_OR)" (263) 279 -"xor (T_LOGICAL_XOR)" (264) 282 -"and (T_LOGICAL_AND)" (265) 281 -"print (T_PRINT)" (266) 331 -">>= (T_SR_EQUAL)" (267) 269 -"<<= (T_SL_EQUAL)" (268) 268 -"^= (T_XOR_EQUAL)" (269) 267 -"|= (T_OR_EQUAL)" (270) 266 -"&= (T_AND_EQUAL)" (271) 265 -"%= (T_MOD_EQUAL)" (272) 264 -".= (T_CONCAT_EQUAL)" (273) 263 -"/= (T_DIV_EQUAL)" (274) 262 -"*= (T_MUL_EQUAL)" (275) 261 -"-= (T_MINUS_EQUAL)" (276) 260 -"+= (T_PLUS_EQUAL)" (277) 259 -"|| (T_BOOLEAN_OR)" (278) 275 -"&& (T_BOOLEAN_AND)" (279) 277 -"!== (T_IS_NOT_IDENTICAL)" (280) 299 -"=== (T_IS_IDENTICAL)" (281) 298 -"!= (T_IS_NOT_EQUAL)" (282) 301 -"== (T_IS_EQUAL)" (283) 300 -">= (T_IS_GREATER_OR_EQUAL)" (284) 305 -"<= (T_IS_SMALLER_OR_EQUAL)" (285) 303 -">> (T_SR)" (286) 293 -"<< (T_SL)" (287) 292 -"instanceof (T_INSTANCEOF)" (288) 306 -"(unset) (T_UNSET_CAST)" (289) 323 -"(bool) (T_BOOL_CAST)" (290) 322 -"(object) (T_OBJECT_CAST)" (291) 321 -"(array) (T_ARRAY_CAST)" (292) 320 -"(string) (T_STRING_CAST)" (293) 319 -"(double) (T_DOUBLE_CAST)" (294) 318 -"(int) (T_INT_CAST)" (295) 317 -"-- (T_DEC)" (296) 272 273 -"++ (T_INC)" (297) 270 271 -"clone (T_CLONE)" (298) 258 -"new (T_NEW)" (299) 251 257 -"exit (T_EXIT)" (300) 324 -"if (T_IF)" (301) 38 41 -"elseif (T_ELSEIF)" (302) 144 147 -"else (T_ELSE)" (303) 149 151 -"endif (T_ENDIF)" (304) 41 -"integer number (T_LNUMBER)" (305) 383 -"floating-point number (T_DNUMBER)" (306) 384 -"identifier (T_STRING)" (307) 5 6 21 23 24 25 34 83 99 101 103 127 - 128 190 205 207 208 230 231 405 470 497 501 514 515 -"variable name (T_STRING_VARNAME)" (308) 406 499 -"variable (T_VARIABLE)" (309) 81 90 154 155 156 157 158 159 160 161 - 176 179 180 181 182 226 227 228 229 339 340 341 342 460 494 496 - 497 503 -"number (T_NUM_STRING)" (310) 502 -T_INLINE_HTML (311) 64 -T_CHARACTER (312) -T_BAD_CHARACTER (313) -"quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" - (314) 379 393 491 493 -"quoted-string (T_CONSTANT_ENCAPSED_STRING)" (315) 385 -"echo (T_ECHO)" (316) 63 -"do (T_DO)" (317) 47 -"while (T_WHILE)" (318) 44 47 -"endwhile (T_ENDWHILE)" (319) 141 -"for (T_FOR)" (320) 51 -"endfor (T_ENDFOR)" (321) 122 -"foreach (T_FOREACH)" (322) 69 72 -"endforeach (T_ENDFOREACH)" (323) 124 -"declare (T_DECLARE)" (324) 74 -"enddeclare (T_ENDDECLARE)" (325) 126 -"as (T_AS)" (326) 21 23 69 72 208 209 -"switch (T_SWITCH)" (327) 53 -"endswitch (T_ENDSWITCH)" (328) 131 132 -"case (T_CASE)" (329) 135 -"default (T_DEFAULT)" (330) 137 -"break (T_BREAK)" (331) 54 55 -"continue (T_CONTINUE)" (332) 56 57 -"goto (T_GOTO)" (333) 83 -"function (T_FUNCTION)" (334) 336 -"const (T_CONST)" (335) 25 231 -"return (T_RETURN)" (336) 58 59 60 -"try (T_TRY)" (337) 81 -"catch (T_CATCH)" (338) 81 90 -"throw (T_THROW)" (339) 82 -"use (T_USE)" (340) 16 191 338 -"insteadof (T_INSTEADOF)" (341) 202 -"global (T_GLOBAL)" (342) 61 -"public (T_PUBLIC)" (343) 220 -"protected (T_PROTECTED)" (344) 221 -"private (T_PRIVATE)" (345) 222 -"final (T_FINAL)" (346) 107 225 -"abstract (T_ABSTRACT)" (347) 105 224 -"static (T_STATIC)" (348) 62 223 335 359 -"var (T_VAR)" (349) 215 -"unset (T_UNSET)" (350) 66 -"isset (T_ISSET)" (351) 504 -"empty (T_EMPTY)" (352) 505 -"__halt_compiler (T_HALT_COMPILER)" (353) 10 32 -"class (T_CLASS)" (354) 104 105 107 -"trait (T_TRAIT)" (355) 106 -"interface (T_INTERFACE)" (356) 110 -"extends (T_EXTENDS)" (357) 109 112 -"implements (T_IMPLEMENTS)" (358) 114 -"-> (T_OBJECT_OPERATOR)" (359) 370 374 430 435 497 -"=> (T_DOUBLE_ARROW)" (360) 118 419 421 482 484 486 488 -"list (T_LIST)" (361) 253 478 -"array (T_ARRAY)" (362) 163 328 401 -"callable (T_CALLABLE)" (363) 164 -"__CLASS__ (T_CLASS_C)" (364) 404 414 -"__TRAIT__ (T_TRAIT_C)" (365) 389 -"__METHOD__ (T_METHOD_C)" (366) 390 -"__FUNCTION__ (T_FUNC_C)" (367) 391 -"__LINE__ (T_LINE)" (368) 386 -"__FILE__ (T_FILE)" (369) 387 -"comment (T_COMMENT)" (370) -"doc comment (T_DOC_COMMENT)" (371) -"open tag (T_OPEN_TAG)" (372) -"open tag with echo (T_OPEN_TAG_WITH_ECHO)" (373) -"close tag (T_CLOSE_TAG)" (374) -"whitespace (T_WHITESPACE)" (375) -"heredoc start (T_START_HEREDOC)" (376) 393 394 413 -"heredoc end (T_END_HEREDOC)" (377) 393 394 413 -"${ (T_DOLLAR_OPEN_CURLY_BRACES)" (378) 498 499 -"{$ (T_CURLY_OPEN)" (379) 500 -":: (T_PAAMAYIM_NEKUDOTAYIM)" (380) 207 350 352 354 356 405 445 446 - 514 515 -"namespace (T_NAMESPACE)" (381) 11 13 15 346 361 364 397 409 -"__NAMESPACE__ (T_NS_C)" (382) 392 -"__DIR__ (T_DIR)" (383) 388 -"\\ (T_NS_SEPARATOR)" (384) 6 22 23 346 348 361 362 364 365 397 398 - 409 410 +"require_once (T_REQUIRE_ONCE)" (258) 533 +"require (T_REQUIRE)" (259) 532 +"eval (T_EVAL)" (260) 531 +"include_once (T_INCLUDE_ONCE)" (261) 530 +"include (T_INCLUDE)" (262) 529 +"or (T_LOGICAL_OR)" (263) 289 +"xor (T_LOGICAL_XOR)" (264) 292 +"and (T_LOGICAL_AND)" (265) 291 +"print (T_PRINT)" (266) 341 +"yield (T_YIELD)" (267) 342 347 348 349 350 +">>= (T_SR_EQUAL)" (268) 279 +"<<= (T_SL_EQUAL)" (269) 278 +"^= (T_XOR_EQUAL)" (270) 277 +"|= (T_OR_EQUAL)" (271) 276 +"&= (T_AND_EQUAL)" (272) 275 +"%= (T_MOD_EQUAL)" (273) 274 +".= (T_CONCAT_EQUAL)" (274) 273 +"/= (T_DIV_EQUAL)" (275) 272 +"*= (T_MUL_EQUAL)" (276) 271 +"-= (T_MINUS_EQUAL)" (277) 270 +"+= (T_PLUS_EQUAL)" (278) 269 +"|| (T_BOOLEAN_OR)" (279) 285 +"&& (T_BOOLEAN_AND)" (280) 287 +"!== (T_IS_NOT_IDENTICAL)" (281) 309 +"=== (T_IS_IDENTICAL)" (282) 308 +"!= (T_IS_NOT_EQUAL)" (283) 311 +"== (T_IS_EQUAL)" (284) 310 +">= (T_IS_GREATER_OR_EQUAL)" (285) 315 +"<= (T_IS_SMALLER_OR_EQUAL)" (286) 313 +">> (T_SR)" (287) 303 +"<< (T_SL)" (288) 302 +"instanceof (T_INSTANCEOF)" (289) 316 +"(unset) (T_UNSET_CAST)" (290) 333 +"(bool) (T_BOOL_CAST)" (291) 332 +"(object) (T_OBJECT_CAST)" (292) 331 +"(array) (T_ARRAY_CAST)" (293) 330 +"(string) (T_STRING_CAST)" (294) 329 +"(double) (T_DOUBLE_CAST)" (295) 328 +"(int) (T_INT_CAST)" (296) 327 +"-- (T_DEC)" (297) 282 283 +"++ (T_INC)" (298) 280 281 +"clone (T_CLONE)" (299) 268 +"new (T_NEW)" (300) 261 267 +"exit (T_EXIT)" (301) 334 +"if (T_IF)" (302) 38 41 +"elseif (T_ELSEIF)" (303) 153 156 +"else (T_ELSE)" (304) 158 160 +"endif (T_ENDIF)" (305) 41 +"integer number (T_LNUMBER)" (306) 403 +"floating-point number (T_DNUMBER)" (307) 404 +"identifier (T_STRING)" (308) 5 6 21 23 24 25 34 81 106 108 110 136 + 137 200 215 217 218 240 241 425 492 519 523 539 540 +"variable name (T_STRING_VARNAME)" (309) 426 521 +"variable (T_VARIABLE)" (310) 87 97 163 164 165 166 167 168 169 170 + 186 189 190 191 192 236 237 238 239 359 360 361 362 482 516 518 + 519 525 +"number (T_NUM_STRING)" (311) 524 +T_INLINE_HTML (312) 65 +T_CHARACTER (313) +T_BAD_CHARACTER (314) +"quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" (315) 399 + 413 513 515 +"quoted-string (T_CONSTANT_ENCAPSED_STRING)" (316) 353 405 +"echo (T_ECHO)" (317) 64 +"do (T_DO)" (318) 47 +"while (T_WHILE)" (319) 44 47 +"endwhile (T_ENDWHILE)" (320) 150 +"for (T_FOR)" (321) 51 +"endfor (T_ENDFOR)" (322) 131 +"foreach (T_FOREACH)" (323) 70 73 +"endforeach (T_ENDFOREACH)" (324) 133 +"declare (T_DECLARE)" (325) 75 +"enddeclare (T_ENDDECLARE)" (326) 135 +"as (T_AS)" (327) 21 23 70 73 218 219 +"switch (T_SWITCH)" (328) 53 +"endswitch (T_ENDSWITCH)" (329) 140 141 +"case (T_CASE)" (330) 144 +"default (T_DEFAULT)" (331) 146 +"break (T_BREAK)" (332) 54 55 +"continue (T_CONTINUE)" (333) 56 57 +"goto (T_GOTO)" (334) 81 +"function (T_FUNCTION)" (335) 356 +"const (T_CONST)" (336) 25 241 +"return (T_RETURN)" (337) 58 59 60 +"try (T_TRY)" (338) 79 +"catch (T_CATCH)" (339) 87 97 +"finally (T_FINALLY)" (340) 90 +"throw (T_THROW)" (341) 80 +"use (T_USE)" (342) 16 201 358 +"insteadof (T_INSTEADOF)" (343) 212 +"global (T_GLOBAL)" (344) 62 +"public (T_PUBLIC)" (345) 230 +"protected (T_PROTECTED)" (346) 231 +"private (T_PRIVATE)" (347) 232 +"final (T_FINAL)" (348) 114 235 +"abstract (T_ABSTRACT)" (349) 112 234 +"static (T_STATIC)" (350) 63 233 346 379 +"var (T_VAR)" (351) 225 +"unset (T_UNSET)" (352) 67 +"isset (T_ISSET)" (353) 526 +"empty (T_EMPTY)" (354) 527 528 +"__halt_compiler (T_HALT_COMPILER)" (355) 10 32 +"class (T_CLASS)" (356) 111 112 114 +"trait (T_TRAIT)" (357) 113 +"interface (T_INTERFACE)" (358) 117 +"extends (T_EXTENDS)" (359) 116 119 +"implements (T_IMPLEMENTS)" (360) 121 +"-> (T_OBJECT_OPERATOR)" (361) 390 394 452 457 519 +"=> (T_DOUBLE_ARROW)" (362) 125 349 350 439 441 504 506 508 510 +"list (T_LIST)" (363) 129 263 500 +"array (T_ARRAY)" (364) 172 354 421 +"callable (T_CALLABLE)" (365) 173 +"__CLASS__ (T_CLASS_C)" (366) 424 434 +"__TRAIT__ (T_TRAIT_C)" (367) 409 +"__METHOD__ (T_METHOD_C)" (368) 410 +"__FUNCTION__ (T_FUNC_C)" (369) 411 +"__LINE__ (T_LINE)" (370) 406 +"__FILE__ (T_FILE)" (371) 407 +"comment (T_COMMENT)" (372) +"doc comment (T_DOC_COMMENT)" (373) +"open tag (T_OPEN_TAG)" (374) +"open tag with echo (T_OPEN_TAG_WITH_ECHO)" (375) +"close tag (T_CLOSE_TAG)" (376) +"whitespace (T_WHITESPACE)" (377) +"heredoc start (T_START_HEREDOC)" (378) 413 414 433 +"heredoc end (T_END_HEREDOC)" (379) 413 414 433 +"${ (T_DOLLAR_OPEN_CURLY_BRACES)" (380) 520 521 +"{$ (T_CURLY_OPEN)" (381) 522 +":: (T_PAAMAYIM_NEKUDOTAYIM)" (382) 217 370 372 374 376 425 467 468 + 539 540 +"namespace (T_NAMESPACE)" (383) 11 13 15 366 381 384 417 429 +"__NAMESPACE__ (T_NS_C)" (384) 412 +"__DIR__ (T_DIR)" (385) 408 +"\\ (T_NS_SEPARATOR)" (386) 6 22 23 366 368 381 382 384 385 417 418 + 429 430 Nonterminals, with rules where they appear -$accept (158) +$accept (160) on left: 0 -start (159) +start (161) on left: 1, on right: 0 -top_statement_list (160) +top_statement_list (162) on left: 3 4, on right: 1 3 13 15 -@1 (161) +$@1 (163) on left: 2, on right: 3 -namespace_name (162) - on left: 5 6, on right: 6 11 13 20 21 22 23 344 346 348 360 361 - 362 363 364 365 396 397 398 408 409 410 -top_statement (163) +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 416 417 418 428 429 430 +top_statement (165) on left: 7 8 9 10 11 13 15 16 17, on right: 3 -@2 (164) +$@2 (166) on left: 12, on right: 13 -@3 (165) +$@3 (167) on left: 14, on right: 15 -use_declarations (166) +use_declarations (168) on left: 18 19, on right: 16 18 -use_declaration (167) +use_declaration (169) on left: 20 21 22 23, on right: 18 19 -constant_declaration (168) +constant_declaration (170) on left: 24 25, on right: 17 24 -inner_statement_list (169) - on left: 27 28, on right: 27 35 41 81 90 99 122 124 126 135 137 - 141 147 151 213 333 335 -@4 (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) on left: 26, on right: 27 -inner_statement (171) +inner_statement (173) on left: 29 30 31 32, on right: 27 -statement (172) - on left: 33 34, on right: 7 29 38 47 121 123 125 140 144 149 -unticked_statement (173) +statement (174) + on left: 33 34, on right: 7 29 38 47 130 132 134 149 153 158 +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 69 72 74 75 81 82 83, on right: 33 -@5 (174) + 65 66 67 70 73 75 76 79 80 81, on right: 33 +$@5 (176) on left: 36, on right: 38 -@6 (175) +$@6 (177) on left: 37, on right: 38 -@7 (176) +$@7 (178) on left: 39, on right: 41 -@8 (177) +$@8 (179) on left: 40, on right: 41 -@9 (178) +$@9 (180) on left: 42, on right: 44 -@10 (179) +@10 (181) on left: 43, on right: 44 -@11 (180) +$@11 (182) on left: 45, on right: 47 -@12 (181) +$@12 (183) on left: 46, on right: 47 -@13 (182) +$@13 (184) on left: 48, on right: 51 -@14 (183) +$@14 (185) on left: 49, on right: 51 -@15 (184) +$@15 (186) on left: 50, on right: 51 -@16 (185) +$@16 (187) on left: 52, on right: 53 -@17 (186) - on left: 67, on right: 69 -@18 (187) - on left: 68, on right: 69 -@19 (188) - on left: 70, on right: 72 -@20 (189) - on left: 71, on right: 72 -@21 (190) - on left: 73, on right: 74 -@22 (191) - on left: 76, on right: 81 -@23 (192) - on left: 77, on right: 81 -@24 (193) - on left: 78, on right: 81 -@25 (194) - on left: 79, on right: 81 -@26 (195) - on left: 80, on right: 81 -additional_catches (196) - on left: 84 85, on right: 81 -non_empty_additional_catches (197) - on left: 86 87, on right: 84 87 -additional_catch (198) - on left: 90, on right: 86 87 -@27 (199) - on left: 88, on right: 90 -@28 (200) +$@17 (188) + on left: 68, on right: 70 +$@18 (189) + on left: 69, on right: 70 +$@19 (190) + on left: 71, on right: 73 +$@20 (191) + on left: 72, on right: 73 +$@21 (192) + on left: 74, on right: 75 +$@22 (193) + on left: 77, on right: 79 +$@23 (194) + on left: 78, on right: 79 +catch_statement (195) + on left: 82 87, on right: 79 +$@24 (196) + on left: 83, on right: 87 +$@25 (197) + on left: 84, on right: 87 +$@26 (198) + on left: 85, on right: 87 +$@27 (199) + on left: 86, on right: 87 +finally_statement (200) + on left: 88 90, on right: 79 +$@28 (201) on left: 89, on right: 90 -unset_variables (201) - on left: 91 92, on right: 66 92 -unset_variable (202) - on left: 93, on right: 91 92 -function_declaration_statement (203) - on left: 94, on right: 8 30 -class_declaration_statement (204) - on left: 95, on right: 9 31 -is_reference (205) - on left: 96 97, on right: 99 190 333 335 -unticked_function_declaration_statement (206) - on left: 99, on right: 94 -@29 (207) - on left: 98, on right: 99 -unticked_class_declaration_statement (208) - on left: 101 103, on right: 95 -@30 (209) - on left: 100, on right: 101 -@31 (210) - on left: 102, on right: 103 -class_entry_type (211) - on left: 104 105 106 107, on right: 101 -extends_from (212) - on left: 108 109, on right: 101 -interface_entry (213) - on left: 110, on right: 103 -interface_extends_list (214) - on left: 111 112, on right: 103 -implements_list (215) - on left: 113 114, on right: 101 -interface_list (216) - on left: 115 116, on right: 112 114 116 -foreach_optional_arg (217) - on left: 117 118, on right: 69 72 -foreach_variable (218) - on left: 119 120, on right: 69 118 -for_statement (219) - on left: 121 122, on right: 51 -foreach_statement (220) - on left: 123 124, on right: 69 72 -declare_statement (221) - on left: 125 126, on right: 74 -declare_list (222) - on left: 127 128, on right: 74 128 -switch_case_list (223) - on left: 129 130 131 132, on right: 53 -case_list (224) - on left: 133 135 137, on right: 129 130 131 132 135 137 -@32 (225) - on left: 134, on right: 135 -@33 (226) - on left: 136, on right: 137 -case_separator (227) - on left: 138 139, on right: 135 137 -while_statement (228) - on left: 140 141, on right: 44 -elseif_list (229) - on left: 142 144, on right: 38 144 -@34 (230) +additional_catches (202) + on left: 91 92, on right: 87 +non_empty_additional_catches (203) + on left: 93 94, on right: 91 94 +additional_catch (204) + on left: 97, on right: 93 94 +@29 (205) + on left: 95, on right: 97 +$@30 (206) + on left: 96, on right: 97 +unset_variables (207) + on left: 98 99, on right: 67 99 +unset_variable (208) + on left: 100, on right: 98 99 +function_declaration_statement (209) + on left: 101, on right: 8 30 +class_declaration_statement (210) + on left: 102, on right: 9 31 +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) + on left: 105, on right: 106 +unticked_class_declaration_statement (214) + on left: 108 110, on right: 102 +$@32 (215) + on left: 107, on right: 108 +$@33 (216) + on left: 109, on right: 110 +class_entry_type (217) + on left: 111 112 113 114, on right: 108 +extends_from (218) + on left: 115 116, on right: 108 +interface_entry (219) + on left: 117, on right: 110 +interface_extends_list (220) + on left: 118 119, on right: 110 +implements_list (221) + on left: 120 121, on right: 108 +interface_list (222) + on left: 122 123, on right: 119 121 123 +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) + on left: 128, on right: 129 +for_statement (226) + on left: 130 131, on right: 51 +foreach_statement (227) + on left: 132 133, on right: 70 73 +declare_statement (228) + on left: 134 135, on right: 75 +declare_list (229) + on left: 136 137, on right: 75 137 +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) on left: 143, on right: 144 -new_elseif_list (231) - on left: 145 147, on right: 41 147 -@35 (232) - on left: 146, on right: 147 -else_single (233) - on left: 148 149, on right: 38 -new_else_single (234) - on left: 150 151, on right: 41 -parameter_list (235) - on left: 152 153, on right: 99 190 333 335 -non_empty_parameter_list (236) - on left: 154 155 156 157 158 159 160 161, on right: 152 158 159 - 160 161 -optional_class_type (237) - on left: 162 163 164 165, on right: 154 155 156 157 158 159 160 - 161 -function_call_parameter_list (238) - on left: 166 167, on right: 344 346 348 350 352 354 356 358 382 - 439 -non_empty_function_call_parameter_list (239) - on left: 168 169 170 171 172 173, on right: 166 171 172 173 -global_var_list (240) - on left: 174 175, on right: 61 174 -global_var (241) - on left: 176 177 178, on right: 174 175 -static_var_list (242) - on left: 179 180 181 182, on right: 62 179 180 -class_statement_list (243) - on left: 183 184, on right: 101 103 183 -class_statement (244) - on left: 186 187 188 190, on right: 183 -@36 (245) - on left: 185, on right: 186 -@37 (246) - on left: 189, on right: 190 -trait_use_statement (247) - on left: 191, on right: 188 -trait_list (248) - on left: 192 193, on right: 191 193 -trait_adaptations (249) - on left: 194 195, on right: 191 -trait_adaptation_list (250) - on left: 196 197, on right: 195 -non_empty_trait_adaptation_list (251) - on left: 198 199, on right: 197 199 -trait_adaptation_statement (252) - on left: 200 201, on right: 198 199 -trait_precedence (253) - on left: 202, on right: 200 -trait_reference_list (254) - on left: 203 204, on right: 202 204 -trait_method_reference (255) - on left: 205 206, on right: 208 209 -trait_method_reference_fully_qualified (256) - on left: 207, on right: 202 206 -trait_alias (257) - on left: 208 209, on right: 201 -trait_modifiers (258) - on left: 210 211, on right: 208 -method_body (259) - on left: 212 213, on right: 190 -variable_modifiers (260) - on left: 214 215, on right: 186 -method_modifiers (261) - on left: 216 217, on right: 190 -non_empty_member_modifiers (262) - on left: 218 219, on right: 214 217 219 -member_modifier (263) - on left: 220 221 222 223 224 225, on right: 209 211 218 219 -class_variable_declaration (264) - on left: 226 227 228 229, on right: 186 226 227 -class_constant_declaration (265) - on left: 230 231, on right: 187 230 -echo_expr_list (266) - on left: 232 233, on right: 63 232 -for_expr (267) - on left: 234 235, on right: 51 -non_empty_for_expr (268) - on left: 237 238, on right: 235 237 -@38 (269) - on left: 236, on right: 237 -chaining_method_or_property (270) - on left: 239 240, on right: 239 244 246 -chaining_dereference (271) - on left: 241 242, on right: 241 244 245 -chaining_instance_call (272) - on left: 244 245 246, on right: 249 -@39 (273) - on left: 243, on right: 244 -instance_call (274) - on left: 247 249, on right: 310 -@40 (275) - on left: 248, on right: 249 -new_expr (276) - on left: 251, on right: 308 310 -@41 (277) - on left: 250, on right: 251 -expr_without_variable (278) - on left: 253 254 255 257 258 259 260 261 262 263 264 265 266 267 - 268 269 270 271 272 273 275 277 279 281 282 283 284 285 286 287 - 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 - 304 305 306 307 308 310 313 315 316 317 318 319 320 321 322 323 - 324 326 327 328 329 330 331 333 335, on right: 59 72 168 171 424 -@42 (279) - on left: 252, on right: 253 -@43 (280) - on left: 256, on right: 257 -@44 (281) - on left: 274, on right: 275 -@45 (282) - on left: 276, on right: 277 -@46 (283) - on left: 278, on right: 279 -@47 (284) - on left: 280, on right: 281 -@48 (285) - on left: 309, on right: 310 -@49 (286) - on left: 311, on right: 313 -@50 (287) - on left: 312, on right: 313 -@51 (288) - on left: 314, on right: 315 -@52 (289) - on left: 325, on right: 326 -@53 (290) - on left: 332, on right: 333 -@54 (291) - on left: 334, on right: 335 -function (292) - on left: 336, on right: 99 190 333 335 -lexical_vars (293) - on left: 337 338, on right: 333 335 -lexical_var_list (294) - on left: 339 340 341 342, on right: 338 339 340 -function_call (295) - on left: 344 346 348 350 352 354 356 358, on right: 450 453 -@55 (296) - on left: 343, on right: 344 +$@36 (233) + on left: 145, on right: 146 +case_separator (234) + on left: 147 148, on right: 144 146 +while_statement (235) + on left: 149 150, on right: 44 +elseif_list (236) + on left: 151 153, on right: 38 153 +$@37 (237) + on left: 152, on right: 153 +new_elseif_list (238) + on left: 154 156, on right: 41 156 +$@38 (239) + on left: 155, on right: 156 +else_single (240) + on left: 157 158, on right: 38 +new_else_single (241) + on left: 159 160, on right: 41 +parameter_list (242) + on left: 161 162, on right: 106 200 344 346 +non_empty_parameter_list (243) + on left: 163 164 165 166 167 168 169 170, on right: 161 167 168 + 169 170 +optional_class_type (244) + on left: 171 172 173 174, on right: 163 164 165 166 167 168 169 + 170 +function_call_parameter_list (245) + on left: 175 176 177, on right: 364 366 368 370 372 374 376 378 + 402 461 +non_empty_function_call_parameter_list (246) + on left: 178 179 180 181 182 183, on right: 176 181 182 183 +global_var_list (247) + on left: 184 185, on right: 62 184 +global_var (248) + on left: 186 187 188, on right: 184 185 +static_var_list (249) + on left: 189 190 191 192, on right: 63 189 190 +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) + on left: 195, on right: 196 +$@40 (253) + on left: 199, on right: 200 +trait_use_statement (254) + on left: 201, on right: 198 +trait_list (255) + on left: 202 203, on right: 201 203 +trait_adaptations (256) + on left: 204 205, on right: 201 +trait_adaptation_list (257) + on left: 206 207, on right: 205 +non_empty_trait_adaptation_list (258) + on left: 208 209, on right: 207 209 +trait_adaptation_statement (259) + on left: 210 211, on right: 208 209 +trait_precedence (260) + on left: 212, on right: 210 +trait_reference_list (261) + on left: 213 214, on right: 212 214 +trait_method_reference (262) + on left: 215 216, on right: 218 219 +trait_method_reference_fully_qualified (263) + on left: 217, on right: 212 216 +trait_alias (264) + on left: 218 219, on right: 211 +trait_modifiers (265) + on left: 220 221, on right: 218 +method_body (266) + on left: 222 223, on right: 200 +variable_modifiers (267) + on left: 224 225, on right: 196 +method_modifiers (268) + on left: 226 227, on right: 200 +non_empty_member_modifiers (269) + on left: 228 229, on right: 224 227 229 +member_modifier (270) + on left: 230 231 232 233 234 235, on right: 219 221 228 229 +class_variable_declaration (271) + on left: 236 237 238 239, on right: 196 236 237 +class_constant_declaration (272) + on left: 240 241, on right: 197 240 +echo_expr_list (273) + on left: 242 243, on right: 64 242 +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) + on left: 246, on right: 247 +chaining_method_or_property (277) + on left: 249 250, on right: 249 254 256 +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) + on left: 253, on right: 254 +instance_call (281) + on left: 257 259, on right: 320 +$@43 (282) + on left: 258, on right: 259 +new_expr (283) + on left: 261, on right: 318 320 +$@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 + 278 279 280 281 282 283 285 287 289 291 292 293 294 295 296 297 + 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 + 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 444 528 538 +$@45 (286) + on left: 262, on right: 263 +$@46 (287) + on left: 266, on right: 267 +$@47 (288) + on left: 284, on right: 285 +$@48 (289) + on left: 286, on right: 287 +$@49 (290) + on left: 288, on right: 289 +$@50 (291) + on left: 290, on right: 291 +@51 (292) + on left: 319, on right: 320 +$@52 (293) + on left: 321, on right: 323 +$@53 (294) + on left: 322, on right: 323 +$@54 (295) + on left: 324, on right: 325 +$@55 (296) + on left: 335, on right: 336 @56 (297) - on left: 345, on right: 346 + on left: 343, on right: 344 @57 (298) - on left: 347, on right: 348 -@58 (299) - on left: 349, on right: 350 -@59 (300) - on left: 351, on right: 352 -@60 (301) - on left: 353, on right: 354 -@61 (302) - on left: 355, on right: 356 -@62 (303) - on left: 357, on right: 358 -class_name (304) - on left: 359 360 361 362, on right: 350 352 366 405 445 514 -fully_qualified_class_name (305) - on left: 363 364 365, on right: 81 90 109 115 116 165 192 193 203 - 204 207 -class_name_reference (306) - on left: 366 367, on right: 251 257 306 -dynamic_class_name_reference (307) - on left: 370 371, on right: 367 -@63 (308) - on left: 368, on right: 370 -@64 (309) + on left: 345, on right: 346 +yield_expr (299) + on left: 347 348 349 350, on right: 61 177 446 +combined_scalar_offset (300) + on left: 351 352 353, on right: 338 352 +combined_scalar (301) + on left: 354 355, on right: 339 351 +function (302) + on left: 356, on right: 106 200 344 346 +lexical_vars (303) + on left: 357 358, on right: 344 346 +lexical_var_list (304) + on left: 359 360 361 362, on right: 358 359 360 +function_call (305) + on left: 364 366 368 370 372 374 376 378, on right: 472 475 +@58 (306) + on left: 363, on right: 364 +@59 (307) + on left: 365, on right: 366 +@60 (308) + on left: 367, on right: 368 +@61 (309) on left: 369, on right: 370 -dynamic_class_name_variable_properties (310) - on left: 372 373, on right: 370 372 -dynamic_class_name_variable_property (311) - on left: 374, on right: 372 -exit_expr (312) - on left: 375 376 377, on right: 324 -backticks_expr (313) - on left: 378 379 380, on right: 330 -ctor_arguments (314) - on left: 381 382, on right: 251 257 -common_scalar (315) - on left: 383 384 385 386 387 388 389 390 391 392 393 394, - on right: 395 411 -static_scalar (316) - on left: 395 396 397 398 399 400 401 402 403 404, - on right: 24 25 127 128 156 157 160 161 180 182 227 229 230 231 - 399 400 419 420 421 422 -static_class_constant (317) - on left: 405, on right: 403 -scalar (318) - on left: 406 407 408 409 410 411 412 413 414, on right: 327 -static_array_pair_list (319) - on left: 415 416, on right: 401 402 -possible_comma (320) - on left: 417 418, on right: 416 481 -non_empty_static_array_pair_list (321) - on left: 419 420 421 422, on right: 416 419 420 -expr (322) - on left: 423 424, on right: 38 41 44 47 53 55 57 65 82 135 144 - 147 178 232 233 237 238 253 254 258 259 260 261 262 263 264 265 - 266 267 268 269 275 277 279 281 282 283 284 285 286 287 288 289 - 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 - 306 307 313 315 317 318 319 320 321 322 323 326 331 377 458 461 - 463 468 471 482 483 484 485 486 488 498 499 506 507 508 509 510 -r_variable (323) - on left: 425, on right: 177 423 -w_variable (324) - on left: 426, on right: 170 173 486 487 488 489 -rw_variable (325) - on left: 427, on right: 270 271 272 273 -variable (326) - on left: 430 431, on right: 60 69 72 93 119 120 169 172 254 255 - 257 259 260 261 262 263 264 265 266 267 268 269 425 426 427 476 - 500 505 511 513 -@65 (327) - on left: 428, on right: 430 -@66 (328) - on left: 429, on right: 430 -variable_properties (329) - on left: 432 433, on right: 430 432 -variable_property (330) - on left: 435, on right: 239 240 432 -@67 (331) - on left: 434, on right: 435 -array_method_dereference (332) - on left: 436 437, on right: 436 441 -method (333) - on left: 439, on right: 437 440 -@68 (334) - on left: 438, on right: 439 -method_or_not (335) - on left: 440 441 442, on right: 430 435 -variable_without_objects (336) - on left: 443 444, on right: 352 356 358 445 446 466 -static_member (337) - on left: 445 446, on right: 456 -variable_class_name (338) - on left: 447, on right: 354 356 446 515 -array_function_dereference (339) - on left: 448 450, on right: 448 452 -@69 (340) - on left: 449, on right: 450 -base_variable_with_function_calls (341) - on left: 451 452 453, on right: 430 431 -base_variable (342) - on left: 454 455 456, on right: 370 371 451 -reference_variable (343) - on left: 457 458 459, on right: 443 444 447 454 455 457 458 -compound_variable (344) - on left: 460 461, on right: 459 -dim_offset (345) - on left: 462 463, on right: 241 242 436 437 448 450 457 467 -object_property (346) - on left: 464 466, on right: 370 374 430 435 -@70 (347) - on left: 465, on right: 466 -object_dim_list (348) - on left: 467 468 469, on right: 464 467 468 -variable_name (349) - on left: 470 471, on right: 350 354 469 -simple_indirect_reference (350) - on left: 472 473, on right: 444 455 473 -assignment_list (351) - on left: 474 475, on right: 253 474 478 -assignment_list_element (352) - on left: 476 478 479, on right: 474 475 -@71 (353) - on left: 477, on right: 478 -array_pair_list (354) - on left: 480 481, on right: 328 329 -non_empty_array_pair_list (355) - on left: 482 483 484 485 486 487 488 489, on right: 481 482 483 - 486 487 -encaps_list (356) - on left: 490 491 492 493, on right: 380 412 413 490 491 -encaps_var (357) - on left: 494 496 497 498 499 500, on right: 490 492 493 -@72 (358) - on left: 495, on right: 496 -encaps_var_offset (359) - on left: 501 502 503, on right: 496 -internal_functions_in_yacc (360) - on left: 504 505 506 507 508 509 510, on right: 316 -isset_variables (361) - on left: 511 513, on right: 504 513 -@73 (362) - on left: 512, on right: 513 -class_constant (363) - on left: 514 515, on right: 407 +$@62 (310) + on left: 371, on right: 372 +$@63 (311) + on left: 373, on right: 374 +$@64 (312) + on left: 375, on right: 376 +$@65 (313) + on left: 377, on right: 378 +class_name (314) + on left: 379 380 381 382, on right: 370 372 386 425 467 539 +fully_qualified_class_name (315) + on left: 383 384 385, on right: 87 97 116 122 123 174 202 203 213 + 214 217 +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) + on left: 388, on right: 390 +$@67 (319) + on left: 389, on right: 390 +dynamic_class_name_variable_properties (320) + on left: 392 393, on right: 390 392 +dynamic_class_name_variable_property (321) + on left: 394, on right: 392 +exit_expr (322) + on left: 395 396 397, on right: 334 +backticks_expr (323) + on left: 398 399 400, on right: 340 +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 431 +static_scalar (326) + on left: 415 416 417 418 419 420 421 422 423 424, on right: 24 + 25 136 137 165 166 169 170 190 192 237 239 240 241 419 420 439 + 440 441 442 +static_class_constant (327) + on left: 425, on right: 423 +scalar (328) + on left: 426 427 428 429 430 431 432 433 434, on right: 337 +static_array_pair_list (329) + on left: 435 436, on right: 421 422 +possible_comma (330) + on left: 437 438, on right: 436 503 +non_empty_static_array_pair_list (331) + on left: 439 440 441 442, on right: 436 439 440 +expr (332) + on left: 443 444, on right: 55 57 66 80 144 188 242 243 247 248 + 263 264 268 269 270 271 272 273 274 275 276 277 278 279 285 287 + 289 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 + 306 307 308 309 310 311 312 313 314 315 316 323 325 327 328 329 + 330 331 332 333 336 341 349 350 445 480 483 485 490 493 504 505 + 506 507 508 510 520 521 529 530 531 532 533 +parenthesis_expr (333) + on left: 445 446, on right: 38 41 44 47 53 153 156 317 397 +r_variable (334) + on left: 447, on right: 187 443 +w_variable (335) + on left: 448, on right: 180 183 508 509 510 511 +rw_variable (336) + on left: 449, on right: 280 281 282 283 +variable (337) + on left: 452 453, 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 447 448 449 + 498 522 527 537 +$@68 (338) + on left: 450, on right: 452 +$@69 (339) + on left: 451, on right: 452 +variable_properties (340) + on left: 454 455, on right: 452 454 +variable_property (341) + on left: 457, on right: 249 250 454 +$@70 (342) + on left: 456, on right: 457 +array_method_dereference (343) + on left: 458 459, on right: 458 463 +method (344) + on left: 461, on right: 459 462 +@71 (345) + on left: 460, on right: 461 +method_or_not (346) + on left: 462 463 464, on right: 452 457 +variable_without_objects (347) + on left: 465 466, on right: 372 376 378 467 468 488 +static_member (348) + on left: 467 468, on right: 478 +variable_class_name (349) + on left: 469, on right: 374 376 468 540 +array_function_dereference (350) + on left: 470 472, on right: 470 474 +$@72 (351) + on left: 471, on right: 472 +base_variable_with_function_calls (352) + on left: 473 474 475, on right: 452 453 +base_variable (353) + on left: 476 477 478, on right: 390 391 473 +reference_variable (354) + on left: 479 480 481, on right: 465 466 469 476 477 479 480 +compound_variable (355) + on left: 482 483, on right: 481 +dim_offset (356) + on left: 484 485, on right: 251 252 351 352 353 458 459 470 472 + 479 489 +object_property (357) + on left: 486 488, on right: 390 394 452 457 +$@73 (358) + on left: 487, on right: 488 +object_dim_list (359) + on left: 489 490 491, on right: 486 489 490 +variable_name (360) + on left: 492 493, on right: 370 374 491 +simple_indirect_reference (361) + on left: 494 495, on right: 466 477 495 +assignment_list (362) + on left: 496 497, on right: 129 263 496 500 +assignment_list_element (363) + on left: 498 500 501, on right: 496 497 +$@74 (364) + on left: 499, on right: 500 +array_pair_list (365) + on left: 502 503, on right: 354 355 +non_empty_array_pair_list (366) + on left: 504 505 506 507 508 509 510 511, on right: 503 504 505 + 508 509 +encaps_list (367) + on left: 512 513 514 515, on right: 400 432 433 512 513 +encaps_var (368) + on left: 516 518 519 520 521 522, on right: 512 514 515 +$@75 (369) + on left: 517, on right: 518 +encaps_var_offset (370) + on left: 523 524 525, on right: 518 +internal_functions_in_yacc (371) + on left: 526 527 528 529 530 531 532 533, on right: 326 +isset_variables (372) + on left: 534 536, on right: 526 536 +$@76 (373) + on left: 535, on right: 536 +isset_variable (374) + on left: 537 538, on right: 534 536 +class_constant (375) + on left: 539 540, on right: 427 state 0 @@ -1417,12 +1478,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 @@ -1434,7 +1495,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 @@ -1442,117 +1503,122 @@ state 4 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "if (T_IF)" shift, and go to state 29 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 32 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - T_INLINE_HTML shift, and go to state 35 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "echo (T_ECHO)" shift, and go to state 37 - "do (T_DO)" shift, and go to state 38 - "while (T_WHILE)" shift, and go to state 39 - "for (T_FOR)" shift, and go to state 40 - "foreach (T_FOREACH)" shift, and go to state 41 - "declare (T_DECLARE)" shift, and go to state 42 - "switch (T_SWITCH)" shift, and go to state 43 - "break (T_BREAK)" shift, and go to state 44 - "continue (T_CONTINUE)" shift, and go to state 45 - "goto (T_GOTO)" shift, and go to state 46 - "function (T_FUNCTION)" shift, and go to state 47 - "const (T_CONST)" shift, and go to state 48 - "return (T_RETURN)" shift, and go to state 49 - "try (T_TRY)" shift, and go to state 50 - "throw (T_THROW)" shift, and go to state 51 - "use (T_USE)" shift, and go to state 52 - "global (T_GLOBAL)" shift, and go to state 53 - "final (T_FINAL)" shift, and go to state 54 - "abstract (T_ABSTRACT)" shift, and go to state 55 - "static (T_STATIC)" shift, and go to state 56 - "unset (T_UNSET)" shift, and go to state 57 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "__halt_compiler (T_HALT_COMPILER)" shift, and go to state 60 - "class (T_CLASS)" shift, and go to state 61 - "trait (T_TRAIT)" shift, and go to state 62 - "interface (T_INTERFACE)" shift, and go to state 63 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 73 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 78 - '{' shift, and go to state 79 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - top_statement go to state 84 - constant_declaration go to state 85 - statement go to state 86 - unticked_statement go to state 87 - function_declaration_statement go to state 88 - class_declaration_statement go to state 89 - unticked_function_declaration_statement go to state 90 - unticked_class_declaration_statement go to state 91 - class_entry_type go to state 92 - interface_entry go to state 93 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 96 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 101 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 11 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "if (T_IF)" shift, and go to state 30 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 33 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + T_INLINE_HTML shift, and go to state 36 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "echo (T_ECHO)" shift, and go to state 38 + "do (T_DO)" shift, and go to state 39 + "while (T_WHILE)" shift, and go to state 40 + "for (T_FOR)" shift, and go to state 41 + "foreach (T_FOREACH)" shift, and go to state 42 + "declare (T_DECLARE)" shift, and go to state 43 + "switch (T_SWITCH)" shift, and go to state 44 + "break (T_BREAK)" shift, and go to state 45 + "continue (T_CONTINUE)" shift, and go to state 46 + "goto (T_GOTO)" shift, and go to state 47 + "function (T_FUNCTION)" shift, and go to state 48 + "const (T_CONST)" shift, and go to state 49 + "return (T_RETURN)" shift, and go to state 50 + "try (T_TRY)" shift, and go to state 51 + "throw (T_THROW)" shift, and go to state 52 + "use (T_USE)" shift, and go to state 53 + "global (T_GLOBAL)" shift, and go to state 54 + "final (T_FINAL)" shift, and go to state 55 + "abstract (T_ABSTRACT)" shift, and go to state 56 + "static (T_STATIC)" shift, and go to state 57 + "unset (T_UNSET)" shift, and go to state 58 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "__halt_compiler (T_HALT_COMPILER)" shift, and go to state 61 + "class (T_CLASS)" shift, and go to state 62 + "trait (T_TRAIT)" shift, and go to state 63 + "interface (T_INTERFACE)" shift, and go to state 64 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 74 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 79 + '{' shift, and go to state 80 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + top_statement go to state 85 + constant_declaration go to state 86 + statement go to state 87 + unticked_statement go to state 88 + function_declaration_statement go to state 89 + class_declaration_statement go to state 90 + unticked_function_declaration_statement go to state 91 + unticked_class_declaration_statement go to state 92 + class_entry_type go to state 93 + interface_entry go to state 94 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 97 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 100 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 105 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 5 - 510 internal_functions_in_yacc: "require_once (T_REQUIRE_ONCE)" . expr + 533 internal_functions_in_yacc: "require_once (T_REQUIRE_ONCE)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -1560,80 +1626,84 @@ state 5 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 120 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 126 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 6 - 509 internal_functions_in_yacc: "require (T_REQUIRE)" . expr + 532 internal_functions_in_yacc: "require (T_REQUIRE)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -1641,87 +1711,91 @@ state 6 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 121 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 127 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 7 - 508 internal_functions_in_yacc: "eval (T_EVAL)" . '(' expr ')' + 531 internal_functions_in_yacc: "eval (T_EVAL)" . '(' expr ')' - '(' shift, and go to state 122 + '(' shift, and go to state 128 state 8 - 507 internal_functions_in_yacc: "include_once (T_INCLUDE_ONCE)" . expr + 530 internal_functions_in_yacc: "include_once (T_INCLUDE_ONCE)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -1729,80 +1803,84 @@ state 8 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 123 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 129 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 9 - 506 internal_functions_in_yacc: "include (T_INCLUDE)" . expr + 529 internal_functions_in_yacc: "include (T_INCLUDE)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -1810,80 +1888,84 @@ state 9 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 124 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 130 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 10 - 331 expr_without_variable: "print (T_PRINT)" . expr + 341 expr_without_variable: "print (T_PRINT)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -1891,80 +1973,88 @@ state 10 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 125 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 131 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 11 - 294 expr_without_variable: '+' . expr + 342 expr_without_variable: "yield (T_YIELD)" . + 347 yield_expr: "yield (T_YIELD)" . expr_without_variable + 348 | "yield (T_YIELD)" . variable + 349 | "yield (T_YIELD)" . expr "=> (T_DOUBLE_ARROW)" expr_without_variable + 350 | "yield (T_YIELD)" . expr "=> (T_DOUBLE_ARROW)" variable "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -1972,80 +2062,86 @@ state 11 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 126 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 342 (expr_without_variable) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 132 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 133 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 134 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 12 - 295 expr_without_variable: '-' . expr + 304 expr_without_variable: '+' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2053,80 +2149,84 @@ state 12 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 127 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 135 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 13 - 296 expr_without_variable: '!' . expr + 305 expr_without_variable: '-' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2134,80 +2234,84 @@ state 13 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 128 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 136 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 14 - 297 expr_without_variable: '~' . expr + 306 expr_without_variable: '!' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2215,89 +2319,84 @@ state 14 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 129 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 137 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 15 - 326 expr_without_variable: '@' . @52 expr - - $default reduce using rule 325 (@52) - - @52 go to state 130 - - -state 16 - - 323 expr_without_variable: "(unset) (T_UNSET_CAST)" . expr + 307 expr_without_variable: '~' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2305,80 +2404,93 @@ state 16 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 131 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 138 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 + + +state 16 + + 336 expr_without_variable: '@' . $@55 expr + + $default reduce using rule 335 ($@55) + + $@55 go to state 139 state 17 - 322 expr_without_variable: "(bool) (T_BOOL_CAST)" . expr + 333 expr_without_variable: "(unset) (T_UNSET_CAST)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2386,80 +2498,84 @@ state 17 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 132 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 140 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 18 - 321 expr_without_variable: "(object) (T_OBJECT_CAST)" . expr + 332 expr_without_variable: "(bool) (T_BOOL_CAST)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2467,80 +2583,84 @@ state 18 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 133 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 141 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 19 - 320 expr_without_variable: "(array) (T_ARRAY_CAST)" . expr + 331 expr_without_variable: "(object) (T_OBJECT_CAST)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2548,80 +2668,84 @@ state 19 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 134 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 142 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 20 - 319 expr_without_variable: "(string) (T_STRING_CAST)" . expr + 330 expr_without_variable: "(array) (T_ARRAY_CAST)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2629,80 +2753,84 @@ state 20 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 135 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 143 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 21 - 318 expr_without_variable: "(double) (T_DOUBLE_CAST)" . expr + 329 expr_without_variable: "(string) (T_STRING_CAST)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2710,80 +2838,84 @@ state 21 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 136 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 144 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 22 - 317 expr_without_variable: "(int) (T_INT_CAST)" . expr + 328 expr_without_variable: "(double) (T_DOUBLE_CAST)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2791,134 +2923,223 @@ state 22 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 137 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 145 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 23 - 273 expr_without_variable: "-- (T_DEC)" . rw_variable - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - rw_variable go to state 143 - variable go to state 144 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 327 expr_without_variable: "(int) (T_INT_CAST)" . expr + + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 146 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 24 - 271 expr_without_variable: "++ (T_INC)" . rw_variable - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - rw_variable go to state 146 - variable go to state 144 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 283 expr_without_variable: "-- (T_DEC)" . rw_variable + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + rw_variable go to state 152 + variable go to state 153 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 25 - 329 expr_without_variable: '[' . array_pair_list ']' + 281 expr_without_variable: "++ (T_INC)" . rw_variable + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + rw_variable go to state 155 + variable go to state 153 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + + +state 26 + + 355 combined_scalar: '[' . array_pair_list ']' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2926,85 +3147,89 @@ state 25 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 147 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 480 (array_pair_list) - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 148 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - array_pair_list go to state 149 - non_empty_array_pair_list go to state 150 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '&' shift, and go to state 156 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 502 (array_pair_list) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 157 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + array_pair_list go to state 158 + non_empty_array_pair_list go to state 159 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 26 +state 27 - 258 expr_without_variable: "clone (T_CLONE)" . expr + 268 expr_without_variable: "clone (T_CLONE)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -3012,174 +3237,184 @@ state 26 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 151 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 - - -state 27 - - 251 new_expr: "new (T_NEW)" . class_name_reference @41 ctor_arguments - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 152 - "\\ (T_NS_SEPARATOR)" shift, and go to state 153 - '$' shift, and go to state 80 - - namespace_name go to state 154 - class_name go to state 155 - class_name_reference go to state 156 - dynamic_class_name_reference go to state 157 - static_member go to state 106 - variable_class_name go to state 158 - base_variable go to state 159 - reference_variable go to state 160 - compound_variable go to state 112 - simple_indirect_reference go to state 161 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 160 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 28 - 324 expr_without_variable: "exit (T_EXIT)" . exit_expr + 261 new_expr: "new (T_NEW)" . class_name_reference $@44 ctor_arguments - '(' shift, and go to state 162 + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 161 + "\\ (T_NS_SEPARATOR)" shift, and go to state 162 + '$' shift, and go to state 81 - $default reduce using rule 375 (exit_expr) - - exit_expr go to state 163 + namespace_name go to state 163 + class_name go to state 164 + class_name_reference go to state 165 + dynamic_class_name_reference go to state 166 + static_member go to state 111 + variable_class_name go to state 167 + base_variable go to state 168 + reference_variable go to state 169 + compound_variable go to state 117 + simple_indirect_reference go to state 170 state 29 - 38 unticked_statement: "if (T_IF)" . '(' expr ')' @5 statement @6 elseif_list else_single - 41 | "if (T_IF)" . '(' expr ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' + 334 expr_without_variable: "exit (T_EXIT)" . exit_expr + + '(' shift, and go to state 171 + + $default reduce using rule 395 (exit_expr) - '(' shift, and go to state 164 + exit_expr go to state 172 + parenthesis_expr go to state 173 state 30 - 383 common_scalar: "integer number (T_LNUMBER)" . + 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)" ';' - $default reduce using rule 383 (common_scalar) + '(' shift, and go to state 174 + + parenthesis_expr go to state 175 state 31 - 384 common_scalar: "floating-point number (T_DNUMBER)" . + 403 common_scalar: "integer number (T_LNUMBER)" . - $default reduce using rule 384 (common_scalar) + $default reduce using rule 403 (common_scalar) state 32 - 5 namespace_name: "identifier (T_STRING)" . - 34 statement: "identifier (T_STRING)" . ':' + 404 common_scalar: "floating-point number (T_DNUMBER)" . - ':' shift, and go to state 165 - - $default reduce using rule 5 (namespace_name) + $default reduce using rule 404 (common_scalar) state 33 - 406 scalar: "variable name (T_STRING_VARNAME)" . + 5 namespace_name: "identifier (T_STRING)" . + 34 statement: "identifier (T_STRING)" . ':' - $default reduce using rule 406 (scalar) + ':' shift, and go to state 176 + + $default reduce using rule 5 (namespace_name) state 34 - 460 compound_variable: "variable (T_VARIABLE)" . + 426 scalar: "variable name (T_STRING_VARNAME)" . - $default reduce using rule 460 (compound_variable) + $default reduce using rule 426 (scalar) state 35 - 64 unticked_statement: T_INLINE_HTML . + 482 compound_variable: "variable (T_VARIABLE)" . - $default reduce using rule 64 (unticked_statement) + $default reduce using rule 482 (compound_variable) state 36 - 385 common_scalar: "quoted-string (T_CONSTANT_ENCAPSED_STRING)" . + 65 unticked_statement: T_INLINE_HTML . - $default reduce using rule 385 (common_scalar) + $default reduce using rule 65 (unticked_statement) state 37 - 63 unticked_statement: "echo (T_ECHO)" . echo_expr_list ';' + 353 combined_scalar_offset: "quoted-string (T_CONSTANT_ENCAPSED_STRING)" . '[' dim_offset ']' + 405 common_scalar: "quoted-string (T_CONSTANT_ENCAPSED_STRING)" . + + '[' shift, and go to state 177 + + $default reduce using rule 405 (common_scalar) + + +state 38 + + 64 unticked_statement: "echo (T_ECHO)" . echo_expr_list ';' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -3187,127 +3422,135 @@ state 37 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - echo_expr_list go to state 166 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 167 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 - - -state 38 - - 47 unticked_statement: "do (T_DO)" . @11 statement "while (T_WHILE)" '(' @12 expr ')' ';' - - $default reduce using rule 45 (@11) - - @11 go to state 168 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + echo_expr_list go to state 178 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 179 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 39 - 44 unticked_statement: "while (T_WHILE)" . '(' @9 expr ')' @10 while_statement + 47 unticked_statement: "do (T_DO)" . $@11 statement "while (T_WHILE)" $@12 parenthesis_expr ';' + + $default reduce using rule 45 ($@11) - '(' shift, and go to state 169 + $@11 go to state 180 state 40 - 51 unticked_statement: "for (T_FOR)" . '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement + 44 unticked_statement: "while (T_WHILE)" . $@9 parenthesis_expr @10 while_statement - '(' shift, and go to state 170 + $default reduce using rule 42 ($@9) + + $@9 go to state 181 state 41 - 69 unticked_statement: "foreach (T_FOREACH)" . '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement - 72 | "foreach (T_FOREACH)" . '(' expr_without_variable "as (T_AS)" @19 variable foreach_optional_arg ')' @20 foreach_statement + 51 unticked_statement: "for (T_FOR)" . '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement - '(' shift, and go to state 171 + '(' shift, and go to state 182 state 42 - 74 unticked_statement: "declare (T_DECLARE)" . @21 '(' declare_list ')' declare_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 - $default reduce using rule 73 (@21) - - @21 go to state 172 + '(' shift, and go to state 183 state 43 - 53 unticked_statement: "switch (T_SWITCH)" . '(' expr ')' @16 switch_case_list + 75 unticked_statement: "declare (T_DECLARE)" . $@21 '(' declare_list ')' declare_statement + + $default reduce using rule 74 ($@21) - '(' shift, and go to state 173 + $@21 go to state 184 state 44 + 53 unticked_statement: "switch (T_SWITCH)" . parenthesis_expr $@16 switch_case_list + + '(' shift, and go to state 174 + + parenthesis_expr go to state 185 + + +state 45 + 54 unticked_statement: "break (T_BREAK)" . ';' 55 | "break (T_BREAK)" . expr ';' @@ -3317,79 +3560,83 @@ state 44 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 174 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 175 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 186 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 187 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 45 +state 46 56 unticked_statement: "continue (T_CONTINUE)" . ';' 57 | "continue (T_CONTINUE)" . expr ';' @@ -3400,100 +3647,104 @@ state 45 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 176 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 177 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 188 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 189 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 46 +state 47 - 83 unticked_statement: "goto (T_GOTO)" . "identifier (T_STRING)" ';' + 81 unticked_statement: "goto (T_GOTO)" . "identifier (T_STRING)" ';' - "identifier (T_STRING)" shift, and go to state 178 + "identifier (T_STRING)" shift, and go to state 190 -state 47 +state 48 - 336 function: "function (T_FUNCTION)" . + 356 function: "function (T_FUNCTION)" . - $default reduce using rule 336 (function) + $default reduce using rule 356 (function) -state 48 +state 49 25 constant_declaration: "const (T_CONST)" . "identifier (T_STRING)" '=' static_scalar - "identifier (T_STRING)" shift, and go to state 179 + "identifier (T_STRING)" shift, and go to state 191 -state 49 +state 50 58 unticked_statement: "return (T_RETURN)" . ';' 59 | "return (T_RETURN)" . expr_without_variable ';' @@ -3505,90 +3756,94 @@ state 49 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 180 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 181 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 183 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 192 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 193 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 194 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 195 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 50 +state 51 - 81 unticked_statement: "try (T_TRY)" . @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches + 79 unticked_statement: "try (T_TRY)" . $@22 '{' inner_statement_list '}' catch_statement $@23 finally_statement - $default reduce using rule 76 (@22) + $default reduce using rule 77 ($@22) - @22 go to state 184 + $@22 go to state 196 -state 51 +state 52 - 82 unticked_statement: "throw (T_THROW)" . expr ';' + 80 unticked_statement: "throw (T_THROW)" . expr ';' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -3596,295 +3851,301 @@ state 51 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 185 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 - - -state 52 - - 16 top_statement: "use (T_USE)" . use_declarations ';' - - "identifier (T_STRING)" shift, and go to state 116 - "\\ (T_NS_SEPARATOR)" shift, and go to state 186 - - namespace_name go to state 187 - use_declarations go to state 188 - use_declaration go to state 189 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 197 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 53 - 61 unticked_statement: "global (T_GLOBAL)" . global_var_list ';' + 16 top_statement: "use (T_USE)" . use_declarations ';' - "variable (T_VARIABLE)" shift, and go to state 190 - '$' shift, and go to state 191 + "identifier (T_STRING)" shift, and go to state 122 + "\\ (T_NS_SEPARATOR)" shift, and go to state 198 - global_var_list go to state 192 - global_var go to state 193 + namespace_name go to state 199 + use_declarations go to state 200 + use_declaration go to state 201 state 54 - 107 class_entry_type: "final (T_FINAL)" . "class (T_CLASS)" + 62 unticked_statement: "global (T_GLOBAL)" . global_var_list ';' + + "variable (T_VARIABLE)" shift, and go to state 202 + '$' shift, and go to state 203 - "class (T_CLASS)" shift, and go to state 194 + global_var_list go to state 204 + global_var go to state 205 state 55 - 105 class_entry_type: "abstract (T_ABSTRACT)" . "class (T_CLASS)" + 114 class_entry_type: "final (T_FINAL)" . "class (T_CLASS)" - "class (T_CLASS)" shift, and go to state 195 + "class (T_CLASS)" shift, and go to state 206 state 56 - 62 unticked_statement: "static (T_STATIC)" . static_var_list ';' - 335 expr_without_variable: "static (T_STATIC)" . function is_reference '(' @54 parameter_list ')' lexical_vars '{' inner_statement_list '}' - 359 class_name: "static (T_STATIC)" . + 112 class_entry_type: "abstract (T_ABSTRACT)" . "class (T_CLASS)" - "variable (T_VARIABLE)" shift, and go to state 196 - "function (T_FUNCTION)" shift, and go to state 47 + "class (T_CLASS)" shift, and go to state 207 - $default reduce using rule 359 (class_name) - static_var_list go to state 197 - function go to state 198 +state 57 + 63 unticked_statement: "static (T_STATIC)" . static_var_list ';' + 346 expr_without_variable: "static (T_STATIC)" . function is_reference @57 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' + 379 class_name: "static (T_STATIC)" . -state 57 + "variable (T_VARIABLE)" shift, and go to state 208 + "function (T_FUNCTION)" shift, and go to state 48 - 66 unticked_statement: "unset (T_UNSET)" . '(' unset_variables ')' ';' + $default reduce using rule 379 (class_name) - '(' shift, and go to state 199 + static_var_list go to state 209 + function go to state 210 state 58 - 504 internal_functions_in_yacc: "isset (T_ISSET)" . '(' isset_variables ')' + 67 unticked_statement: "unset (T_UNSET)" . '(' unset_variables ')' ';' - '(' shift, and go to state 200 + '(' shift, and go to state 211 state 59 - 505 internal_functions_in_yacc: "empty (T_EMPTY)" . '(' variable ')' + 526 internal_functions_in_yacc: "isset (T_ISSET)" . '(' isset_variables ')' - '(' shift, and go to state 201 + '(' shift, and go to state 212 state 60 - 10 top_statement: "__halt_compiler (T_HALT_COMPILER)" . '(' ')' ';' + 527 internal_functions_in_yacc: "empty (T_EMPTY)" . '(' variable ')' + 528 | "empty (T_EMPTY)" . '(' expr_without_variable ')' - '(' shift, and go to state 202 + '(' shift, and go to state 213 state 61 - 104 class_entry_type: "class (T_CLASS)" . + 10 top_statement: "__halt_compiler (T_HALT_COMPILER)" . '(' ')' ';' - $default reduce using rule 104 (class_entry_type) + '(' shift, and go to state 214 state 62 - 106 class_entry_type: "trait (T_TRAIT)" . + 111 class_entry_type: "class (T_CLASS)" . - $default reduce using rule 106 (class_entry_type) + $default reduce using rule 111 (class_entry_type) state 63 - 110 interface_entry: "interface (T_INTERFACE)" . + 113 class_entry_type: "trait (T_TRAIT)" . - $default reduce using rule 110 (interface_entry) + $default reduce using rule 113 (class_entry_type) state 64 - 253 expr_without_variable: "list (T_LIST)" . '(' @42 assignment_list ')' '=' expr + 117 interface_entry: "interface (T_INTERFACE)" . - '(' shift, and go to state 203 + $default reduce using rule 117 (interface_entry) state 65 - 328 expr_without_variable: "array (T_ARRAY)" . '(' array_pair_list ')' + 263 expr_without_variable: "list (T_LIST)" . '(' $@45 assignment_list ')' '=' expr - '(' shift, and go to state 204 + '(' shift, and go to state 215 state 66 - 414 scalar: "__CLASS__ (T_CLASS_C)" . + 354 combined_scalar: "array (T_ARRAY)" . '(' array_pair_list ')' - $default reduce using rule 414 (scalar) + '(' shift, and go to state 216 state 67 - 389 common_scalar: "__TRAIT__ (T_TRAIT_C)" . + 434 scalar: "__CLASS__ (T_CLASS_C)" . - $default reduce using rule 389 (common_scalar) + $default reduce using rule 434 (scalar) state 68 - 390 common_scalar: "__METHOD__ (T_METHOD_C)" . + 409 common_scalar: "__TRAIT__ (T_TRAIT_C)" . - $default reduce using rule 390 (common_scalar) + $default reduce using rule 409 (common_scalar) state 69 - 391 common_scalar: "__FUNCTION__ (T_FUNC_C)" . + 410 common_scalar: "__METHOD__ (T_METHOD_C)" . - $default reduce using rule 391 (common_scalar) + $default reduce using rule 410 (common_scalar) state 70 - 386 common_scalar: "__LINE__ (T_LINE)" . + 411 common_scalar: "__FUNCTION__ (T_FUNC_C)" . - $default reduce using rule 386 (common_scalar) + $default reduce using rule 411 (common_scalar) state 71 - 387 common_scalar: "__FILE__ (T_FILE)" . + 406 common_scalar: "__LINE__ (T_LINE)" . - $default reduce using rule 387 (common_scalar) + $default reduce using rule 406 (common_scalar) state 72 - 393 common_scalar: "heredoc start (T_START_HEREDOC)" . "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" "heredoc end (T_END_HEREDOC)" - 394 | "heredoc start (T_START_HEREDOC)" . "heredoc end (T_END_HEREDOC)" - 413 scalar: "heredoc start (T_START_HEREDOC)" . encaps_list "heredoc end (T_END_HEREDOC)" + 407 common_scalar: "__FILE__ (T_FILE)" . - "variable (T_VARIABLE)" shift, and go to state 205 - "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 206 - "heredoc end (T_END_HEREDOC)" shift, and go to state 207 - "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 208 - "{$ (T_CURLY_OPEN)" shift, and go to state 209 - - encaps_list go to state 210 - encaps_var go to state 211 + $default reduce using rule 407 (common_scalar) state 73 - 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 '}' - 346 function_call: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name '(' @56 function_call_parameter_list ')' - 361 class_name: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name - 409 scalar: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name + 413 common_scalar: "heredoc start (T_START_HEREDOC)" . "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" "heredoc end (T_END_HEREDOC)" + 414 | "heredoc start (T_START_HEREDOC)" . "heredoc end (T_END_HEREDOC)" + 433 scalar: "heredoc start (T_START_HEREDOC)" . encaps_list "heredoc end (T_END_HEREDOC)" - "identifier (T_STRING)" shift, and go to state 116 - "\\ (T_NS_SEPARATOR)" shift, and go to state 212 - '{' shift, and go to state 213 + "variable (T_VARIABLE)" shift, and go to state 217 + "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 218 + "heredoc end (T_END_HEREDOC)" shift, and go to state 219 + "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 220 + "{$ (T_CURLY_OPEN)" shift, and go to state 221 - namespace_name go to state 214 + encaps_list go to state 222 + encaps_var go to state 223 state 74 - 392 common_scalar: "__NAMESPACE__ (T_NS_C)" . + 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 '}' + 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 + 429 scalar: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name + + "identifier (T_STRING)" shift, and go to state 122 + "\\ (T_NS_SEPARATOR)" shift, and go to state 224 + '{' shift, and go to state 225 - $default reduce using rule 392 (common_scalar) + namespace_name go to state 226 state 75 - 388 common_scalar: "__DIR__ (T_DIR)" . + 412 common_scalar: "__NAMESPACE__ (T_NS_C)" . - $default reduce using rule 388 (common_scalar) + $default reduce using rule 412 (common_scalar) state 76 - 348 function_call: "\\ (T_NS_SEPARATOR)" . namespace_name '(' @57 function_call_parameter_list ')' - 362 class_name: "\\ (T_NS_SEPARATOR)" . namespace_name - 410 scalar: "\\ (T_NS_SEPARATOR)" . namespace_name + 408 common_scalar: "__DIR__ (T_DIR)" . - "identifier (T_STRING)" shift, and go to state 116 - - namespace_name go to state 215 + $default reduce using rule 408 (common_scalar) state 77 - 307 expr_without_variable: '(' . expr ')' - 310 | '(' . new_expr ')' @48 instance_call + 368 function_call: "\\ (T_NS_SEPARATOR)" . namespace_name @60 function_call_parameter_list + 382 class_name: "\\ (T_NS_SEPARATOR)" . namespace_name + 430 scalar: "\\ (T_NS_SEPARATOR)" . namespace_name + + "identifier (T_STRING)" shift, and go to state 122 + + namespace_name go to state 227 + + +state 78 + + 320 expr_without_variable: '(' . new_expr ')' @51 instance_call + 445 parenthesis_expr: '(' . expr ')' + 446 | '(' . yield_expr ')' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -3892,1694 +4153,1866 @@ state 77 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 216 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 217 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 11 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 228 + expr_without_variable go to state 96 + yield_expr go to state 229 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 230 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 78 +state 79 - 75 unticked_statement: ';' . + 76 unticked_statement: ';' . - $default reduce using rule 75 (unticked_statement) + $default reduce using rule 76 (unticked_statement) -state 79 +state 80 35 unticked_statement: '{' . inner_statement_list '}' $default reduce using rule 28 (inner_statement_list) - inner_statement_list go to state 218 + inner_statement_list go to state 231 -state 80 +state 81 - 461 compound_variable: '$' . '{' expr '}' - 472 simple_indirect_reference: '$' . + 483 compound_variable: '$' . '{' expr '}' + 494 simple_indirect_reference: '$' . - '{' shift, and go to state 219 + '{' shift, and go to state 232 - $default reduce using rule 472 (simple_indirect_reference) + $default reduce using rule 494 (simple_indirect_reference) -state 81 +state 82 - 330 expr_without_variable: '`' . backticks_expr '`' + 340 expr_without_variable: '`' . backticks_expr '`' - "variable (T_VARIABLE)" shift, and go to state 205 - "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 220 - "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 208 - "{$ (T_CURLY_OPEN)" shift, and go to state 209 + "variable (T_VARIABLE)" shift, and go to state 217 + "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 233 + "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 220 + "{$ (T_CURLY_OPEN)" shift, and go to state 221 - $default reduce using rule 378 (backticks_expr) + $default reduce using rule 398 (backticks_expr) - backticks_expr go to state 221 - encaps_list go to state 222 - encaps_var go to state 211 + backticks_expr go to state 234 + encaps_list go to state 235 + encaps_var go to state 223 -state 82 +state 83 - 412 scalar: '"' . encaps_list '"' + 432 scalar: '"' . encaps_list '"' - "variable (T_VARIABLE)" shift, and go to state 205 - "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 223 - "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 208 - "{$ (T_CURLY_OPEN)" shift, and go to state 209 + "variable (T_VARIABLE)" shift, and go to state 217 + "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 236 + "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 220 + "{$ (T_CURLY_OPEN)" shift, and go to state 221 - encaps_list go to state 224 - encaps_var go to state 211 + encaps_list go to state 237 + encaps_var go to state 223 -state 83 +state 84 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 344 function_call: namespace_name . '(' @55 function_call_parameter_list ')' - 360 class_name: namespace_name . - 408 scalar: namespace_name . + 364 function_call: namespace_name . @58 function_call_parameter_list + 380 class_name: namespace_name . + 428 scalar: namespace_name . - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 - '(' shift, and go to state 226 + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 - ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 360 (class_name) - $default reduce using rule 408 (scalar) + ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 380 (class_name) + '(' reduce using rule 363 (@58) + $default reduce using rule 428 (scalar) + @58 go to state 239 -state 84 - 3 top_statement_list: top_statement_list @1 top_statement . +state 85 + + 3 top_statement_list: top_statement_list $@1 top_statement . $default reduce using rule 3 (top_statement_list) -state 85 +state 86 17 top_statement: constant_declaration . ';' 24 constant_declaration: constant_declaration . ',' "identifier (T_STRING)" '=' static_scalar - ',' shift, and go to state 227 - ';' shift, and go to state 228 + ',' shift, and go to state 240 + ';' shift, and go to state 241 -state 86 +state 87 7 top_statement: statement . $default reduce using rule 7 (top_statement) -state 87 +state 88 33 statement: unticked_statement . $default reduce using rule 33 (statement) -state 88 +state 89 8 top_statement: function_declaration_statement . $default reduce using rule 8 (top_statement) -state 89 +state 90 9 top_statement: class_declaration_statement . $default reduce using rule 9 (top_statement) -state 90 - - 94 function_declaration_statement: unticked_function_declaration_statement . - - $default reduce using rule 94 (function_declaration_statement) - - state 91 - 95 class_declaration_statement: unticked_class_declaration_statement . + 101 function_declaration_statement: unticked_function_declaration_statement . - $default reduce using rule 95 (class_declaration_statement) + $default reduce using rule 101 (function_declaration_statement) state 92 - 101 unticked_class_declaration_statement: class_entry_type . "identifier (T_STRING)" extends_from @30 implements_list '{' class_statement_list '}' + 102 class_declaration_statement: unticked_class_declaration_statement . - "identifier (T_STRING)" shift, and go to state 229 + $default reduce using rule 102 (class_declaration_statement) state 93 - 103 unticked_class_declaration_statement: interface_entry . "identifier (T_STRING)" @31 interface_extends_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 230 + "identifier (T_STRING)" shift, and go to state 242 state 94 - 308 expr_without_variable: new_expr . + 110 unticked_class_declaration_statement: interface_entry . "identifier (T_STRING)" $@33 interface_extends_list '{' class_statement_list '}' - $default reduce using rule 308 (expr_without_variable) + "identifier (T_STRING)" shift, and go to state 243 state 95 - 424 expr: expr_without_variable . + 318 expr_without_variable: new_expr . - $default reduce using rule 424 (expr) + $default reduce using rule 318 (expr_without_variable) state 96 - 99 unticked_function_declaration_statement: function . is_reference "identifier (T_STRING)" @29 '(' parameter_list ')' '{' inner_statement_list '}' - 333 expr_without_variable: function . is_reference '(' @53 parameter_list ')' lexical_vars '{' inner_statement_list '}' - - '&' shift, and go to state 231 + 444 expr: expr_without_variable . - $default reduce using rule 96 (is_reference) - - is_reference go to state 232 + $default reduce using rule 444 (expr) state 97 - 450 array_function_dereference: function_call . @69 '[' dim_offset ']' - 453 base_variable_with_function_calls: function_call . - - '[' reduce using rule 449 (@69) - $default reduce using rule 453 (base_variable_with_function_calls) + 61 unticked_statement: yield_expr . ';' - @69 go to state 233 + ';' shift, and go to state 244 state 98 - 350 function_call: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @58 function_call_parameter_list ')' - 352 | class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @59 function_call_parameter_list ')' - 445 static_member: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects - 514 class_constant: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" + 338 expr_without_variable: combined_scalar_offset . + 352 combined_scalar_offset: combined_scalar_offset . '[' dim_offset ']' - ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 234 + '[' shift, and go to state 245 + + $default reduce using rule 338 (expr_without_variable) state 99 - 411 scalar: common_scalar . + 339 expr_without_variable: combined_scalar . + 351 combined_scalar_offset: combined_scalar . '[' dim_offset ']' + + '[' shift, and go to state 246 - $default reduce using rule 411 (scalar) + $default reduce using rule 339 (expr_without_variable) state 100 - 327 expr_without_variable: scalar . + 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 '}' - $default reduce using rule 327 (expr_without_variable) + '&' shift, and go to state 247 + + $default reduce using rule 103 (is_reference) + + is_reference go to state 248 state 101 - 65 unticked_statement: expr . ';' - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ';' shift, and go to state 261 + 472 array_function_dereference: function_call . $@72 '[' dim_offset ']' + 475 base_variable_with_function_calls: function_call . + + '[' reduce using rule 471 ($@72) + $default reduce using rule 475 (base_variable_with_function_calls) + + $@72 go to state 249 state 102 - 423 expr: r_variable . + 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 + 467 static_member: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects + 539 class_constant: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" - $default reduce using rule 423 (expr) + ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 250 state 103 - 270 expr_without_variable: rw_variable . "++ (T_INC)" - 272 | rw_variable . "-- (T_DEC)" + 431 scalar: common_scalar . - "-- (T_DEC)" shift, and go to state 262 - "++ (T_INC)" shift, and go to state 263 + $default reduce using rule 431 (scalar) state 104 - 254 expr_without_variable: variable . '=' expr - 255 | variable . '=' '&' variable - 257 | variable . '=' '&' "new (T_NEW)" class_name_reference @43 ctor_arguments - 259 | variable . "+= (T_PLUS_EQUAL)" expr - 260 | variable . "-= (T_MINUS_EQUAL)" expr - 261 | variable . "*= (T_MUL_EQUAL)" expr - 262 | variable . "/= (T_DIV_EQUAL)" expr - 263 | variable . ".= (T_CONCAT_EQUAL)" expr - 264 | variable . "%= (T_MOD_EQUAL)" expr - 265 | variable . "&= (T_AND_EQUAL)" expr - 266 | variable . "|= (T_OR_EQUAL)" expr - 267 | variable . "^= (T_XOR_EQUAL)" expr - 268 | variable . "<<= (T_SL_EQUAL)" expr - 269 | variable . ">>= (T_SR_EQUAL)" expr - 425 r_variable: variable . - 427 rw_variable: variable . - - '=' shift, and go to state 264 - ">>= (T_SR_EQUAL)" shift, and go to state 265 - "<<= (T_SL_EQUAL)" shift, and go to state 266 - "^= (T_XOR_EQUAL)" shift, and go to state 267 - "|= (T_OR_EQUAL)" shift, and go to state 268 - "&= (T_AND_EQUAL)" shift, and go to state 269 - "%= (T_MOD_EQUAL)" shift, and go to state 270 - ".= (T_CONCAT_EQUAL)" shift, and go to state 271 - "/= (T_DIV_EQUAL)" shift, and go to state 272 - "*= (T_MUL_EQUAL)" shift, and go to state 273 - "-= (T_MINUS_EQUAL)" shift, and go to state 274 - "+= (T_PLUS_EQUAL)" shift, and go to state 275 - - "-- (T_DEC)" reduce using rule 427 (rw_variable) - "++ (T_INC)" reduce using rule 427 (rw_variable) - $default reduce using rule 425 (r_variable) + 337 expr_without_variable: scalar . + $default reduce using rule 337 (expr_without_variable) -state 105 - 358 function_call: variable_without_objects . '(' @62 function_call_parameter_list ')' +state 105 - '(' shift, and go to state 276 + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + ';' shift, and go to state 277 state 106 - 456 base_variable: static_member . + 317 expr_without_variable: parenthesis_expr . - $default reduce using rule 456 (base_variable) + $default reduce using rule 317 (expr_without_variable) state 107 - 354 function_call: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @60 function_call_parameter_list ')' - 356 | variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @61 function_call_parameter_list ')' - 446 static_member: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects - 515 class_constant: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" + 443 expr: r_variable . - ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 277 + $default reduce using rule 443 (expr) state 108 - 448 array_function_dereference: array_function_dereference . '[' dim_offset ']' - 452 base_variable_with_function_calls: array_function_dereference . + 280 expr_without_variable: rw_variable . "++ (T_INC)" + 282 | rw_variable . "-- (T_DEC)" - '[' shift, and go to state 278 - - $default reduce using rule 452 (base_variable_with_function_calls) + "-- (T_DEC)" shift, and go to state 278 + "++ (T_INC)" shift, and go to state 279 state 109 - 430 variable: base_variable_with_function_calls . "-> (T_OBJECT_OPERATOR)" @65 object_property @66 method_or_not variable_properties - 431 | base_variable_with_function_calls . - - "-> (T_OBJECT_OPERATOR)" shift, and go to state 279 - - $default reduce using rule 431 (variable) + 264 expr_without_variable: variable . '=' expr + 265 | variable . '=' '&' variable + 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 + 272 | variable . "/= (T_DIV_EQUAL)" expr + 273 | variable . ".= (T_CONCAT_EQUAL)" expr + 274 | variable . "%= (T_MOD_EQUAL)" expr + 275 | variable . "&= (T_AND_EQUAL)" expr + 276 | variable . "|= (T_OR_EQUAL)" expr + 277 | variable . "^= (T_XOR_EQUAL)" expr + 278 | variable . "<<= (T_SL_EQUAL)" expr + 279 | variable . ">>= (T_SR_EQUAL)" expr + 447 r_variable: variable . + 449 rw_variable: variable . + + '=' shift, and go to state 280 + ">>= (T_SR_EQUAL)" shift, and go to state 281 + "<<= (T_SL_EQUAL)" shift, and go to state 282 + "^= (T_XOR_EQUAL)" shift, and go to state 283 + "|= (T_OR_EQUAL)" shift, and go to state 284 + "&= (T_AND_EQUAL)" shift, and go to state 285 + "%= (T_MOD_EQUAL)" shift, and go to state 286 + ".= (T_CONCAT_EQUAL)" shift, and go to state 287 + "/= (T_DIV_EQUAL)" shift, and go to state 288 + "*= (T_MUL_EQUAL)" shift, and go to state 289 + "-= (T_MINUS_EQUAL)" shift, and go to state 290 + "+= (T_PLUS_EQUAL)" shift, and go to state 291 + + "-- (T_DEC)" reduce using rule 449 (rw_variable) + "++ (T_INC)" reduce using rule 449 (rw_variable) + $default reduce using rule 447 (r_variable) state 110 - 451 base_variable_with_function_calls: base_variable . + 378 function_call: variable_without_objects . $@65 function_call_parameter_list - $default reduce using rule 451 (base_variable_with_function_calls) + $default reduce using rule 377 ($@65) + $@65 go to state 292 -state 111 - 443 variable_without_objects: reference_variable . - 447 variable_class_name: reference_variable . - 454 base_variable: reference_variable . - 457 reference_variable: reference_variable . '[' dim_offset ']' - 458 | reference_variable . '{' expr '}' +state 111 - '[' shift, and go to state 280 - '{' shift, and go to state 281 + 478 base_variable: static_member . - ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 447 (variable_class_name) - '(' reduce using rule 443 (variable_without_objects) - $default reduce using rule 454 (base_variable) + $default reduce using rule 478 (base_variable) state 112 - 459 reference_variable: compound_variable . + 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 + 468 static_member: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects + 540 class_constant: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" - $default reduce using rule 459 (reference_variable) + ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 293 state 113 - 444 variable_without_objects: simple_indirect_reference . reference_variable - 455 base_variable: simple_indirect_reference . reference_variable - 473 simple_indirect_reference: simple_indirect_reference . '$' + 470 array_function_dereference: array_function_dereference . '[' dim_offset ']' + 474 base_variable_with_function_calls: array_function_dereference . - "variable (T_VARIABLE)" shift, and go to state 34 - '$' shift, and go to state 282 + '[' shift, and go to state 294 - reference_variable go to state 283 - compound_variable go to state 112 + $default reduce using rule 474 (base_variable_with_function_calls) state 114 - 316 expr_without_variable: internal_functions_in_yacc . + 452 variable: base_variable_with_function_calls . "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not variable_properties + 453 | base_variable_with_function_calls . - $default reduce using rule 316 (expr_without_variable) + "-> (T_OBJECT_OPERATOR)" shift, and go to state 295 + + $default reduce using rule 453 (variable) state 115 - 407 scalar: class_constant . + 473 base_variable_with_function_calls: base_variable . - $default reduce using rule 407 (scalar) + $default reduce using rule 473 (base_variable_with_function_calls) state 116 - 5 namespace_name: "identifier (T_STRING)" . - - $default reduce using rule 5 (namespace_name) + 465 variable_without_objects: reference_variable . + 469 variable_class_name: reference_variable . + 476 base_variable: reference_variable . + 479 reference_variable: reference_variable . '[' dim_offset ']' + 480 | reference_variable . '{' expr '}' + '[' shift, and go to state 296 + '{' shift, and go to state 297 -state 117 + ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 469 (variable_class_name) + '(' reduce using rule 465 (variable_without_objects) + $default reduce using rule 476 (base_variable) - 335 expr_without_variable: "static (T_STATIC)" . function is_reference '(' @54 parameter_list ')' lexical_vars '{' inner_statement_list '}' - 359 class_name: "static (T_STATIC)" . - "function (T_FUNCTION)" shift, and go to state 47 +state 117 - $default reduce using rule 359 (class_name) + 481 reference_variable: compound_variable . - function go to state 198 + $default reduce using rule 481 (reference_variable) state 118 - 346 function_call: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name '(' @56 function_call_parameter_list ')' - 361 class_name: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name - 409 scalar: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name + 466 variable_without_objects: simple_indirect_reference . reference_variable + 477 base_variable: simple_indirect_reference . reference_variable + 495 simple_indirect_reference: simple_indirect_reference . '$' - "\\ (T_NS_SEPARATOR)" shift, and go to state 212 + "variable (T_VARIABLE)" shift, and go to state 35 + '$' shift, and go to state 298 + reference_variable go to state 299 + compound_variable go to state 117 -state 119 - - 333 expr_without_variable: function . is_reference '(' @53 parameter_list ')' lexical_vars '{' inner_statement_list '}' - '&' shift, and go to state 231 +state 119 - $default reduce using rule 96 (is_reference) + 326 expr_without_variable: internal_functions_in_yacc . - is_reference go to state 284 + $default reduce using rule 326 (expr_without_variable) state 120 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 510 internal_functions_in_yacc: "require_once (T_REQUIRE_ONCE)" expr . - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 510 (internal_functions_in_yacc) + 427 scalar: class_constant . + + $default reduce using rule 427 (scalar) state 121 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 509 internal_functions_in_yacc: "require (T_REQUIRE)" expr . - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 509 (internal_functions_in_yacc) + 342 expr_without_variable: "yield (T_YIELD)" . + + $default reduce using rule 342 (expr_without_variable) state 122 - 508 internal_functions_in_yacc: "eval (T_EVAL)" '(' . expr ')' + 5 namespace_name: "identifier (T_STRING)" . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 285 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 5 (namespace_name) state 123 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 507 internal_functions_in_yacc: "include_once (T_INCLUDE_ONCE)" expr . - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 507 (internal_functions_in_yacc) + 346 expr_without_variable: "static (T_STATIC)" . function is_reference @57 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' + 379 class_name: "static (T_STATIC)" . + + "function (T_FUNCTION)" shift, and go to state 48 + + $default reduce using rule 379 (class_name) + + function go to state 210 state 124 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 506 internal_functions_in_yacc: "include (T_INCLUDE)" expr . - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 506 (internal_functions_in_yacc) + 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 + 429 scalar: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name + + "\\ (T_NS_SEPARATOR)" shift, and go to state 224 state 125 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 331 | "print (T_PRINT)" expr . - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 344 expr_without_variable: function . is_reference @56 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' - $default reduce using rule 331 (expr_without_variable) + '&' shift, and go to state 247 + $default reduce using rule 103 (is_reference) -state 126 + is_reference go to state 300 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 294 | '+' expr . - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - $default reduce using rule 294 (expr_without_variable) +state 126 + + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 533 internal_functions_in_yacc: "require_once (T_REQUIRE_ONCE)" expr . + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 533 (internal_functions_in_yacc) state 127 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 295 | '-' expr . - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - $default reduce using rule 295 (expr_without_variable) + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 532 internal_functions_in_yacc: "require (T_REQUIRE)" expr . + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 532 (internal_functions_in_yacc) state 128 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 296 | '!' expr . - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 531 internal_functions_in_yacc: "eval (T_EVAL)" '(' . expr ')' - $default reduce using rule 296 (expr_without_variable) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 301 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 129 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 297 | '~' expr . - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - $default reduce using rule 297 (expr_without_variable) + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 530 internal_functions_in_yacc: "include_once (T_INCLUDE_ONCE)" expr . + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 530 (internal_functions_in_yacc) state 130 - 326 expr_without_variable: '@' @52 . expr - - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 286 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 529 internal_functions_in_yacc: "include (T_INCLUDE)" expr . + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 529 (internal_functions_in_yacc) state 131 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 323 | "(unset) (T_UNSET_CAST)" expr . - - $default reduce using rule 323 (expr_without_variable) + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 341 | "print (T_PRINT)" expr . + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 341 (expr_without_variable) state 132 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 322 | "(bool) (T_BOOL_CAST)" expr . - - $default reduce using rule 322 (expr_without_variable) + 347 yield_expr: "yield (T_YIELD)" expr_without_variable . + 444 expr: expr_without_variable . + + ')' reduce using rule 347 (yield_expr) + ';' reduce using rule 347 (yield_expr) + $default reduce using rule 444 (expr) state 133 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 321 | "(object) (T_OBJECT_CAST)" expr . - - $default reduce using rule 321 (expr_without_variable) + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 349 yield_expr: "yield (T_YIELD)" expr . "=> (T_DOUBLE_ARROW)" expr_without_variable + 350 | "yield (T_YIELD)" expr . "=> (T_DOUBLE_ARROW)" variable + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + "=> (T_DOUBLE_ARROW)" shift, and go to state 302 state 134 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 320 | "(array) (T_ARRAY_CAST)" expr . - - $default reduce using rule 320 (expr_without_variable) + 264 expr_without_variable: variable . '=' expr + 265 | variable . '=' '&' variable + 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 + 272 | variable . "/= (T_DIV_EQUAL)" expr + 273 | variable . ".= (T_CONCAT_EQUAL)" expr + 274 | variable . "%= (T_MOD_EQUAL)" expr + 275 | variable . "&= (T_AND_EQUAL)" expr + 276 | variable . "|= (T_OR_EQUAL)" expr + 277 | variable . "^= (T_XOR_EQUAL)" expr + 278 | variable . "<<= (T_SL_EQUAL)" expr + 279 | variable . ">>= (T_SR_EQUAL)" expr + 348 yield_expr: "yield (T_YIELD)" variable . + 447 r_variable: variable . + 449 rw_variable: variable . + + '=' shift, and go to state 280 + ">>= (T_SR_EQUAL)" shift, and go to state 281 + "<<= (T_SL_EQUAL)" shift, and go to state 282 + "^= (T_XOR_EQUAL)" shift, and go to state 283 + "|= (T_OR_EQUAL)" shift, and go to state 284 + "&= (T_AND_EQUAL)" shift, and go to state 285 + "%= (T_MOD_EQUAL)" shift, and go to state 286 + ".= (T_CONCAT_EQUAL)" shift, and go to state 287 + "/= (T_DIV_EQUAL)" shift, and go to state 288 + "*= (T_MUL_EQUAL)" shift, and go to state 289 + "-= (T_MINUS_EQUAL)" shift, and go to state 290 + "+= (T_PLUS_EQUAL)" shift, and go to state 291 + + "-- (T_DEC)" reduce using rule 449 (rw_variable) + "++ (T_INC)" reduce using rule 449 (rw_variable) + ')' reduce using rule 348 (yield_expr) + ';' reduce using rule 348 (yield_expr) + $default reduce using rule 447 (r_variable) state 135 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 319 | "(string) (T_STRING_CAST)" expr . - - $default reduce using rule 319 (expr_without_variable) + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 304 | '+' expr . + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + $default reduce using rule 304 (expr_without_variable) state 136 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 318 | "(double) (T_DOUBLE_CAST)" 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 305 | '-' expr . + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 - $default reduce using rule 318 (expr_without_variable) + $default reduce using rule 305 (expr_without_variable) state 137 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 317 | "(int) (T_INT_CAST)" 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 306 | '!' expr . + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 317 (expr_without_variable) + $default reduce using rule 306 (expr_without_variable) state 138 - 359 class_name: "static (T_STATIC)" . + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 307 | '~' expr . + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 - $default reduce using rule 359 (class_name) + $default reduce using rule 307 (expr_without_variable) state 139 - 346 function_call: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name '(' @56 function_call_parameter_list ')' - 361 class_name: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name + 336 expr_without_variable: '@' $@55 . expr - "\\ (T_NS_SEPARATOR)" shift, and go to state 287 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 303 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 140 - 348 function_call: "\\ (T_NS_SEPARATOR)" . namespace_name '(' @57 function_call_parameter_list ')' - 362 class_name: "\\ (T_NS_SEPARATOR)" . namespace_name + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 333 | "(unset) (T_UNSET_CAST)" expr . - "identifier (T_STRING)" shift, and go to state 116 - - namespace_name go to state 288 + $default reduce using rule 333 (expr_without_variable) state 141 - 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 344 function_call: namespace_name . '(' @55 function_call_parameter_list ')' - 360 class_name: namespace_name . - - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 - '(' shift, and go to state 226 - - $default reduce using rule 360 (class_name) + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 332 | "(bool) (T_BOOL_CAST)" expr . + + $default reduce using rule 332 (expr_without_variable) state 142 - 350 function_call: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @58 function_call_parameter_list ')' - 352 | class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @59 function_call_parameter_list ')' - 445 static_member: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 331 | "(object) (T_OBJECT_CAST)" expr . - ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 289 + $default reduce using rule 331 (expr_without_variable) state 143 - 273 expr_without_variable: "-- (T_DEC)" rw_variable . + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 330 | "(array) (T_ARRAY_CAST)" expr . - $default reduce using rule 273 (expr_without_variable) + $default reduce using rule 330 (expr_without_variable) state 144 - 427 rw_variable: variable . + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 329 | "(string) (T_STRING_CAST)" expr . - $default reduce using rule 427 (rw_variable) + $default reduce using rule 329 (expr_without_variable) state 145 - 354 function_call: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @60 function_call_parameter_list ')' - 356 | variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @61 function_call_parameter_list ')' - 446 static_member: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 328 | "(double) (T_DOUBLE_CAST)" expr . - ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 290 + $default reduce using rule 328 (expr_without_variable) state 146 - 271 expr_without_variable: "++ (T_INC)" rw_variable . + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 327 | "(int) (T_INT_CAST)" expr . - $default reduce using rule 271 (expr_without_variable) + $default reduce using rule 327 (expr_without_variable) state 147 - 489 non_empty_array_pair_list: '&' . w_variable - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - w_variable go to state 291 - variable go to state 292 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 379 class_name: "static (T_STATIC)" . + + $default reduce using rule 379 (class_name) state 148 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 484 non_empty_array_pair_list: expr . "=> (T_DOUBLE_ARROW)" expr - 485 | expr . - 488 | expr . "=> (T_DOUBLE_ARROW)" '&' w_variable - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - "=> (T_DOUBLE_ARROW)" shift, and go to state 293 - - $default reduce using rule 485 (non_empty_array_pair_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 + + "\\ (T_NS_SEPARATOR)" shift, and go to state 304 state 149 - 329 expr_without_variable: '[' array_pair_list . ']' + 368 function_call: "\\ (T_NS_SEPARATOR)" . namespace_name @60 function_call_parameter_list + 382 class_name: "\\ (T_NS_SEPARATOR)" . namespace_name + + "identifier (T_STRING)" shift, and go to state 122 - ']' shift, and go to state 294 + namespace_name go to state 305 state 150 - 481 array_pair_list: non_empty_array_pair_list . possible_comma - 482 non_empty_array_pair_list: non_empty_array_pair_list . ',' expr "=> (T_DOUBLE_ARROW)" expr - 483 | non_empty_array_pair_list . ',' expr - 486 | non_empty_array_pair_list . ',' expr "=> (T_DOUBLE_ARROW)" '&' w_variable - 487 | non_empty_array_pair_list . ',' '&' w_variable + 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" + 364 function_call: namespace_name . @58 function_call_parameter_list + 380 class_name: namespace_name . - ',' shift, and go to state 295 + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 - $default reduce using rule 417 (possible_comma) + ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 380 (class_name) + $default reduce using rule 363 (@58) - possible_comma go to state 296 + @58 go to state 239 state 151 - 258 expr_without_variable: "clone (T_CLONE)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - $default reduce using rule 258 (expr_without_variable) + 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 + 467 static_member: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects + + ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 306 state 152 - 361 class_name: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name + 283 expr_without_variable: "-- (T_DEC)" rw_variable . - "\\ (T_NS_SEPARATOR)" shift, and go to state 297 + $default reduce using rule 283 (expr_without_variable) state 153 - 362 class_name: "\\ (T_NS_SEPARATOR)" . namespace_name - - "identifier (T_STRING)" shift, and go to state 116 + 449 rw_variable: variable . - namespace_name go to state 298 + $default reduce using rule 449 (rw_variable) state 154 - 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 360 class_name: namespace_name . - - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 + 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 + 468 static_member: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects - $default reduce using rule 360 (class_name) + ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 307 state 155 - 366 class_name_reference: class_name . - 445 static_member: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects + 281 expr_without_variable: "++ (T_INC)" rw_variable . - ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 299 - - $default reduce using rule 366 (class_name_reference) + $default reduce using rule 281 (expr_without_variable) state 156 - 251 new_expr: "new (T_NEW)" class_name_reference . @41 ctor_arguments - - $default reduce using rule 250 (@41) - - @41 go to state 300 + 511 non_empty_array_pair_list: '&' . w_variable + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + w_variable go to state 308 + variable go to state 309 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 157 - 367 class_name_reference: dynamic_class_name_reference . - - $default reduce using rule 367 (class_name_reference) + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 506 non_empty_array_pair_list: expr . "=> (T_DOUBLE_ARROW)" expr + 507 | expr . + 510 | expr . "=> (T_DOUBLE_ARROW)" '&' w_variable + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + "=> (T_DOUBLE_ARROW)" shift, and go to state 310 + + $default reduce using rule 507 (non_empty_array_pair_list) state 158 - 446 static_member: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects + 355 combined_scalar: '[' array_pair_list . ']' - ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 301 + ']' shift, and go to state 311 state 159 - 370 dynamic_class_name_reference: base_variable . "-> (T_OBJECT_OPERATOR)" @63 object_property @64 dynamic_class_name_variable_properties - 371 | base_variable . + 503 array_pair_list: non_empty_array_pair_list . possible_comma + 504 non_empty_array_pair_list: non_empty_array_pair_list . ',' expr "=> (T_DOUBLE_ARROW)" expr + 505 | non_empty_array_pair_list . ',' expr + 508 | non_empty_array_pair_list . ',' expr "=> (T_DOUBLE_ARROW)" '&' w_variable + 509 | non_empty_array_pair_list . ',' '&' w_variable - "-> (T_OBJECT_OPERATOR)" shift, and go to state 302 + ',' shift, and go to state 312 - $default reduce using rule 371 (dynamic_class_name_reference) + $default reduce using rule 437 (possible_comma) + possible_comma go to state 313 -state 160 - 447 variable_class_name: reference_variable . - 454 base_variable: reference_variable . - 457 reference_variable: reference_variable . '[' dim_offset ']' - 458 | reference_variable . '{' expr '}' +state 160 - '[' shift, and go to state 280 - '{' shift, and go to state 281 + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 - ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 447 (variable_class_name) - $default reduce using rule 454 (base_variable) + $default reduce using rule 268 (expr_without_variable) state 161 - 455 base_variable: simple_indirect_reference . reference_variable - 473 simple_indirect_reference: simple_indirect_reference . '$' + 381 class_name: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name - "variable (T_VARIABLE)" shift, and go to state 34 - '$' shift, and go to state 282 - - reference_variable go to state 303 - compound_variable go to state 112 + "\\ (T_NS_SEPARATOR)" shift, and go to state 314 state 162 - 376 exit_expr: '(' . ')' - 377 | '(' . expr ')' + 382 class_name: "\\ (T_NS_SEPARATOR)" . namespace_name + + "identifier (T_STRING)" shift, and go to state 122 + + namespace_name go to state 315 + + +state 163 + + 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" + 380 class_name: namespace_name . + + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 + + $default reduce using rule 380 (class_name) + + +state 164 + + 386 class_name_reference: class_name . + 467 static_member: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects + + ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 316 + + $default reduce using rule 386 (class_name_reference) + + +state 165 + + 261 new_expr: "new (T_NEW)" class_name_reference . $@44 ctor_arguments + + $default reduce using rule 260 ($@44) + + $@44 go to state 317 + + +state 166 + + 387 class_name_reference: dynamic_class_name_reference . + + $default reduce using rule 387 (class_name_reference) + + +state 167 + + 468 static_member: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects + + ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 318 + + +state 168 + + 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 319 + + $default reduce using rule 391 (dynamic_class_name_reference) + + +state 169 + + 469 variable_class_name: reference_variable . + 476 base_variable: reference_variable . + 479 reference_variable: reference_variable . '[' dim_offset ']' + 480 | reference_variable . '{' expr '}' + + '[' shift, and go to state 296 + '{' shift, and go to state 297 + + ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 469 (variable_class_name) + $default reduce using rule 476 (base_variable) + + +state 170 + + 477 base_variable: simple_indirect_reference . reference_variable + 495 simple_indirect_reference: simple_indirect_reference . '$' + + "variable (T_VARIABLE)" shift, and go to state 35 + '$' shift, and go to state 298 + + reference_variable go to state 320 + compound_variable go to state 117 + + +state 171 + + 396 exit_expr: '(' . ')' + 445 parenthesis_expr: '(' . expr ')' + 446 | '(' . yield_expr ')' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -5587,89 +6020,101 @@ state 162 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ')' shift, and go to state 304 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 305 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 11 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ')' shift, and go to state 321 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 229 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 230 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 163 +state 172 - 324 expr_without_variable: "exit (T_EXIT)" exit_expr . + 334 expr_without_variable: "exit (T_EXIT)" exit_expr . - $default reduce using rule 324 (expr_without_variable) + $default reduce using rule 334 (expr_without_variable) -state 164 +state 173 + + 397 exit_expr: parenthesis_expr . + + $default reduce using rule 397 (exit_expr) - 38 unticked_statement: "if (T_IF)" '(' . expr ')' @5 statement @6 elseif_list else_single - 41 | "if (T_IF)" '(' . expr ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' + +state 174 + + 445 parenthesis_expr: '(' . expr ')' + 446 | '(' . yield_expr ')' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -5677,157 +6122,262 @@ state 164 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 306 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 11 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 229 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 230 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 165 +state 175 + + 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 322 + + $default reduce using rule 36 ($@5) + + $@5 go to state 323 + + +state 176 34 statement: "identifier (T_STRING)" ':' . $default reduce using rule 34 (statement) -state 166 +state 177 - 63 unticked_statement: "echo (T_ECHO)" echo_expr_list . ';' - 232 echo_expr_list: echo_expr_list . ',' expr + 353 combined_scalar_offset: "quoted-string (T_CONSTANT_ENCAPSED_STRING)" '[' . dim_offset ']' - ',' shift, and go to state 307 - ';' shift, and go to state 308 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 484 (dim_offset) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 324 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + dim_offset go to state 325 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 167 +state 178 - 233 echo_expr_list: expr . - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 233 (echo_expr_list) + 64 unticked_statement: "echo (T_ECHO)" echo_expr_list . ';' + 242 echo_expr_list: echo_expr_list . ',' expr + ',' shift, and go to state 326 + ';' shift, and go to state 327 -state 168 - 47 unticked_statement: "do (T_DO)" @11 . statement "while (T_WHILE)" '(' @12 expr ')' ';' +state 179 + + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 243 (echo_expr_list) + + +state 180 + + 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 @@ -5835,110 +6385,115 @@ state 168 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "if (T_IF)" shift, and go to state 29 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 32 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - T_INLINE_HTML shift, and go to state 35 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "echo (T_ECHO)" shift, and go to state 37 - "do (T_DO)" shift, and go to state 38 - "while (T_WHILE)" shift, and go to state 39 - "for (T_FOR)" shift, and go to state 40 - "foreach (T_FOREACH)" shift, and go to state 41 - "declare (T_DECLARE)" shift, and go to state 42 - "switch (T_SWITCH)" shift, and go to state 43 - "break (T_BREAK)" shift, and go to state 44 - "continue (T_CONTINUE)" shift, and go to state 45 - "goto (T_GOTO)" shift, and go to state 46 - "function (T_FUNCTION)" shift, and go to state 47 - "return (T_RETURN)" shift, and go to state 49 - "try (T_TRY)" shift, and go to state 50 - "throw (T_THROW)" shift, and go to state 51 - "global (T_GLOBAL)" shift, and go to state 53 - "static (T_STATIC)" shift, and go to state 56 - "unset (T_UNSET)" shift, and go to state 57 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 78 - '{' shift, and go to state 79 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - statement go to state 309 - unticked_statement go to state 87 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 101 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 11 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "if (T_IF)" shift, and go to state 30 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 33 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + T_INLINE_HTML shift, and go to state 36 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "echo (T_ECHO)" shift, and go to state 38 + "do (T_DO)" shift, and go to state 39 + "while (T_WHILE)" shift, and go to state 40 + "for (T_FOR)" shift, and go to state 41 + "foreach (T_FOREACH)" shift, and go to state 42 + "declare (T_DECLARE)" shift, and go to state 43 + "switch (T_SWITCH)" shift, and go to state 44 + "break (T_BREAK)" shift, and go to state 45 + "continue (T_CONTINUE)" shift, and go to state 46 + "goto (T_GOTO)" shift, and go to state 47 + "function (T_FUNCTION)" shift, and go to state 48 + "return (T_RETURN)" shift, and go to state 50 + "try (T_TRY)" shift, and go to state 51 + "throw (T_THROW)" shift, and go to state 52 + "global (T_GLOBAL)" shift, and go to state 54 + "static (T_STATIC)" shift, and go to state 57 + "unset (T_UNSET)" shift, and go to state 58 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 79 + '{' shift, and go to state 80 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + statement go to state 328 + unticked_statement go to state 88 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 97 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 105 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 169 +state 181 - 44 unticked_statement: "while (T_WHILE)" '(' . @9 expr ')' @10 while_statement + 44 unticked_statement: "while (T_WHILE)" $@9 . parenthesis_expr @10 while_statement - $default reduce using rule 42 (@9) + '(' shift, and go to state 174 - @9 go to state 310 + parenthesis_expr go to state 329 -state 170 +state 182 - 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 @@ -5946,85 +6501,89 @@ state 170 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 234 (for_expr) - - namespace_name go to state 83 - for_expr go to state 311 - non_empty_for_expr go to state 312 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 313 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 244 (for_expr) + + namespace_name go to state 84 + for_expr go to state 330 + non_empty_for_expr go to state 331 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 332 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 171 +state 183 - 69 unticked_statement: "foreach (T_FOREACH)" '(' . variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement - 72 | "foreach (T_FOREACH)" '(' . expr_without_variable "as (T_AS)" @19 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 @@ -6032,729 +6591,781 @@ state 171 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 314 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 315 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 333 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 194 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 334 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 172 +state 184 - 74 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 316 + '(' shift, and go to state 335 -state 173 +state 185 - 53 unticked_statement: "switch (T_SWITCH)" '(' . expr ')' @16 switch_case_list + 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr . $@16 switch_case_list - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 317 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 52 ($@16) + $@16 go to state 336 -state 174 + +state 186 54 unticked_statement: "break (T_BREAK)" ';' . $default reduce using rule 54 (unticked_statement) -state 175 +state 187 55 unticked_statement: "break (T_BREAK)" expr . ';' - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ';' shift, and go to state 318 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + ';' shift, and go to state 337 -state 176 +state 188 56 unticked_statement: "continue (T_CONTINUE)" ';' . $default reduce using rule 56 (unticked_statement) -state 177 +state 189 57 unticked_statement: "continue (T_CONTINUE)" expr . ';' - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ';' shift, and go to state 319 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + ';' shift, and go to state 338 -state 178 +state 190 - 83 unticked_statement: "goto (T_GOTO)" "identifier (T_STRING)" . ';' + 81 unticked_statement: "goto (T_GOTO)" "identifier (T_STRING)" . ';' - ';' shift, and go to state 320 + ';' shift, and go to state 339 -state 179 +state 191 25 constant_declaration: "const (T_CONST)" "identifier (T_STRING)" . '=' static_scalar - '=' shift, and go to state 321 + '=' shift, and go to state 340 -state 180 +state 192 58 unticked_statement: "return (T_RETURN)" ';' . $default reduce using rule 58 (unticked_statement) -state 181 +state 193 59 unticked_statement: "return (T_RETURN)" expr_without_variable . ';' - 424 expr: expr_without_variable . + 444 expr: expr_without_variable . - ';' shift, and go to state 322 + ';' shift, and go to state 341 - $default reduce using rule 424 (expr) + $default reduce using rule 444 (expr) -state 182 +state 194 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 -state 183 +state 195 60 unticked_statement: "return (T_RETURN)" variable . ';' - 254 expr_without_variable: variable . '=' expr - 255 | variable . '=' '&' variable - 257 | variable . '=' '&' "new (T_NEW)" class_name_reference @43 ctor_arguments - 259 | variable . "+= (T_PLUS_EQUAL)" expr - 260 | variable . "-= (T_MINUS_EQUAL)" expr - 261 | variable . "*= (T_MUL_EQUAL)" expr - 262 | variable . "/= (T_DIV_EQUAL)" expr - 263 | variable . ".= (T_CONCAT_EQUAL)" expr - 264 | variable . "%= (T_MOD_EQUAL)" expr - 265 | variable . "&= (T_AND_EQUAL)" expr - 266 | variable . "|= (T_OR_EQUAL)" expr - 267 | variable . "^= (T_XOR_EQUAL)" expr - 268 | variable . "<<= (T_SL_EQUAL)" expr - 269 | variable . ">>= (T_SR_EQUAL)" expr - 425 r_variable: variable . - 427 rw_variable: variable . - - '=' shift, and go to state 264 - ">>= (T_SR_EQUAL)" shift, and go to state 265 - "<<= (T_SL_EQUAL)" shift, and go to state 266 - "^= (T_XOR_EQUAL)" shift, and go to state 267 - "|= (T_OR_EQUAL)" shift, and go to state 268 - "&= (T_AND_EQUAL)" shift, and go to state 269 - "%= (T_MOD_EQUAL)" shift, and go to state 270 - ".= (T_CONCAT_EQUAL)" shift, and go to state 271 - "/= (T_DIV_EQUAL)" shift, and go to state 272 - "*= (T_MUL_EQUAL)" shift, and go to state 273 - "-= (T_MINUS_EQUAL)" shift, and go to state 274 - "+= (T_PLUS_EQUAL)" shift, and go to state 275 - ';' shift, and go to state 323 - - "-- (T_DEC)" reduce using rule 427 (rw_variable) - "++ (T_INC)" reduce using rule 427 (rw_variable) - $default reduce using rule 425 (r_variable) + 264 expr_without_variable: variable . '=' expr + 265 | variable . '=' '&' variable + 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 + 272 | variable . "/= (T_DIV_EQUAL)" expr + 273 | variable . ".= (T_CONCAT_EQUAL)" expr + 274 | variable . "%= (T_MOD_EQUAL)" expr + 275 | variable . "&= (T_AND_EQUAL)" expr + 276 | variable . "|= (T_OR_EQUAL)" expr + 277 | variable . "^= (T_XOR_EQUAL)" expr + 278 | variable . "<<= (T_SL_EQUAL)" expr + 279 | variable . ">>= (T_SR_EQUAL)" expr + 447 r_variable: variable . + 449 rw_variable: variable . + + '=' shift, and go to state 280 + ">>= (T_SR_EQUAL)" shift, and go to state 281 + "<<= (T_SL_EQUAL)" shift, and go to state 282 + "^= (T_XOR_EQUAL)" shift, and go to state 283 + "|= (T_OR_EQUAL)" shift, and go to state 284 + "&= (T_AND_EQUAL)" shift, and go to state 285 + "%= (T_MOD_EQUAL)" shift, and go to state 286 + ".= (T_CONCAT_EQUAL)" shift, and go to state 287 + "/= (T_DIV_EQUAL)" shift, and go to state 288 + "*= (T_MUL_EQUAL)" shift, and go to state 289 + "-= (T_MINUS_EQUAL)" shift, and go to state 290 + "+= (T_PLUS_EQUAL)" shift, and go to state 291 + ';' shift, and go to state 342 + + "-- (T_DEC)" reduce using rule 449 (rw_variable) + "++ (T_INC)" reduce using rule 449 (rw_variable) + $default reduce using rule 447 (r_variable) -state 184 +state 196 - 81 unticked_statement: "try (T_TRY)" @22 . '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches + 79 unticked_statement: "try (T_TRY)" $@22 . '{' inner_statement_list '}' catch_statement $@23 finally_statement - '{' shift, and go to state 324 + '{' shift, and go to state 343 -state 185 +state 197 - 82 unticked_statement: "throw (T_THROW)" expr . ';' - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ';' shift, and go to state 325 + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + ';' shift, and go to state 344 -state 186 +state 198 22 use_declaration: "\\ (T_NS_SEPARATOR)" . namespace_name 23 | "\\ (T_NS_SEPARATOR)" . namespace_name "as (T_AS)" "identifier (T_STRING)" - "identifier (T_STRING)" shift, and go to state 116 + "identifier (T_STRING)" shift, and go to state 122 - namespace_name go to state 326 + namespace_name go to state 345 -state 187 +state 199 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" 20 use_declaration: namespace_name . 21 | namespace_name . "as (T_AS)" "identifier (T_STRING)" - "as (T_AS)" shift, and go to state 327 - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 + "as (T_AS)" shift, and go to state 346 + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 $default reduce using rule 20 (use_declaration) -state 188 +state 200 16 top_statement: "use (T_USE)" use_declarations . ';' 18 use_declarations: use_declarations . ',' use_declaration - ',' shift, and go to state 328 - ';' shift, and go to state 329 + ',' shift, and go to state 347 + ';' shift, and go to state 348 -state 189 +state 201 19 use_declarations: use_declaration . $default reduce using rule 19 (use_declarations) -state 190 +state 202 - 176 global_var: "variable (T_VARIABLE)" . + 186 global_var: "variable (T_VARIABLE)" . - $default reduce using rule 176 (global_var) + $default reduce using rule 186 (global_var) -state 191 +state 203 - 177 global_var: '$' . r_variable - 178 | '$' . '{' expr '}' - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '{' shift, and go to state 330 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - r_variable go to state 331 - variable go to state 332 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 187 global_var: '$' . r_variable + 188 | '$' . '{' expr '}' + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '{' shift, and go to state 349 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + r_variable go to state 350 + variable go to state 351 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 -state 192 +state 204 - 61 unticked_statement: "global (T_GLOBAL)" global_var_list . ';' - 174 global_var_list: global_var_list . ',' global_var + 62 unticked_statement: "global (T_GLOBAL)" global_var_list . ';' + 184 global_var_list: global_var_list . ',' global_var - ',' shift, and go to state 333 - ';' shift, and go to state 334 + ',' shift, and go to state 352 + ';' shift, and go to state 353 -state 193 +state 205 - 175 global_var_list: global_var . + 185 global_var_list: global_var . - $default reduce using rule 175 (global_var_list) + $default reduce using rule 185 (global_var_list) -state 194 +state 206 - 107 class_entry_type: "final (T_FINAL)" "class (T_CLASS)" . + 114 class_entry_type: "final (T_FINAL)" "class (T_CLASS)" . - $default reduce using rule 107 (class_entry_type) + $default reduce using rule 114 (class_entry_type) -state 195 +state 207 - 105 class_entry_type: "abstract (T_ABSTRACT)" "class (T_CLASS)" . + 112 class_entry_type: "abstract (T_ABSTRACT)" "class (T_CLASS)" . - $default reduce using rule 105 (class_entry_type) + $default reduce using rule 112 (class_entry_type) -state 196 +state 208 - 181 static_var_list: "variable (T_VARIABLE)" . - 182 | "variable (T_VARIABLE)" . '=' static_scalar + 191 static_var_list: "variable (T_VARIABLE)" . + 192 | "variable (T_VARIABLE)" . '=' static_scalar - '=' shift, and go to state 335 + '=' shift, and go to state 354 - $default reduce using rule 181 (static_var_list) + $default reduce using rule 191 (static_var_list) -state 197 +state 209 - 62 unticked_statement: "static (T_STATIC)" static_var_list . ';' - 179 static_var_list: static_var_list . ',' "variable (T_VARIABLE)" - 180 | static_var_list . ',' "variable (T_VARIABLE)" '=' static_scalar + 63 unticked_statement: "static (T_STATIC)" static_var_list . ';' + 189 static_var_list: static_var_list . ',' "variable (T_VARIABLE)" + 190 | static_var_list . ',' "variable (T_VARIABLE)" '=' static_scalar - ',' shift, and go to state 336 - ';' shift, and go to state 337 + ',' shift, and go to state 355 + ';' shift, and go to state 356 -state 198 +state 210 - 335 expr_without_variable: "static (T_STATIC)" function . is_reference '(' @54 parameter_list ')' lexical_vars '{' inner_statement_list '}' + 346 expr_without_variable: "static (T_STATIC)" function . is_reference @57 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' - '&' shift, and go to state 231 + '&' shift, and go to state 247 - $default reduce using rule 96 (is_reference) + $default reduce using rule 103 (is_reference) - is_reference go to state 338 + is_reference go to state 357 -state 199 +state 211 - 66 unticked_statement: "unset (T_UNSET)" '(' . unset_variables ')' ';' - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - unset_variables go to state 339 - unset_variable go to state 340 - function_call go to state 97 - class_name go to state 142 - variable go to state 341 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 67 unticked_statement: "unset (T_UNSET)" '(' . unset_variables ')' ';' + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + unset_variables go to state 358 + unset_variable go to state 359 + function_call go to state 101 + class_name go to state 151 + variable go to state 360 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 -state 200 +state 212 - 504 internal_functions_in_yacc: "isset (T_ISSET)" '(' . isset_variables ')' - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - variable go to state 342 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - isset_variables go to state 343 + 526 internal_functions_in_yacc: "isset (T_ISSET)" '(' . isset_variables ')' + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 361 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 194 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 362 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + isset_variables go to state 363 + isset_variable go to state 364 + class_constant go to state 120 -state 201 - 505 internal_functions_in_yacc: "empty (T_EMPTY)" '(' . variable ')' - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - variable go to state 344 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 +state 213 + 527 internal_functions_in_yacc: "empty (T_EMPTY)" '(' . variable ')' + 528 | "empty (T_EMPTY)" '(' . expr_without_variable ')' -state 202 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 365 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 194 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 366 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 + + +state 214 10 top_statement: "__halt_compiler (T_HALT_COMPILER)" '(' . ')' ';' - ')' shift, and go to state 345 + ')' shift, and go to state 367 -state 203 +state 215 - 253 expr_without_variable: "list (T_LIST)" '(' . @42 assignment_list ')' '=' expr + 263 expr_without_variable: "list (T_LIST)" '(' . $@45 assignment_list ')' '=' expr - $default reduce using rule 252 (@42) + $default reduce using rule 262 ($@45) - @42 go to state 346 + $@45 go to state 368 -state 204 +state 216 - 328 expr_without_variable: "array (T_ARRAY)" '(' . array_pair_list ')' + 354 combined_scalar: "array (T_ARRAY)" '(' . array_pair_list ')' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -6762,118 +7373,122 @@ state 204 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 147 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 480 (array_pair_list) - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 148 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - array_pair_list go to state 347 - non_empty_array_pair_list go to state 150 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '&' shift, and go to state 156 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 502 (array_pair_list) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 157 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + array_pair_list go to state 369 + non_empty_array_pair_list go to state 159 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 205 +state 217 - 494 encaps_var: "variable (T_VARIABLE)" . - 496 | "variable (T_VARIABLE)" . '[' @72 encaps_var_offset ']' - 497 | "variable (T_VARIABLE)" . "-> (T_OBJECT_OPERATOR)" "identifier (T_STRING)" + 516 encaps_var: "variable (T_VARIABLE)" . + 518 | "variable (T_VARIABLE)" . '[' $@75 encaps_var_offset ']' + 519 | "variable (T_VARIABLE)" . "-> (T_OBJECT_OPERATOR)" "identifier (T_STRING)" - '[' shift, and go to state 348 - "-> (T_OBJECT_OPERATOR)" shift, and go to state 349 + '[' shift, and go to state 370 + "-> (T_OBJECT_OPERATOR)" shift, and go to state 371 - $default reduce using rule 494 (encaps_var) + $default reduce using rule 516 (encaps_var) -state 206 +state 218 - 393 common_scalar: "heredoc start (T_START_HEREDOC)" "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . "heredoc end (T_END_HEREDOC)" - 493 encaps_list: "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . encaps_var + 413 common_scalar: "heredoc start (T_START_HEREDOC)" "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . "heredoc end (T_END_HEREDOC)" + 515 encaps_list: "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . encaps_var - "variable (T_VARIABLE)" shift, and go to state 205 - "heredoc end (T_END_HEREDOC)" shift, and go to state 350 - "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 208 - "{$ (T_CURLY_OPEN)" shift, and go to state 209 + "variable (T_VARIABLE)" shift, and go to state 217 + "heredoc end (T_END_HEREDOC)" shift, and go to state 372 + "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 220 + "{$ (T_CURLY_OPEN)" shift, and go to state 221 - encaps_var go to state 351 + encaps_var go to state 373 -state 207 +state 219 - 394 common_scalar: "heredoc start (T_START_HEREDOC)" "heredoc end (T_END_HEREDOC)" . + 414 common_scalar: "heredoc start (T_START_HEREDOC)" "heredoc end (T_END_HEREDOC)" . - $default reduce using rule 394 (common_scalar) + $default reduce using rule 414 (common_scalar) -state 208 +state 220 - 498 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" . expr '}' - 499 | "${ (T_DOLLAR_OPEN_CURLY_BRACES)" . "variable name (T_STRING_VARNAME)" '[' expr ']' '}' + 520 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" . expr '}' + 521 | "${ (T_DOLLAR_OPEN_CURLY_BRACES)" . "variable name (T_STRING_VARNAME)" '[' expr ']' '}' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -6881,256 +7496,269 @@ state 208 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 352 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 353 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 374 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 375 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 209 +state 221 - 500 encaps_var: "{$ (T_CURLY_OPEN)" . variable '}' - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - variable go to state 354 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 522 encaps_var: "{$ (T_CURLY_OPEN)" . variable '}' + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + variable go to state 376 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 -state 210 +state 222 - 413 scalar: "heredoc start (T_START_HEREDOC)" encaps_list . "heredoc end (T_END_HEREDOC)" - 490 encaps_list: encaps_list . encaps_var - 491 | encaps_list . "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" + 433 scalar: "heredoc start (T_START_HEREDOC)" encaps_list . "heredoc end (T_END_HEREDOC)" + 512 encaps_list: encaps_list . encaps_var + 513 | encaps_list . "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" - "variable (T_VARIABLE)" shift, and go to state 205 - "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 355 - "heredoc end (T_END_HEREDOC)" shift, and go to state 356 - "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 208 - "{$ (T_CURLY_OPEN)" shift, and go to state 209 + "variable (T_VARIABLE)" shift, and go to state 217 + "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 377 + "heredoc end (T_END_HEREDOC)" shift, and go to state 378 + "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 220 + "{$ (T_CURLY_OPEN)" shift, and go to state 221 - encaps_var go to state 357 + encaps_var go to state 379 -state 211 +state 223 - 492 encaps_list: encaps_var . + 514 encaps_list: encaps_var . - $default reduce using rule 492 (encaps_list) + $default reduce using rule 514 (encaps_list) -state 212 +state 224 - 346 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name '(' @56 function_call_parameter_list ')' - 361 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name - 409 scalar: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name + 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 + 429 scalar: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name - "identifier (T_STRING)" shift, and go to state 116 + "identifier (T_STRING)" shift, and go to state 122 - namespace_name go to state 358 + namespace_name go to state 380 -state 213 +state 225 - 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 359 + $@3 go to state 381 -state 214 +state 226 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 225 - ';' shift, and go to state 360 - '{' shift, and go to state 361 + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 + ';' shift, and go to state 382 + '{' shift, and go to state 383 -state 215 +state 227 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 348 function_call: "\\ (T_NS_SEPARATOR)" namespace_name . '(' @57 function_call_parameter_list ')' - 362 class_name: "\\ (T_NS_SEPARATOR)" namespace_name . - 410 scalar: "\\ (T_NS_SEPARATOR)" namespace_name . + 368 function_call: "\\ (T_NS_SEPARATOR)" namespace_name . @60 function_call_parameter_list + 382 class_name: "\\ (T_NS_SEPARATOR)" namespace_name . + 430 scalar: "\\ (T_NS_SEPARATOR)" namespace_name . - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 - '(' shift, and go to state 362 + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 - ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 362 (class_name) - $default reduce using rule 410 (scalar) + ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 382 (class_name) + '(' reduce using rule 367 (@60) + $default reduce using rule 430 (scalar) + @60 go to state 384 -state 216 - 308 expr_without_variable: new_expr . - 310 | '(' new_expr . ')' @48 instance_call +state 228 - ')' shift, and go to state 363 + 318 expr_without_variable: new_expr . + 320 | '(' new_expr . ')' @51 instance_call - ')' [reduce using rule 308 (expr_without_variable)] - $default reduce using rule 308 (expr_without_variable) + ')' shift, and go to state 385 + ')' [reduce using rule 318 (expr_without_variable)] + $default reduce using rule 318 (expr_without_variable) -state 217 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 307 | '(' expr . ')' - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ')' shift, and go to state 364 +state 229 + 446 parenthesis_expr: '(' yield_expr . ')' -state 218 + ')' shift, and go to state 386 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + +state 230 + + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 445 parenthesis_expr: '(' expr . ')' + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + ')' shift, and go to state 387 + + +state 231 + + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 35 unticked_statement: '{' inner_statement_list . '}' - '}' shift, and go to state 365 + '}' shift, and go to state 388 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 366 + $@4 go to state 389 -state 219 +state 232 - 461 compound_variable: '$' '{' . expr '}' + 483 compound_variable: '$' '{' . expr '}' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -7138,244 +7766,434 @@ state 219 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 367 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 390 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 220 +state 233 - 379 backticks_expr: "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . - 493 encaps_list: "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . encaps_var + 399 backticks_expr: "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . + 515 encaps_list: "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . encaps_var - "variable (T_VARIABLE)" shift, and go to state 205 - "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 208 - "{$ (T_CURLY_OPEN)" shift, and go to state 209 + "variable (T_VARIABLE)" shift, and go to state 217 + "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 220 + "{$ (T_CURLY_OPEN)" shift, and go to state 221 - $default reduce using rule 379 (backticks_expr) + $default reduce using rule 399 (backticks_expr) - encaps_var go to state 351 + encaps_var go to state 373 -state 221 +state 234 - 330 expr_without_variable: '`' backticks_expr . '`' + 340 expr_without_variable: '`' backticks_expr . '`' - '`' shift, and go to state 368 + '`' shift, and go to state 391 -state 222 +state 235 - 380 backticks_expr: encaps_list . - 490 encaps_list: encaps_list . encaps_var - 491 | encaps_list . "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" + 400 backticks_expr: encaps_list . + 512 encaps_list: encaps_list . encaps_var + 513 | encaps_list . "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" - "variable (T_VARIABLE)" shift, and go to state 205 - "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 355 - "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 208 - "{$ (T_CURLY_OPEN)" shift, and go to state 209 + "variable (T_VARIABLE)" shift, and go to state 217 + "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 377 + "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 220 + "{$ (T_CURLY_OPEN)" shift, and go to state 221 - $default reduce using rule 380 (backticks_expr) + $default reduce using rule 400 (backticks_expr) - encaps_var go to state 357 + encaps_var go to state 379 -state 223 +state 236 - 493 encaps_list: "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . encaps_var + 515 encaps_list: "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . encaps_var - "variable (T_VARIABLE)" shift, and go to state 205 - "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 208 - "{$ (T_CURLY_OPEN)" shift, and go to state 209 + "variable (T_VARIABLE)" shift, and go to state 217 + "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 220 + "{$ (T_CURLY_OPEN)" shift, and go to state 221 - encaps_var go to state 351 + encaps_var go to state 373 -state 224 +state 237 - 412 scalar: '"' encaps_list . '"' - 490 encaps_list: encaps_list . encaps_var - 491 | encaps_list . "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" + 432 scalar: '"' encaps_list . '"' + 512 encaps_list: encaps_list . encaps_var + 513 | encaps_list . "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" - "variable (T_VARIABLE)" shift, and go to state 205 - "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 355 - "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 208 - "{$ (T_CURLY_OPEN)" shift, and go to state 209 - '"' shift, and go to state 369 + "variable (T_VARIABLE)" shift, and go to state 217 + "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 377 + "${ (T_DOLLAR_OPEN_CURLY_BRACES)" shift, and go to state 220 + "{$ (T_CURLY_OPEN)" shift, and go to state 221 + '"' shift, and go to state 392 - encaps_var go to state 357 + encaps_var go to state 379 -state 225 +state 238 6 namespace_name: namespace_name "\\ (T_NS_SEPARATOR)" . "identifier (T_STRING)" - "identifier (T_STRING)" shift, and go to state 370 + "identifier (T_STRING)" shift, and go to state 393 -state 226 +state 239 - 344 function_call: namespace_name '(' . @55 function_call_parameter_list ')' + 364 function_call: namespace_name @58 . function_call_parameter_list - $default reduce using rule 343 (@55) + '(' shift, and go to state 394 - @55 go to state 371 + function_call_parameter_list go to state 395 -state 227 +state 240 24 constant_declaration: constant_declaration ',' . "identifier (T_STRING)" '=' static_scalar - "identifier (T_STRING)" shift, and go to state 372 + "identifier (T_STRING)" shift, and go to state 396 -state 228 +state 241 17 top_statement: constant_declaration ';' . $default reduce using rule 17 (top_statement) -state 229 +state 242 - 101 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" . extends_from @30 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 373 + "extends (T_EXTENDS)" shift, and go to state 397 - $default reduce using rule 108 (extends_from) + $default reduce using rule 115 (extends_from) - extends_from go to state 374 + extends_from go to state 398 -state 230 +state 243 - 103 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" . @31 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 102 (@31) + $default reduce using rule 109 ($@33) - @31 go to state 375 + $@33 go to state 399 -state 231 +state 244 - 97 is_reference: '&' . + 61 unticked_statement: yield_expr ';' . - $default reduce using rule 97 (is_reference) + $default reduce using rule 61 (unticked_statement) -state 232 +state 245 + + 352 combined_scalar_offset: combined_scalar_offset '[' . dim_offset ']' + + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 484 (dim_offset) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 324 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + dim_offset go to state 400 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 - 99 unticked_function_declaration_statement: function is_reference . "identifier (T_STRING)" @29 '(' parameter_list ')' '{' inner_statement_list '}' - 333 expr_without_variable: function is_reference . '(' @53 parameter_list ')' lexical_vars '{' inner_statement_list '}' - "identifier (T_STRING)" shift, and go to state 376 - '(' shift, and go to state 377 +state 246 + 351 combined_scalar_offset: combined_scalar '[' . dim_offset ']' -state 233 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 484 (dim_offset) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 324 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + dim_offset go to state 401 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 - 450 array_function_dereference: function_call @69 . '[' dim_offset ']' - '[' shift, and go to state 378 +state 247 + 104 is_reference: '&' . -state 234 + $default reduce using rule 104 (is_reference) - 350 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name '(' @58 function_call_parameter_list ')' - 352 | class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects '(' @59 function_call_parameter_list ')' - 445 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects - 514 class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)" - "identifier (T_STRING)" shift, and go to state 379 - "variable (T_VARIABLE)" shift, and go to state 34 - '{' shift, and go to state 380 - '$' shift, and go to state 80 +state 248 - variable_without_objects go to state 381 - reference_variable go to state 382 - compound_variable go to state 112 - variable_name go to state 383 - simple_indirect_reference go to state 384 + 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 402 -state 235 + $default reduce using rule 343 (@56) - 279 expr_without_variable: expr "or (T_LOGICAL_OR)" . @46 expr + @56 go to state 403 - $default reduce using rule 278 (@46) - @46 go to state 385 +state 249 + 472 array_function_dereference: function_call $@72 . '[' dim_offset ']' -state 236 + '[' shift, and go to state 404 - 282 expr_without_variable: expr "xor (T_LOGICAL_XOR)" . expr + +state 250 + + 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 + 467 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects + 539 class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)" + + "identifier (T_STRING)" shift, and go to state 405 + "variable (T_VARIABLE)" shift, and go to state 35 + '{' shift, and go to state 406 + '$' shift, and go to state 81 + + variable_without_objects go to state 407 + reference_variable go to state 408 + compound_variable go to state 117 + variable_name go to state 409 + simple_indirect_reference go to state 410 + + +state 251 + + 289 expr_without_variable: expr "or (T_LOGICAL_OR)" . $@49 expr + + $default reduce using rule 288 ($@49) + + $@49 go to state 411 + + +state 252 + + 292 expr_without_variable: expr "xor (T_LOGICAL_XOR)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -7383,119 +8201,123 @@ state 236 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 386 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 412 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 237 +state 253 - 281 expr_without_variable: expr "and (T_LOGICAL_AND)" . @47 expr + 291 expr_without_variable: expr "and (T_LOGICAL_AND)" . $@50 expr - $default reduce using rule 280 (@47) + $default reduce using rule 290 ($@50) - @47 go to state 387 + $@50 go to state 413 -state 238 +state 254 - 313 expr_without_variable: expr '?' . @49 expr ':' @50 expr - 315 | expr '?' . ':' @51 expr + 323 expr_without_variable: expr '?' . $@52 expr ':' $@53 expr + 325 | expr '?' . ':' $@54 expr - ':' shift, and go to state 388 + ':' shift, and go to state 414 - $default reduce using rule 311 (@49) + $default reduce using rule 321 ($@52) - @49 go to state 389 + $@52 go to state 415 -state 239 +state 255 - 275 expr_without_variable: expr "|| (T_BOOLEAN_OR)" . @44 expr + 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" . $@47 expr - $default reduce using rule 274 (@44) + $default reduce using rule 284 ($@47) - @44 go to state 390 + $@47 go to state 416 -state 240 +state 256 - 277 expr_without_variable: expr "&& (T_BOOLEAN_AND)" . @45 expr + 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" . $@48 expr - $default reduce using rule 276 (@45) + $default reduce using rule 286 ($@48) - @45 go to state 391 + $@48 go to state 417 -state 241 +state 257 - 283 expr_without_variable: expr '|' . expr + 293 expr_without_variable: expr '|' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -7503,80 +8325,84 @@ state 241 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 392 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 418 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 242 +state 258 - 285 expr_without_variable: expr '^' . expr + 295 expr_without_variable: expr '^' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -7584,80 +8410,84 @@ state 242 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 393 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 419 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 243 +state 259 - 284 expr_without_variable: expr '&' . expr + 294 expr_without_variable: expr '&' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -7665,80 +8495,84 @@ state 243 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 394 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 420 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 244 +state 260 - 299 expr_without_variable: expr "!== (T_IS_NOT_IDENTICAL)" . expr + 309 expr_without_variable: expr "!== (T_IS_NOT_IDENTICAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -7746,80 +8580,84 @@ state 244 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 395 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 421 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 245 +state 261 - 298 expr_without_variable: expr "=== (T_IS_IDENTICAL)" . expr + 308 expr_without_variable: expr "=== (T_IS_IDENTICAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -7827,80 +8665,84 @@ state 245 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 396 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 422 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 246 +state 262 - 301 expr_without_variable: expr "!= (T_IS_NOT_EQUAL)" . expr + 311 expr_without_variable: expr "!= (T_IS_NOT_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -7908,80 +8750,84 @@ state 246 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 397 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 423 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 247 +state 263 - 300 expr_without_variable: expr "== (T_IS_EQUAL)" . expr + 310 expr_without_variable: expr "== (T_IS_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -7989,80 +8835,84 @@ state 247 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 398 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 424 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 248 +state 264 - 302 expr_without_variable: expr '<' . expr + 312 expr_without_variable: expr '<' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8070,80 +8920,84 @@ state 248 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 399 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 425 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 249 +state 265 - 304 expr_without_variable: expr '>' . expr + 314 expr_without_variable: expr '>' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8151,80 +9005,84 @@ state 249 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 400 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 426 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 250 +state 266 - 305 expr_without_variable: expr ">= (T_IS_GREATER_OR_EQUAL)" . expr + 315 expr_without_variable: expr ">= (T_IS_GREATER_OR_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8232,80 +9090,84 @@ state 250 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 401 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 427 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 251 +state 267 - 303 expr_without_variable: expr "<= (T_IS_SMALLER_OR_EQUAL)" . expr + 313 expr_without_variable: expr "<= (T_IS_SMALLER_OR_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8313,80 +9175,84 @@ state 251 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 402 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 428 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 252 +state 268 - 293 expr_without_variable: expr ">> (T_SR)" . expr + 303 expr_without_variable: expr ">> (T_SR)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8394,80 +9260,84 @@ state 252 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 403 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 429 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 253 +state 269 - 292 expr_without_variable: expr "<< (T_SL)" . expr + 302 expr_without_variable: expr "<< (T_SL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8475,80 +9345,84 @@ state 253 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 404 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 430 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 254 +state 270 - 287 expr_without_variable: expr '+' . expr + 297 expr_without_variable: expr '+' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8556,80 +9430,84 @@ state 254 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 405 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 431 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 255 +state 271 - 288 expr_without_variable: expr '-' . expr + 298 expr_without_variable: expr '-' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8637,80 +9515,84 @@ state 255 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 406 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 432 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 256 +state 272 - 286 expr_without_variable: expr '.' . expr + 296 expr_without_variable: expr '.' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8718,80 +9600,84 @@ state 256 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 407 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 433 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 257 +state 273 - 289 expr_without_variable: expr '*' . expr + 299 expr_without_variable: expr '*' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8799,80 +9685,84 @@ state 257 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 408 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 434 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 258 +state 274 - 290 expr_without_variable: expr '/' . expr + 300 expr_without_variable: expr '/' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8880,80 +9770,84 @@ state 258 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 409 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 435 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 259 +state 275 - 291 expr_without_variable: expr '%' . expr + 301 expr_without_variable: expr '%' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -8961,126 +9855,130 @@ state 259 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 410 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 436 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 260 +state 276 - 306 expr_without_variable: expr "instanceof (T_INSTANCEOF)" . class_name_reference + 316 expr_without_variable: expr "instanceof (T_INSTANCEOF)" . class_name_reference - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 152 - "\\ (T_NS_SEPARATOR)" shift, and go to state 153 - '$' shift, and go to state 80 + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 161 + "\\ (T_NS_SEPARATOR)" shift, and go to state 162 + '$' shift, and go to state 81 - namespace_name go to state 154 - class_name go to state 155 - class_name_reference go to state 411 - dynamic_class_name_reference go to state 157 - static_member go to state 106 - variable_class_name go to state 158 - base_variable go to state 159 - reference_variable go to state 160 - compound_variable go to state 112 - simple_indirect_reference go to state 161 + namespace_name go to state 163 + class_name go to state 164 + class_name_reference go to state 437 + dynamic_class_name_reference go to state 166 + static_member go to state 111 + variable_class_name go to state 167 + base_variable go to state 168 + reference_variable go to state 169 + compound_variable go to state 117 + simple_indirect_reference go to state 170 -state 261 +state 277 - 65 unticked_statement: expr ';' . + 66 unticked_statement: expr ';' . - $default reduce using rule 65 (unticked_statement) + $default reduce using rule 66 (unticked_statement) -state 262 +state 278 - 272 expr_without_variable: rw_variable "-- (T_DEC)" . + 282 expr_without_variable: rw_variable "-- (T_DEC)" . - $default reduce using rule 272 (expr_without_variable) + $default reduce using rule 282 (expr_without_variable) -state 263 +state 279 - 270 expr_without_variable: rw_variable "++ (T_INC)" . + 280 expr_without_variable: rw_variable "++ (T_INC)" . - $default reduce using rule 270 (expr_without_variable) + $default reduce using rule 280 (expr_without_variable) -state 264 +state 280 - 254 expr_without_variable: variable '=' . expr - 255 | variable '=' . '&' variable - 257 | variable '=' . '&' "new (T_NEW)" class_name_reference @43 ctor_arguments + 264 expr_without_variable: variable '=' . expr + 265 | variable '=' . '&' variable + 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 @@ -9088,81 +9986,85 @@ state 264 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 412 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 413 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '&' shift, and go to state 438 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 439 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 265 +state 281 - 269 expr_without_variable: variable ">>= (T_SR_EQUAL)" . expr + 279 expr_without_variable: variable ">>= (T_SR_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -9170,80 +10072,84 @@ state 265 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 414 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 440 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 266 +state 282 - 268 expr_without_variable: variable "<<= (T_SL_EQUAL)" . expr + 278 expr_without_variable: variable "<<= (T_SL_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -9251,80 +10157,84 @@ state 266 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 415 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 441 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 267 +state 283 - 267 expr_without_variable: variable "^= (T_XOR_EQUAL)" . expr + 277 expr_without_variable: variable "^= (T_XOR_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -9332,80 +10242,84 @@ state 267 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 416 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 442 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 268 +state 284 - 266 expr_without_variable: variable "|= (T_OR_EQUAL)" . expr + 276 expr_without_variable: variable "|= (T_OR_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -9413,80 +10327,84 @@ state 268 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 417 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 443 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 269 +state 285 - 265 expr_without_variable: variable "&= (T_AND_EQUAL)" . expr + 275 expr_without_variable: variable "&= (T_AND_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -9494,80 +10412,84 @@ state 269 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 418 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 444 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 270 +state 286 - 264 expr_without_variable: variable "%= (T_MOD_EQUAL)" . expr + 274 expr_without_variable: variable "%= (T_MOD_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -9575,80 +10497,84 @@ state 270 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 419 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 445 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 271 +state 287 - 263 expr_without_variable: variable ".= (T_CONCAT_EQUAL)" . expr + 273 expr_without_variable: variable ".= (T_CONCAT_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -9656,80 +10582,84 @@ state 271 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 420 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 446 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 272 +state 288 - 262 expr_without_variable: variable "/= (T_DIV_EQUAL)" . expr + 272 expr_without_variable: variable "/= (T_DIV_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -9737,80 +10667,84 @@ state 272 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 421 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 447 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 273 +state 289 - 261 expr_without_variable: variable "*= (T_MUL_EQUAL)" . expr + 271 expr_without_variable: variable "*= (T_MUL_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -9818,80 +10752,84 @@ state 273 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 422 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 448 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 274 +state 290 - 260 expr_without_variable: variable "-= (T_MINUS_EQUAL)" . expr + 270 expr_without_variable: variable "-= (T_MINUS_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -9899,80 +10837,84 @@ state 274 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 423 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 449 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 275 +state 291 - 259 expr_without_variable: variable "+= (T_PLUS_EQUAL)" . expr + 269 expr_without_variable: variable "+= (T_PLUS_EQUAL)" . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -9980,108 +10922,112 @@ state 275 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 424 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 450 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 276 +state 292 - 358 function_call: variable_without_objects '(' . @62 function_call_parameter_list ')' + 378 function_call: variable_without_objects $@65 . function_call_parameter_list - $default reduce using rule 357 (@62) + '(' shift, and go to state 394 - @62 go to state 425 + function_call_parameter_list go to state 451 -state 277 +state 293 - 354 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name '(' @60 function_call_parameter_list ')' - 356 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects '(' @61 function_call_parameter_list ')' - 446 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects - 515 class_constant: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)" + 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 + 468 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects + 540 class_constant: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)" - "identifier (T_STRING)" shift, and go to state 426 - "variable (T_VARIABLE)" shift, and go to state 34 - '{' shift, and go to state 380 - '$' shift, and go to state 80 + "identifier (T_STRING)" shift, and go to state 452 + "variable (T_VARIABLE)" shift, and go to state 35 + '{' shift, and go to state 406 + '$' shift, and go to state 81 - variable_without_objects go to state 427 - reference_variable go to state 382 - compound_variable go to state 112 - variable_name go to state 428 - simple_indirect_reference go to state 384 + variable_without_objects go to state 453 + reference_variable go to state 408 + compound_variable go to state 117 + variable_name go to state 454 + simple_indirect_reference go to state 410 -state 278 +state 294 - 448 array_function_dereference: array_function_dereference '[' . dim_offset ']' + 470 array_function_dereference: array_function_dereference '[' . dim_offset ']' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -10089,92 +11035,96 @@ state 278 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 462 (dim_offset) - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 429 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - dim_offset go to state 430 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 484 (dim_offset) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 324 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + dim_offset go to state 455 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 279 +state 295 - 430 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" . @65 object_property @66 method_or_not variable_properties + 452 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" . $@68 object_property $@69 method_or_not variable_properties - $default reduce using rule 428 (@65) + $default reduce using rule 450 ($@68) - @65 go to state 431 + $@68 go to state 456 -state 280 +state 296 - 457 reference_variable: reference_variable '[' . dim_offset ']' + 479 reference_variable: reference_variable '[' . dim_offset ']' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -10182,83 +11132,87 @@ state 280 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 462 (dim_offset) - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 429 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - dim_offset go to state 432 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 484 (dim_offset) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 324 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + dim_offset go to state 457 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 281 +state 297 - 458 reference_variable: reference_variable '{' . expr '}' + 480 reference_variable: reference_variable '{' . expr '}' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -10266,278 +11220,372 @@ state 281 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 433 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 458 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 282 +state 298 - 461 compound_variable: '$' . '{' expr '}' - 473 simple_indirect_reference: simple_indirect_reference '$' . + 483 compound_variable: '$' . '{' expr '}' + 495 simple_indirect_reference: simple_indirect_reference '$' . - '{' shift, and go to state 219 + '{' shift, and go to state 232 - $default reduce using rule 473 (simple_indirect_reference) + $default reduce using rule 495 (simple_indirect_reference) -state 283 +state 299 - 444 variable_without_objects: simple_indirect_reference reference_variable . - 455 base_variable: simple_indirect_reference reference_variable . - 457 reference_variable: reference_variable . '[' dim_offset ']' - 458 | reference_variable . '{' expr '}' + 466 variable_without_objects: simple_indirect_reference reference_variable . + 477 base_variable: simple_indirect_reference reference_variable . + 479 reference_variable: reference_variable . '[' dim_offset ']' + 480 | reference_variable . '{' expr '}' - '[' shift, and go to state 280 - '{' shift, and go to state 281 + '[' shift, and go to state 296 + '{' shift, and go to state 297 - '(' reduce using rule 444 (variable_without_objects) - $default reduce using rule 455 (base_variable) + '(' reduce using rule 466 (variable_without_objects) + $default reduce using rule 477 (base_variable) -state 284 +state 300 - 333 expr_without_variable: function is_reference . '(' @53 parameter_list ')' lexical_vars '{' inner_statement_list '}' + 344 expr_without_variable: function is_reference . @56 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' - '(' shift, and go to state 377 + $default reduce using rule 343 (@56) + @56 go to state 403 -state 285 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 508 internal_functions_in_yacc: "eval (T_EVAL)" '(' expr . ')' - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ')' shift, and go to state 434 +state 301 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 531 internal_functions_in_yacc: "eval (T_EVAL)" '(' expr . ')' + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + ')' shift, and go to state 459 -state 286 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 326 | '@' @52 expr . +state 302 - $default reduce using rule 326 (expr_without_variable) + 349 yield_expr: "yield (T_YIELD)" expr "=> (T_DOUBLE_ARROW)" . expr_without_variable + 350 | "yield (T_YIELD)" expr "=> (T_DOUBLE_ARROW)" . variable + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 460 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 194 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 461 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 287 - 346 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name '(' @56 function_call_parameter_list ')' - 361 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name +state 303 - "identifier (T_STRING)" shift, and go to state 116 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 . + + $default reduce using rule 336 (expr_without_variable) - namespace_name go to state 435 +state 304 -state 288 + 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 + + "identifier (T_STRING)" shift, and go to state 122 + + namespace_name go to state 462 + + +state 305 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 348 function_call: "\\ (T_NS_SEPARATOR)" namespace_name . '(' @57 function_call_parameter_list ')' - 362 class_name: "\\ (T_NS_SEPARATOR)" namespace_name . + 368 function_call: "\\ (T_NS_SEPARATOR)" namespace_name . @60 function_call_parameter_list + 382 class_name: "\\ (T_NS_SEPARATOR)" namespace_name . - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 - '(' shift, and go to state 362 + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 - $default reduce using rule 362 (class_name) + ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 382 (class_name) + $default reduce using rule 367 (@60) + @60 go to state 384 -state 289 - 350 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name '(' @58 function_call_parameter_list ')' - 352 | class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects '(' @59 function_call_parameter_list ')' - 445 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects +state 306 - "identifier (T_STRING)" shift, and go to state 436 - "variable (T_VARIABLE)" shift, and go to state 34 - '{' shift, and go to state 380 - '$' shift, and go to state 80 + 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 + 467 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects - variable_without_objects go to state 381 - reference_variable go to state 382 - compound_variable go to state 112 - variable_name go to state 383 - simple_indirect_reference go to state 384 + "identifier (T_STRING)" shift, and go to state 463 + "variable (T_VARIABLE)" shift, and go to state 35 + '{' shift, and go to state 406 + '$' shift, and go to state 81 + variable_without_objects go to state 407 + reference_variable go to state 408 + compound_variable go to state 117 + variable_name go to state 409 + simple_indirect_reference go to state 410 -state 290 - 354 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name '(' @60 function_call_parameter_list ')' - 356 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects '(' @61 function_call_parameter_list ')' - 446 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects +state 307 - "identifier (T_STRING)" shift, and go to state 436 - "variable (T_VARIABLE)" shift, and go to state 34 - '{' shift, and go to state 380 - '$' shift, and go to state 80 + 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 + 468 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects - variable_without_objects go to state 427 - reference_variable go to state 382 - compound_variable go to state 112 - variable_name go to state 428 - simple_indirect_reference go to state 384 + "identifier (T_STRING)" shift, and go to state 463 + "variable (T_VARIABLE)" shift, and go to state 35 + '{' shift, and go to state 406 + '$' shift, and go to state 81 + variable_without_objects go to state 453 + reference_variable go to state 408 + compound_variable go to state 117 + variable_name go to state 454 + simple_indirect_reference go to state 410 -state 291 - 489 non_empty_array_pair_list: '&' w_variable . +state 308 + + 511 non_empty_array_pair_list: '&' w_variable . - $default reduce using rule 489 (non_empty_array_pair_list) + $default reduce using rule 511 (non_empty_array_pair_list) -state 292 +state 309 - 426 w_variable: variable . + 448 w_variable: variable . - $default reduce using rule 426 (w_variable) + $default reduce using rule 448 (w_variable) -state 293 +state 310 - 484 non_empty_array_pair_list: expr "=> (T_DOUBLE_ARROW)" . expr - 488 | expr "=> (T_DOUBLE_ARROW)" . '&' w_variable + 506 non_empty_array_pair_list: expr "=> (T_DOUBLE_ARROW)" . expr + 510 | expr "=> (T_DOUBLE_ARROW)" . '&' w_variable "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -10545,92 +11593,96 @@ state 293 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 437 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 438 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '&' shift, and go to state 464 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 465 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 294 +state 311 - 329 expr_without_variable: '[' array_pair_list ']' . + 355 combined_scalar: '[' array_pair_list ']' . - $default reduce using rule 329 (expr_without_variable) + $default reduce using rule 355 (combined_scalar) -state 295 +state 312 - 418 possible_comma: ',' . - 482 non_empty_array_pair_list: non_empty_array_pair_list ',' . expr "=> (T_DOUBLE_ARROW)" expr - 483 | non_empty_array_pair_list ',' . expr - 486 | non_empty_array_pair_list ',' . expr "=> (T_DOUBLE_ARROW)" '&' w_variable - 487 | non_empty_array_pair_list ',' . '&' w_variable + 438 possible_comma: ',' . + 504 non_empty_array_pair_list: non_empty_array_pair_list ',' . expr "=> (T_DOUBLE_ARROW)" expr + 505 | non_empty_array_pair_list ',' . expr + 508 | non_empty_array_pair_list ',' . expr "=> (T_DOUBLE_ARROW)" '&' w_variable + 509 | non_empty_array_pair_list ',' . '&' w_variable "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -10638,295 +11690,188 @@ state 295 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 439 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 418 (possible_comma) - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 440 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '&' shift, and go to state 466 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 438 (possible_comma) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 467 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 296 +state 313 - 481 array_pair_list: non_empty_array_pair_list possible_comma . + 503 array_pair_list: non_empty_array_pair_list possible_comma . - $default reduce using rule 481 (array_pair_list) + $default reduce using rule 503 (array_pair_list) -state 297 +state 314 - 361 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name + 381 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name - "identifier (T_STRING)" shift, and go to state 116 + "identifier (T_STRING)" shift, and go to state 122 - namespace_name go to state 441 + namespace_name go to state 468 -state 298 +state 315 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 362 class_name: "\\ (T_NS_SEPARATOR)" namespace_name . - - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 + 382 class_name: "\\ (T_NS_SEPARATOR)" namespace_name . - $default reduce using rule 362 (class_name) + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 + $default reduce using rule 382 (class_name) -state 299 - 445 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects +state 316 - "variable (T_VARIABLE)" shift, and go to state 34 - '$' shift, and go to state 80 + 467 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects - variable_without_objects go to state 442 - reference_variable go to state 382 - compound_variable go to state 112 - simple_indirect_reference go to state 384 + "variable (T_VARIABLE)" shift, and go to state 35 + '$' shift, and go to state 81 + variable_without_objects go to state 469 + reference_variable go to state 408 + compound_variable go to state 117 + simple_indirect_reference go to state 410 -state 300 - 251 new_expr: "new (T_NEW)" class_name_reference @41 . ctor_arguments +state 317 - '(' shift, and go to state 443 + 261 new_expr: "new (T_NEW)" class_name_reference $@44 . ctor_arguments - $default reduce using rule 381 (ctor_arguments) + '(' shift, and go to state 394 - ctor_arguments go to state 444 + $default reduce using rule 401 (ctor_arguments) + function_call_parameter_list go to state 470 + ctor_arguments go to state 471 -state 301 - 446 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects +state 318 - "variable (T_VARIABLE)" shift, and go to state 34 - '$' shift, and go to state 80 + 468 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects - variable_without_objects go to state 445 - reference_variable go to state 382 - compound_variable go to state 112 - simple_indirect_reference go to state 384 + "variable (T_VARIABLE)" shift, and go to state 35 + '$' shift, and go to state 81 + variable_without_objects go to state 472 + reference_variable go to state 408 + compound_variable go to state 117 + simple_indirect_reference go to state 410 -state 302 - 370 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" . @63 object_property @64 dynamic_class_name_variable_properties +state 319 - $default reduce using rule 368 (@63) + 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" . $@66 object_property $@67 dynamic_class_name_variable_properties - @63 go to state 446 + $default reduce using rule 388 ($@66) + $@66 go to state 473 -state 303 - 455 base_variable: simple_indirect_reference reference_variable . - 457 reference_variable: reference_variable . '[' dim_offset ']' - 458 | reference_variable . '{' expr '}' +state 320 - '[' shift, and go to state 280 - '{' shift, and go to state 281 + 477 base_variable: simple_indirect_reference reference_variable . + 479 reference_variable: reference_variable . '[' dim_offset ']' + 480 | reference_variable . '{' expr '}' - $default reduce using rule 455 (base_variable) + '[' shift, and go to state 296 + '{' shift, and go to state 297 + $default reduce using rule 477 (base_variable) -state 304 - 376 exit_expr: '(' ')' . +state 321 - $default reduce using rule 376 (exit_expr) + 396 exit_expr: '(' ')' . + $default reduce using rule 396 (exit_expr) -state 305 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 377 exit_expr: '(' expr . ')' - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ')' shift, and go to state 447 +state 322 + 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' . $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' -state 306 + $default reduce using rule 39 ($@7) - 38 unticked_statement: "if (T_IF)" '(' expr . ')' @5 statement @6 elseif_list else_single - 41 | "if (T_IF)" '(' expr . ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ')' shift, and go to state 448 + $@7 go to state 474 -state 307 +state 323 - 232 echo_expr_list: echo_expr_list ',' . expr + 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 @@ -10934,94 +11879,174 @@ state 307 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 449 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 - + "yield (T_YIELD)" shift, and go to state 11 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "if (T_IF)" shift, and go to state 30 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 33 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + T_INLINE_HTML shift, and go to state 36 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "echo (T_ECHO)" shift, and go to state 38 + "do (T_DO)" shift, and go to state 39 + "while (T_WHILE)" shift, and go to state 40 + "for (T_FOR)" shift, and go to state 41 + "foreach (T_FOREACH)" shift, and go to state 42 + "declare (T_DECLARE)" shift, and go to state 43 + "switch (T_SWITCH)" shift, and go to state 44 + "break (T_BREAK)" shift, and go to state 45 + "continue (T_CONTINUE)" shift, and go to state 46 + "goto (T_GOTO)" shift, and go to state 47 + "function (T_FUNCTION)" shift, and go to state 48 + "return (T_RETURN)" shift, and go to state 50 + "try (T_TRY)" shift, and go to state 51 + "throw (T_THROW)" shift, and go to state 52 + "global (T_GLOBAL)" shift, and go to state 54 + "static (T_STATIC)" shift, and go to state 57 + "unset (T_UNSET)" shift, and go to state 58 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 79 + '{' shift, and go to state 80 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + statement go to state 475 + unticked_statement go to state 88 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 97 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 105 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 308 - 63 unticked_statement: "echo (T_ECHO)" echo_expr_list ';' . +state 324 - $default reduce using rule 63 (unticked_statement) + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 485 dim_offset: expr . + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 485 (dim_offset) -state 309 +state 325 - 47 unticked_statement: "do (T_DO)" @11 statement . "while (T_WHILE)" '(' @12 expr ')' ';' + 353 combined_scalar_offset: "quoted-string (T_CONSTANT_ENCAPSED_STRING)" '[' dim_offset . ']' - "while (T_WHILE)" shift, and go to state 450 + ']' shift, and go to state 476 -state 310 +state 326 - 44 unticked_statement: "while (T_WHILE)" '(' @9 . expr ')' @10 while_statement + 242 echo_expr_list: echo_expr_list ',' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -11029,396 +12054,373 @@ state 310 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 451 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 477 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 311 +state 327 - 51 unticked_statement: "for (T_FOR)" '(' for_expr . ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement + 64 unticked_statement: "echo (T_ECHO)" echo_expr_list ';' . - ';' shift, and go to state 452 + $default reduce using rule 64 (unticked_statement) -state 312 +state 328 - 235 for_expr: non_empty_for_expr . - 237 non_empty_for_expr: non_empty_for_expr . ',' @38 expr + 47 unticked_statement: "do (T_DO)" $@11 statement . "while (T_WHILE)" $@12 parenthesis_expr ';' - ',' shift, and go to state 453 + "while (T_WHILE)" shift, and go to state 478 - $default reduce using rule 235 (for_expr) +state 329 -state 313 + 44 unticked_statement: "while (T_WHILE)" $@9 parenthesis_expr . @10 while_statement - 238 non_empty_for_expr: expr . - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 238 (non_empty_for_expr) + $default reduce using rule 43 (@10) + @10 go to state 479 -state 314 - 72 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable . "as (T_AS)" @19 variable foreach_optional_arg ')' @20 foreach_statement - 424 expr: expr_without_variable . +state 330 - "as (T_AS)" shift, and go to state 454 + 51 unticked_statement: "for (T_FOR)" '(' for_expr . ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement - $default reduce using rule 424 (expr) + ';' shift, and go to state 480 -state 315 +state 331 - 69 unticked_statement: "foreach (T_FOREACH)" '(' variable . "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement - 254 expr_without_variable: variable . '=' expr - 255 | variable . '=' '&' variable - 257 | variable . '=' '&' "new (T_NEW)" class_name_reference @43 ctor_arguments - 259 | variable . "+= (T_PLUS_EQUAL)" expr - 260 | variable . "-= (T_MINUS_EQUAL)" expr - 261 | variable . "*= (T_MUL_EQUAL)" expr - 262 | variable . "/= (T_DIV_EQUAL)" expr - 263 | variable . ".= (T_CONCAT_EQUAL)" expr - 264 | variable . "%= (T_MOD_EQUAL)" expr - 265 | variable . "&= (T_AND_EQUAL)" expr - 266 | variable . "|= (T_OR_EQUAL)" expr - 267 | variable . "^= (T_XOR_EQUAL)" expr - 268 | variable . "<<= (T_SL_EQUAL)" expr - 269 | variable . ">>= (T_SR_EQUAL)" expr - 425 r_variable: variable . - 427 rw_variable: variable . - - '=' shift, and go to state 264 - ">>= (T_SR_EQUAL)" shift, and go to state 265 - "<<= (T_SL_EQUAL)" shift, and go to state 266 - "^= (T_XOR_EQUAL)" shift, and go to state 267 - "|= (T_OR_EQUAL)" shift, and go to state 268 - "&= (T_AND_EQUAL)" shift, and go to state 269 - "%= (T_MOD_EQUAL)" shift, and go to state 270 - ".= (T_CONCAT_EQUAL)" shift, and go to state 271 - "/= (T_DIV_EQUAL)" shift, and go to state 272 - "*= (T_MUL_EQUAL)" shift, and go to state 273 - "-= (T_MINUS_EQUAL)" shift, and go to state 274 - "+= (T_PLUS_EQUAL)" shift, and go to state 275 - "as (T_AS)" shift, and go to state 455 - - "-- (T_DEC)" reduce using rule 427 (rw_variable) - "++ (T_INC)" reduce using rule 427 (rw_variable) - $default reduce using rule 425 (r_variable) + 245 for_expr: non_empty_for_expr . + 247 non_empty_for_expr: non_empty_for_expr . ',' $@41 expr + ',' shift, and go to state 481 -state 316 + $default reduce using rule 245 (for_expr) - 74 unticked_statement: "declare (T_DECLARE)" @21 '(' . declare_list ')' declare_statement - "identifier (T_STRING)" shift, and go to state 456 +state 332 - declare_list go to state 457 + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 248 (non_empty_for_expr) -state 317 +state 333 - 53 unticked_statement: "switch (T_SWITCH)" '(' expr . ')' @16 switch_case_list - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ')' shift, and go to state 458 + 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable . "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement + 444 expr: expr_without_variable . + "as (T_AS)" shift, and go to state 482 + + $default reduce using rule 444 (expr) + + +state 334 + + 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 + 269 | variable . "+= (T_PLUS_EQUAL)" expr + 270 | variable . "-= (T_MINUS_EQUAL)" expr + 271 | variable . "*= (T_MUL_EQUAL)" expr + 272 | variable . "/= (T_DIV_EQUAL)" expr + 273 | variable . ".= (T_CONCAT_EQUAL)" expr + 274 | variable . "%= (T_MOD_EQUAL)" expr + 275 | variable . "&= (T_AND_EQUAL)" expr + 276 | variable . "|= (T_OR_EQUAL)" expr + 277 | variable . "^= (T_XOR_EQUAL)" expr + 278 | variable . "<<= (T_SL_EQUAL)" expr + 279 | variable . ">>= (T_SR_EQUAL)" expr + 447 r_variable: variable . + 449 rw_variable: variable . + + '=' shift, and go to state 280 + ">>= (T_SR_EQUAL)" shift, and go to state 281 + "<<= (T_SL_EQUAL)" shift, and go to state 282 + "^= (T_XOR_EQUAL)" shift, and go to state 283 + "|= (T_OR_EQUAL)" shift, and go to state 284 + "&= (T_AND_EQUAL)" shift, and go to state 285 + "%= (T_MOD_EQUAL)" shift, and go to state 286 + ".= (T_CONCAT_EQUAL)" shift, and go to state 287 + "/= (T_DIV_EQUAL)" shift, and go to state 288 + "*= (T_MUL_EQUAL)" shift, and go to state 289 + "-= (T_MINUS_EQUAL)" shift, and go to state 290 + "+= (T_PLUS_EQUAL)" shift, and go to state 291 + "as (T_AS)" shift, and go to state 483 + + "-- (T_DEC)" reduce using rule 449 (rw_variable) + "++ (T_INC)" reduce using rule 449 (rw_variable) + $default reduce using rule 447 (r_variable) + + +state 335 + + 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' . declare_list ')' declare_statement + + "identifier (T_STRING)" shift, and go to state 484 + + declare_list go to state 485 -state 318 + +state 336 + + 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr $@16 . switch_case_list + + ':' shift, and go to state 486 + '{' shift, and go to state 487 + + switch_case_list go to state 488 + + +state 337 55 unticked_statement: "break (T_BREAK)" expr ';' . $default reduce using rule 55 (unticked_statement) -state 319 +state 338 57 unticked_statement: "continue (T_CONTINUE)" expr ';' . $default reduce using rule 57 (unticked_statement) -state 320 +state 339 - 83 unticked_statement: "goto (T_GOTO)" "identifier (T_STRING)" ';' . + 81 unticked_statement: "goto (T_GOTO)" "identifier (T_STRING)" ';' . - $default reduce using rule 83 (unticked_statement) + $default reduce using rule 81 (unticked_statement) -state 321 +state 340 25 constant_declaration: "const (T_CONST)" "identifier (T_STRING)" '=' . static_scalar - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 470 - static_class_constant go to state 471 + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 501 + static_class_constant go to state 502 -state 322 +state 341 59 unticked_statement: "return (T_RETURN)" expr_without_variable ';' . $default reduce using rule 59 (unticked_statement) -state 323 +state 342 60 unticked_statement: "return (T_RETURN)" variable ';' . $default reduce using rule 60 (unticked_statement) -state 324 +state 343 - 81 unticked_statement: "try (T_TRY)" @22 '{' . inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches + 79 unticked_statement: "try (T_TRY)" $@22 '{' . inner_statement_list '}' catch_statement $@23 finally_statement $default reduce using rule 28 (inner_statement_list) - inner_statement_list go to state 472 + inner_statement_list go to state 503 -state 325 +state 344 - 82 unticked_statement: "throw (T_THROW)" expr ';' . + 80 unticked_statement: "throw (T_THROW)" expr ';' . - $default reduce using rule 82 (unticked_statement) + $default reduce using rule 80 (unticked_statement) -state 326 +state 345 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" 22 use_declaration: "\\ (T_NS_SEPARATOR)" namespace_name . 23 | "\\ (T_NS_SEPARATOR)" namespace_name . "as (T_AS)" "identifier (T_STRING)" - "as (T_AS)" shift, and go to state 473 - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 + "as (T_AS)" shift, and go to state 504 + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 $default reduce using rule 22 (use_declaration) -state 327 +state 346 21 use_declaration: namespace_name "as (T_AS)" . "identifier (T_STRING)" - "identifier (T_STRING)" shift, and go to state 474 + "identifier (T_STRING)" shift, and go to state 505 -state 328 +state 347 18 use_declarations: use_declarations ',' . use_declaration - "identifier (T_STRING)" shift, and go to state 116 - "\\ (T_NS_SEPARATOR)" shift, and go to state 186 + "identifier (T_STRING)" shift, and go to state 122 + "\\ (T_NS_SEPARATOR)" shift, and go to state 198 - namespace_name go to state 187 - use_declaration go to state 475 + namespace_name go to state 199 + use_declaration go to state 506 -state 329 +state 348 16 top_statement: "use (T_USE)" use_declarations ';' . $default reduce using rule 16 (top_statement) -state 330 +state 349 - 178 global_var: '$' '{' . expr '}' + 188 global_var: '$' '{' . expr '}' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -11426,455 +12428,562 @@ state 330 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 476 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 507 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 331 +state 350 - 177 global_var: '$' r_variable . + 187 global_var: '$' r_variable . - $default reduce using rule 177 (global_var) + $default reduce using rule 187 (global_var) -state 332 +state 351 - 425 r_variable: variable . + 447 r_variable: variable . - $default reduce using rule 425 (r_variable) + $default reduce using rule 447 (r_variable) -state 333 +state 352 - 174 global_var_list: global_var_list ',' . global_var + 184 global_var_list: global_var_list ',' . global_var - "variable (T_VARIABLE)" shift, and go to state 190 - '$' shift, and go to state 191 + "variable (T_VARIABLE)" shift, and go to state 202 + '$' shift, and go to state 203 - global_var go to state 477 + global_var go to state 508 -state 334 +state 353 - 61 unticked_statement: "global (T_GLOBAL)" global_var_list ';' . + 62 unticked_statement: "global (T_GLOBAL)" global_var_list ';' . - $default reduce using rule 61 (unticked_statement) + $default reduce using rule 62 (unticked_statement) -state 335 +state 354 - 182 static_var_list: "variable (T_VARIABLE)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 478 - static_class_constant go to state 471 + 192 static_var_list: "variable (T_VARIABLE)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 509 + static_class_constant go to state 502 -state 336 +state 355 - 179 static_var_list: static_var_list ',' . "variable (T_VARIABLE)" - 180 | static_var_list ',' . "variable (T_VARIABLE)" '=' static_scalar + 189 static_var_list: static_var_list ',' . "variable (T_VARIABLE)" + 190 | static_var_list ',' . "variable (T_VARIABLE)" '=' static_scalar - "variable (T_VARIABLE)" shift, and go to state 479 + "variable (T_VARIABLE)" shift, and go to state 510 -state 337 +state 356 - 62 unticked_statement: "static (T_STATIC)" static_var_list ';' . + 63 unticked_statement: "static (T_STATIC)" static_var_list ';' . - $default reduce using rule 62 (unticked_statement) + $default reduce using rule 63 (unticked_statement) -state 338 +state 357 - 335 expr_without_variable: "static (T_STATIC)" function is_reference . '(' @54 parameter_list ')' lexical_vars '{' inner_statement_list '}' + 346 expr_without_variable: "static (T_STATIC)" function is_reference . @57 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' - '(' shift, and go to state 480 + $default reduce using rule 345 (@57) + @57 go to state 511 -state 339 - 66 unticked_statement: "unset (T_UNSET)" '(' unset_variables . ')' ';' - 92 unset_variables: unset_variables . ',' unset_variable +state 358 - ',' shift, and go to state 481 - ')' shift, and go to state 482 + 67 unticked_statement: "unset (T_UNSET)" '(' unset_variables . ')' ';' + 99 unset_variables: unset_variables . ',' unset_variable + ',' shift, and go to state 512 + ')' shift, and go to state 513 -state 340 - 91 unset_variables: unset_variable . +state 359 - $default reduce using rule 91 (unset_variables) + 98 unset_variables: unset_variable . + $default reduce using rule 98 (unset_variables) -state 341 - 93 unset_variable: variable . +state 360 - $default reduce using rule 93 (unset_variable) + 100 unset_variable: variable . + $default reduce using rule 100 (unset_variable) -state 342 - 511 isset_variables: variable . +state 361 - $default reduce using rule 511 (isset_variables) + 444 expr: expr_without_variable . + 538 isset_variable: expr_without_variable . + ',' reduce using rule 538 (isset_variable) + ')' reduce using rule 538 (isset_variable) + $default reduce using rule 444 (expr) -state 343 - 504 internal_functions_in_yacc: "isset (T_ISSET)" '(' isset_variables . ')' - 513 isset_variables: isset_variables . ',' @73 variable +state 362 - ',' shift, and go to state 483 - ')' shift, and go to state 484 + 264 expr_without_variable: variable . '=' expr + 265 | variable . '=' '&' variable + 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 + 272 | variable . "/= (T_DIV_EQUAL)" expr + 273 | variable . ".= (T_CONCAT_EQUAL)" expr + 274 | variable . "%= (T_MOD_EQUAL)" expr + 275 | variable . "&= (T_AND_EQUAL)" expr + 276 | variable . "|= (T_OR_EQUAL)" expr + 277 | variable . "^= (T_XOR_EQUAL)" expr + 278 | variable . "<<= (T_SL_EQUAL)" expr + 279 | variable . ">>= (T_SR_EQUAL)" expr + 447 r_variable: variable . + 449 rw_variable: variable . + 537 isset_variable: variable . + + '=' shift, and go to state 280 + ">>= (T_SR_EQUAL)" shift, and go to state 281 + "<<= (T_SL_EQUAL)" shift, and go to state 282 + "^= (T_XOR_EQUAL)" shift, and go to state 283 + "|= (T_OR_EQUAL)" shift, and go to state 284 + "&= (T_AND_EQUAL)" shift, and go to state 285 + "%= (T_MOD_EQUAL)" shift, and go to state 286 + ".= (T_CONCAT_EQUAL)" shift, and go to state 287 + "/= (T_DIV_EQUAL)" shift, and go to state 288 + "*= (T_MUL_EQUAL)" shift, and go to state 289 + "-= (T_MINUS_EQUAL)" shift, and go to state 290 + "+= (T_PLUS_EQUAL)" shift, and go to state 291 + + ',' reduce using rule 537 (isset_variable) + "-- (T_DEC)" reduce using rule 449 (rw_variable) + "++ (T_INC)" reduce using rule 449 (rw_variable) + ')' reduce using rule 537 (isset_variable) + $default reduce using rule 447 (r_variable) -state 344 +state 363 - 505 internal_functions_in_yacc: "empty (T_EMPTY)" '(' variable . ')' + 526 internal_functions_in_yacc: "isset (T_ISSET)" '(' isset_variables . ')' + 536 isset_variables: isset_variables . ',' $@76 isset_variable - ')' shift, and go to state 485 + ',' shift, and go to state 514 + ')' shift, and go to state 515 -state 345 +state 364 + + 534 isset_variables: isset_variable . + + $default reduce using rule 534 (isset_variables) + + +state 365 + + 444 expr: expr_without_variable . + 528 internal_functions_in_yacc: "empty (T_EMPTY)" '(' expr_without_variable . ')' + + ')' shift, and go to state 516 + + $default reduce using rule 444 (expr) + + +state 366 + + 264 expr_without_variable: variable . '=' expr + 265 | variable . '=' '&' variable + 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 + 272 | variable . "/= (T_DIV_EQUAL)" expr + 273 | variable . ".= (T_CONCAT_EQUAL)" expr + 274 | variable . "%= (T_MOD_EQUAL)" expr + 275 | variable . "&= (T_AND_EQUAL)" expr + 276 | variable . "|= (T_OR_EQUAL)" expr + 277 | variable . "^= (T_XOR_EQUAL)" expr + 278 | variable . "<<= (T_SL_EQUAL)" expr + 279 | variable . ">>= (T_SR_EQUAL)" expr + 447 r_variable: variable . + 449 rw_variable: variable . + 527 internal_functions_in_yacc: "empty (T_EMPTY)" '(' variable . ')' + + '=' shift, and go to state 280 + ">>= (T_SR_EQUAL)" shift, and go to state 281 + "<<= (T_SL_EQUAL)" shift, and go to state 282 + "^= (T_XOR_EQUAL)" shift, and go to state 283 + "|= (T_OR_EQUAL)" shift, and go to state 284 + "&= (T_AND_EQUAL)" shift, and go to state 285 + "%= (T_MOD_EQUAL)" shift, and go to state 286 + ".= (T_CONCAT_EQUAL)" shift, and go to state 287 + "/= (T_DIV_EQUAL)" shift, and go to state 288 + "*= (T_MUL_EQUAL)" shift, and go to state 289 + "-= (T_MINUS_EQUAL)" shift, and go to state 290 + "+= (T_PLUS_EQUAL)" shift, and go to state 291 + ')' shift, and go to state 517 + + "-- (T_DEC)" reduce using rule 449 (rw_variable) + "++ (T_INC)" reduce using rule 449 (rw_variable) + $default reduce using rule 447 (r_variable) + + +state 367 10 top_statement: "__halt_compiler (T_HALT_COMPILER)" '(' ')' . ';' - ';' shift, and go to state 486 + ';' shift, and go to state 518 -state 346 +state 368 - 253 expr_without_variable: "list (T_LIST)" '(' @42 . assignment_list ')' '=' expr - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "list (T_LIST)" shift, and go to state 487 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - $default reduce using rule 479 (assignment_list_element) - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - variable go to state 488 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - assignment_list go to state 489 - assignment_list_element go to state 490 + 263 expr_without_variable: "list (T_LIST)" '(' $@45 . assignment_list ')' '=' expr + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "list (T_LIST)" shift, and go to state 519 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + $default reduce using rule 501 (assignment_list_element) + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + variable go to state 520 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + assignment_list go to state 521 + assignment_list_element go to state 522 -state 347 +state 369 - 328 expr_without_variable: "array (T_ARRAY)" '(' array_pair_list . ')' + 354 combined_scalar: "array (T_ARRAY)" '(' array_pair_list . ')' - ')' shift, and go to state 491 + ')' shift, and go to state 523 -state 348 +state 370 - 496 encaps_var: "variable (T_VARIABLE)" '[' . @72 encaps_var_offset ']' + 518 encaps_var: "variable (T_VARIABLE)" '[' . $@75 encaps_var_offset ']' - $default reduce using rule 495 (@72) + $default reduce using rule 517 ($@75) - @72 go to state 492 + $@75 go to state 524 -state 349 +state 371 - 497 encaps_var: "variable (T_VARIABLE)" "-> (T_OBJECT_OPERATOR)" . "identifier (T_STRING)" + 519 encaps_var: "variable (T_VARIABLE)" "-> (T_OBJECT_OPERATOR)" . "identifier (T_STRING)" - "identifier (T_STRING)" shift, and go to state 493 + "identifier (T_STRING)" shift, and go to state 525 -state 350 +state 372 - 393 common_scalar: "heredoc start (T_START_HEREDOC)" "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" "heredoc end (T_END_HEREDOC)" . + 413 common_scalar: "heredoc start (T_START_HEREDOC)" "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" "heredoc end (T_END_HEREDOC)" . - $default reduce using rule 393 (common_scalar) + $default reduce using rule 413 (common_scalar) -state 351 +state 373 - 493 encaps_list: "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" encaps_var . + 515 encaps_list: "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" encaps_var . - $default reduce using rule 493 (encaps_list) + $default reduce using rule 515 (encaps_list) -state 352 +state 374 - 406 scalar: "variable name (T_STRING_VARNAME)" . - 499 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" . '[' expr ']' '}' + 426 scalar: "variable name (T_STRING_VARNAME)" . + 521 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" . '[' expr ']' '}' - '[' shift, and go to state 494 + '[' shift, and go to state 526 - $default reduce using rule 406 (scalar) + $default reduce using rule 426 (scalar) -state 353 +state 375 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 498 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" expr . '}' - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - '}' shift, and go to state 495 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 520 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" expr . '}' + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + '}' shift, and go to state 527 -state 354 +state 376 - 500 encaps_var: "{$ (T_CURLY_OPEN)" variable . '}' + 522 encaps_var: "{$ (T_CURLY_OPEN)" variable . '}' - '}' shift, and go to state 496 + '}' shift, and go to state 528 -state 355 +state 377 - 491 encaps_list: encaps_list "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . + 513 encaps_list: encaps_list "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . - $default reduce using rule 491 (encaps_list) + $default reduce using rule 513 (encaps_list) -state 356 +state 378 - 413 scalar: "heredoc start (T_START_HEREDOC)" encaps_list "heredoc end (T_END_HEREDOC)" . + 433 scalar: "heredoc start (T_START_HEREDOC)" encaps_list "heredoc end (T_END_HEREDOC)" . - $default reduce using rule 413 (scalar) + $default reduce using rule 433 (scalar) -state 357 +state 379 - 490 encaps_list: encaps_list encaps_var . + 512 encaps_list: encaps_list encaps_var . - $default reduce using rule 490 (encaps_list) + $default reduce using rule 512 (encaps_list) -state 358 +state 380 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 346 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . '(' @56 function_call_parameter_list ')' - 361 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . - 409 scalar: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . + 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 . + 429 scalar: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 - '(' shift, and go to state 497 + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 - ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 361 (class_name) - $default reduce using rule 409 (scalar) + ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 381 (class_name) + '(' reduce using rule 365 (@59) + $default reduce using rule 429 (scalar) + @59 go to state 529 -state 359 - 15 top_statement: "namespace (T_NAMESPACE)" '{' @3 . top_statement_list '}' +state 381 + + 15 top_statement: "namespace (T_NAMESPACE)" '{' $@3 . top_statement_list '}' $default reduce using rule 4 (top_statement_list) - top_statement_list go to state 498 + top_statement_list go to state 530 -state 360 +state 382 11 top_statement: "namespace (T_NAMESPACE)" namespace_name ';' . $default reduce using rule 11 (top_statement) -state 361 +state 383 - 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 499 + $@2 go to state 531 -state 362 +state 384 - 348 function_call: "\\ (T_NS_SEPARATOR)" namespace_name '(' . @57 function_call_parameter_list ')' + 368 function_call: "\\ (T_NS_SEPARATOR)" namespace_name @60 . function_call_parameter_list - $default reduce using rule 347 (@57) + '(' shift, and go to state 394 - @57 go to state 500 + function_call_parameter_list go to state 532 -state 363 +state 385 - 310 expr_without_variable: '(' new_expr ')' . @48 instance_call + 320 expr_without_variable: '(' new_expr ')' . @51 instance_call - $default reduce using rule 309 (@48) + $default reduce using rule 319 (@51) - @48 go to state 501 + @51 go to state 533 -state 364 +state 386 - 307 expr_without_variable: '(' expr ')' . + 446 parenthesis_expr: '(' yield_expr ')' . - $default reduce using rule 307 (expr_without_variable) + $default reduce using rule 446 (parenthesis_expr) -state 365 +state 387 + + 445 parenthesis_expr: '(' expr ')' . + + $default reduce using rule 445 (parenthesis_expr) + + +state 388 35 unticked_statement: '{' inner_statement_list '}' . $default reduce using rule 35 (unticked_statement) -state 366 +state 389 - 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 @@ -11882,195 +12991,202 @@ state 366 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "if (T_IF)" shift, and go to state 29 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 32 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - T_INLINE_HTML shift, and go to state 35 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "echo (T_ECHO)" shift, and go to state 37 - "do (T_DO)" shift, and go to state 38 - "while (T_WHILE)" shift, and go to state 39 - "for (T_FOR)" shift, and go to state 40 - "foreach (T_FOREACH)" shift, and go to state 41 - "declare (T_DECLARE)" shift, and go to state 42 - "switch (T_SWITCH)" shift, and go to state 43 - "break (T_BREAK)" shift, and go to state 44 - "continue (T_CONTINUE)" shift, and go to state 45 - "goto (T_GOTO)" shift, and go to state 46 - "function (T_FUNCTION)" shift, and go to state 47 - "return (T_RETURN)" shift, and go to state 49 - "try (T_TRY)" shift, and go to state 50 - "throw (T_THROW)" shift, and go to state 51 - "global (T_GLOBAL)" shift, and go to state 53 - "final (T_FINAL)" shift, and go to state 54 - "abstract (T_ABSTRACT)" shift, and go to state 55 - "static (T_STATIC)" shift, and go to state 56 - "unset (T_UNSET)" shift, and go to state 57 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "__halt_compiler (T_HALT_COMPILER)" shift, and go to state 502 - "class (T_CLASS)" shift, and go to state 61 - "trait (T_TRAIT)" shift, and go to state 62 - "interface (T_INTERFACE)" shift, and go to state 63 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 78 - '{' shift, and go to state 79 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - inner_statement go to state 503 - statement go to state 504 - unticked_statement go to state 87 - function_declaration_statement go to state 505 - class_declaration_statement go to state 506 - unticked_function_declaration_statement go to state 90 - unticked_class_declaration_statement go to state 91 - class_entry_type go to state 92 - interface_entry go to state 93 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 96 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 101 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 11 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "if (T_IF)" shift, and go to state 30 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 33 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + T_INLINE_HTML shift, and go to state 36 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "echo (T_ECHO)" shift, and go to state 38 + "do (T_DO)" shift, and go to state 39 + "while (T_WHILE)" shift, and go to state 40 + "for (T_FOR)" shift, and go to state 41 + "foreach (T_FOREACH)" shift, and go to state 42 + "declare (T_DECLARE)" shift, and go to state 43 + "switch (T_SWITCH)" shift, and go to state 44 + "break (T_BREAK)" shift, and go to state 45 + "continue (T_CONTINUE)" shift, and go to state 46 + "goto (T_GOTO)" shift, and go to state 47 + "function (T_FUNCTION)" shift, and go to state 48 + "return (T_RETURN)" shift, and go to state 50 + "try (T_TRY)" shift, and go to state 51 + "throw (T_THROW)" shift, and go to state 52 + "global (T_GLOBAL)" shift, and go to state 54 + "final (T_FINAL)" shift, and go to state 55 + "abstract (T_ABSTRACT)" shift, and go to state 56 + "static (T_STATIC)" shift, and go to state 57 + "unset (T_UNSET)" shift, and go to state 58 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "__halt_compiler (T_HALT_COMPILER)" shift, and go to state 534 + "class (T_CLASS)" shift, and go to state 62 + "trait (T_TRAIT)" shift, and go to state 63 + "interface (T_INTERFACE)" shift, and go to state 64 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 79 + '{' shift, and go to state 80 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + inner_statement go to state 535 + statement go to state 536 + unticked_statement go to state 88 + function_declaration_statement go to state 537 + class_declaration_statement go to state 538 + unticked_function_declaration_statement go to state 91 + unticked_class_declaration_statement go to state 92 + class_entry_type go to state 93 + interface_entry go to state 94 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 97 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 100 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 105 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 367 +state 390 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 461 compound_variable: '$' '{' expr . '}' - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - '}' shift, and go to state 507 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 483 compound_variable: '$' '{' expr . '}' + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + '}' shift, and go to state 539 -state 368 +state 391 - 330 expr_without_variable: '`' backticks_expr '`' . + 340 expr_without_variable: '`' backticks_expr '`' . - $default reduce using rule 330 (expr_without_variable) + $default reduce using rule 340 (expr_without_variable) -state 369 +state 392 - 412 scalar: '"' encaps_list '"' . + 432 scalar: '"' encaps_list '"' . - $default reduce using rule 412 (scalar) + $default reduce using rule 432 (scalar) -state 370 +state 393 6 namespace_name: namespace_name "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" . $default reduce using rule 6 (namespace_name) -state 371 +state 394 - 344 function_call: namespace_name '(' @55 . function_call_parameter_list ')' + 175 function_call_parameter_list: '(' . ')' + 176 | '(' . non_empty_function_call_parameter_list ')' + 177 | '(' . yield_expr ')' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -12078,142 +13194,164 @@ state 371 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 508 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 167 (function_call_parameter_list) - - namespace_name go to state 83 - function_call_parameter_list go to state 509 - non_empty_function_call_parameter_list go to state 510 - new_expr go to state 94 - expr_without_variable go to state 511 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 512 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 11 + '&' shift, and go to state 540 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ')' shift, and go to state 541 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + non_empty_function_call_parameter_list go to state 542 + new_expr go to state 95 + expr_without_variable go to state 543 + yield_expr go to state 544 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 194 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 545 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 372 +state 395 + + 364 function_call: namespace_name @58 function_call_parameter_list . + + $default reduce using rule 364 (function_call) + + +state 396 24 constant_declaration: constant_declaration ',' "identifier (T_STRING)" . '=' static_scalar - '=' shift, and go to state 513 + '=' shift, and go to state 546 -state 373 +state 397 - 109 extends_from: "extends (T_EXTENDS)" . fully_qualified_class_name + 116 extends_from: "extends (T_EXTENDS)" . fully_qualified_class_name - "identifier (T_STRING)" shift, and go to state 116 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 + "identifier (T_STRING)" shift, and go to state 122 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 - namespace_name go to state 516 - fully_qualified_class_name go to state 517 + namespace_name go to state 549 + fully_qualified_class_name go to state 550 -state 374 +state 398 - 101 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from . @30 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 100 (@30) + $default reduce using rule 107 ($@32) - @30 go to state 518 + $@32 go to state 551 -state 375 +state 399 - 103 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @31 . 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 519 + "extends (T_EXTENDS)" shift, and go to state 552 - $default reduce using rule 111 (interface_extends_list) + $default reduce using rule 118 (interface_extends_list) - interface_extends_list go to state 520 + interface_extends_list go to state 553 -state 376 +state 400 - 99 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" . @29 '(' parameter_list ')' '{' inner_statement_list '}' + 352 combined_scalar_offset: combined_scalar_offset '[' dim_offset . ']' - $default reduce using rule 98 (@29) + ']' shift, and go to state 554 - @29 go to state 521 +state 401 -state 377 + 351 combined_scalar_offset: combined_scalar '[' dim_offset . ']' - 333 expr_without_variable: function is_reference '(' . @53 parameter_list ')' lexical_vars '{' inner_statement_list '}' + ']' shift, and go to state 555 - $default reduce using rule 332 (@53) - @53 go to state 522 +state 402 + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" . $@31 '(' parameter_list ')' '{' inner_statement_list '}' -state 378 + $default reduce using rule 105 ($@31) + + $@31 go to state 556 + + +state 403 + + 344 expr_without_variable: function is_reference @56 . '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' + + '(' shift, and go to state 557 - 450 array_function_dereference: function_call @69 '[' . dim_offset ']' + +state 404 + + 472 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 @@ -12221,92 +13359,96 @@ state 378 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 462 (dim_offset) - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 429 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - dim_offset go to state 523 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 484 (dim_offset) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 324 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + dim_offset go to state 558 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 379 +state 405 - 470 variable_name: "identifier (T_STRING)" . - 514 class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" . + 492 variable_name: "identifier (T_STRING)" . + 539 class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" . - '(' reduce using rule 470 (variable_name) - $default reduce using rule 514 (class_constant) + '(' reduce using rule 492 (variable_name) + $default reduce using rule 539 (class_constant) -state 380 +state 406 - 471 variable_name: '{' . expr '}' + 493 variable_name: '{' . expr '}' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -12314,121 +13456,128 @@ state 380 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 524 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 559 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 381 +state 407 - 352 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . '(' @59 function_call_parameter_list ')' - 445 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . + 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . $@62 function_call_parameter_list + 467 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . - '(' shift, and go to state 525 + '(' reduce using rule 371 ($@62) + $default reduce using rule 467 (static_member) - $default reduce using rule 445 (static_member) + $@62 go to state 560 -state 382 +state 408 - 443 variable_without_objects: reference_variable . - 457 reference_variable: reference_variable . '[' dim_offset ']' - 458 | reference_variable . '{' expr '}' + 465 variable_without_objects: reference_variable . + 479 reference_variable: reference_variable . '[' dim_offset ']' + 480 | reference_variable . '{' expr '}' - '[' shift, and go to state 280 - '{' shift, and go to state 281 + '[' shift, and go to state 296 + '{' shift, and go to state 297 - $default reduce using rule 443 (variable_without_objects) + $default reduce using rule 465 (variable_without_objects) -state 383 +state 409 - 350 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name . '(' @58 function_call_parameter_list ')' + 370 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name . @61 function_call_parameter_list - '(' shift, and go to state 526 + $default reduce using rule 369 (@61) + @61 go to state 561 -state 384 - 444 variable_without_objects: simple_indirect_reference . reference_variable - 473 simple_indirect_reference: simple_indirect_reference . '$' +state 410 - "variable (T_VARIABLE)" shift, and go to state 34 - '$' shift, and go to state 282 + 466 variable_without_objects: simple_indirect_reference . reference_variable + 495 simple_indirect_reference: simple_indirect_reference . '$' - reference_variable go to state 527 - compound_variable go to state 112 + "variable (T_VARIABLE)" shift, and go to state 35 + '$' shift, and go to state 298 + reference_variable go to state 562 + compound_variable go to state 117 -state 385 - 279 expr_without_variable: expr "or (T_LOGICAL_OR)" @46 . expr +state 411 + + 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 @@ -12436,139 +13585,143 @@ state 385 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 528 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 563 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 386 +state 412 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 282 | expr "xor (T_LOGICAL_XOR)" expr . - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 282 (expr_without_variable) + $default reduce using rule 292 (expr_without_variable) -state 387 +state 413 - 281 expr_without_variable: expr "and (T_LOGICAL_AND)" @47 . 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 @@ -12576,89 +13729,93 @@ state 387 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 529 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 564 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 388 +state 414 - 315 expr_without_variable: expr '?' ':' . @51 expr + 325 expr_without_variable: expr '?' ':' . $@54 expr - $default reduce using rule 314 (@51) + $default reduce using rule 324 ($@54) - @51 go to state 530 + $@54 go to state 565 -state 389 +state 415 - 313 expr_without_variable: expr '?' @49 . expr ':' @50 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 @@ -12666,80 +13823,84 @@ state 389 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 531 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 566 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 390 +state 416 - 275 expr_without_variable: expr "|| (T_BOOLEAN_OR)" @44 . 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 @@ -12747,80 +13908,84 @@ state 390 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 532 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 567 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 391 +state 417 - 277 expr_without_variable: expr "&& (T_BOOLEAN_AND)" @45 . 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 @@ -12828,4968 +13993,4028 @@ state 391 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 533 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 568 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 -state 392 +state 418 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 283 | expr '|' expr . - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 . + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 283 (expr_without_variable) + $default reduce using rule 293 (expr_without_variable) -state 393 +state 419 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 285 | expr '^' expr . - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 295 | expr '^' expr . + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 285 (expr_without_variable) + $default reduce using rule 295 (expr_without_variable) -state 394 +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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 294 | expr '&' expr . + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 284 | expr '&' expr . - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 284 (expr_without_variable) + $default reduce using rule 294 (expr_without_variable) -state 395 +state 421 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 299 | expr "!== (T_IS_NOT_IDENTICAL)" expr . - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 309 | expr "!== (T_IS_NOT_IDENTICAL)" expr . + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 "!== (T_IS_NOT_IDENTICAL)" error (nonassociative) "=== (T_IS_IDENTICAL)" error (nonassociative) "!= (T_IS_NOT_EQUAL)" error (nonassociative) "== (T_IS_EQUAL)" error (nonassociative) - $default reduce using rule 299 (expr_without_variable) + $default reduce using rule 309 (expr_without_variable) -state 396 +state 422 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 298 | expr "=== (T_IS_IDENTICAL)" expr . - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 308 | expr "=== (T_IS_IDENTICAL)" expr . + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 "!== (T_IS_NOT_IDENTICAL)" error (nonassociative) "=== (T_IS_IDENTICAL)" error (nonassociative) "!= (T_IS_NOT_EQUAL)" error (nonassociative) "== (T_IS_EQUAL)" error (nonassociative) - $default reduce using rule 298 (expr_without_variable) + $default reduce using rule 308 (expr_without_variable) -state 397 +state 423 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 301 | expr "!= (T_IS_NOT_EQUAL)" expr . - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 311 | expr "!= (T_IS_NOT_EQUAL)" expr . + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 "!== (T_IS_NOT_IDENTICAL)" error (nonassociative) "=== (T_IS_IDENTICAL)" error (nonassociative) "!= (T_IS_NOT_EQUAL)" error (nonassociative) "== (T_IS_EQUAL)" error (nonassociative) - $default reduce using rule 301 (expr_without_variable) + $default reduce using rule 311 (expr_without_variable) -state 398 +state 424 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 300 | expr "== (T_IS_EQUAL)" expr . - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 310 | expr "== (T_IS_EQUAL)" expr . + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 "!== (T_IS_NOT_IDENTICAL)" error (nonassociative) "=== (T_IS_IDENTICAL)" error (nonassociative) "!= (T_IS_NOT_EQUAL)" error (nonassociative) "== (T_IS_EQUAL)" error (nonassociative) - $default reduce using rule 300 (expr_without_variable) + $default reduce using rule 310 (expr_without_variable) -state 399 +state 425 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 302 | expr '<' expr . - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 312 | expr '<' expr . + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 '<' error (nonassociative) '>' error (nonassociative) ">= (T_IS_GREATER_OR_EQUAL)" error (nonassociative) "<= (T_IS_SMALLER_OR_EQUAL)" error (nonassociative) - $default reduce using rule 302 (expr_without_variable) + $default reduce using rule 312 (expr_without_variable) -state 400 +state 426 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 304 | expr '>' expr . - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 314 | expr . '>' expr + 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 + + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 '<' error (nonassociative) '>' error (nonassociative) ">= (T_IS_GREATER_OR_EQUAL)" error (nonassociative) "<= (T_IS_SMALLER_OR_EQUAL)" error (nonassociative) - $default reduce using rule 304 (expr_without_variable) + $default reduce using rule 314 (expr_without_variable) -state 401 +state 427 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 305 | expr ">= (T_IS_GREATER_OR_EQUAL)" expr . - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 314 | expr . '>' expr + 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 + + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 '<' error (nonassociative) '>' error (nonassociative) ">= (T_IS_GREATER_OR_EQUAL)" error (nonassociative) "<= (T_IS_SMALLER_OR_EQUAL)" error (nonassociative) - $default reduce using rule 305 (expr_without_variable) + $default reduce using rule 315 (expr_without_variable) -state 402 +state 428 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 303 | expr "<= (T_IS_SMALLER_OR_EQUAL)" expr . - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 313 | expr "<= (T_IS_SMALLER_OR_EQUAL)" expr . + 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 + + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 '<' error (nonassociative) '>' error (nonassociative) ">= (T_IS_GREATER_OR_EQUAL)" error (nonassociative) "<= (T_IS_SMALLER_OR_EQUAL)" error (nonassociative) - $default reduce using rule 303 (expr_without_variable) - - -state 403 - - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 293 | expr ">> (T_SR)" expr . - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 293 (expr_without_variable) - - -state 404 - - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 292 | expr "<< (T_SL)" expr . - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 292 (expr_without_variable) - - -state 405 - - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 287 | expr '+' expr . - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 287 (expr_without_variable) - - -state 406 - - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 288 | expr '-' expr . - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 288 (expr_without_variable) - - -state 407 - - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 286 | expr '.' expr . - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 286 (expr_without_variable) - - -state 408 - - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 289 | expr '*' expr . - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 289 (expr_without_variable) - - -state 409 - - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 290 | expr '/' expr . - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 290 (expr_without_variable) - - -state 410 - - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 291 | expr '%' expr . - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 291 (expr_without_variable) - - -state 411 - - 306 expr_without_variable: expr "instanceof (T_INSTANCEOF)" class_name_reference . - - $default reduce using rule 306 (expr_without_variable) - - -state 412 - - 255 expr_without_variable: variable '=' '&' . variable - 257 | variable '=' '&' . "new (T_NEW)" class_name_reference @43 ctor_arguments - - "new (T_NEW)" shift, and go to state 534 - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - variable go to state 535 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - - -state 413 - - 254 expr_without_variable: variable '=' expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 254 (expr_without_variable) - - -state 414 - - 269 expr_without_variable: variable ">>= (T_SR_EQUAL)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 269 (expr_without_variable) - - -state 415 - - 268 expr_without_variable: variable "<<= (T_SL_EQUAL)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 268 (expr_without_variable) - - -state 416 - - 267 expr_without_variable: variable "^= (T_XOR_EQUAL)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 267 (expr_without_variable) - - -state 417 - - 266 expr_without_variable: variable "|= (T_OR_EQUAL)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 266 (expr_without_variable) - - -state 418 - - 265 expr_without_variable: variable "&= (T_AND_EQUAL)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 265 (expr_without_variable) - - -state 419 - - 264 expr_without_variable: variable "%= (T_MOD_EQUAL)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 264 (expr_without_variable) - - -state 420 - - 263 expr_without_variable: variable ".= (T_CONCAT_EQUAL)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 263 (expr_without_variable) - - -state 421 - - 262 expr_without_variable: variable "/= (T_DIV_EQUAL)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 262 (expr_without_variable) - - -state 422 - - 261 expr_without_variable: variable "*= (T_MUL_EQUAL)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 261 (expr_without_variable) - - -state 423 - - 260 expr_without_variable: variable "-= (T_MINUS_EQUAL)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 260 (expr_without_variable) - - -state 424 - - 259 expr_without_variable: variable "+= (T_PLUS_EQUAL)" expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 259 (expr_without_variable) - - -state 425 - - 358 function_call: variable_without_objects '(' @62 . function_call_parameter_list ')' - - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 508 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 167 (function_call_parameter_list) - - namespace_name go to state 83 - function_call_parameter_list go to state 536 - non_empty_function_call_parameter_list go to state 510 - new_expr go to state 94 - expr_without_variable go to state 511 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 512 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 - - -state 426 - - 470 variable_name: "identifier (T_STRING)" . - 515 class_constant: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" . - - '(' reduce using rule 470 (variable_name) - $default reduce using rule 515 (class_constant) - - -state 427 - - 356 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . '(' @61 function_call_parameter_list ')' - 446 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . - - '(' shift, and go to state 537 - - $default reduce using rule 446 (static_member) - - -state 428 - - 354 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name . '(' @60 function_call_parameter_list ')' - - '(' shift, and go to state 538 + $default reduce using rule 313 (expr_without_variable) state 429 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 463 dim_offset: expr . - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 463 (dim_offset) + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 303 | expr ">> (T_SR)" expr . + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 303 (expr_without_variable) state 430 - 448 array_function_dereference: array_function_dereference '[' dim_offset . ']' + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 302 | expr "<< (T_SL)" expr . + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - ']' shift, and go to state 539 + $default reduce using rule 302 (expr_without_variable) state 431 - 430 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @65 . object_property @66 method_or_not variable_properties + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 297 | expr '+' expr . + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - "identifier (T_STRING)" shift, and go to state 436 - "variable (T_VARIABLE)" shift, and go to state 34 - '{' shift, and go to state 380 - '$' shift, and go to state 80 - - variable_without_objects go to state 540 - reference_variable go to state 382 - compound_variable go to state 112 - object_property go to state 541 - object_dim_list go to state 542 - variable_name go to state 543 - simple_indirect_reference go to state 384 + $default reduce using rule 297 (expr_without_variable) state 432 - 457 reference_variable: reference_variable '[' dim_offset . ']' + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 298 | expr '-' expr . + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - ']' shift, and go to state 544 + $default reduce using rule 298 (expr_without_variable) state 433 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 458 reference_variable: reference_variable '{' expr . '}' - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - '}' shift, and go to state 545 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 296 | expr '.' expr . + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 296 (expr_without_variable) state 434 - 508 internal_functions_in_yacc: "eval (T_EVAL)" '(' 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 299 | expr '*' expr . + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 508 (internal_functions_in_yacc) + $default reduce using rule 299 (expr_without_variable) state 435 - 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 346 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . '(' @56 function_call_parameter_list ')' - 361 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 300 | expr '/' expr . + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 - '(' shift, and go to state 497 - - $default reduce using rule 361 (class_name) + $default reduce using rule 300 (expr_without_variable) state 436 - 470 variable_name: "identifier (T_STRING)" . + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 301 | expr '%' expr . + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 470 (variable_name) + $default reduce using rule 301 (expr_without_variable) state 437 - 488 non_empty_array_pair_list: expr "=> (T_DOUBLE_ARROW)" '&' . w_variable - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - w_variable go to state 546 - variable go to state 292 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 316 expr_without_variable: expr "instanceof (T_INSTANCEOF)" class_name_reference . + + $default reduce using rule 316 (expr_without_variable) state 438 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 484 non_empty_array_pair_list: expr "=> (T_DOUBLE_ARROW)" expr . - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 484 (non_empty_array_pair_list) + 265 expr_without_variable: variable '=' '&' . variable + 267 | variable '=' '&' . "new (T_NEW)" class_name_reference $@46 ctor_arguments + + "new (T_NEW)" shift, and go to state 569 + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + variable go to state 570 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 439 - 487 non_empty_array_pair_list: non_empty_array_pair_list ',' '&' . w_variable - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - w_variable go to state 547 - variable go to state 292 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + $default reduce using rule 264 (expr_without_variable) -state 440 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 482 non_empty_array_pair_list: non_empty_array_pair_list ',' expr . "=> (T_DOUBLE_ARROW)" expr - 483 | non_empty_array_pair_list ',' expr . - 486 | non_empty_array_pair_list ',' expr . "=> (T_DOUBLE_ARROW)" '&' w_variable - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - "=> (T_DOUBLE_ARROW)" shift, and go to state 548 - - $default reduce using rule 483 (non_empty_array_pair_list) +state 440 + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 -state 441 + $default reduce using rule 279 (expr_without_variable) - 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 361 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 +state 441 - $default reduce using rule 361 (class_name) + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 278 (expr_without_variable) state 442 - 445 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 445 (static_member) + $default reduce using rule 277 (expr_without_variable) state 443 - 382 ctor_arguments: '(' . function_call_parameter_list ')' - - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 508 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 167 (function_call_parameter_list) - - namespace_name go to state 83 - function_call_parameter_list go to state 549 - non_empty_function_call_parameter_list go to state 510 - new_expr go to state 94 - expr_without_variable go to state 511 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 512 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 276 (expr_without_variable) state 444 - 251 new_expr: "new (T_NEW)" class_name_reference @41 ctor_arguments . + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 251 (new_expr) + $default reduce using rule 275 (expr_without_variable) state 445 - 446 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . - - $default reduce using rule 446 (static_member) + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 274 (expr_without_variable) state 446 - 370 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @63 . object_property @64 dynamic_class_name_variable_properties + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - "identifier (T_STRING)" shift, and go to state 436 - "variable (T_VARIABLE)" shift, and go to state 34 - '{' shift, and go to state 380 - '$' shift, and go to state 80 - - variable_without_objects go to state 540 - reference_variable go to state 382 - compound_variable go to state 112 - object_property go to state 550 - object_dim_list go to state 542 - variable_name go to state 543 - simple_indirect_reference go to state 384 + $default reduce using rule 273 (expr_without_variable) state 447 - 377 exit_expr: '(' expr ')' . + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 377 (exit_expr) + $default reduce using rule 272 (expr_without_variable) state 448 - 38 unticked_statement: "if (T_IF)" '(' expr ')' . @5 statement @6 elseif_list else_single - 41 | "if (T_IF)" '(' expr ')' . ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' - - ':' shift, and go to state 551 + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 36 (@5) - - @5 go to state 552 + $default reduce using rule 271 (expr_without_variable) state 449 - 232 echo_expr_list: echo_expr_list ',' expr . - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 232 (echo_expr_list) + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 270 (expr_without_variable) state 450 - 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" . '(' @12 expr ')' ';' + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - '(' shift, and go to state 553 + $default reduce using rule 269 (expr_without_variable) state 451 - 44 unticked_statement: "while (T_WHILE)" '(' @9 expr . ')' @10 while_statement - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ')' shift, and go to state 554 + 378 function_call: variable_without_objects $@65 function_call_parameter_list . + $default reduce using rule 378 (function_call) -state 452 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' . @13 for_expr ';' @14 for_expr ')' @15 for_statement +state 452 - $default reduce using rule 48 (@13) + 492 variable_name: "identifier (T_STRING)" . + 540 class_constant: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" . - @13 go to state 555 + '(' reduce using rule 492 (variable_name) + $default reduce using rule 540 (class_constant) state 453 - 237 non_empty_for_expr: non_empty_for_expr ',' . @38 expr + 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . $@64 function_call_parameter_list + 468 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . - $default reduce using rule 236 (@38) + '(' reduce using rule 375 ($@64) + $default reduce using rule 468 (static_member) - @38 go to state 556 + $@64 go to state 571 state 454 - 72 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" . @19 variable foreach_optional_arg ')' @20 foreach_statement + 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name . $@63 function_call_parameter_list - $default reduce using rule 70 (@19) + $default reduce using rule 373 ($@63) - @19 go to state 557 + $@63 go to state 572 state 455 - 69 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" . @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement + 470 array_function_dereference: array_function_dereference '[' dim_offset . ']' - $default reduce using rule 67 (@17) - - @17 go to state 558 + ']' shift, and go to state 573 state 456 - 127 declare_list: "identifier (T_STRING)" . '=' static_scalar + 452 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 463 + "variable (T_VARIABLE)" shift, and go to state 35 + '{' shift, and go to state 406 + '$' shift, and go to state 81 - '=' shift, and go to state 559 + variable_without_objects go to state 574 + reference_variable go to state 408 + compound_variable go to state 117 + object_property go to state 575 + object_dim_list go to state 576 + variable_name go to state 577 + simple_indirect_reference go to state 410 state 457 - 74 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list . ')' declare_statement - 128 declare_list: declare_list . ',' "identifier (T_STRING)" '=' static_scalar + 479 reference_variable: reference_variable '[' dim_offset . ']' - ',' shift, and go to state 560 - ')' shift, and go to state 561 + ']' shift, and go to state 578 state 458 - 53 unticked_statement: "switch (T_SWITCH)" '(' expr ')' . @16 switch_case_list - - $default reduce using rule 52 (@16) - - @16 go to 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 480 reference_variable: reference_variable '{' expr . '}' + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + '}' shift, and go to state 579 state 459 - 399 static_scalar: '+' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 563 - static_class_constant go to state 471 + 531 internal_functions_in_yacc: "eval (T_EVAL)" '(' expr ')' . + + $default reduce using rule 531 (internal_functions_in_yacc) state 460 - 400 static_scalar: '-' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 564 - static_class_constant go to state 471 + 349 yield_expr: "yield (T_YIELD)" expr "=> (T_DOUBLE_ARROW)" expr_without_variable . + 444 expr: expr_without_variable . + + ')' reduce using rule 349 (yield_expr) + ';' reduce using rule 349 (yield_expr) + $default reduce using rule 444 (expr) state 461 - 402 static_scalar: '[' . static_array_pair_list ']' - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - $default reduce using rule 415 (static_array_pair_list) - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 565 - static_class_constant go to state 471 - static_array_pair_list go to state 566 - non_empty_static_array_pair_list go to state 567 + 264 expr_without_variable: variable . '=' expr + 265 | variable . '=' '&' variable + 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 + 272 | variable . "/= (T_DIV_EQUAL)" expr + 273 | variable . ".= (T_CONCAT_EQUAL)" expr + 274 | variable . "%= (T_MOD_EQUAL)" expr + 275 | variable . "&= (T_AND_EQUAL)" expr + 276 | variable . "|= (T_OR_EQUAL)" expr + 277 | variable . "^= (T_XOR_EQUAL)" expr + 278 | variable . "<<= (T_SL_EQUAL)" expr + 279 | variable . ">>= (T_SR_EQUAL)" expr + 350 yield_expr: "yield (T_YIELD)" expr "=> (T_DOUBLE_ARROW)" variable . + 447 r_variable: variable . + 449 rw_variable: variable . + + '=' shift, and go to state 280 + ">>= (T_SR_EQUAL)" shift, and go to state 281 + "<<= (T_SL_EQUAL)" shift, and go to state 282 + "^= (T_XOR_EQUAL)" shift, and go to state 283 + "|= (T_OR_EQUAL)" shift, and go to state 284 + "&= (T_AND_EQUAL)" shift, and go to state 285 + "%= (T_MOD_EQUAL)" shift, and go to state 286 + ".= (T_CONCAT_EQUAL)" shift, and go to state 287 + "/= (T_DIV_EQUAL)" shift, and go to state 288 + "*= (T_MUL_EQUAL)" shift, and go to state 289 + "-= (T_MINUS_EQUAL)" shift, and go to state 290 + "+= (T_PLUS_EQUAL)" shift, and go to state 291 + + "-- (T_DEC)" reduce using rule 449 (rw_variable) + "++ (T_INC)" reduce using rule 449 (rw_variable) + ')' reduce using rule 350 (yield_expr) + ';' reduce using rule 350 (yield_expr) + $default reduce using rule 447 (r_variable) state 462 - 401 static_scalar: "array (T_ARRAY)" . '(' static_array_pair_list ')' + 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" + 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 . + + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 - '(' shift, and go to state 568 + ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 381 (class_name) + $default reduce using rule 365 (@59) + + @59 go to state 529 state 463 - 404 static_scalar: "__CLASS__ (T_CLASS_C)" . + 492 variable_name: "identifier (T_STRING)" . - $default reduce using rule 404 (static_scalar) + $default reduce using rule 492 (variable_name) state 464 - 393 common_scalar: "heredoc start (T_START_HEREDOC)" . "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" "heredoc end (T_END_HEREDOC)" - 394 | "heredoc start (T_START_HEREDOC)" . "heredoc end (T_END_HEREDOC)" - - "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 569 - "heredoc end (T_END_HEREDOC)" shift, and go to state 207 + 510 non_empty_array_pair_list: expr "=> (T_DOUBLE_ARROW)" '&' . w_variable + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + w_variable go to state 580 + variable go to state 309 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 465 - 361 class_name: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name - 397 static_scalar: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name - - "\\ (T_NS_SEPARATOR)" shift, and go to state 570 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 506 non_empty_array_pair_list: expr "=> (T_DOUBLE_ARROW)" expr . + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 506 (non_empty_array_pair_list) state 466 - 362 class_name: "\\ (T_NS_SEPARATOR)" . namespace_name - 398 static_scalar: "\\ (T_NS_SEPARATOR)" . namespace_name - - "identifier (T_STRING)" shift, and go to state 116 - - namespace_name go to state 571 + 509 non_empty_array_pair_list: non_empty_array_pair_list ',' '&' . w_variable + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + w_variable go to state 581 + variable go to state 309 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 467 - 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 360 class_name: namespace_name . - 396 static_scalar: namespace_name . - - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 - - ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 360 (class_name) - $default reduce using rule 396 (static_scalar) + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 504 non_empty_array_pair_list: non_empty_array_pair_list ',' expr . "=> (T_DOUBLE_ARROW)" expr + 505 | non_empty_array_pair_list ',' expr . + 508 | non_empty_array_pair_list ',' expr . "=> (T_DOUBLE_ARROW)" '&' w_variable + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + "=> (T_DOUBLE_ARROW)" shift, and go to state 582 + + $default reduce using rule 505 (non_empty_array_pair_list) state 468 - 405 static_class_constant: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" + 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" + 381 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . - ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 572 + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 + + $default reduce using rule 381 (class_name) state 469 - 395 static_scalar: common_scalar . + 467 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . - $default reduce using rule 395 (static_scalar) + $default reduce using rule 467 (static_member) state 470 - 25 constant_declaration: "const (T_CONST)" "identifier (T_STRING)" '=' static_scalar . + 402 ctor_arguments: function_call_parameter_list . - $default reduce using rule 25 (constant_declaration) + $default reduce using rule 402 (ctor_arguments) state 471 - 403 static_scalar: static_class_constant . + 261 new_expr: "new (T_NEW)" class_name_reference $@44 ctor_arguments . - $default reduce using rule 403 (static_scalar) + $default reduce using rule 261 (new_expr) state 472 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list . '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches - - '}' shift, and go to state 573 + 468 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . - $default reduce using rule 26 (@4) - - @4 go to state 366 + $default reduce using rule 468 (static_member) state 473 - 23 use_declaration: "\\ (T_NS_SEPARATOR)" namespace_name "as (T_AS)" . "identifier (T_STRING)" + 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 574 + "identifier (T_STRING)" shift, and go to state 463 + "variable (T_VARIABLE)" shift, and go to state 35 + '{' shift, and go to state 406 + '$' shift, and go to state 81 + + variable_without_objects go to state 574 + reference_variable go to state 408 + compound_variable go to state 117 + object_property go to state 583 + object_dim_list go to state 576 + variable_name go to state 577 + simple_indirect_reference go to state 410 state 474 - 21 use_declaration: namespace_name "as (T_AS)" "identifier (T_STRING)" . + 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 21 (use_declaration) + $default reduce using rule 28 (inner_statement_list) + + inner_statement_list go to state 584 state 475 - 18 use_declarations: use_declarations ',' use_declaration . + 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement . $@6 elseif_list else_single - $default reduce using rule 18 (use_declarations) + $default reduce using rule 37 ($@6) + + $@6 go to state 585 state 476 - 178 global_var: '$' '{' expr . '}' - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - '}' shift, and go to state 575 + 353 combined_scalar_offset: "quoted-string (T_CONSTANT_ENCAPSED_STRING)" '[' dim_offset ']' . + $default reduce using rule 353 (combined_scalar_offset) -state 477 - 174 global_var_list: global_var_list ',' global_var . +state 477 - $default reduce using rule 174 (global_var_list) + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 242 (echo_expr_list) state 478 - 182 static_var_list: "variable (T_VARIABLE)" '=' static_scalar . + 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" . $@12 parenthesis_expr ';' - $default reduce using rule 182 (static_var_list) + $default reduce using rule 46 ($@12) + $@12 go to state 586 -state 479 - 179 static_var_list: static_var_list ',' "variable (T_VARIABLE)" . - 180 | static_var_list ',' "variable (T_VARIABLE)" . '=' static_scalar +state 479 - '=' shift, and go to state 576 + 44 unticked_statement: "while (T_WHILE)" $@9 parenthesis_expr @10 . while_statement - $default reduce using rule 179 (static_var_list) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 11 + ':' shift, and go to state 587 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "if (T_IF)" shift, and go to state 30 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 33 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + T_INLINE_HTML shift, and go to state 36 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "echo (T_ECHO)" shift, and go to state 38 + "do (T_DO)" shift, and go to state 39 + "while (T_WHILE)" shift, and go to state 40 + "for (T_FOR)" shift, and go to state 41 + "foreach (T_FOREACH)" shift, and go to state 42 + "declare (T_DECLARE)" shift, and go to state 43 + "switch (T_SWITCH)" shift, and go to state 44 + "break (T_BREAK)" shift, and go to state 45 + "continue (T_CONTINUE)" shift, and go to state 46 + "goto (T_GOTO)" shift, and go to state 47 + "function (T_FUNCTION)" shift, and go to state 48 + "return (T_RETURN)" shift, and go to state 50 + "try (T_TRY)" shift, and go to state 51 + "throw (T_THROW)" shift, and go to state 52 + "global (T_GLOBAL)" shift, and go to state 54 + "static (T_STATIC)" shift, and go to state 57 + "unset (T_UNSET)" shift, and go to state 58 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 79 + '{' shift, and go to state 80 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + statement go to state 588 + unticked_statement go to state 88 + while_statement go to state 589 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 97 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 105 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 480 - 335 expr_without_variable: "static (T_STATIC)" function is_reference '(' . @54 parameter_list ')' lexical_vars '{' inner_statement_list '}' + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' . $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement - $default reduce using rule 334 (@54) + $default reduce using rule 48 ($@13) - @54 go to state 577 + $@13 go to state 590 state 481 - 92 unset_variables: unset_variables ',' . unset_variable - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - unset_variable go to state 578 - function_call go to state 97 - class_name go to state 142 - variable go to state 341 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 247 non_empty_for_expr: non_empty_for_expr ',' . $@41 expr + + $default reduce using rule 246 ($@41) + + $@41 go to state 591 state 482 - 66 unticked_statement: "unset (T_UNSET)" '(' unset_variables ')' . ';' + 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) - ';' shift, and go to state 579 + $@19 go to state 592 state 483 - 513 isset_variables: isset_variables ',' . @73 variable + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" . $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement - $default reduce using rule 512 (@73) + $default reduce using rule 68 ($@17) - @73 go to state 580 + $@17 go to state 593 state 484 - 504 internal_functions_in_yacc: "isset (T_ISSET)" '(' isset_variables ')' . + 136 declare_list: "identifier (T_STRING)" . '=' static_scalar - $default reduce using rule 504 (internal_functions_in_yacc) + '=' shift, and go to state 594 state 485 - 505 internal_functions_in_yacc: "empty (T_EMPTY)" '(' variable ')' . + 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list . ')' declare_statement + 137 declare_list: declare_list . ',' "identifier (T_STRING)" '=' static_scalar - $default reduce using rule 505 (internal_functions_in_yacc) + ',' shift, and go to state 595 + ')' shift, and go to state 596 state 486 - 10 top_statement: "__halt_compiler (T_HALT_COMPILER)" '(' ')' ';' . + 140 switch_case_list: ':' . case_list "endswitch (T_ENDSWITCH)" ';' + 141 | ':' . ';' case_list "endswitch (T_ENDSWITCH)" ';' - $default reduce using rule 10 (top_statement) + ';' shift, and go to state 597 + + $default reduce using rule 142 (case_list) + + case_list go to state 598 state 487 - 478 assignment_list_element: "list (T_LIST)" . '(' @71 assignment_list ')' + 138 switch_case_list: '{' . case_list '}' + 139 | '{' . ';' case_list '}' - '(' shift, and go to state 581 + ';' shift, and go to state 599 + + $default reduce using rule 142 (case_list) + + case_list go to state 600 state 488 - 476 assignment_list_element: variable . + 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr $@16 switch_case_list . - $default reduce using rule 476 (assignment_list_element) + $default reduce using rule 53 (unticked_statement) state 489 - 253 expr_without_variable: "list (T_LIST)" '(' @42 assignment_list . ')' '=' expr - 474 assignment_list: assignment_list . ',' assignment_list_element - - ',' shift, and go to state 582 - ')' shift, and go to state 583 + 419 static_scalar: '+' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 601 + static_class_constant go to state 502 state 490 - 475 assignment_list: assignment_list_element . - - $default reduce using rule 475 (assignment_list) + 420 static_scalar: '-' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 602 + static_class_constant go to state 502 state 491 - 328 expr_without_variable: "array (T_ARRAY)" '(' array_pair_list ')' . - - $default reduce using rule 328 (expr_without_variable) + 422 static_scalar: '[' . static_array_pair_list ']' + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + $default reduce using rule 435 (static_array_pair_list) + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 603 + static_class_constant go to state 502 + static_array_pair_list go to state 604 + non_empty_static_array_pair_list go to state 605 state 492 - 496 encaps_var: "variable (T_VARIABLE)" '[' @72 . encaps_var_offset ']' - - "identifier (T_STRING)" shift, and go to state 584 - "variable (T_VARIABLE)" shift, and go to state 585 - "number (T_NUM_STRING)" shift, and go to state 586 + 405 common_scalar: "quoted-string (T_CONSTANT_ENCAPSED_STRING)" . - encaps_var_offset go to state 587 + $default reduce using rule 405 (common_scalar) state 493 - 497 encaps_var: "variable (T_VARIABLE)" "-> (T_OBJECT_OPERATOR)" "identifier (T_STRING)" . + 421 static_scalar: "array (T_ARRAY)" . '(' static_array_pair_list ')' - $default reduce using rule 497 (encaps_var) + '(' shift, and go to state 606 state 494 - 499 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' . expr ']' '}' + 424 static_scalar: "__CLASS__ (T_CLASS_C)" . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 588 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 424 (static_scalar) state 495 - 498 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" expr '}' . + 413 common_scalar: "heredoc start (T_START_HEREDOC)" . "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" "heredoc end (T_END_HEREDOC)" + 414 | "heredoc start (T_START_HEREDOC)" . "heredoc end (T_END_HEREDOC)" - $default reduce using rule 498 (encaps_var) + "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" shift, and go to state 607 + "heredoc end (T_END_HEREDOC)" shift, and go to state 219 state 496 - 500 encaps_var: "{$ (T_CURLY_OPEN)" variable '}' . + 381 class_name: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name + 417 static_scalar: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name - $default reduce using rule 500 (encaps_var) + "\\ (T_NS_SEPARATOR)" shift, and go to state 608 state 497 - 346 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name '(' . @56 function_call_parameter_list ')' + 382 class_name: "\\ (T_NS_SEPARATOR)" . namespace_name + 418 static_scalar: "\\ (T_NS_SEPARATOR)" . namespace_name - $default reduce using rule 345 (@56) + "identifier (T_STRING)" shift, and go to state 122 - @56 go to state 589 + namespace_name go to state 609 state 498 - 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 590 + 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" + 380 class_name: namespace_name . + 416 static_scalar: namespace_name . - $default reduce using rule 2 (@1) + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 - @1 go to state 4 + ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 380 (class_name) + $default reduce using rule 416 (static_scalar) state 499 - 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' @2 . top_statement_list '}' + 425 static_class_constant: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" - $default reduce using rule 4 (top_statement_list) - - top_statement_list go to state 591 + ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 610 state 500 - 348 function_call: "\\ (T_NS_SEPARATOR)" namespace_name '(' @57 . function_call_parameter_list ')' + 415 static_scalar: common_scalar . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 508 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 167 (function_call_parameter_list) - - namespace_name go to state 83 - function_call_parameter_list go to state 592 - non_empty_function_call_parameter_list go to state 510 - new_expr go to state 94 - expr_without_variable go to state 511 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 512 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 415 (static_scalar) state 501 - 310 expr_without_variable: '(' new_expr ')' @48 . instance_call - - '[' reduce using rule 248 (@40) - "-> (T_OBJECT_OPERATOR)" reduce using rule 248 (@40) - $default reduce using rule 247 (instance_call) + 25 constant_declaration: "const (T_CONST)" "identifier (T_STRING)" '=' static_scalar . - instance_call go to state 593 - @40 go to state 594 + $default reduce using rule 25 (constant_declaration) state 502 - 32 inner_statement: "__halt_compiler (T_HALT_COMPILER)" . '(' ')' ';' + 423 static_scalar: static_class_constant . - '(' shift, and go to state 595 + $default reduce using rule 423 (static_scalar) state 503 - 27 inner_statement_list: inner_statement_list @4 inner_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 - $default reduce using rule 27 (inner_statement_list) + '}' shift, and go to state 611 + + $default reduce using rule 26 ($@4) + + $@4 go to state 389 state 504 - 29 inner_statement: statement . + 23 use_declaration: "\\ (T_NS_SEPARATOR)" namespace_name "as (T_AS)" . "identifier (T_STRING)" - $default reduce using rule 29 (inner_statement) + "identifier (T_STRING)" shift, and go to state 612 state 505 - 30 inner_statement: function_declaration_statement . + 21 use_declaration: namespace_name "as (T_AS)" "identifier (T_STRING)" . - $default reduce using rule 30 (inner_statement) + $default reduce using rule 21 (use_declaration) state 506 - 31 inner_statement: class_declaration_statement . + 18 use_declarations: use_declarations ',' use_declaration . - $default reduce using rule 31 (inner_statement) + $default reduce using rule 18 (use_declarations) state 507 - 461 compound_variable: '$' '{' expr '}' . - - $default reduce using rule 461 (compound_variable) + 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 + 292 | expr . "xor (T_LOGICAL_XOR)" expr + 293 | expr . '|' expr + 294 | expr . '&' expr + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + '}' shift, and go to state 613 state 508 - 170 non_empty_function_call_parameter_list: '&' . w_variable - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - w_variable go to state 596 - variable go to state 292 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 184 global_var_list: global_var_list ',' global_var . + + $default reduce using rule 184 (global_var_list) state 509 - 344 function_call: namespace_name '(' @55 function_call_parameter_list . ')' + 192 static_var_list: "variable (T_VARIABLE)" '=' static_scalar . - ')' shift, and go to state 597 + $default reduce using rule 192 (static_var_list) state 510 - 166 function_call_parameter_list: non_empty_function_call_parameter_list . - 171 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list . ',' expr_without_variable - 172 | non_empty_function_call_parameter_list . ',' variable - 173 | non_empty_function_call_parameter_list . ',' '&' w_variable + 189 static_var_list: static_var_list ',' "variable (T_VARIABLE)" . + 190 | static_var_list ',' "variable (T_VARIABLE)" . '=' static_scalar - ',' shift, and go to state 598 + '=' shift, and go to state 614 - $default reduce using rule 166 (function_call_parameter_list) + $default reduce using rule 189 (static_var_list) state 511 - 168 non_empty_function_call_parameter_list: expr_without_variable . - 424 expr: expr_without_variable . + 346 expr_without_variable: "static (T_STATIC)" function is_reference @57 . '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' - ',' reduce using rule 168 (non_empty_function_call_parameter_list) - ')' reduce using rule 168 (non_empty_function_call_parameter_list) - $default reduce using rule 424 (expr) + '(' shift, and go to state 615 state 512 - 169 non_empty_function_call_parameter_list: variable . - 254 expr_without_variable: variable . '=' expr - 255 | variable . '=' '&' variable - 257 | variable . '=' '&' "new (T_NEW)" class_name_reference @43 ctor_arguments - 259 | variable . "+= (T_PLUS_EQUAL)" expr - 260 | variable . "-= (T_MINUS_EQUAL)" expr - 261 | variable . "*= (T_MUL_EQUAL)" expr - 262 | variable . "/= (T_DIV_EQUAL)" expr - 263 | variable . ".= (T_CONCAT_EQUAL)" expr - 264 | variable . "%= (T_MOD_EQUAL)" expr - 265 | variable . "&= (T_AND_EQUAL)" expr - 266 | variable . "|= (T_OR_EQUAL)" expr - 267 | variable . "^= (T_XOR_EQUAL)" expr - 268 | variable . "<<= (T_SL_EQUAL)" expr - 269 | variable . ">>= (T_SR_EQUAL)" expr - 425 r_variable: variable . - 427 rw_variable: variable . - - '=' shift, and go to state 264 - ">>= (T_SR_EQUAL)" shift, and go to state 265 - "<<= (T_SL_EQUAL)" shift, and go to state 266 - "^= (T_XOR_EQUAL)" shift, and go to state 267 - "|= (T_OR_EQUAL)" shift, and go to state 268 - "&= (T_AND_EQUAL)" shift, and go to state 269 - "%= (T_MOD_EQUAL)" shift, and go to state 270 - ".= (T_CONCAT_EQUAL)" shift, and go to state 271 - "/= (T_DIV_EQUAL)" shift, and go to state 272 - "*= (T_MUL_EQUAL)" shift, and go to state 273 - "-= (T_MINUS_EQUAL)" shift, and go to state 274 - "+= (T_PLUS_EQUAL)" shift, and go to state 275 - - ',' reduce using rule 169 (non_empty_function_call_parameter_list) - "-- (T_DEC)" reduce using rule 427 (rw_variable) - "++ (T_INC)" reduce using rule 427 (rw_variable) - ')' reduce using rule 169 (non_empty_function_call_parameter_list) - $default reduce using rule 425 (r_variable) + 99 unset_variables: unset_variables ',' . unset_variable + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + unset_variable go to state 616 + function_call go to state 101 + class_name go to state 151 + variable go to state 360 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 513 - 24 constant_declaration: constant_declaration ',' "identifier (T_STRING)" '=' . static_scalar + 67 unticked_statement: "unset (T_UNSET)" '(' unset_variables ')' . ';' - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 599 - static_class_constant go to state 471 + ';' shift, and go to state 617 state 514 - 364 fully_qualified_class_name: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name + 536 isset_variables: isset_variables ',' . $@76 isset_variable - "\\ (T_NS_SEPARATOR)" shift, and go to state 600 + $default reduce using rule 535 ($@76) + $@76 go to state 618 -state 515 - 365 fully_qualified_class_name: "\\ (T_NS_SEPARATOR)" . namespace_name +state 515 - "identifier (T_STRING)" shift, and go to state 116 + 526 internal_functions_in_yacc: "isset (T_ISSET)" '(' isset_variables ')' . - namespace_name go to state 601 + $default reduce using rule 526 (internal_functions_in_yacc) state 516 - 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 363 fully_qualified_class_name: namespace_name . - - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 + 528 internal_functions_in_yacc: "empty (T_EMPTY)" '(' expr_without_variable ')' . - $default reduce using rule 363 (fully_qualified_class_name) + $default reduce using rule 528 (internal_functions_in_yacc) state 517 - 109 extends_from: "extends (T_EXTENDS)" fully_qualified_class_name . + 527 internal_functions_in_yacc: "empty (T_EMPTY)" '(' variable ')' . - $default reduce using rule 109 (extends_from) + $default reduce using rule 527 (internal_functions_in_yacc) state 518 - 101 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @30 . implements_list '{' class_statement_list '}' - - "implements (T_IMPLEMENTS)" shift, and go to state 602 - - $default reduce using rule 113 (implements_list) + 10 top_statement: "__halt_compiler (T_HALT_COMPILER)" '(' ')' ';' . - implements_list go to state 603 + $default reduce using rule 10 (top_statement) state 519 - 112 interface_extends_list: "extends (T_EXTENDS)" . interface_list + 500 assignment_list_element: "list (T_LIST)" . '(' $@74 assignment_list ')' - "identifier (T_STRING)" shift, and go to state 116 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 - - namespace_name go to state 516 - interface_list go to state 604 - fully_qualified_class_name go to state 605 + '(' shift, and go to state 619 state 520 - 103 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @31 interface_extends_list . '{' class_statement_list '}' + 498 assignment_list_element: variable . - '{' shift, and go to state 606 + $default reduce using rule 498 (assignment_list_element) state 521 - 99 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @29 . '(' parameter_list ')' '{' inner_statement_list '}' + 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list . ')' '=' expr + 496 assignment_list: assignment_list . ',' assignment_list_element - '(' shift, and go to state 607 + ',' shift, and go to state 620 + ')' shift, and go to state 621 state 522 - 333 expr_without_variable: function is_reference '(' @53 . parameter_list ')' lexical_vars '{' inner_statement_list '}' + 497 assignment_list: assignment_list_element . - "identifier (T_STRING)" shift, and go to state 116 - "array (T_ARRAY)" shift, and go to state 608 - "callable (T_CALLABLE)" shift, and go to state 609 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 - - ')' reduce using rule 153 (parameter_list) - $default reduce using rule 162 (optional_class_type) - - namespace_name go to state 516 - parameter_list go to state 610 - non_empty_parameter_list go to state 611 - optional_class_type go to state 612 - fully_qualified_class_name go to state 613 + $default reduce using rule 497 (assignment_list) state 523 - 450 array_function_dereference: function_call @69 '[' dim_offset . ']' + 354 combined_scalar: "array (T_ARRAY)" '(' array_pair_list ')' . - ']' shift, and go to state 614 + $default reduce using rule 354 (combined_scalar) state 524 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 471 variable_name: '{' expr . '}' - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - '}' shift, and go to state 615 + 518 encaps_var: "variable (T_VARIABLE)" '[' $@75 . encaps_var_offset ']' + "identifier (T_STRING)" shift, and go to state 622 + "variable (T_VARIABLE)" shift, and go to state 623 + "number (T_NUM_STRING)" shift, and go to state 624 -state 525 + encaps_var_offset go to state 625 - 352 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' . @59 function_call_parameter_list ')' - $default reduce using rule 351 (@59) +state 525 - @59 go to state 616 + 519 encaps_var: "variable (T_VARIABLE)" "-> (T_OBJECT_OPERATOR)" "identifier (T_STRING)" . + $default reduce using rule 519 (encaps_var) -state 526 - 350 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' . @58 function_call_parameter_list ')' +state 526 - $default reduce using rule 349 (@58) + 521 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' . expr ']' '}' - @58 go to state 617 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 626 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 527 - 444 variable_without_objects: simple_indirect_reference reference_variable . - 457 reference_variable: reference_variable . '[' dim_offset ']' - 458 | reference_variable . '{' expr '}' + 520 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" expr '}' . - '[' shift, and go to state 280 - '{' shift, and go to state 281 - - $default reduce using rule 444 (variable_without_objects) + $default reduce using rule 520 (encaps_var) state 528 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 279 | expr "or (T_LOGICAL_OR)" @46 expr . - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 522 encaps_var: "{$ (T_CURLY_OPEN)" variable '}' . - $default reduce using rule 279 (expr_without_variable) + $default reduce using rule 522 (encaps_var) state 529 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 281 | expr "and (T_LOGICAL_AND)" @47 expr . - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 366 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name @59 . function_call_parameter_list - $default reduce using rule 281 (expr_without_variable) + '(' shift, and go to state 394 + + function_call_parameter_list go to state 627 state 530 - 315 expr_without_variable: expr '?' ':' @51 . expr + 3 top_statement_list: top_statement_list . $@1 top_statement + 15 top_statement: "namespace (T_NAMESPACE)" '{' $@3 top_statement_list . '}' - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 618 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + '}' shift, and go to state 628 + + $default reduce using rule 2 ($@1) + + $@1 go to state 4 state 531 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 313 | expr '?' @49 expr . ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - ':' shift, and go to state 619 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' $@2 . top_statement_list '}' + + $default reduce using rule 4 (top_statement_list) + + top_statement_list go to state 629 state 532 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 275 | expr "|| (T_BOOLEAN_OR)" @44 expr . - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 368 function_call: "\\ (T_NS_SEPARATOR)" namespace_name @60 function_call_parameter_list . - $default reduce using rule 275 (expr_without_variable) + $default reduce using rule 368 (function_call) state 533 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 277 | expr "&& (T_BOOLEAN_AND)" @45 expr . - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 320 expr_without_variable: '(' new_expr ')' @51 . instance_call - $default reduce using rule 277 (expr_without_variable) + '[' 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 630 + $@43 go to state 631 -state 534 - 257 expr_without_variable: variable '=' '&' "new (T_NEW)" . class_name_reference @43 ctor_arguments +state 534 - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 152 - "\\ (T_NS_SEPARATOR)" shift, and go to state 153 - '$' shift, and go to state 80 + 32 inner_statement: "__halt_compiler (T_HALT_COMPILER)" . '(' ')' ';' - namespace_name go to state 154 - class_name go to state 155 - class_name_reference go to state 620 - dynamic_class_name_reference go to state 157 - static_member go to state 106 - variable_class_name go to state 158 - base_variable go to state 159 - reference_variable go to state 160 - compound_variable go to state 112 - simple_indirect_reference go to state 161 + '(' shift, and go to state 632 state 535 - 255 expr_without_variable: variable '=' '&' variable . + 27 inner_statement_list: inner_statement_list $@4 inner_statement . - $default reduce using rule 255 (expr_without_variable) + $default reduce using rule 27 (inner_statement_list) state 536 - 358 function_call: variable_without_objects '(' @62 function_call_parameter_list . ')' + 29 inner_statement: statement . - ')' shift, and go to state 621 + $default reduce using rule 29 (inner_statement) state 537 - 356 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' . @61 function_call_parameter_list ')' - - $default reduce using rule 355 (@61) + 30 inner_statement: function_declaration_statement . - @61 go to state 622 + $default reduce using rule 30 (inner_statement) state 538 - 354 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' . @60 function_call_parameter_list ')' - - $default reduce using rule 353 (@60) + 31 inner_statement: class_declaration_statement . - @60 go to state 623 + $default reduce using rule 31 (inner_statement) state 539 - 448 array_function_dereference: array_function_dereference '[' dim_offset ']' . + 483 compound_variable: '$' '{' expr '}' . - $default reduce using rule 448 (array_function_dereference) + $default reduce using rule 483 (compound_variable) state 540 - 466 object_property: variable_without_objects . @70 - - $default reduce using rule 465 (@70) - - @70 go to state 624 + 180 non_empty_function_call_parameter_list: '&' . w_variable + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + w_variable go to state 633 + variable go to state 309 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 541 - 430 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @65 object_property . @66 method_or_not variable_properties - - $default reduce using rule 429 (@66) + 175 function_call_parameter_list: '(' ')' . - @66 go to state 625 + $default reduce using rule 175 (function_call_parameter_list) state 542 - 464 object_property: object_dim_list . - 467 object_dim_list: object_dim_list . '[' dim_offset ']' - 468 | object_dim_list . '{' expr '}' + 176 function_call_parameter_list: '(' non_empty_function_call_parameter_list . ')' + 181 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list . ',' expr_without_variable + 182 | non_empty_function_call_parameter_list . ',' variable + 183 | non_empty_function_call_parameter_list . ',' '&' w_variable - '[' shift, and go to state 626 - '{' shift, and go to state 627 - - $default reduce using rule 464 (object_property) + ',' shift, and go to state 634 + ')' shift, and go to state 635 state 543 - 469 object_dim_list: variable_name . + 178 non_empty_function_call_parameter_list: expr_without_variable . + 444 expr: expr_without_variable . - $default reduce using rule 469 (object_dim_list) + ',' reduce using rule 178 (non_empty_function_call_parameter_list) + ')' reduce using rule 178 (non_empty_function_call_parameter_list) + $default reduce using rule 444 (expr) state 544 - 457 reference_variable: reference_variable '[' dim_offset ']' . + 177 function_call_parameter_list: '(' yield_expr . ')' - $default reduce using rule 457 (reference_variable) + ')' shift, and go to state 636 state 545 - 458 reference_variable: reference_variable '{' expr '}' . - - $default reduce using rule 458 (reference_variable) + 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 + 269 | variable . "+= (T_PLUS_EQUAL)" expr + 270 | variable . "-= (T_MINUS_EQUAL)" expr + 271 | variable . "*= (T_MUL_EQUAL)" expr + 272 | variable . "/= (T_DIV_EQUAL)" expr + 273 | variable . ".= (T_CONCAT_EQUAL)" expr + 274 | variable . "%= (T_MOD_EQUAL)" expr + 275 | variable . "&= (T_AND_EQUAL)" expr + 276 | variable . "|= (T_OR_EQUAL)" expr + 277 | variable . "^= (T_XOR_EQUAL)" expr + 278 | variable . "<<= (T_SL_EQUAL)" expr + 279 | variable . ">>= (T_SR_EQUAL)" expr + 447 r_variable: variable . + 449 rw_variable: variable . + + '=' shift, and go to state 280 + ">>= (T_SR_EQUAL)" shift, and go to state 281 + "<<= (T_SL_EQUAL)" shift, and go to state 282 + "^= (T_XOR_EQUAL)" shift, and go to state 283 + "|= (T_OR_EQUAL)" shift, and go to state 284 + "&= (T_AND_EQUAL)" shift, and go to state 285 + "%= (T_MOD_EQUAL)" shift, and go to state 286 + ".= (T_CONCAT_EQUAL)" shift, and go to state 287 + "/= (T_DIV_EQUAL)" shift, and go to state 288 + "*= (T_MUL_EQUAL)" shift, and go to state 289 + "-= (T_MINUS_EQUAL)" shift, and go to state 290 + "+= (T_PLUS_EQUAL)" shift, and go to state 291 + + ',' reduce using rule 179 (non_empty_function_call_parameter_list) + "-- (T_DEC)" reduce using rule 449 (rw_variable) + "++ (T_INC)" reduce using rule 449 (rw_variable) + ')' reduce using rule 179 (non_empty_function_call_parameter_list) + $default reduce using rule 447 (r_variable) state 546 - 488 non_empty_array_pair_list: expr "=> (T_DOUBLE_ARROW)" '&' w_variable . + 24 constant_declaration: constant_declaration ',' "identifier (T_STRING)" '=' . static_scalar - $default reduce using rule 488 (non_empty_array_pair_list) + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 637 + static_class_constant go to state 502 state 547 - 487 non_empty_array_pair_list: non_empty_array_pair_list ',' '&' w_variable . + 384 fully_qualified_class_name: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name - $default reduce using rule 487 (non_empty_array_pair_list) + "\\ (T_NS_SEPARATOR)" shift, and go to state 638 state 548 - 482 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" . expr - 486 | non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" . '&' w_variable + 385 fully_qualified_class_name: "\\ (T_NS_SEPARATOR)" . namespace_name - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 628 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 629 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "identifier (T_STRING)" shift, and go to state 122 + + namespace_name go to state 639 state 549 - 382 ctor_arguments: '(' function_call_parameter_list . ')' + 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" + 383 fully_qualified_class_name: namespace_name . + + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 - ')' shift, and go to state 630 + $default reduce using rule 383 (fully_qualified_class_name) state 550 - 370 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @63 object_property . @64 dynamic_class_name_variable_properties - - $default reduce using rule 369 (@64) + 116 extends_from: "extends (T_EXTENDS)" fully_qualified_class_name . - @64 go to state 631 + $default reduce using rule 116 (extends_from) state 551 - 41 unticked_statement: "if (T_IF)" '(' expr ')' ':' . @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 . implements_list '{' class_statement_list '}' - $default reduce using rule 39 (@7) + "implements (T_IMPLEMENTS)" shift, and go to state 640 - @7 go to state 632 + $default reduce using rule 120 (implements_list) + + implements_list go to state 641 state 552 - 38 unticked_statement: "if (T_IF)" '(' expr ')' @5 . statement @6 elseif_list else_single + 119 interface_extends_list: "extends (T_EXTENDS)" . interface_list - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "if (T_IF)" shift, and go to state 29 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 32 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - T_INLINE_HTML shift, and go to state 35 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "echo (T_ECHO)" shift, and go to state 37 - "do (T_DO)" shift, and go to state 38 - "while (T_WHILE)" shift, and go to state 39 - "for (T_FOR)" shift, and go to state 40 - "foreach (T_FOREACH)" shift, and go to state 41 - "declare (T_DECLARE)" shift, and go to state 42 - "switch (T_SWITCH)" shift, and go to state 43 - "break (T_BREAK)" shift, and go to state 44 - "continue (T_CONTINUE)" shift, and go to state 45 - "goto (T_GOTO)" shift, and go to state 46 - "function (T_FUNCTION)" shift, and go to state 47 - "return (T_RETURN)" shift, and go to state 49 - "try (T_TRY)" shift, and go to state 50 - "throw (T_THROW)" shift, and go to state 51 - "global (T_GLOBAL)" shift, and go to state 53 - "static (T_STATIC)" shift, and go to state 56 - "unset (T_UNSET)" shift, and go to state 57 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 78 - '{' shift, and go to state 79 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - statement go to state 633 - unticked_statement go to state 87 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 101 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "identifier (T_STRING)" shift, and go to state 122 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 + namespace_name go to state 549 + interface_list go to state 642 + fully_qualified_class_name go to state 643 -state 553 - 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" '(' . @12 expr ')' ';' +state 553 - $default reduce using rule 46 (@12) + 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list . '{' class_statement_list '}' - @12 go to state 634 + '{' shift, and go to state 644 state 554 - 44 unticked_statement: "while (T_WHILE)" '(' @9 expr ')' . @10 while_statement + 352 combined_scalar_offset: combined_scalar_offset '[' dim_offset ']' . - $default reduce using rule 43 (@10) - - @10 go to state 635 + $default reduce using rule 352 (combined_scalar_offset) state 555 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 . for_expr ';' @14 for_expr ')' @15 for_statement + 351 combined_scalar_offset: combined_scalar '[' dim_offset ']' . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 234 (for_expr) - - namespace_name go to state 83 - for_expr go to state 636 - non_empty_for_expr go to state 312 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 313 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 351 (combined_scalar_offset) state 556 - 237 non_empty_for_expr: non_empty_for_expr ',' @38 . expr + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 . '(' parameter_list ')' '{' inner_statement_list '}' - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 637 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + '(' shift, and go to state 645 state 557 - 72 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 . variable foreach_optional_arg ')' @20 foreach_statement - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - variable go to state 638 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 344 expr_without_variable: function is_reference @56 '(' . parameter_list ')' lexical_vars '{' inner_statement_list '}' + + "identifier (T_STRING)" shift, and go to state 122 + "array (T_ARRAY)" shift, and go to state 646 + "callable (T_CALLABLE)" shift, and go to state 647 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 + + ')' reduce using rule 162 (parameter_list) + $default reduce using rule 171 (optional_class_type) + + namespace_name go to state 549 + parameter_list go to state 648 + non_empty_parameter_list go to state 649 + optional_class_type go to state 650 + fully_qualified_class_name go to state 651 state 558 - 69 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 . foreach_variable foreach_optional_arg ')' @18 foreach_statement - - '&' shift, and go to state 639 - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - foreach_variable go to state 640 - function_call go to state 97 - class_name go to state 142 - variable go to state 641 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 472 array_function_dereference: function_call $@72 '[' dim_offset . ']' + + ']' shift, and go to state 652 state 559 - 127 declare_list: "identifier (T_STRING)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 642 - static_class_constant go to state 471 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 493 variable_name: '{' expr . '}' + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + '}' shift, and go to state 653 state 560 - 128 declare_list: declare_list ',' . "identifier (T_STRING)" '=' static_scalar + 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 . function_call_parameter_list + + '(' shift, and go to state 394 - "identifier (T_STRING)" shift, and go to state 643 + function_call_parameter_list go to state 654 state 561 - 74 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list ')' . declare_statement + 370 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @61 . function_call_parameter_list - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - ':' shift, and go to state 644 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "if (T_IF)" shift, and go to state 29 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 32 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - T_INLINE_HTML shift, and go to state 35 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "echo (T_ECHO)" shift, and go to state 37 - "do (T_DO)" shift, and go to state 38 - "while (T_WHILE)" shift, and go to state 39 - "for (T_FOR)" shift, and go to state 40 - "foreach (T_FOREACH)" shift, and go to state 41 - "declare (T_DECLARE)" shift, and go to state 42 - "switch (T_SWITCH)" shift, and go to state 43 - "break (T_BREAK)" shift, and go to state 44 - "continue (T_CONTINUE)" shift, and go to state 45 - "goto (T_GOTO)" shift, and go to state 46 - "function (T_FUNCTION)" shift, and go to state 47 - "return (T_RETURN)" shift, and go to state 49 - "try (T_TRY)" shift, and go to state 50 - "throw (T_THROW)" shift, and go to state 51 - "global (T_GLOBAL)" shift, and go to state 53 - "static (T_STATIC)" shift, and go to state 56 - "unset (T_UNSET)" shift, and go to state 57 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 78 - '{' shift, and go to state 79 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - statement go to state 645 - unticked_statement go to state 87 - declare_statement go to state 646 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 101 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + '(' shift, and go to state 394 + + function_call_parameter_list go to state 655 state 562 - 53 unticked_statement: "switch (T_SWITCH)" '(' expr ')' @16 . switch_case_list + 466 variable_without_objects: simple_indirect_reference reference_variable . + 479 reference_variable: reference_variable . '[' dim_offset ']' + 480 | reference_variable . '{' expr '}' - ':' shift, and go to state 647 - '{' shift, and go to state 648 + '[' shift, and go to state 296 + '{' shift, and go to state 297 - switch_case_list go to state 649 + $default reduce using rule 466 (variable_without_objects) state 563 - 399 static_scalar: '+' static_scalar . + 285 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 399 (static_scalar) + $default reduce using rule 289 (expr_without_variable) state 564 - 400 static_scalar: '-' static_scalar . + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 400 (static_scalar) + $default reduce using rule 291 (expr_without_variable) state 565 - 421 non_empty_static_array_pair_list: static_scalar . "=> (T_DOUBLE_ARROW)" static_scalar - 422 | static_scalar . - - "=> (T_DOUBLE_ARROW)" shift, and go to state 650 + 325 expr_without_variable: expr '?' ':' $@54 . expr - $default reduce using rule 422 (non_empty_static_array_pair_list) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 656 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 566 - 402 static_scalar: '[' static_array_pair_list . ']' - - ']' shift, and go to state 651 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + ':' shift, and go to state 657 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 state 567 - 416 static_array_pair_list: non_empty_static_array_pair_list . possible_comma - 419 non_empty_static_array_pair_list: non_empty_static_array_pair_list . ',' static_scalar "=> (T_DOUBLE_ARROW)" static_scalar - 420 | non_empty_static_array_pair_list . ',' static_scalar - - ',' shift, and go to state 652 - - $default reduce using rule 417 (possible_comma) + 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - possible_comma go to state 653 + $default reduce using rule 285 (expr_without_variable) state 568 - 401 static_scalar: "array (T_ARRAY)" '(' . static_array_pair_list ')' - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - $default reduce using rule 415 (static_array_pair_list) - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 565 - static_class_constant go to state 471 - static_array_pair_list go to state 654 - non_empty_static_array_pair_list go to state 567 + 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 287 (expr_without_variable) state 569 - 393 common_scalar: "heredoc start (T_START_HEREDOC)" "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . "heredoc end (T_END_HEREDOC)" + 267 expr_without_variable: variable '=' '&' "new (T_NEW)" . class_name_reference $@46 ctor_arguments - "heredoc end (T_END_HEREDOC)" shift, and go to state 350 + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 161 + "\\ (T_NS_SEPARATOR)" shift, and go to state 162 + '$' shift, and go to state 81 + namespace_name go to state 163 + class_name go to state 164 + class_name_reference go to state 658 + dynamic_class_name_reference go to state 166 + static_member go to state 111 + variable_class_name go to state 167 + base_variable go to state 168 + reference_variable go to state 169 + compound_variable go to state 117 + simple_indirect_reference go to state 170 -state 570 - 361 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name - 397 static_scalar: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name +state 570 - "identifier (T_STRING)" shift, and go to state 116 + 265 expr_without_variable: variable '=' '&' variable . - namespace_name go to state 655 + $default reduce using rule 265 (expr_without_variable) state 571 - 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 362 class_name: "\\ (T_NS_SEPARATOR)" namespace_name . - 398 static_scalar: "\\ (T_NS_SEPARATOR)" namespace_name . + 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 . function_call_parameter_list - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 + '(' shift, and go to state 394 - ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 362 (class_name) - $default reduce using rule 398 (static_scalar) + function_call_parameter_list go to state 659 state 572 - 405 static_class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)" + 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 . function_call_parameter_list + + '(' shift, and go to state 394 - "identifier (T_STRING)" shift, and go to state 656 + function_call_parameter_list go to state 660 state 573 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' . "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches + 470 array_function_dereference: array_function_dereference '[' dim_offset ']' . - "catch (T_CATCH)" shift, and go to state 657 + $default reduce using rule 470 (array_function_dereference) state 574 - 23 use_declaration: "\\ (T_NS_SEPARATOR)" namespace_name "as (T_AS)" "identifier (T_STRING)" . + 488 object_property: variable_without_objects . $@73 - $default reduce using rule 23 (use_declaration) + $default reduce using rule 487 ($@73) + + $@73 go to state 661 state 575 - 178 global_var: '$' '{' expr '}' . + 452 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property . $@69 method_or_not variable_properties - $default reduce using rule 178 (global_var) + $default reduce using rule 451 ($@69) + + $@69 go to state 662 state 576 - 180 static_var_list: static_var_list ',' "variable (T_VARIABLE)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 658 - static_class_constant go to state 471 + 486 object_property: object_dim_list . + 489 object_dim_list: object_dim_list . '[' dim_offset ']' + 490 | object_dim_list . '{' expr '}' + '[' shift, and go to state 663 + '{' shift, and go to state 664 -state 577 + $default reduce using rule 486 (object_property) - 335 expr_without_variable: "static (T_STATIC)" function is_reference '(' @54 . parameter_list ')' lexical_vars '{' inner_statement_list '}' - "identifier (T_STRING)" shift, and go to state 116 - "array (T_ARRAY)" shift, and go to state 608 - "callable (T_CALLABLE)" shift, and go to state 609 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 +state 577 - ')' reduce using rule 153 (parameter_list) - $default reduce using rule 162 (optional_class_type) + 491 object_dim_list: variable_name . - namespace_name go to state 516 - parameter_list go to state 659 - non_empty_parameter_list go to state 611 - optional_class_type go to state 612 - fully_qualified_class_name go to state 613 + $default reduce using rule 491 (object_dim_list) state 578 - 92 unset_variables: unset_variables ',' unset_variable . + 479 reference_variable: reference_variable '[' dim_offset ']' . - $default reduce using rule 92 (unset_variables) + $default reduce using rule 479 (reference_variable) state 579 - 66 unticked_statement: "unset (T_UNSET)" '(' unset_variables ')' ';' . + 480 reference_variable: reference_variable '{' expr '}' . - $default reduce using rule 66 (unticked_statement) + $default reduce using rule 480 (reference_variable) state 580 - 513 isset_variables: isset_variables ',' @73 . variable - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - variable go to state 660 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 510 non_empty_array_pair_list: expr "=> (T_DOUBLE_ARROW)" '&' w_variable . + $default reduce using rule 510 (non_empty_array_pair_list) -state 581 - 478 assignment_list_element: "list (T_LIST)" '(' . @71 assignment_list ')' +state 581 - $default reduce using rule 477 (@71) + 509 non_empty_array_pair_list: non_empty_array_pair_list ',' '&' w_variable . - @71 go to state 661 + $default reduce using rule 509 (non_empty_array_pair_list) state 582 - 474 assignment_list: assignment_list ',' . assignment_list_element - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "list (T_LIST)" shift, and go to state 487 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - $default reduce using rule 479 (assignment_list_element) - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - variable go to state 488 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - assignment_list_element go to state 662 + 504 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" . expr + 508 | non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" . '&' w_variable + + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '&' shift, and go to state 665 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 666 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 583 - 253 expr_without_variable: "list (T_LIST)" '(' @42 assignment_list ')' . '=' expr + 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) - '=' shift, and go to state 663 + $@67 go to state 667 state 584 - 501 encaps_var_offset: "identifier (T_STRING)" . + 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)" ';' - $default reduce using rule 501 (encaps_var_offset) + "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 389 + $@8 go to state 668 state 585 - 503 encaps_var_offset: "variable (T_VARIABLE)" . + 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement $@6 . elseif_list else_single + + $default reduce using rule 151 (elseif_list) - $default reduce using rule 503 (encaps_var_offset) + elseif_list go to state 669 state 586 - 502 encaps_var_offset: "number (T_NUM_STRING)" . + 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" $@12 . parenthesis_expr ';' + + '(' shift, and go to state 174 - $default reduce using rule 502 (encaps_var_offset) + parenthesis_expr go to state 670 state 587 - 496 encaps_var: "variable (T_VARIABLE)" '[' @72 encaps_var_offset . ']' + 150 while_statement: ':' . inner_statement_list "endwhile (T_ENDWHILE)" ';' + + $default reduce using rule 28 (inner_statement_list) - ']' shift, and go to state 664 + inner_statement_list go to state 671 state 588 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 499 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr . ']' '}' - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ']' shift, and go to state 665 + 149 while_statement: statement . + + $default reduce using rule 149 (while_statement) state 589 - 346 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name '(' @56 . function_call_parameter_list ')' + 44 unticked_statement: "while (T_WHILE)" $@9 parenthesis_expr @10 while_statement . + + $default reduce using rule 44 (unticked_statement) + + +state 590 + + 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 @@ -17797,480 +18022,626 @@ state 589 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 508 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 167 (function_call_parameter_list) - - namespace_name go to state 83 - function_call_parameter_list go to state 666 - non_empty_function_call_parameter_list go to state 510 - new_expr go to state 94 - expr_without_variable go to state 511 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 512 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 - - -state 590 - - 15 top_statement: "namespace (T_NAMESPACE)" '{' @3 top_statement_list '}' . - - $default reduce using rule 15 (top_statement) + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 244 (for_expr) + + namespace_name go to state 84 + for_expr go to state 672 + non_empty_for_expr go to state 331 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 332 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 591 - 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 667 + 247 non_empty_for_expr: non_empty_for_expr ',' $@41 . expr - $default reduce using rule 2 (@1) - - @1 go to state 4 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 673 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 592 - 348 function_call: "\\ (T_NS_SEPARATOR)" namespace_name '(' @57 function_call_parameter_list . ')' - - ')' shift, and go to state 668 + 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 674 + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "list (T_LIST)" shift, and go to state 675 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + foreach_variable go to state 676 + function_call go to state 101 + class_name go to state 151 + variable go to state 677 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 593 - 310 expr_without_variable: '(' new_expr ')' @48 instance_call . - - $default reduce using rule 310 (expr_without_variable) + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 . foreach_variable foreach_optional_arg ')' $@18 foreach_statement + + '&' shift, and go to state 674 + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "list (T_LIST)" shift, and go to state 675 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + foreach_variable go to state 678 + function_call go to state 101 + class_name go to state 151 + variable go to state 677 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 594 - 249 instance_call: @40 . chaining_instance_call - - '[' shift, and go to state 669 - "-> (T_OBJECT_OPERATOR)" shift, and go to state 670 - - chaining_method_or_property go to state 671 - chaining_dereference go to state 672 - chaining_instance_call go to state 673 - variable_property go to state 674 + 136 declare_list: "identifier (T_STRING)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 679 + static_class_constant go to state 502 state 595 - 32 inner_statement: "__halt_compiler (T_HALT_COMPILER)" '(' . ')' ';' + 137 declare_list: declare_list ',' . "identifier (T_STRING)" '=' static_scalar - ')' shift, and go to state 675 + "identifier (T_STRING)" shift, and go to state 680 state 596 - 170 non_empty_function_call_parameter_list: '&' w_variable . + 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list ')' . declare_statement - $default reduce using rule 170 (non_empty_function_call_parameter_list) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 11 + ':' shift, and go to state 681 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "if (T_IF)" shift, and go to state 30 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 33 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + T_INLINE_HTML shift, and go to state 36 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "echo (T_ECHO)" shift, and go to state 38 + "do (T_DO)" shift, and go to state 39 + "while (T_WHILE)" shift, and go to state 40 + "for (T_FOR)" shift, and go to state 41 + "foreach (T_FOREACH)" shift, and go to state 42 + "declare (T_DECLARE)" shift, and go to state 43 + "switch (T_SWITCH)" shift, and go to state 44 + "break (T_BREAK)" shift, and go to state 45 + "continue (T_CONTINUE)" shift, and go to state 46 + "goto (T_GOTO)" shift, and go to state 47 + "function (T_FUNCTION)" shift, and go to state 48 + "return (T_RETURN)" shift, and go to state 50 + "try (T_TRY)" shift, and go to state 51 + "throw (T_THROW)" shift, and go to state 52 + "global (T_GLOBAL)" shift, and go to state 54 + "static (T_STATIC)" shift, and go to state 57 + "unset (T_UNSET)" shift, and go to state 58 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 79 + '{' shift, and go to state 80 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + statement go to state 682 + unticked_statement go to state 88 + declare_statement go to state 683 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 97 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 105 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 597 - 344 function_call: namespace_name '(' @55 function_call_parameter_list ')' . + 141 switch_case_list: ':' ';' . case_list "endswitch (T_ENDSWITCH)" ';' - $default reduce using rule 344 (function_call) + $default reduce using rule 142 (case_list) + + case_list go to state 684 state 598 - 171 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' . expr_without_variable - 172 | non_empty_function_call_parameter_list ',' . variable - 173 | non_empty_function_call_parameter_list ',' . '&' w_variable + 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 - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 676 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 677 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 678 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "endswitch (T_ENDSWITCH)" shift, and go to state 685 + "case (T_CASE)" shift, and go to state 686 + "default (T_DEFAULT)" shift, and go to state 687 state 599 - 24 constant_declaration: constant_declaration ',' "identifier (T_STRING)" '=' static_scalar . + 139 switch_case_list: '{' ';' . case_list '}' - $default reduce using rule 24 (constant_declaration) + $default reduce using rule 142 (case_list) + case_list go to state 688 -state 600 - 364 fully_qualified_class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name +state 600 - "identifier (T_STRING)" shift, and go to state 116 + 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 - namespace_name go to state 679 + "case (T_CASE)" shift, and go to state 686 + "default (T_DEFAULT)" shift, and go to state 687 + '}' shift, and go to state 689 state 601 - 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 365 fully_qualified_class_name: "\\ (T_NS_SEPARATOR)" namespace_name . - - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 + 419 static_scalar: '+' static_scalar . - $default reduce using rule 365 (fully_qualified_class_name) + $default reduce using rule 419 (static_scalar) state 602 - 114 implements_list: "implements (T_IMPLEMENTS)" . interface_list - - "identifier (T_STRING)" shift, and go to state 116 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 + 420 static_scalar: '-' static_scalar . - namespace_name go to state 516 - interface_list go to state 680 - fully_qualified_class_name go to state 605 + $default reduce using rule 420 (static_scalar) state 603 - 101 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @30 implements_list . '{' class_statement_list '}' + 441 non_empty_static_array_pair_list: static_scalar . "=> (T_DOUBLE_ARROW)" static_scalar + 442 | static_scalar . - '{' shift, and go to state 681 + "=> (T_DOUBLE_ARROW)" shift, and go to state 690 + $default reduce using rule 442 (non_empty_static_array_pair_list) -state 604 - 112 interface_extends_list: "extends (T_EXTENDS)" interface_list . - 116 interface_list: interface_list . ',' fully_qualified_class_name +state 604 - ',' shift, and go to state 682 + 422 static_scalar: '[' static_array_pair_list . ']' - $default reduce using rule 112 (interface_extends_list) + ']' shift, and go to state 691 state 605 - 115 interface_list: fully_qualified_class_name . + 436 static_array_pair_list: non_empty_static_array_pair_list . possible_comma + 439 non_empty_static_array_pair_list: non_empty_static_array_pair_list . ',' static_scalar "=> (T_DOUBLE_ARROW)" static_scalar + 440 | non_empty_static_array_pair_list . ',' static_scalar - $default reduce using rule 115 (interface_list) + ',' shift, and go to state 692 + $default reduce using rule 437 (possible_comma) -state 606 + possible_comma go to state 693 - 103 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @31 interface_extends_list '{' . class_statement_list '}' - $default reduce using rule 184 (class_statement_list) +state 606 - class_statement_list go to state 683 + 421 static_scalar: "array (T_ARRAY)" '(' . static_array_pair_list ')' + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + $default reduce using rule 435 (static_array_pair_list) + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 603 + static_class_constant go to state 502 + static_array_pair_list go to state 694 + non_empty_static_array_pair_list go to state 605 state 607 - 99 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @29 '(' . parameter_list ')' '{' inner_statement_list '}' - - "identifier (T_STRING)" shift, and go to state 116 - "array (T_ARRAY)" shift, and go to state 608 - "callable (T_CALLABLE)" shift, and go to state 609 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 + 413 common_scalar: "heredoc start (T_START_HEREDOC)" "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" . "heredoc end (T_END_HEREDOC)" - ')' reduce using rule 153 (parameter_list) - $default reduce using rule 162 (optional_class_type) - - namespace_name go to state 516 - parameter_list go to state 684 - non_empty_parameter_list go to state 611 - optional_class_type go to state 612 - fully_qualified_class_name go to state 613 + "heredoc end (T_END_HEREDOC)" shift, and go to state 372 state 608 - 163 optional_class_type: "array (T_ARRAY)" . + 381 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name + 417 static_scalar: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name + + "identifier (T_STRING)" shift, and go to state 122 - $default reduce using rule 163 (optional_class_type) + namespace_name go to state 695 state 609 - 164 optional_class_type: "callable (T_CALLABLE)" . + 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" + 382 class_name: "\\ (T_NS_SEPARATOR)" namespace_name . + 418 static_scalar: "\\ (T_NS_SEPARATOR)" namespace_name . + + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 - $default reduce using rule 164 (optional_class_type) + ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 382 (class_name) + $default reduce using rule 418 (static_scalar) state 610 - 333 expr_without_variable: function is_reference '(' @53 parameter_list . ')' lexical_vars '{' inner_statement_list '}' + 425 static_class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)" - ')' shift, and go to state 685 + "identifier (T_STRING)" shift, and go to state 696 state 611 - 152 parameter_list: non_empty_parameter_list . - 158 non_empty_parameter_list: non_empty_parameter_list . ',' optional_class_type "variable (T_VARIABLE)" - 159 | non_empty_parameter_list . ',' optional_class_type '&' "variable (T_VARIABLE)" - 160 | non_empty_parameter_list . ',' optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar - 161 | non_empty_parameter_list . ',' optional_class_type "variable (T_VARIABLE)" '=' static_scalar + 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' . catch_statement $@23 finally_statement - ',' shift, and go to state 686 + "catch (T_CATCH)" shift, and go to state 697 - $default reduce using rule 152 (parameter_list) + $default reduce using rule 82 (catch_statement) + + catch_statement go to state 698 state 612 - 154 non_empty_parameter_list: optional_class_type . "variable (T_VARIABLE)" - 155 | optional_class_type . '&' "variable (T_VARIABLE)" - 156 | optional_class_type . '&' "variable (T_VARIABLE)" '=' static_scalar - 157 | optional_class_type . "variable (T_VARIABLE)" '=' static_scalar + 23 use_declaration: "\\ (T_NS_SEPARATOR)" namespace_name "as (T_AS)" "identifier (T_STRING)" . - '&' shift, and go to state 687 - "variable (T_VARIABLE)" shift, and go to state 688 + $default reduce using rule 23 (use_declaration) state 613 - 165 optional_class_type: fully_qualified_class_name . + 188 global_var: '$' '{' expr '}' . - $default reduce using rule 165 (optional_class_type) + $default reduce using rule 188 (global_var) state 614 - 450 array_function_dereference: function_call @69 '[' dim_offset ']' . - - $default reduce using rule 450 (array_function_dereference) + 190 static_var_list: static_var_list ',' "variable (T_VARIABLE)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 699 + static_class_constant go to state 502 state 615 - 471 variable_name: '{' expr '}' . + 346 expr_without_variable: "static (T_STATIC)" function is_reference @57 '(' . parameter_list ')' lexical_vars '{' inner_statement_list '}' + + "identifier (T_STRING)" shift, and go to state 122 + "array (T_ARRAY)" shift, and go to state 646 + "callable (T_CALLABLE)" shift, and go to state 647 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 + + ')' reduce using rule 162 (parameter_list) + $default reduce using rule 171 (optional_class_type) - $default reduce using rule 471 (variable_name) + namespace_name go to state 549 + parameter_list go to state 700 + non_empty_parameter_list go to state 649 + optional_class_type go to state 650 + fully_qualified_class_name go to state 651 state 616 - 352 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @59 . function_call_parameter_list ')' + 99 unset_variables: unset_variables ',' unset_variable . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 508 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 167 (function_call_parameter_list) - - namespace_name go to state 83 - function_call_parameter_list go to state 689 - non_empty_function_call_parameter_list go to state 510 - new_expr go to state 94 - expr_without_variable go to state 511 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 512 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 99 (unset_variables) state 617 - 350 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @58 . function_call_parameter_list ')' + 67 unticked_statement: "unset (T_UNSET)" '(' unset_variables ')' ';' . + + $default reduce using rule 67 (unticked_statement) + + +state 618 + + 536 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 @@ -18278,646 +18649,281 @@ state 617 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 508 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 167 (function_call_parameter_list) - - namespace_name go to state 83 - function_call_parameter_list go to state 690 - non_empty_function_call_parameter_list go to state 510 - new_expr go to state 94 - expr_without_variable go to state 511 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 512 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 - - -state 618 - - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 315 | expr '?' ':' @51 expr . - - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 315 (expr_without_variable) + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 361 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 194 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 362 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + isset_variable go to state 701 + class_constant go to state 120 state 619 - 313 expr_without_variable: expr '?' @49 expr ':' . @50 expr + 500 assignment_list_element: "list (T_LIST)" '(' . $@74 assignment_list ')' - $default reduce using rule 312 (@50) + $default reduce using rule 499 ($@74) - @50 go to state 691 + $@74 go to state 702 state 620 - 257 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference . @43 ctor_arguments - - $default reduce using rule 256 (@43) - - @43 go to state 692 + 496 assignment_list: assignment_list ',' . assignment_list_element + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "list (T_LIST)" shift, and go to state 519 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + $default reduce using rule 501 (assignment_list_element) + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + variable go to state 520 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + assignment_list_element go to state 703 state 621 - 358 function_call: variable_without_objects '(' @62 function_call_parameter_list ')' . + 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list ')' . '=' expr - $default reduce using rule 358 (function_call) + '=' shift, and go to state 704 state 622 - 356 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @61 . function_call_parameter_list ')' + 523 encaps_var_offset: "identifier (T_STRING)" . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 508 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 167 (function_call_parameter_list) - - namespace_name go to state 83 - function_call_parameter_list go to state 693 - non_empty_function_call_parameter_list go to state 510 - new_expr go to state 94 - expr_without_variable go to state 511 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 512 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 523 (encaps_var_offset) state 623 - 354 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @60 . function_call_parameter_list ')' + 525 encaps_var_offset: "variable (T_VARIABLE)" . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 508 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 167 (function_call_parameter_list) - - namespace_name go to state 83 - function_call_parameter_list go to state 694 - non_empty_function_call_parameter_list go to state 510 - new_expr go to state 94 - expr_without_variable go to state 511 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 512 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 525 (encaps_var_offset) state 624 - 466 object_property: variable_without_objects @70 . + 524 encaps_var_offset: "number (T_NUM_STRING)" . - $default reduce using rule 466 (object_property) + $default reduce using rule 524 (encaps_var_offset) state 625 - 430 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @65 object_property @66 . method_or_not variable_properties - - '(' shift, and go to state 695 - - $default reduce using rule 442 (method_or_not) + 518 encaps_var: "variable (T_VARIABLE)" '[' $@75 encaps_var_offset . ']' - array_method_dereference go to state 696 - method go to state 697 - method_or_not go to state 698 + ']' shift, and go to state 705 state 626 - 467 object_dim_list: object_dim_list '[' . dim_offset ']' - - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 462 (dim_offset) - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 429 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - dim_offset go to state 699 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 521 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr . ']' '}' + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + ']' shift, and go to state 706 state 627 - 468 object_dim_list: object_dim_list '{' . expr '}' + 366 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name @59 function_call_parameter_list . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 700 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 366 (function_call) state 628 - 486 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" '&' . w_variable - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - w_variable go to state 701 - variable go to state 292 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 15 top_statement: "namespace (T_NAMESPACE)" '{' $@3 top_statement_list '}' . + + $default reduce using rule 15 (top_statement) state 629 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 482 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" expr . - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 482 (non_empty_array_pair_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 707 + + $default reduce using rule 2 ($@1) + + $@1 go to state 4 state 630 - 382 ctor_arguments: '(' function_call_parameter_list ')' . + 320 expr_without_variable: '(' new_expr ')' @51 instance_call . - $default reduce using rule 382 (ctor_arguments) + $default reduce using rule 320 (expr_without_variable) state 631 - 370 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @63 object_property @64 . dynamic_class_name_variable_properties + 259 instance_call: $@43 . chaining_instance_call - $default reduce using rule 373 (dynamic_class_name_variable_properties) + '[' shift, and go to state 708 + "-> (T_OBJECT_OPERATOR)" shift, and go to state 709 - dynamic_class_name_variable_properties go to state 702 + chaining_method_or_property go to state 710 + chaining_dereference go to state 711 + chaining_instance_call go to state 712 + variable_property go to state 713 state 632 - 41 unticked_statement: "if (T_IF)" '(' expr ')' ':' @7 . inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' - - $default reduce using rule 28 (inner_statement_list) + 32 inner_statement: "__halt_compiler (T_HALT_COMPILER)" '(' . ')' ';' - inner_statement_list go to state 703 + ')' shift, and go to state 714 state 633 - 38 unticked_statement: "if (T_IF)" '(' expr ')' @5 statement . @6 elseif_list else_single - - $default reduce using rule 37 (@6) + 180 non_empty_function_call_parameter_list: '&' w_variable . - @6 go to state 704 + $default reduce using rule 180 (non_empty_function_call_parameter_list) state 634 - 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" '(' @12 . expr ')' ';' + 181 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' . expr_without_variable + 182 | non_empty_function_call_parameter_list ',' . variable + 183 | non_empty_function_call_parameter_list ',' . '&' w_variable "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -18925,549 +18931,380 @@ state 634 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 705 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '&' shift, and go to state 715 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 716 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 194 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 717 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 635 - 44 unticked_statement: "while (T_WHILE)" '(' @9 expr ')' @10 . while_statement + 176 function_call_parameter_list: '(' non_empty_function_call_parameter_list ')' . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - ':' shift, and go to state 706 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "if (T_IF)" shift, and go to state 29 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 32 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - T_INLINE_HTML shift, and go to state 35 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "echo (T_ECHO)" shift, and go to state 37 - "do (T_DO)" shift, and go to state 38 - "while (T_WHILE)" shift, and go to state 39 - "for (T_FOR)" shift, and go to state 40 - "foreach (T_FOREACH)" shift, and go to state 41 - "declare (T_DECLARE)" shift, and go to state 42 - "switch (T_SWITCH)" shift, and go to state 43 - "break (T_BREAK)" shift, and go to state 44 - "continue (T_CONTINUE)" shift, and go to state 45 - "goto (T_GOTO)" shift, and go to state 46 - "function (T_FUNCTION)" shift, and go to state 47 - "return (T_RETURN)" shift, and go to state 49 - "try (T_TRY)" shift, and go to state 50 - "throw (T_THROW)" shift, and go to state 51 - "global (T_GLOBAL)" shift, and go to state 53 - "static (T_STATIC)" shift, and go to state 56 - "unset (T_UNSET)" shift, and go to state 57 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 78 - '{' shift, and go to state 79 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - statement go to state 707 - unticked_statement go to state 87 - while_statement go to state 708 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 101 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 176 (function_call_parameter_list) state 636 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr . ';' @14 for_expr ')' @15 for_statement + 177 function_call_parameter_list: '(' yield_expr ')' . - ';' shift, and go to state 709 + $default reduce using rule 177 (function_call_parameter_list) state 637 - 237 non_empty_for_expr: non_empty_for_expr ',' @38 expr . - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 237 (non_empty_for_expr) + 24 constant_declaration: constant_declaration ',' "identifier (T_STRING)" '=' static_scalar . + + $default reduce using rule 24 (constant_declaration) state 638 - 72 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 variable . foreach_optional_arg ')' @20 foreach_statement - - "=> (T_DOUBLE_ARROW)" shift, and go to state 710 + 384 fully_qualified_class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" . namespace_name - $default reduce using rule 117 (foreach_optional_arg) + "identifier (T_STRING)" shift, and go to state 122 - foreach_optional_arg go to state 711 + namespace_name go to state 718 state 639 - 120 foreach_variable: '&' . variable - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - variable go to state 712 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" + 385 fully_qualified_class_name: "\\ (T_NS_SEPARATOR)" namespace_name . + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 -state 640 + $default reduce using rule 385 (fully_qualified_class_name) - 69 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 710 +state 640 - $default reduce using rule 117 (foreach_optional_arg) + 121 implements_list: "implements (T_IMPLEMENTS)" . interface_list - foreach_optional_arg go to state 713 + "identifier (T_STRING)" shift, and go to state 122 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 + + namespace_name go to state 549 + interface_list go to state 719 + fully_qualified_class_name go to state 643 state 641 - 119 foreach_variable: variable . + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list . '{' class_statement_list '}' - $default reduce using rule 119 (foreach_variable) + '{' shift, and go to state 720 state 642 - 127 declare_list: "identifier (T_STRING)" '=' static_scalar . + 119 interface_extends_list: "extends (T_EXTENDS)" interface_list . + 123 interface_list: interface_list . ',' fully_qualified_class_name + + ',' shift, and go to state 721 - $default reduce using rule 127 (declare_list) + $default reduce using rule 119 (interface_extends_list) state 643 - 128 declare_list: declare_list ',' "identifier (T_STRING)" . '=' static_scalar + 122 interface_list: fully_qualified_class_name . - '=' shift, and go to state 714 + $default reduce using rule 122 (interface_list) state 644 - 126 declare_statement: ':' . inner_statement_list "enddeclare (T_ENDDECLARE)" ';' + 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list '{' . class_statement_list '}' - $default reduce using rule 28 (inner_statement_list) + $default reduce using rule 194 (class_statement_list) - inner_statement_list go to state 715 + class_statement_list go to state 722 state 645 - 125 declare_statement: statement . + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' . parameter_list ')' '{' inner_statement_list '}' - $default reduce using rule 125 (declare_statement) + "identifier (T_STRING)" shift, and go to state 122 + "array (T_ARRAY)" shift, and go to state 646 + "callable (T_CALLABLE)" shift, and go to state 647 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 + ')' reduce using rule 162 (parameter_list) + $default reduce using rule 171 (optional_class_type) -state 646 + namespace_name go to state 549 + parameter_list go to state 723 + non_empty_parameter_list go to state 649 + optional_class_type go to state 650 + fully_qualified_class_name go to state 651 - 74 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list ')' declare_statement . - $default reduce using rule 74 (unticked_statement) +state 646 + 172 optional_class_type: "array (T_ARRAY)" . -state 647 + $default reduce using rule 172 (optional_class_type) - 131 switch_case_list: ':' . case_list "endswitch (T_ENDSWITCH)" ';' - 132 | ':' . ';' case_list "endswitch (T_ENDSWITCH)" ';' - ';' shift, and go to state 716 +state 647 - $default reduce using rule 133 (case_list) + 173 optional_class_type: "callable (T_CALLABLE)" . - case_list go to state 717 + $default reduce using rule 173 (optional_class_type) state 648 - 129 switch_case_list: '{' . case_list '}' - 130 | '{' . ';' case_list '}' - - ';' shift, and go to state 718 + 344 expr_without_variable: function is_reference @56 '(' parameter_list . ')' lexical_vars '{' inner_statement_list '}' - $default reduce using rule 133 (case_list) - - case_list go to state 719 + ')' shift, and go to state 724 state 649 - 53 unticked_statement: "switch (T_SWITCH)" '(' expr ')' @16 switch_case_list . + 161 parameter_list: non_empty_parameter_list . + 167 non_empty_parameter_list: non_empty_parameter_list . ',' optional_class_type "variable (T_VARIABLE)" + 168 | non_empty_parameter_list . ',' optional_class_type '&' "variable (T_VARIABLE)" + 169 | non_empty_parameter_list . ',' optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar + 170 | non_empty_parameter_list . ',' optional_class_type "variable (T_VARIABLE)" '=' static_scalar - $default reduce using rule 53 (unticked_statement) + ',' shift, and go to state 725 + + $default reduce using rule 161 (parameter_list) state 650 - 421 non_empty_static_array_pair_list: static_scalar "=> (T_DOUBLE_ARROW)" . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 720 - static_class_constant go to state 471 + 163 non_empty_parameter_list: optional_class_type . "variable (T_VARIABLE)" + 164 | optional_class_type . '&' "variable (T_VARIABLE)" + 165 | optional_class_type . '&' "variable (T_VARIABLE)" '=' static_scalar + 166 | optional_class_type . "variable (T_VARIABLE)" '=' static_scalar + + '&' shift, and go to state 726 + "variable (T_VARIABLE)" shift, and go to state 727 state 651 - 402 static_scalar: '[' static_array_pair_list ']' . + 174 optional_class_type: fully_qualified_class_name . - $default reduce using rule 402 (static_scalar) + $default reduce using rule 174 (optional_class_type) state 652 - 418 possible_comma: ',' . - 419 non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' . static_scalar "=> (T_DOUBLE_ARROW)" static_scalar - 420 | non_empty_static_array_pair_list ',' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - $default reduce using rule 418 (possible_comma) - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 721 - static_class_constant go to state 471 + 472 array_function_dereference: function_call $@72 '[' dim_offset ']' . + + $default reduce using rule 472 (array_function_dereference) state 653 - 416 static_array_pair_list: non_empty_static_array_pair_list possible_comma . + 493 variable_name: '{' expr '}' . - $default reduce using rule 416 (static_array_pair_list) + $default reduce using rule 493 (variable_name) state 654 - 401 static_scalar: "array (T_ARRAY)" '(' static_array_pair_list . ')' + 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 function_call_parameter_list . - ')' shift, and go to state 722 + $default reduce using rule 372 (function_call) state 655 - 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 361 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . - 397 static_scalar: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . - - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 + 370 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @61 function_call_parameter_list . - ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 361 (class_name) - $default reduce using rule 397 (static_scalar) + $default reduce using rule 370 (function_call) state 656 - 405 static_class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" . - - $default reduce using rule 405 (static_class_constant) + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 . + + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 325 (expr_without_variable) state 657 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" . '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches + 323 expr_without_variable: expr '?' $@52 expr ':' . $@53 expr + + $default reduce using rule 322 ($@53) - '(' shift, and go to state 723 + $@53 go to state 728 state 658 - 180 static_var_list: static_var_list ',' "variable (T_VARIABLE)" '=' static_scalar . + 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference . $@46 ctor_arguments - $default reduce using rule 180 (static_var_list) + $default reduce using rule 266 ($@46) + + $@46 go to state 729 state 659 - 335 expr_without_variable: "static (T_STATIC)" function is_reference '(' @54 parameter_list . ')' lexical_vars '{' inner_statement_list '}' + 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 function_call_parameter_list . - ')' shift, and go to state 724 + $default reduce using rule 376 (function_call) state 660 - 513 isset_variables: isset_variables ',' @73 variable . + 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 function_call_parameter_list . - $default reduce using rule 513 (isset_variables) + $default reduce using rule 374 (function_call) state 661 - 478 assignment_list_element: "list (T_LIST)" '(' @71 . assignment_list ')' - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "list (T_LIST)" shift, and go to state 487 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - $default reduce using rule 479 (assignment_list_element) - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - variable go to state 488 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - assignment_list go to state 725 - assignment_list_element go to state 490 + 488 object_property: variable_without_objects $@73 . + + $default reduce using rule 488 (object_property) state 662 - 474 assignment_list: assignment_list ',' assignment_list_element . + 452 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 . method_or_not variable_properties + + '(' reduce using rule 460 (@71) + $default reduce using rule 464 (method_or_not) - $default reduce using rule 474 (assignment_list) + array_method_dereference go to state 730 + method go to state 731 + @71 go to state 732 + method_or_not go to state 733 state 663 - 253 expr_without_variable: "list (T_LIST)" '(' @42 assignment_list ')' '=' . expr + 489 object_dim_list: object_dim_list '[' . dim_offset ']' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -19475,4747 +19312,4950 @@ state 663 "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 "include (T_INCLUDE)" shift, and go to state 9 "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 726 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 484 (dim_offset) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 324 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + dim_offset go to state 734 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 664 - 496 encaps_var: "variable (T_VARIABLE)" '[' @72 encaps_var_offset ']' . + 490 object_dim_list: object_dim_list '{' . expr '}' - $default reduce using rule 496 (encaps_var) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 735 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 665 - 499 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr ']' . '}' - - '}' shift, and go to state 727 + 508 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" '&' . w_variable + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + w_variable go to state 736 + variable go to state 309 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 666 - 346 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name '(' @56 function_call_parameter_list . ')' - - ')' shift, and go to state 728 + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 504 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" expr . + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 504 (non_empty_array_pair_list) state 667 - 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' @2 top_statement_list '}' . + 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 object_property $@67 . dynamic_class_name_variable_properties - $default reduce using rule 13 (top_statement) + $default reduce using rule 393 (dynamic_class_name_variable_properties) + + dynamic_class_name_variable_properties go to state 737 state 668 - 348 function_call: "\\ (T_NS_SEPARATOR)" namespace_name '(' @57 function_call_parameter_list ')' . + 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) - $default reduce using rule 348 (function_call) + new_elseif_list go to state 738 state 669 - 242 chaining_dereference: '[' . dim_offset ']' + 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 - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 462 (dim_offset) - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 429 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - dim_offset go to state 729 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "elseif (T_ELSEIF)" shift, and go to state 739 + "else (T_ELSE)" shift, and go to state 740 + "elseif (T_ELSEIF)" [reduce using rule 157 (else_single)] + "else (T_ELSE)" [reduce using rule 157 (else_single)] + $default reduce using rule 157 (else_single) -state 670 + else_single go to state 741 - 435 variable_property: "-> (T_OBJECT_OPERATOR)" . object_property @67 method_or_not - "identifier (T_STRING)" shift, and go to state 436 - "variable (T_VARIABLE)" shift, and go to state 34 - '{' shift, and go to state 380 - '$' shift, and go to state 80 +state 670 + + 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" $@12 parenthesis_expr . ';' - variable_without_objects go to state 540 - reference_variable go to state 382 - compound_variable go to state 112 - object_property go to state 730 - object_dim_list go to state 542 - variable_name go to state 543 - simple_indirect_reference go to state 384 + ';' shift, and go to state 742 state 671 - 239 chaining_method_or_property: chaining_method_or_property . variable_property - 246 chaining_instance_call: chaining_method_or_property . + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 150 while_statement: ':' inner_statement_list . "endwhile (T_ENDWHILE)" ';' - "-> (T_OBJECT_OPERATOR)" shift, and go to state 670 + "endwhile (T_ENDWHILE)" shift, and go to state 743 - $default reduce using rule 246 (chaining_instance_call) + $default reduce using rule 26 ($@4) - variable_property go to state 731 + $@4 go to state 389 state 672 - 241 chaining_dereference: chaining_dereference . '[' dim_offset ']' - 244 chaining_instance_call: chaining_dereference . @39 chaining_method_or_property - 245 | chaining_dereference . + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr . ';' $@14 for_expr ')' $@15 for_statement - '[' shift, and go to state 732 - - "-> (T_OBJECT_OPERATOR)" reduce using rule 243 (@39) - $default reduce using rule 245 (chaining_instance_call) - - @39 go to state 733 + ';' shift, and go to state 744 state 673 - 249 instance_call: @40 chaining_instance_call . - - $default reduce using rule 249 (instance_call) + 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + + $default reduce using rule 247 (non_empty_for_expr) state 674 - 240 chaining_method_or_property: variable_property . - - $default reduce using rule 240 (chaining_method_or_property) + 127 foreach_variable: '&' . variable + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + variable go to state 745 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 675 - 32 inner_statement: "__halt_compiler (T_HALT_COMPILER)" '(' ')' . ';' + 129 foreach_variable: "list (T_LIST)" . '(' $@34 assignment_list ')' - ';' shift, and go to state 734 + '(' shift, and go to state 746 state 676 - 173 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' '&' . w_variable - - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - function_call go to state 97 - class_name go to state 142 - w_variable go to state 735 - variable go to state 292 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 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 747 + + $default reduce using rule 124 (foreach_optional_arg) + + foreach_optional_arg go to state 748 state 677 - 171 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' expr_without_variable . - 424 expr: expr_without_variable . + 126 foreach_variable: variable . - ',' reduce using rule 171 (non_empty_function_call_parameter_list) - ')' reduce using rule 171 (non_empty_function_call_parameter_list) - $default reduce using rule 424 (expr) + $default reduce using rule 126 (foreach_variable) state 678 - 172 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' variable . - 254 expr_without_variable: variable . '=' expr - 255 | variable . '=' '&' variable - 257 | variable . '=' '&' "new (T_NEW)" class_name_reference @43 ctor_arguments - 259 | variable . "+= (T_PLUS_EQUAL)" expr - 260 | variable . "-= (T_MINUS_EQUAL)" expr - 261 | variable . "*= (T_MUL_EQUAL)" expr - 262 | variable . "/= (T_DIV_EQUAL)" expr - 263 | variable . ".= (T_CONCAT_EQUAL)" expr - 264 | variable . "%= (T_MOD_EQUAL)" expr - 265 | variable . "&= (T_AND_EQUAL)" expr - 266 | variable . "|= (T_OR_EQUAL)" expr - 267 | variable . "^= (T_XOR_EQUAL)" expr - 268 | variable . "<<= (T_SL_EQUAL)" expr - 269 | variable . ">>= (T_SR_EQUAL)" expr - 425 r_variable: variable . - 427 rw_variable: variable . - - '=' shift, and go to state 264 - ">>= (T_SR_EQUAL)" shift, and go to state 265 - "<<= (T_SL_EQUAL)" shift, and go to state 266 - "^= (T_XOR_EQUAL)" shift, and go to state 267 - "|= (T_OR_EQUAL)" shift, and go to state 268 - "&= (T_AND_EQUAL)" shift, and go to state 269 - "%= (T_MOD_EQUAL)" shift, and go to state 270 - ".= (T_CONCAT_EQUAL)" shift, and go to state 271 - "/= (T_DIV_EQUAL)" shift, and go to state 272 - "*= (T_MUL_EQUAL)" shift, and go to state 273 - "-= (T_MINUS_EQUAL)" shift, and go to state 274 - "+= (T_PLUS_EQUAL)" shift, and go to state 275 - - ',' reduce using rule 172 (non_empty_function_call_parameter_list) - "-- (T_DEC)" reduce using rule 427 (rw_variable) - "++ (T_INC)" reduce using rule 427 (rw_variable) - ')' reduce using rule 172 (non_empty_function_call_parameter_list) - $default reduce using rule 425 (r_variable) + 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 747 -state 679 + $default reduce using rule 124 (foreach_optional_arg) - 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" - 364 fully_qualified_class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . + foreach_optional_arg go to state 749 - "\\ (T_NS_SEPARATOR)" shift, and go to state 225 - $default reduce using rule 364 (fully_qualified_class_name) +state 679 + 136 declare_list: "identifier (T_STRING)" '=' static_scalar . -state 680 + $default reduce using rule 136 (declare_list) - 114 implements_list: "implements (T_IMPLEMENTS)" interface_list . - 116 interface_list: interface_list . ',' fully_qualified_class_name - ',' shift, and go to state 682 +state 680 - $default reduce using rule 114 (implements_list) + 137 declare_list: declare_list ',' "identifier (T_STRING)" . '=' static_scalar + + '=' shift, and go to state 750 state 681 - 101 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @30 implements_list '{' . class_statement_list '}' + 135 declare_statement: ':' . inner_statement_list "enddeclare (T_ENDDECLARE)" ';' - $default reduce using rule 184 (class_statement_list) + $default reduce using rule 28 (inner_statement_list) - class_statement_list go to state 736 + inner_statement_list go to state 751 state 682 - 116 interface_list: interface_list ',' . fully_qualified_class_name + 134 declare_statement: statement . - "identifier (T_STRING)" shift, and go to state 116 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 - - namespace_name go to state 516 - fully_qualified_class_name go to state 737 + $default reduce using rule 134 (declare_statement) state 683 - 103 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @31 interface_extends_list '{' class_statement_list . '}' - 183 class_statement_list: class_statement_list . class_statement - - "const (T_CONST)" shift, and go to state 738 - "use (T_USE)" shift, and go to state 739 - "public (T_PUBLIC)" shift, and go to state 740 - "protected (T_PROTECTED)" shift, and go to state 741 - "private (T_PRIVATE)" shift, and go to state 742 - "final (T_FINAL)" shift, and go to state 743 - "abstract (T_ABSTRACT)" shift, and go to state 744 - "static (T_STATIC)" shift, and go to state 745 - "var (T_VAR)" shift, and go to state 746 - '}' shift, and go to state 747 + 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list ')' declare_statement . - $default reduce using rule 216 (method_modifiers) - - class_statement go to state 748 - trait_use_statement go to state 749 - variable_modifiers go to state 750 - method_modifiers go to state 751 - non_empty_member_modifiers go to state 752 - member_modifier go to state 753 - class_constant_declaration go to state 754 + $default reduce using rule 75 (unticked_statement) state 684 - 99 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @29 '(' parameter_list . ')' '{' inner_statement_list '}' + 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 - ')' shift, and go to state 755 + "endswitch (T_ENDSWITCH)" shift, and go to state 752 + "case (T_CASE)" shift, and go to state 686 + "default (T_DEFAULT)" shift, and go to state 687 state 685 - 333 expr_without_variable: function is_reference '(' @53 parameter_list ')' . lexical_vars '{' inner_statement_list '}' - - "use (T_USE)" shift, and go to state 756 - - $default reduce using rule 337 (lexical_vars) + 140 switch_case_list: ':' case_list "endswitch (T_ENDSWITCH)" . ';' - lexical_vars go to state 757 + ';' shift, and go to state 753 state 686 - 158 non_empty_parameter_list: non_empty_parameter_list ',' . optional_class_type "variable (T_VARIABLE)" - 159 | non_empty_parameter_list ',' . optional_class_type '&' "variable (T_VARIABLE)" - 160 | non_empty_parameter_list ',' . optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar - 161 | non_empty_parameter_list ',' . optional_class_type "variable (T_VARIABLE)" '=' static_scalar + 144 case_list: case_list "case (T_CASE)" . expr case_separator $@35 inner_statement_list - "identifier (T_STRING)" shift, and go to state 116 - "array (T_ARRAY)" shift, and go to state 608 - "callable (T_CALLABLE)" shift, and go to state 609 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 - - $default reduce using rule 162 (optional_class_type) - - namespace_name go to state 516 - optional_class_type go to state 758 - fully_qualified_class_name go to state 613 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 754 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 687 - 155 non_empty_parameter_list: optional_class_type '&' . "variable (T_VARIABLE)" - 156 | optional_class_type '&' . "variable (T_VARIABLE)" '=' static_scalar + 146 case_list: case_list "default (T_DEFAULT)" . case_separator $@36 inner_statement_list - "variable (T_VARIABLE)" shift, and go to state 759 + ':' shift, and go to state 755 + ';' shift, and go to state 756 + case_separator go to state 757 -state 688 - 154 non_empty_parameter_list: optional_class_type "variable (T_VARIABLE)" . - 157 | optional_class_type "variable (T_VARIABLE)" . '=' static_scalar +state 688 - '=' shift, and go to state 760 + 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 - $default reduce using rule 154 (non_empty_parameter_list) + "case (T_CASE)" shift, and go to state 686 + "default (T_DEFAULT)" shift, and go to state 687 + '}' shift, and go to state 758 state 689 - 352 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @59 function_call_parameter_list . ')' + 138 switch_case_list: '{' case_list '}' . - ')' shift, and go to state 761 + $default reduce using rule 138 (switch_case_list) state 690 - 350 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @58 function_call_parameter_list . ')' - - ')' shift, and go to state 762 + 441 non_empty_static_array_pair_list: static_scalar "=> (T_DOUBLE_ARROW)" . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 759 + static_class_constant go to state 502 state 691 - 313 expr_without_variable: expr '?' @49 expr ':' @50 . expr + 422 static_scalar: '[' static_array_pair_list ']' . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 763 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 422 (static_scalar) state 692 - 257 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference @43 . ctor_arguments - - '(' shift, and go to state 443 - - $default reduce using rule 381 (ctor_arguments) - - ctor_arguments go to state 764 + 438 possible_comma: ',' . + 439 non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' . static_scalar "=> (T_DOUBLE_ARROW)" static_scalar + 440 | non_empty_static_array_pair_list ',' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + $default reduce using rule 438 (possible_comma) + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 760 + static_class_constant go to state 502 state 693 - 356 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @61 function_call_parameter_list . ')' + 436 static_array_pair_list: non_empty_static_array_pair_list possible_comma . - ')' shift, and go to state 765 + $default reduce using rule 436 (static_array_pair_list) state 694 - 354 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @60 function_call_parameter_list . ')' + 421 static_scalar: "array (T_ARRAY)" '(' static_array_pair_list . ')' - ')' shift, and go to state 766 + ')' shift, and go to state 761 state 695 - 439 method: '(' . @68 function_call_parameter_list ')' + 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" + 381 class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . + 417 static_scalar: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . - $default reduce using rule 438 (@68) + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 - @68 go to state 767 + ":: (T_PAAMAYIM_NEKUDOTAYIM)" reduce using rule 381 (class_name) + $default reduce using rule 417 (static_scalar) state 696 - 436 array_method_dereference: array_method_dereference . '[' dim_offset ']' - 441 method_or_not: array_method_dereference . - - '[' shift, and go to state 768 + 425 static_class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" . - $default reduce using rule 441 (method_or_not) + $default reduce using rule 425 (static_class_constant) state 697 - 437 array_method_dereference: method . '[' dim_offset ']' - 440 method_or_not: method . + 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 769 - - $default reduce using rule 440 (method_or_not) + '(' shift, and go to state 762 state 698 - 430 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @65 object_property @66 method_or_not . variable_properties + 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' catch_statement . $@23 finally_statement - $default reduce using rule 433 (variable_properties) + $default reduce using rule 78 ($@23) - variable_properties go to state 770 + $@23 go to state 763 state 699 - 467 object_dim_list: object_dim_list '[' dim_offset . ']' + 190 static_var_list: static_var_list ',' "variable (T_VARIABLE)" '=' static_scalar . - ']' shift, and go to state 771 + $default reduce using rule 190 (static_var_list) state 700 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - 468 object_dim_list: object_dim_list '{' expr . '}' - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - '}' shift, and go to state 772 + 346 expr_without_variable: "static (T_STATIC)" function is_reference @57 '(' parameter_list . ')' lexical_vars '{' inner_statement_list '}' + + ')' shift, and go to state 764 state 701 - 486 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" '&' w_variable . + 536 isset_variables: isset_variables ',' $@76 isset_variable . - $default reduce using rule 486 (non_empty_array_pair_list) + $default reduce using rule 536 (isset_variables) state 702 - 370 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @63 object_property @64 dynamic_class_name_variable_properties . - 372 dynamic_class_name_variable_properties: dynamic_class_name_variable_properties . dynamic_class_name_variable_property - - "-> (T_OBJECT_OPERATOR)" shift, and go to state 773 - - $default reduce using rule 370 (dynamic_class_name_reference) - - dynamic_class_name_variable_property go to state 774 + 500 assignment_list_element: "list (T_LIST)" '(' $@74 . assignment_list ')' + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "list (T_LIST)" shift, and go to state 519 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + $default reduce using rule 501 (assignment_list_element) + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + variable go to state 520 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + assignment_list go to state 765 + assignment_list_element go to state 522 state 703 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 41 unticked_statement: "if (T_IF)" '(' 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) + 496 assignment_list: assignment_list ',' assignment_list_element . - @4 go to state 366 - @8 go to state 775 + $default reduce using rule 496 (assignment_list) state 704 - 38 unticked_statement: "if (T_IF)" '(' expr ')' @5 statement @6 . elseif_list else_single + 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list ')' '=' . expr - $default reduce using rule 142 (elseif_list) - - elseif_list go to state 776 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 766 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 705 - 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" '(' @12 expr . ')' ';' - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ')' shift, and go to state 777 + 518 encaps_var: "variable (T_VARIABLE)" '[' $@75 encaps_var_offset ']' . + + $default reduce using rule 518 (encaps_var) state 706 - 141 while_statement: ':' . inner_statement_list "endwhile (T_ENDWHILE)" ';' + 521 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr ']' . '}' - $default reduce using rule 28 (inner_statement_list) - - inner_statement_list go to state 778 + '}' shift, and go to state 767 state 707 - 140 while_statement: statement . + 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' $@2 top_statement_list '}' . - $default reduce using rule 140 (while_statement) + $default reduce using rule 13 (top_statement) state 708 - 44 unticked_statement: "while (T_WHILE)" '(' @9 expr ')' @10 while_statement . + 252 chaining_dereference: '[' . dim_offset ']' - $default reduce using rule 44 (unticked_statement) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 484 (dim_offset) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 324 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + dim_offset go to state 768 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 709 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' . @14 for_expr ')' @15 for_statement + 457 variable_property: "-> (T_OBJECT_OPERATOR)" . object_property $@70 method_or_not - $default reduce using rule 49 (@14) + "identifier (T_STRING)" shift, and go to state 463 + "variable (T_VARIABLE)" shift, and go to state 35 + '{' shift, and go to state 406 + '$' shift, and go to state 81 - @14 go to state 779 + variable_without_objects go to state 574 + reference_variable go to state 408 + compound_variable go to state 117 + object_property go to state 769 + object_dim_list go to state 576 + variable_name go to state 577 + simple_indirect_reference go to state 410 state 710 - 118 foreach_optional_arg: "=> (T_DOUBLE_ARROW)" . foreach_variable - - '&' shift, and go to state 639 - "identifier (T_STRING)" shift, and go to state 116 - "variable (T_VARIABLE)" shift, and go to state 34 - "static (T_STATIC)" shift, and go to state 138 - "namespace (T_NAMESPACE)" shift, and go to state 139 - "\\ (T_NS_SEPARATOR)" shift, and go to state 140 - '$' shift, and go to state 80 - - namespace_name go to state 141 - foreach_variable go to state 780 - function_call go to state 97 - class_name go to state 142 - variable go to state 641 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 145 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 + 249 chaining_method_or_property: chaining_method_or_property . variable_property + 256 chaining_instance_call: chaining_method_or_property . + + "-> (T_OBJECT_OPERATOR)" shift, and go to state 709 + + $default reduce using rule 256 (chaining_instance_call) + + variable_property go to state 770 state 711 - 72 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 variable foreach_optional_arg . ')' @20 foreach_statement + 251 chaining_dereference: chaining_dereference . '[' dim_offset ']' + 254 chaining_instance_call: chaining_dereference . $@42 chaining_method_or_property + 255 | chaining_dereference . - ')' shift, and go to state 781 + '[' shift, and go to state 771 + + "-> (T_OBJECT_OPERATOR)" reduce using rule 253 ($@42) + $default reduce using rule 255 (chaining_instance_call) + + $@42 go to state 772 state 712 - 120 foreach_variable: '&' variable . + 259 instance_call: $@43 chaining_instance_call . - $default reduce using rule 120 (foreach_variable) + $default reduce using rule 259 (instance_call) state 713 - 69 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg . ')' @18 foreach_statement + 250 chaining_method_or_property: variable_property . - ')' shift, and go to state 782 + $default reduce using rule 250 (chaining_method_or_property) state 714 - 128 declare_list: declare_list ',' "identifier (T_STRING)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 783 - static_class_constant go to state 471 - - -state 715 + 32 inner_statement: "__halt_compiler (T_HALT_COMPILER)" '(' ')' . ';' - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 126 declare_statement: ':' inner_statement_list . "enddeclare (T_ENDDECLARE)" ';' + ';' shift, and go to state 773 - "enddeclare (T_ENDDECLARE)" shift, and go to state 784 - $default reduce using rule 26 (@4) +state 715 - @4 go to state 366 + 183 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' '&' . w_variable + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + w_variable go to state 774 + variable go to state 309 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 716 - 132 switch_case_list: ':' ';' . case_list "endswitch (T_ENDSWITCH)" ';' + 181 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' expr_without_variable . + 444 expr: expr_without_variable . - $default reduce using rule 133 (case_list) - - case_list go to state 785 + ',' reduce using rule 181 (non_empty_function_call_parameter_list) + ')' reduce using rule 181 (non_empty_function_call_parameter_list) + $default reduce using rule 444 (expr) state 717 - 131 switch_case_list: ':' case_list . "endswitch (T_ENDSWITCH)" ';' - 135 case_list: case_list . "case (T_CASE)" expr case_separator @32 inner_statement_list - 137 | case_list . "default (T_DEFAULT)" case_separator @33 inner_statement_list - - "endswitch (T_ENDSWITCH)" shift, and go to state 786 - "case (T_CASE)" shift, and go to state 787 - "default (T_DEFAULT)" shift, and go to state 788 + 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 + 269 | variable . "+= (T_PLUS_EQUAL)" expr + 270 | variable . "-= (T_MINUS_EQUAL)" expr + 271 | variable . "*= (T_MUL_EQUAL)" expr + 272 | variable . "/= (T_DIV_EQUAL)" expr + 273 | variable . ".= (T_CONCAT_EQUAL)" expr + 274 | variable . "%= (T_MOD_EQUAL)" expr + 275 | variable . "&= (T_AND_EQUAL)" expr + 276 | variable . "|= (T_OR_EQUAL)" expr + 277 | variable . "^= (T_XOR_EQUAL)" expr + 278 | variable . "<<= (T_SL_EQUAL)" expr + 279 | variable . ">>= (T_SR_EQUAL)" expr + 447 r_variable: variable . + 449 rw_variable: variable . + + '=' shift, and go to state 280 + ">>= (T_SR_EQUAL)" shift, and go to state 281 + "<<= (T_SL_EQUAL)" shift, and go to state 282 + "^= (T_XOR_EQUAL)" shift, and go to state 283 + "|= (T_OR_EQUAL)" shift, and go to state 284 + "&= (T_AND_EQUAL)" shift, and go to state 285 + "%= (T_MOD_EQUAL)" shift, and go to state 286 + ".= (T_CONCAT_EQUAL)" shift, and go to state 287 + "/= (T_DIV_EQUAL)" shift, and go to state 288 + "*= (T_MUL_EQUAL)" shift, and go to state 289 + "-= (T_MINUS_EQUAL)" shift, and go to state 290 + "+= (T_PLUS_EQUAL)" shift, and go to state 291 + + ',' reduce using rule 182 (non_empty_function_call_parameter_list) + "-- (T_DEC)" reduce using rule 449 (rw_variable) + "++ (T_INC)" reduce using rule 449 (rw_variable) + ')' reduce using rule 182 (non_empty_function_call_parameter_list) + $default reduce using rule 447 (r_variable) state 718 - 130 switch_case_list: '{' ';' . case_list '}' + 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" + 384 fully_qualified_class_name: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name . - $default reduce using rule 133 (case_list) + "\\ (T_NS_SEPARATOR)" shift, and go to state 238 - case_list go to state 789 + $default reduce using rule 384 (fully_qualified_class_name) state 719 - 129 switch_case_list: '{' case_list . '}' - 135 case_list: case_list . "case (T_CASE)" expr case_separator @32 inner_statement_list - 137 | case_list . "default (T_DEFAULT)" case_separator @33 inner_statement_list + 121 implements_list: "implements (T_IMPLEMENTS)" interface_list . + 123 interface_list: interface_list . ',' fully_qualified_class_name + + ',' shift, and go to state 721 - "case (T_CASE)" shift, and go to state 787 - "default (T_DEFAULT)" shift, and go to state 788 - '}' shift, and go to state 790 + $default reduce using rule 121 (implements_list) state 720 - 421 non_empty_static_array_pair_list: static_scalar "=> (T_DOUBLE_ARROW)" static_scalar . + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list '{' . class_statement_list '}' - $default reduce using rule 421 (non_empty_static_array_pair_list) + $default reduce using rule 194 (class_statement_list) + + class_statement_list go to state 775 state 721 - 419 non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' static_scalar . "=> (T_DOUBLE_ARROW)" static_scalar - 420 | non_empty_static_array_pair_list ',' static_scalar . + 123 interface_list: interface_list ',' . fully_qualified_class_name - "=> (T_DOUBLE_ARROW)" shift, and go to state 791 + "identifier (T_STRING)" shift, and go to state 122 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 - $default reduce using rule 420 (non_empty_static_array_pair_list) + namespace_name go to state 549 + fully_qualified_class_name go to state 776 state 722 - 401 static_scalar: "array (T_ARRAY)" '(' static_array_pair_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 - $default reduce using rule 401 (static_scalar) + "const (T_CONST)" shift, and go to state 777 + "use (T_USE)" shift, and go to state 778 + "public (T_PUBLIC)" shift, and go to state 779 + "protected (T_PROTECTED)" shift, and go to state 780 + "private (T_PRIVATE)" shift, and go to state 781 + "final (T_FINAL)" shift, and go to state 782 + "abstract (T_ABSTRACT)" shift, and go to state 783 + "static (T_STATIC)" shift, and go to state 784 + "var (T_VAR)" shift, and go to state 785 + '}' shift, and go to state 786 + $default reduce using rule 226 (method_modifiers) -state 723 + class_statement go to state 787 + trait_use_statement go to state 788 + variable_modifiers go to state 789 + method_modifiers go to state 790 + non_empty_member_modifiers go to state 791 + member_modifier go to state 792 + class_constant_declaration go to state 793 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' . @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches - $default reduce using rule 77 (@23) +state 723 + + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list . ')' '{' inner_statement_list '}' - @23 go to state 792 + ')' shift, and go to state 794 state 724 - 335 expr_without_variable: "static (T_STATIC)" function is_reference '(' @54 parameter_list ')' . lexical_vars '{' inner_statement_list '}' + 344 expr_without_variable: function is_reference @56 '(' parameter_list ')' . lexical_vars '{' inner_statement_list '}' - "use (T_USE)" shift, and go to state 756 + "use (T_USE)" shift, and go to state 795 - $default reduce using rule 337 (lexical_vars) + $default reduce using rule 357 (lexical_vars) - lexical_vars go to state 793 + lexical_vars go to state 796 state 725 - 474 assignment_list: assignment_list . ',' assignment_list_element - 478 assignment_list_element: "list (T_LIST)" '(' @71 assignment_list . ')' + 167 non_empty_parameter_list: non_empty_parameter_list ',' . optional_class_type "variable (T_VARIABLE)" + 168 | non_empty_parameter_list ',' . optional_class_type '&' "variable (T_VARIABLE)" + 169 | non_empty_parameter_list ',' . optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar + 170 | non_empty_parameter_list ',' . optional_class_type "variable (T_VARIABLE)" '=' static_scalar - ',' shift, and go to state 582 - ')' shift, and go to state 794 + "identifier (T_STRING)" shift, and go to state 122 + "array (T_ARRAY)" shift, and go to state 646 + "callable (T_CALLABLE)" shift, and go to state 647 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 + + $default reduce using rule 171 (optional_class_type) + + namespace_name go to state 549 + optional_class_type go to state 797 + fully_qualified_class_name go to state 651 state 726 - 253 expr_without_variable: "list (T_LIST)" '(' @42 assignment_list ')' '=' expr . - 275 | expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - - $default reduce using rule 253 (expr_without_variable) + 164 non_empty_parameter_list: optional_class_type '&' . "variable (T_VARIABLE)" + 165 | optional_class_type '&' . "variable (T_VARIABLE)" '=' static_scalar + + "variable (T_VARIABLE)" shift, and go to state 798 state 727 - 499 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr ']' '}' . + 163 non_empty_parameter_list: optional_class_type "variable (T_VARIABLE)" . + 166 | optional_class_type "variable (T_VARIABLE)" . '=' static_scalar - $default reduce using rule 499 (encaps_var) + '=' shift, and go to state 799 + + $default reduce using rule 163 (non_empty_parameter_list) state 728 - 346 function_call: "namespace (T_NAMESPACE)" "\\ (T_NS_SEPARATOR)" namespace_name '(' @56 function_call_parameter_list ')' . + 323 expr_without_variable: expr '?' $@52 expr ':' $@53 . expr - $default reduce using rule 346 (function_call) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 800 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 729 - 242 chaining_dereference: '[' dim_offset . ']' + 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference $@46 . ctor_arguments + + '(' shift, and go to state 394 - ']' shift, and go to state 795 + $default reduce using rule 401 (ctor_arguments) + + function_call_parameter_list go to state 470 + ctor_arguments go to state 801 state 730 - 435 variable_property: "-> (T_OBJECT_OPERATOR)" object_property . @67 method_or_not + 458 array_method_dereference: array_method_dereference . '[' dim_offset ']' + 463 method_or_not: array_method_dereference . - $default reduce using rule 434 (@67) + '[' shift, and go to state 802 - @67 go to state 796 + $default reduce using rule 463 (method_or_not) state 731 - 239 chaining_method_or_property: chaining_method_or_property variable_property . + 459 array_method_dereference: method . '[' dim_offset ']' + 462 method_or_not: method . + + '[' shift, and go to state 803 - $default reduce using rule 239 (chaining_method_or_property) + $default reduce using rule 462 (method_or_not) state 732 - 241 chaining_dereference: chaining_dereference '[' . dim_offset ']' + 461 method: @71 . function_call_parameter_list - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 462 (dim_offset) - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 429 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - dim_offset go to state 797 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + '(' shift, and go to state 394 + + function_call_parameter_list go to state 804 state 733 - 244 chaining_instance_call: chaining_dereference @39 . chaining_method_or_property + 452 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not . variable_properties - "-> (T_OBJECT_OPERATOR)" shift, and go to state 670 + $default reduce using rule 455 (variable_properties) - chaining_method_or_property go to state 798 - variable_property go to state 674 + variable_properties go to state 805 state 734 - 32 inner_statement: "__halt_compiler (T_HALT_COMPILER)" '(' ')' ';' . + 489 object_dim_list: object_dim_list '[' dim_offset . ']' - $default reduce using rule 32 (inner_statement) + ']' shift, and go to state 806 state 735 - 173 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' '&' w_variable . - - $default reduce using rule 173 (non_empty_function_call_parameter_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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + 490 object_dim_list: object_dim_list '{' expr . '}' + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + '}' shift, and go to state 807 state 736 - 101 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @30 implements_list '{' class_statement_list . '}' - 183 class_statement_list: class_statement_list . class_statement + 508 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" '&' w_variable . - "const (T_CONST)" shift, and go to state 738 - "use (T_USE)" shift, and go to state 739 - "public (T_PUBLIC)" shift, and go to state 740 - "protected (T_PROTECTED)" shift, and go to state 741 - "private (T_PRIVATE)" shift, and go to state 742 - "final (T_FINAL)" shift, and go to state 743 - "abstract (T_ABSTRACT)" shift, and go to state 744 - "static (T_STATIC)" shift, and go to state 745 - "var (T_VAR)" shift, and go to state 746 - '}' shift, and go to state 799 + $default reduce using rule 508 (non_empty_array_pair_list) - $default reduce using rule 216 (method_modifiers) - class_statement go to state 748 - trait_use_statement go to state 749 - variable_modifiers go to state 750 - method_modifiers go to state 751 - non_empty_member_modifiers go to state 752 - member_modifier go to state 753 - class_constant_declaration go to state 754 +state 737 + 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 -state 737 + "-> (T_OBJECT_OPERATOR)" shift, and go to state 808 - 116 interface_list: interface_list ',' fully_qualified_class_name . + $default reduce using rule 390 (dynamic_class_name_reference) - $default reduce using rule 116 (interface_list) + dynamic_class_name_variable_property go to state 809 state 738 - 231 class_constant_declaration: "const (T_CONST)" . "identifier (T_STRING)" '=' static_scalar + 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 810 + "else (T_ELSE)" shift, and go to state 811 - "identifier (T_STRING)" shift, and go to state 800 + $default reduce using rule 159 (new_else_single) + + new_else_single go to state 812 state 739 - 191 trait_use_statement: "use (T_USE)" . trait_list trait_adaptations + 153 elseif_list: elseif_list "elseif (T_ELSEIF)" . parenthesis_expr $@37 statement - "identifier (T_STRING)" shift, and go to state 116 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 + '(' shift, and go to state 174 - namespace_name go to state 516 - trait_list go to state 801 - fully_qualified_class_name go to state 802 + parenthesis_expr go to state 813 state 740 - 220 member_modifier: "public (T_PUBLIC)" . + 158 else_single: "else (T_ELSE)" . statement - $default reduce using rule 220 (member_modifier) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 11 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "if (T_IF)" shift, and go to state 30 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 33 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + T_INLINE_HTML shift, and go to state 36 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "echo (T_ECHO)" shift, and go to state 38 + "do (T_DO)" shift, and go to state 39 + "while (T_WHILE)" shift, and go to state 40 + "for (T_FOR)" shift, and go to state 41 + "foreach (T_FOREACH)" shift, and go to state 42 + "declare (T_DECLARE)" shift, and go to state 43 + "switch (T_SWITCH)" shift, and go to state 44 + "break (T_BREAK)" shift, and go to state 45 + "continue (T_CONTINUE)" shift, and go to state 46 + "goto (T_GOTO)" shift, and go to state 47 + "function (T_FUNCTION)" shift, and go to state 48 + "return (T_RETURN)" shift, and go to state 50 + "try (T_TRY)" shift, and go to state 51 + "throw (T_THROW)" shift, and go to state 52 + "global (T_GLOBAL)" shift, and go to state 54 + "static (T_STATIC)" shift, and go to state 57 + "unset (T_UNSET)" shift, and go to state 58 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 79 + '{' shift, and go to state 80 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + statement go to state 814 + unticked_statement go to state 88 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 97 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 105 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 741 - 221 member_modifier: "protected (T_PROTECTED)" . + 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement $@6 elseif_list else_single . - $default reduce using rule 221 (member_modifier) + $default reduce using rule 38 (unticked_statement) state 742 - 222 member_modifier: "private (T_PRIVATE)" . + 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" $@12 parenthesis_expr ';' . - $default reduce using rule 222 (member_modifier) + $default reduce using rule 47 (unticked_statement) state 743 - 225 member_modifier: "final (T_FINAL)" . + 150 while_statement: ':' inner_statement_list "endwhile (T_ENDWHILE)" . ';' - $default reduce using rule 225 (member_modifier) + ';' shift, and go to state 815 state 744 - 224 member_modifier: "abstract (T_ABSTRACT)" . + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' . $@14 for_expr ')' $@15 for_statement - $default reduce using rule 224 (member_modifier) + $default reduce using rule 49 ($@14) + + $@14 go to state 816 state 745 - 223 member_modifier: "static (T_STATIC)" . + 127 foreach_variable: '&' variable . - $default reduce using rule 223 (member_modifier) + $default reduce using rule 127 (foreach_variable) state 746 - 215 variable_modifiers: "var (T_VAR)" . + 129 foreach_variable: "list (T_LIST)" '(' . $@34 assignment_list ')' - $default reduce using rule 215 (variable_modifiers) + $default reduce using rule 128 ($@34) + $@34 go to state 817 -state 747 - 103 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @31 interface_extends_list '{' class_statement_list '}' . +state 747 - $default reduce using rule 103 (unticked_class_declaration_statement) + 125 foreach_optional_arg: "=> (T_DOUBLE_ARROW)" . foreach_variable + + '&' shift, and go to state 674 + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "list (T_LIST)" shift, and go to state 675 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + namespace_name go to state 150 + foreach_variable go to state 818 + function_call go to state 101 + class_name go to state 151 + variable go to state 677 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 state 748 - 183 class_statement_list: class_statement_list class_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 183 (class_statement_list) + ')' shift, and go to state 819 state 749 - 188 class_statement: trait_use_statement . + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg . ')' $@18 foreach_statement - $default reduce using rule 188 (class_statement) + ')' shift, and go to state 820 state 750 - 186 class_statement: variable_modifiers . @36 class_variable_declaration ';' - - $default reduce using rule 185 (@36) - - @36 go to state 803 + 137 declare_list: declare_list ',' "identifier (T_STRING)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 821 + static_class_constant go to state 502 state 751 - 190 class_statement: method_modifiers . function is_reference "identifier (T_STRING)" @37 '(' parameter_list ')' method_body + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 135 declare_statement: ':' inner_statement_list . "enddeclare (T_ENDDECLARE)" ';' - "function (T_FUNCTION)" shift, and go to state 47 + "enddeclare (T_ENDDECLARE)" shift, and go to state 822 - function go to state 804 + $default reduce using rule 26 ($@4) + $@4 go to state 389 -state 752 - 214 variable_modifiers: non_empty_member_modifiers . - 217 method_modifiers: non_empty_member_modifiers . - 219 non_empty_member_modifiers: non_empty_member_modifiers . member_modifier - - "public (T_PUBLIC)" shift, and go to state 740 - "protected (T_PROTECTED)" shift, and go to state 741 - "private (T_PRIVATE)" shift, and go to state 742 - "final (T_FINAL)" shift, and go to state 743 - "abstract (T_ABSTRACT)" shift, and go to state 744 - "static (T_STATIC)" shift, and go to state 745 +state 752 - "function (T_FUNCTION)" reduce using rule 217 (method_modifiers) - $default reduce using rule 214 (variable_modifiers) + 141 switch_case_list: ':' ';' case_list "endswitch (T_ENDSWITCH)" . ';' - member_modifier go to state 805 + ';' shift, and go to state 823 state 753 - 218 non_empty_member_modifiers: member_modifier . + 140 switch_case_list: ':' case_list "endswitch (T_ENDSWITCH)" ';' . - $default reduce using rule 218 (non_empty_member_modifiers) + $default reduce using rule 140 (switch_case_list) state 754 - 187 class_statement: class_constant_declaration . ';' - 230 class_constant_declaration: class_constant_declaration . ',' "identifier (T_STRING)" '=' static_scalar - - ',' shift, and go to state 806 - ';' shift, and go to state 807 + 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "or (T_LOGICAL_OR)" shift, and go to state 251 + "xor (T_LOGICAL_XOR)" shift, and go to state 252 + "and (T_LOGICAL_AND)" shift, and go to state 253 + '?' shift, and go to state 254 + ':' shift, and go to state 755 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 + ';' shift, and go to state 756 + + case_separator go to state 824 state 755 - 99 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @29 '(' parameter_list ')' . '{' inner_statement_list '}' + 147 case_separator: ':' . - '{' shift, and go to state 808 + $default reduce using rule 147 (case_separator) state 756 - 338 lexical_vars: "use (T_USE)" . '(' lexical_var_list ')' + 148 case_separator: ';' . - '(' shift, and go to state 809 + $default reduce using rule 148 (case_separator) state 757 - 333 expr_without_variable: function is_reference '(' @53 parameter_list ')' lexical_vars . '{' inner_statement_list '}' + 146 case_list: case_list "default (T_DEFAULT)" case_separator . $@36 inner_statement_list + + $default reduce using rule 145 ($@36) - '{' shift, and go to state 810 + $@36 go to state 825 state 758 - 158 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type . "variable (T_VARIABLE)" - 159 | non_empty_parameter_list ',' optional_class_type . '&' "variable (T_VARIABLE)" - 160 | non_empty_parameter_list ',' optional_class_type . '&' "variable (T_VARIABLE)" '=' static_scalar - 161 | non_empty_parameter_list ',' optional_class_type . "variable (T_VARIABLE)" '=' static_scalar + 139 switch_case_list: '{' ';' case_list '}' . - '&' shift, and go to state 811 - "variable (T_VARIABLE)" shift, and go to state 812 + $default reduce using rule 139 (switch_case_list) state 759 - 155 non_empty_parameter_list: optional_class_type '&' "variable (T_VARIABLE)" . - 156 | optional_class_type '&' "variable (T_VARIABLE)" . '=' static_scalar + 441 non_empty_static_array_pair_list: static_scalar "=> (T_DOUBLE_ARROW)" static_scalar . - '=' shift, and go to state 813 - - $default reduce using rule 155 (non_empty_parameter_list) + $default reduce using rule 441 (non_empty_static_array_pair_list) state 760 - 157 non_empty_parameter_list: optional_class_type "variable (T_VARIABLE)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 814 - static_class_constant go to state 471 + 439 non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' static_scalar . "=> (T_DOUBLE_ARROW)" static_scalar + 440 | non_empty_static_array_pair_list ',' static_scalar . + + "=> (T_DOUBLE_ARROW)" shift, and go to state 826 + + $default reduce using rule 440 (non_empty_static_array_pair_list) state 761 - 352 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @59 function_call_parameter_list ')' . + 421 static_scalar: "array (T_ARRAY)" '(' static_array_pair_list ')' . - $default reduce using rule 352 (function_call) + $default reduce using rule 421 (static_scalar) state 762 - 350 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @58 function_call_parameter_list ')' . + 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 350 (function_call) + $@24 go to state 827 state 763 - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 313 | expr '?' @49 expr ':' @50 expr . - 315 | expr . '?' ':' @51 expr - - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 + 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' catch_statement $@23 . finally_statement - $default reduce using rule 313 (expr_without_variable) + "finally (T_FINALLY)" shift, and go to state 828 + + $default reduce using rule 88 (finally_statement) + + finally_statement go to state 829 state 764 - 257 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference @43 ctor_arguments . + 346 expr_without_variable: "static (T_STATIC)" function is_reference @57 '(' parameter_list ')' . lexical_vars '{' inner_statement_list '}' + + "use (T_USE)" shift, and go to state 795 + + $default reduce using rule 357 (lexical_vars) - $default reduce using rule 257 (expr_without_variable) + lexical_vars go to state 830 state 765 - 356 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects '(' @61 function_call_parameter_list ')' . + 496 assignment_list: assignment_list . ',' assignment_list_element + 500 assignment_list_element: "list (T_LIST)" '(' $@74 assignment_list . ')' - $default reduce using rule 356 (function_call) + ',' shift, and go to state 620 + ')' shift, and go to state 831 state 766 - 354 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name '(' @60 function_call_parameter_list ')' . + 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + '?' shift, and go to state 254 + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - $default reduce using rule 354 (function_call) + $default reduce using rule 263 (expr_without_variable) state 767 - 439 method: '(' @68 . function_call_parameter_list ')' + 521 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr ']' '}' . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '&' shift, and go to state 508 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 167 (function_call_parameter_list) - - namespace_name go to state 83 - function_call_parameter_list go to state 815 - non_empty_function_call_parameter_list go to state 510 - new_expr go to state 94 - expr_without_variable go to state 511 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 182 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 512 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 521 (encaps_var) state 768 - 436 array_method_dereference: array_method_dereference '[' . dim_offset ']' + 252 chaining_dereference: '[' dim_offset . ']' - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 462 (dim_offset) - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 429 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - dim_offset go to state 816 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + ']' shift, and go to state 832 state 769 - 437 array_method_dereference: method '[' . dim_offset ']' + 457 variable_property: "-> (T_OBJECT_OPERATOR)" object_property . $@70 method_or_not - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 462 (dim_offset) - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 429 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - dim_offset go to state 817 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 456 ($@70) + $@70 go to state 833 -state 770 - - 430 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @65 object_property @66 method_or_not variable_properties . - 432 variable_properties: variable_properties . variable_property - "-> (T_OBJECT_OPERATOR)" shift, and go to state 670 +state 770 - $default reduce using rule 430 (variable) + 249 chaining_method_or_property: chaining_method_or_property variable_property . - variable_property go to state 818 + $default reduce using rule 249 (chaining_method_or_property) state 771 - 467 object_dim_list: object_dim_list '[' dim_offset ']' . + 251 chaining_dereference: chaining_dereference '[' . dim_offset ']' - $default reduce using rule 467 (object_dim_list) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 484 (dim_offset) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 324 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + dim_offset go to state 834 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 772 - 468 object_dim_list: object_dim_list '{' expr '}' . + 254 chaining_instance_call: chaining_dereference $@42 . chaining_method_or_property - $default reduce using rule 468 (object_dim_list) + "-> (T_OBJECT_OPERATOR)" shift, and go to state 709 + chaining_method_or_property go to state 835 + variable_property go to state 713 -state 773 - 374 dynamic_class_name_variable_property: "-> (T_OBJECT_OPERATOR)" . object_property +state 773 - "identifier (T_STRING)" shift, and go to state 436 - "variable (T_VARIABLE)" shift, and go to state 34 - '{' shift, and go to state 380 - '$' shift, and go to state 80 + 32 inner_statement: "__halt_compiler (T_HALT_COMPILER)" '(' ')' ';' . - variable_without_objects go to state 540 - reference_variable go to state 382 - compound_variable go to state 112 - object_property go to state 819 - object_dim_list go to state 542 - variable_name go to state 543 - simple_indirect_reference go to state 384 + $default reduce using rule 32 (inner_statement) state 774 - 372 dynamic_class_name_variable_properties: dynamic_class_name_variable_properties dynamic_class_name_variable_property . + 183 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' '&' w_variable . - $default reduce using rule 372 (dynamic_class_name_variable_properties) + $default reduce using rule 183 (non_empty_function_call_parameter_list) state 775 - 41 unticked_statement: "if (T_IF)" '(' expr ')' ':' @7 inner_statement_list @8 . new_elseif_list new_else_single "endif (T_ENDIF)" ';' - - $default reduce using rule 145 (new_elseif_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 - new_elseif_list go to state 820 + "const (T_CONST)" shift, and go to state 777 + "use (T_USE)" shift, and go to state 778 + "public (T_PUBLIC)" shift, and go to state 779 + "protected (T_PROTECTED)" shift, and go to state 780 + "private (T_PRIVATE)" shift, and go to state 781 + "final (T_FINAL)" shift, and go to state 782 + "abstract (T_ABSTRACT)" shift, and go to state 783 + "static (T_STATIC)" shift, and go to state 784 + "var (T_VAR)" shift, and go to state 785 + '}' shift, and go to state 836 + $default reduce using rule 226 (method_modifiers) -state 776 + class_statement go to state 787 + trait_use_statement go to state 788 + variable_modifiers go to state 789 + method_modifiers go to state 790 + non_empty_member_modifiers go to state 791 + member_modifier go to state 792 + class_constant_declaration go to state 793 - 38 unticked_statement: "if (T_IF)" '(' expr ')' @5 statement @6 elseif_list . else_single - 144 elseif_list: elseif_list . "elseif (T_ELSEIF)" '(' expr ')' @34 statement - "elseif (T_ELSEIF)" shift, and go to state 821 - "else (T_ELSE)" shift, and go to state 822 +state 776 - "elseif (T_ELSEIF)" [reduce using rule 148 (else_single)] - "else (T_ELSE)" [reduce using rule 148 (else_single)] - $default reduce using rule 148 (else_single) + 123 interface_list: interface_list ',' fully_qualified_class_name . - else_single go to state 823 + $default reduce using rule 123 (interface_list) state 777 - 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" '(' @12 expr ')' . ';' + 241 class_constant_declaration: "const (T_CONST)" . "identifier (T_STRING)" '=' static_scalar - ';' shift, and go to state 824 + "identifier (T_STRING)" shift, and go to state 837 state 778 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 141 while_statement: ':' inner_statement_list . "endwhile (T_ENDWHILE)" ';' + 201 trait_use_statement: "use (T_USE)" . trait_list trait_adaptations - "endwhile (T_ENDWHILE)" shift, and go to state 825 + "identifier (T_STRING)" shift, and go to state 122 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 - $default reduce using rule 26 (@4) - - @4 go to state 366 + namespace_name go to state 549 + trait_list go to state 838 + fully_qualified_class_name go to state 839 state 779 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 . for_expr ')' @15 for_statement + 230 member_modifier: "public (T_PUBLIC)" . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - $default reduce using rule 234 (for_expr) - - namespace_name go to state 83 - for_expr go to state 826 - non_empty_for_expr go to state 312 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 313 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 230 (member_modifier) state 780 - 118 foreach_optional_arg: "=> (T_DOUBLE_ARROW)" foreach_variable . + 231 member_modifier: "protected (T_PROTECTED)" . - $default reduce using rule 118 (foreach_optional_arg) + $default reduce using rule 231 (member_modifier) state 781 - 72 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 variable foreach_optional_arg ')' . @20 foreach_statement - - $default reduce using rule 71 (@20) + 232 member_modifier: "private (T_PRIVATE)" . - @20 go to state 827 + $default reduce using rule 232 (member_modifier) state 782 - 69 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' . @18 foreach_statement + 235 member_modifier: "final (T_FINAL)" . - $default reduce using rule 68 (@18) - - @18 go to state 828 + $default reduce using rule 235 (member_modifier) state 783 - 128 declare_list: declare_list ',' "identifier (T_STRING)" '=' static_scalar . + 234 member_modifier: "abstract (T_ABSTRACT)" . - $default reduce using rule 128 (declare_list) + $default reduce using rule 234 (member_modifier) state 784 - 126 declare_statement: ':' inner_statement_list "enddeclare (T_ENDDECLARE)" . ';' + 233 member_modifier: "static (T_STATIC)" . - ';' shift, and go to state 829 + $default reduce using rule 233 (member_modifier) state 785 - 132 switch_case_list: ':' ';' case_list . "endswitch (T_ENDSWITCH)" ';' - 135 case_list: case_list . "case (T_CASE)" expr case_separator @32 inner_statement_list - 137 | case_list . "default (T_DEFAULT)" case_separator @33 inner_statement_list + 225 variable_modifiers: "var (T_VAR)" . - "endswitch (T_ENDSWITCH)" shift, and go to state 830 - "case (T_CASE)" shift, and go to state 787 - "default (T_DEFAULT)" shift, and go to state 788 + $default reduce using rule 225 (variable_modifiers) state 786 - 131 switch_case_list: ':' case_list "endswitch (T_ENDSWITCH)" . ';' + 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list '{' class_statement_list '}' . - ';' shift, and go to state 831 + $default reduce using rule 110 (unticked_class_declaration_statement) state 787 - 135 case_list: case_list "case (T_CASE)" . expr case_separator @32 inner_statement_list + 193 class_statement_list: class_statement_list class_statement . - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 832 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 193 (class_statement_list) state 788 - 137 case_list: case_list "default (T_DEFAULT)" . case_separator @33 inner_statement_list + 198 class_statement: trait_use_statement . - ':' shift, and go to state 833 - ';' shift, and go to state 834 - - case_separator go to state 835 + $default reduce using rule 198 (class_statement) state 789 - 130 switch_case_list: '{' ';' case_list . '}' - 135 case_list: case_list . "case (T_CASE)" expr case_separator @32 inner_statement_list - 137 | case_list . "default (T_DEFAULT)" case_separator @33 inner_statement_list + 196 class_statement: variable_modifiers . $@39 class_variable_declaration ';' + + $default reduce using rule 195 ($@39) - "case (T_CASE)" shift, and go to state 787 - "default (T_DEFAULT)" shift, and go to state 788 - '}' shift, and go to state 836 + $@39 go to state 840 state 790 - 129 switch_case_list: '{' case_list '}' . + 200 class_statement: method_modifiers . function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body - $default reduce using rule 129 (switch_case_list) + "function (T_FUNCTION)" shift, and go to state 48 + + function go to state 841 state 791 - 419 non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' static_scalar "=> (T_DOUBLE_ARROW)" . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 837 - static_class_constant go to state 471 + 224 variable_modifiers: non_empty_member_modifiers . + 227 method_modifiers: non_empty_member_modifiers . + 229 non_empty_member_modifiers: non_empty_member_modifiers . member_modifier + "public (T_PUBLIC)" shift, and go to state 779 + "protected (T_PROTECTED)" shift, and go to state 780 + "private (T_PRIVATE)" shift, and go to state 781 + "final (T_FINAL)" shift, and go to state 782 + "abstract (T_ABSTRACT)" shift, and go to state 783 + "static (T_STATIC)" shift, and go to state 784 + + "function (T_FUNCTION)" reduce using rule 227 (method_modifiers) + $default reduce using rule 224 (variable_modifiers) + + member_modifier go to state 842 -state 792 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 . fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches +state 792 - "identifier (T_STRING)" shift, and go to state 116 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 + 228 non_empty_member_modifiers: member_modifier . - namespace_name go to state 516 - fully_qualified_class_name go to state 838 + $default reduce using rule 228 (non_empty_member_modifiers) state 793 - 335 expr_without_variable: "static (T_STATIC)" function is_reference '(' @54 parameter_list ')' lexical_vars . '{' inner_statement_list '}' + 197 class_statement: class_constant_declaration . ';' + 240 class_constant_declaration: class_constant_declaration . ',' "identifier (T_STRING)" '=' static_scalar - '{' shift, and go to state 839 + ',' shift, and go to state 843 + ';' shift, and go to state 844 state 794 - 478 assignment_list_element: "list (T_LIST)" '(' @71 assignment_list ')' . + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' . '{' inner_statement_list '}' - $default reduce using rule 478 (assignment_list_element) + '{' shift, and go to state 845 state 795 - 242 chaining_dereference: '[' dim_offset ']' . + 358 lexical_vars: "use (T_USE)" . '(' lexical_var_list ')' - $default reduce using rule 242 (chaining_dereference) + '(' shift, and go to state 846 state 796 - 435 variable_property: "-> (T_OBJECT_OPERATOR)" object_property @67 . method_or_not + 344 expr_without_variable: function is_reference @56 '(' parameter_list ')' lexical_vars . '{' inner_statement_list '}' - '(' shift, and go to state 695 - - $default reduce using rule 442 (method_or_not) - - array_method_dereference go to state 696 - method go to state 697 - method_or_not go to state 840 + '{' shift, and go to state 847 state 797 - 241 chaining_dereference: chaining_dereference '[' dim_offset . ']' + 167 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type . "variable (T_VARIABLE)" + 168 | non_empty_parameter_list ',' optional_class_type . '&' "variable (T_VARIABLE)" + 169 | non_empty_parameter_list ',' optional_class_type . '&' "variable (T_VARIABLE)" '=' static_scalar + 170 | non_empty_parameter_list ',' optional_class_type . "variable (T_VARIABLE)" '=' static_scalar - ']' shift, and go to state 841 + '&' shift, and go to state 848 + "variable (T_VARIABLE)" shift, and go to state 849 state 798 - 239 chaining_method_or_property: chaining_method_or_property . variable_property - 244 chaining_instance_call: chaining_dereference @39 chaining_method_or_property . - - "-> (T_OBJECT_OPERATOR)" shift, and go to state 670 + 164 non_empty_parameter_list: optional_class_type '&' "variable (T_VARIABLE)" . + 165 | optional_class_type '&' "variable (T_VARIABLE)" . '=' static_scalar - $default reduce using rule 244 (chaining_instance_call) + '=' shift, and go to state 850 - variable_property go to state 731 + $default reduce using rule 164 (non_empty_parameter_list) state 799 - 101 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @30 implements_list '{' class_statement_list '}' . - - $default reduce using rule 101 (unticked_class_declaration_statement) + 166 non_empty_parameter_list: optional_class_type "variable (T_VARIABLE)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 851 + static_class_constant go to state 502 state 800 - 231 class_constant_declaration: "const (T_CONST)" "identifier (T_STRING)" . '=' static_scalar + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 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 + 295 | expr . '^' expr + 296 | expr . '.' expr + 297 | expr . '+' expr + 298 | expr . '-' expr + 299 | expr . '*' expr + 300 | expr . '/' expr + 301 | expr . '%' expr + 302 | expr . "<< (T_SL)" expr + 303 | expr . ">> (T_SR)" expr + 308 | expr . "=== (T_IS_IDENTICAL)" expr + 309 | expr . "!== (T_IS_NOT_IDENTICAL)" expr + 310 | expr . "== (T_IS_EQUAL)" expr + 311 | expr . "!= (T_IS_NOT_EQUAL)" expr + 312 | expr . '<' expr + 313 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr + 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 + + "|| (T_BOOLEAN_OR)" shift, and go to state 255 + "&& (T_BOOLEAN_AND)" shift, and go to state 256 + '|' shift, and go to state 257 + '^' shift, and go to state 258 + '&' shift, and go to state 259 + "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 260 + "=== (T_IS_IDENTICAL)" shift, and go to state 261 + "!= (T_IS_NOT_EQUAL)" shift, and go to state 262 + "== (T_IS_EQUAL)" shift, and go to state 263 + '<' shift, and go to state 264 + '>' shift, and go to state 265 + ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 266 + "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 267 + ">> (T_SR)" shift, and go to state 268 + "<< (T_SL)" shift, and go to state 269 + '+' shift, and go to state 270 + '-' shift, and go to state 271 + '.' shift, and go to state 272 + '*' shift, and go to state 273 + '/' shift, and go to state 274 + '%' shift, and go to state 275 + "instanceof (T_INSTANCEOF)" shift, and go to state 276 - '=' shift, and go to state 842 + $default reduce using rule 323 (expr_without_variable) state 801 - 191 trait_use_statement: "use (T_USE)" trait_list . trait_adaptations - 193 trait_list: trait_list . ',' fully_qualified_class_name - - ',' shift, and go to state 843 - ';' shift, and go to state 844 - '{' shift, and go to state 845 + 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments . - trait_adaptations go to state 846 + $default reduce using rule 267 (expr_without_variable) state 802 - 192 trait_list: fully_qualified_class_name . + 458 array_method_dereference: array_method_dereference '[' . dim_offset ']' - $default reduce using rule 192 (trait_list) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 484 (dim_offset) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 324 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + dim_offset go to state 852 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 803 - 186 class_statement: variable_modifiers @36 . class_variable_declaration ';' - - "variable (T_VARIABLE)" shift, and go to state 847 + 459 array_method_dereference: method '[' . dim_offset ']' - class_variable_declaration go to state 848 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 484 (dim_offset) + + namespace_name go to state 84 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 324 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + dim_offset go to state 853 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 804 - 190 class_statement: method_modifiers function . is_reference "identifier (T_STRING)" @37 '(' parameter_list ')' method_body + 461 method: @71 function_call_parameter_list . - '&' shift, and go to state 231 + $default reduce using rule 461 (method) - $default reduce using rule 96 (is_reference) - is_reference go to state 849 +state 805 + 452 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not variable_properties . + 454 variable_properties: variable_properties . variable_property -state 805 + "-> (T_OBJECT_OPERATOR)" shift, and go to state 709 - 219 non_empty_member_modifiers: non_empty_member_modifiers member_modifier . + $default reduce using rule 452 (variable) - $default reduce using rule 219 (non_empty_member_modifiers) + variable_property go to state 854 state 806 - 230 class_constant_declaration: class_constant_declaration ',' . "identifier (T_STRING)" '=' static_scalar + 489 object_dim_list: object_dim_list '[' dim_offset ']' . - "identifier (T_STRING)" shift, and go to state 850 + $default reduce using rule 489 (object_dim_list) state 807 - 187 class_statement: class_constant_declaration ';' . + 490 object_dim_list: object_dim_list '{' expr '}' . - $default reduce using rule 187 (class_statement) + $default reduce using rule 490 (object_dim_list) state 808 - 99 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @29 '(' parameter_list ')' '{' . inner_statement_list '}' + 394 dynamic_class_name_variable_property: "-> (T_OBJECT_OPERATOR)" . object_property - $default reduce using rule 28 (inner_statement_list) + "identifier (T_STRING)" shift, and go to state 463 + "variable (T_VARIABLE)" shift, and go to state 35 + '{' shift, and go to state 406 + '$' shift, and go to state 81 - inner_statement_list go to state 851 + variable_without_objects go to state 574 + reference_variable go to state 408 + compound_variable go to state 117 + object_property go to state 855 + object_dim_list go to state 576 + variable_name go to state 577 + simple_indirect_reference go to state 410 state 809 - 338 lexical_vars: "use (T_USE)" '(' . lexical_var_list ')' + 392 dynamic_class_name_variable_properties: dynamic_class_name_variable_properties dynamic_class_name_variable_property . - '&' shift, and go to state 852 - "variable (T_VARIABLE)" shift, and go to state 853 - - lexical_var_list go to state 854 + $default reduce using rule 392 (dynamic_class_name_variable_properties) state 810 - 333 expr_without_variable: function is_reference '(' @53 parameter_list ')' lexical_vars '{' . 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) + '(' shift, and go to state 174 - inner_statement_list go to state 855 + parenthesis_expr go to state 856 state 811 - 159 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type '&' . "variable (T_VARIABLE)" - 160 | non_empty_parameter_list ',' optional_class_type '&' . "variable (T_VARIABLE)" '=' static_scalar + 160 new_else_single: "else (T_ELSE)" . ':' inner_statement_list - "variable (T_VARIABLE)" shift, and go to state 856 + ':' shift, and go to state 857 state 812 - 158 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" . - 161 | non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" . '=' static_scalar + 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 857 - - $default reduce using rule 158 (non_empty_parameter_list) + "endif (T_ENDIF)" shift, and go to state 858 state 813 - 156 non_empty_parameter_list: optional_class_type '&' "variable (T_VARIABLE)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 858 - static_class_constant go to state 471 + 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr . $@37 statement + + $default reduce using rule 152 ($@37) + + $@37 go to state 859 state 814 - 157 non_empty_parameter_list: optional_class_type "variable (T_VARIABLE)" '=' static_scalar . + 158 else_single: "else (T_ELSE)" statement . - $default reduce using rule 157 (non_empty_parameter_list) + $default reduce using rule 158 (else_single) state 815 - 439 method: '(' @68 function_call_parameter_list . ')' + 150 while_statement: ':' inner_statement_list "endwhile (T_ENDWHILE)" ';' . - ')' shift, and go to state 859 + $default reduce using rule 150 (while_statement) state 816 - 436 array_method_dereference: array_method_dereference '[' dim_offset . ']' + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 . for_expr ')' $@15 for_statement - ']' shift, and go to state 860 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 121 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "function (T_FUNCTION)" shift, and go to state 48 + "static (T_STATIC)" shift, and go to state 123 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + $default reduce using rule 244 (for_expr) + + namespace_name go to state 84 + for_expr go to state 860 + non_empty_for_expr go to state 331 + new_expr go to state 95 + expr_without_variable go to state 96 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 332 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 817 - 437 array_method_dereference: method '[' dim_offset . ']' - - ']' shift, and go to state 861 + 129 foreach_variable: "list (T_LIST)" '(' $@34 . assignment_list ')' + + "identifier (T_STRING)" shift, and go to state 122 + "variable (T_VARIABLE)" shift, and go to state 35 + "static (T_STATIC)" shift, and go to state 147 + "list (T_LIST)" shift, and go to state 519 + "namespace (T_NAMESPACE)" shift, and go to state 148 + "\\ (T_NS_SEPARATOR)" shift, and go to state 149 + '$' shift, and go to state 81 + + $default reduce using rule 501 (assignment_list_element) + + namespace_name go to state 150 + function_call go to state 101 + class_name go to state 151 + variable go to state 520 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 154 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + assignment_list go to state 861 + assignment_list_element go to state 522 state 818 - 432 variable_properties: variable_properties variable_property . + 125 foreach_optional_arg: "=> (T_DOUBLE_ARROW)" foreach_variable . - $default reduce using rule 432 (variable_properties) + $default reduce using rule 125 (foreach_optional_arg) state 819 - 374 dynamic_class_name_variable_property: "-> (T_OBJECT_OPERATOR)" object_property . + 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 374 (dynamic_class_name_variable_property) + $default reduce using rule 72 ($@20) + $@20 go to state 862 -state 820 - 41 unticked_statement: "if (T_IF)" '(' expr ')' ':' @7 inner_statement_list @8 new_elseif_list . new_else_single "endif (T_ENDIF)" ';' - 147 new_elseif_list: new_elseif_list . "elseif (T_ELSEIF)" '(' expr ')' ':' @35 inner_statement_list +state 820 - "elseif (T_ELSEIF)" shift, and go to state 862 - "else (T_ELSE)" shift, and go to state 863 + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' . $@18 foreach_statement - $default reduce using rule 150 (new_else_single) + $default reduce using rule 69 ($@18) - new_else_single go to state 864 + $@18 go to state 863 state 821 - 144 elseif_list: elseif_list "elseif (T_ELSEIF)" . '(' expr ')' @34 statement + 137 declare_list: declare_list ',' "identifier (T_STRING)" '=' static_scalar . - '(' shift, and go to state 865 + $default reduce using rule 137 (declare_list) state 822 - 149 else_single: "else (T_ELSE)" . statement + 135 declare_statement: ':' inner_statement_list "enddeclare (T_ENDDECLARE)" . ';' - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "if (T_IF)" shift, and go to state 29 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 32 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - T_INLINE_HTML shift, and go to state 35 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "echo (T_ECHO)" shift, and go to state 37 - "do (T_DO)" shift, and go to state 38 - "while (T_WHILE)" shift, and go to state 39 - "for (T_FOR)" shift, and go to state 40 - "foreach (T_FOREACH)" shift, and go to state 41 - "declare (T_DECLARE)" shift, and go to state 42 - "switch (T_SWITCH)" shift, and go to state 43 - "break (T_BREAK)" shift, and go to state 44 - "continue (T_CONTINUE)" shift, and go to state 45 - "goto (T_GOTO)" shift, and go to state 46 - "function (T_FUNCTION)" shift, and go to state 47 - "return (T_RETURN)" shift, and go to state 49 - "try (T_TRY)" shift, and go to state 50 - "throw (T_THROW)" shift, and go to state 51 - "global (T_GLOBAL)" shift, and go to state 53 - "static (T_STATIC)" shift, and go to state 56 - "unset (T_UNSET)" shift, and go to state 57 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 78 - '{' shift, and go to state 79 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - statement go to state 866 - unticked_statement go to state 87 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 101 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + ';' shift, and go to state 864 state 823 - 38 unticked_statement: "if (T_IF)" '(' expr ')' @5 statement @6 elseif_list else_single . + 141 switch_case_list: ':' ';' case_list "endswitch (T_ENDSWITCH)" ';' . - $default reduce using rule 38 (unticked_statement) + $default reduce using rule 141 (switch_case_list) state 824 - 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" '(' @12 expr ')' ';' . + 144 case_list: case_list "case (T_CASE)" expr case_separator . $@35 inner_statement_list - $default reduce using rule 47 (unticked_statement) + $default reduce using rule 143 ($@35) + + $@35 go to state 865 state 825 - 141 while_statement: ':' inner_statement_list "endwhile (T_ENDWHILE)" . ';' + 146 case_list: case_list "default (T_DEFAULT)" case_separator $@36 . inner_statement_list - ';' shift, and go to state 867 + $default reduce using rule 28 (inner_statement_list) + inner_statement_list go to state 866 -state 826 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr . ')' @15 for_statement +state 826 - ')' shift, and go to state 868 + 439 non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' static_scalar "=> (T_DOUBLE_ARROW)" . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 867 + static_class_constant go to state 502 state 827 - 72 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 variable foreach_optional_arg ')' @20 . foreach_statement + 87 catch_statement: "catch (T_CATCH)" '(' $@24 . fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - ':' shift, and go to state 869 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "if (T_IF)" shift, and go to state 29 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 32 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - T_INLINE_HTML shift, and go to state 35 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "echo (T_ECHO)" shift, and go to state 37 - "do (T_DO)" shift, and go to state 38 - "while (T_WHILE)" shift, and go to state 39 - "for (T_FOR)" shift, and go to state 40 - "foreach (T_FOREACH)" shift, and go to state 41 - "declare (T_DECLARE)" shift, and go to state 42 - "switch (T_SWITCH)" shift, and go to state 43 - "break (T_BREAK)" shift, and go to state 44 - "continue (T_CONTINUE)" shift, and go to state 45 - "goto (T_GOTO)" shift, and go to state 46 - "function (T_FUNCTION)" shift, and go to state 47 - "return (T_RETURN)" shift, and go to state 49 - "try (T_TRY)" shift, and go to state 50 - "throw (T_THROW)" shift, and go to state 51 - "global (T_GLOBAL)" shift, and go to state 53 - "static (T_STATIC)" shift, and go to state 56 - "unset (T_UNSET)" shift, and go to state 57 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 78 - '{' shift, and go to state 79 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - statement go to state 870 - unticked_statement go to state 87 - foreach_statement go to state 871 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 101 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + "identifier (T_STRING)" shift, and go to state 122 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 + + namespace_name go to state 549 + fully_qualified_class_name go to state 868 state 828 - 69 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 . foreach_statement + 90 finally_statement: "finally (T_FINALLY)" . $@28 '{' inner_statement_list '}' - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - ':' shift, and go to state 869 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "if (T_IF)" shift, and go to state 29 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 32 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - T_INLINE_HTML shift, and go to state 35 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "echo (T_ECHO)" shift, and go to state 37 - "do (T_DO)" shift, and go to state 38 - "while (T_WHILE)" shift, and go to state 39 - "for (T_FOR)" shift, and go to state 40 - "foreach (T_FOREACH)" shift, and go to state 41 - "declare (T_DECLARE)" shift, and go to state 42 - "switch (T_SWITCH)" shift, and go to state 43 - "break (T_BREAK)" shift, and go to state 44 - "continue (T_CONTINUE)" shift, and go to state 45 - "goto (T_GOTO)" shift, and go to state 46 - "function (T_FUNCTION)" shift, and go to state 47 - "return (T_RETURN)" shift, and go to state 49 - "try (T_TRY)" shift, and go to state 50 - "throw (T_THROW)" shift, and go to state 51 - "global (T_GLOBAL)" shift, and go to state 53 - "static (T_STATIC)" shift, and go to state 56 - "unset (T_UNSET)" shift, and go to state 57 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 78 - '{' shift, and go to state 79 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - statement go to state 870 - unticked_statement go to state 87 - foreach_statement go to state 872 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 101 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 89 ($@28) + + $@28 go to state 869 state 829 - 126 declare_statement: ':' inner_statement_list "enddeclare (T_ENDDECLARE)" ';' . + 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' catch_statement $@23 finally_statement . - $default reduce using rule 126 (declare_statement) + $default reduce using rule 79 (unticked_statement) state 830 - 132 switch_case_list: ':' ';' case_list "endswitch (T_ENDSWITCH)" . ';' + 346 expr_without_variable: "static (T_STATIC)" function is_reference @57 '(' parameter_list ')' lexical_vars . '{' inner_statement_list '}' - ';' shift, and go to state 873 + '{' shift, and go to state 870 state 831 - 131 switch_case_list: ':' case_list "endswitch (T_ENDSWITCH)" ';' . + 500 assignment_list_element: "list (T_LIST)" '(' $@74 assignment_list ')' . - $default reduce using rule 131 (switch_case_list) + $default reduce using rule 500 (assignment_list_element) state 832 - 135 case_list: case_list "case (T_CASE)" expr . case_separator @32 inner_statement_list - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - ':' shift, and go to state 833 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ';' shift, and go to state 834 - - case_separator go to state 874 + 252 chaining_dereference: '[' dim_offset ']' . + + $default reduce using rule 252 (chaining_dereference) state 833 - 138 case_separator: ':' . + 457 variable_property: "-> (T_OBJECT_OPERATOR)" object_property $@70 . method_or_not - $default reduce using rule 138 (case_separator) + '(' reduce using rule 460 (@71) + $default reduce using rule 464 (method_or_not) + + array_method_dereference go to state 730 + method go to state 731 + @71 go to state 732 + method_or_not go to state 871 state 834 - 139 case_separator: ';' . + 251 chaining_dereference: chaining_dereference '[' dim_offset . ']' - $default reduce using rule 139 (case_separator) + ']' shift, and go to state 872 state 835 - 137 case_list: case_list "default (T_DEFAULT)" case_separator . @33 inner_statement_list + 249 chaining_method_or_property: chaining_method_or_property . variable_property + 254 chaining_instance_call: chaining_dereference $@42 chaining_method_or_property . + + "-> (T_OBJECT_OPERATOR)" shift, and go to state 709 - $default reduce using rule 136 (@33) + $default reduce using rule 254 (chaining_instance_call) - @33 go to state 875 + variable_property go to state 770 state 836 - 130 switch_case_list: '{' ';' case_list '}' . + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list '{' class_statement_list '}' . - $default reduce using rule 130 (switch_case_list) + $default reduce using rule 108 (unticked_class_declaration_statement) state 837 - 419 non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' static_scalar "=> (T_DOUBLE_ARROW)" static_scalar . + 241 class_constant_declaration: "const (T_CONST)" "identifier (T_STRING)" . '=' static_scalar - $default reduce using rule 419 (non_empty_static_array_pair_list) + '=' shift, and go to state 873 state 838 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name . @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches + 201 trait_use_statement: "use (T_USE)" trait_list . trait_adaptations + 203 trait_list: trait_list . ',' fully_qualified_class_name - $default reduce using rule 78 (@24) + ',' shift, and go to state 874 + ';' shift, and go to state 875 + '{' shift, and go to state 876 - @24 go to state 876 + trait_adaptations go to state 877 state 839 - 335 expr_without_variable: "static (T_STATIC)" function is_reference '(' @54 parameter_list ')' lexical_vars '{' . inner_statement_list '}' + 202 trait_list: fully_qualified_class_name . - $default reduce using rule 28 (inner_statement_list) - - inner_statement_list go to state 877 + $default reduce using rule 202 (trait_list) state 840 - 435 variable_property: "-> (T_OBJECT_OPERATOR)" object_property @67 method_or_not . + 196 class_statement: variable_modifiers $@39 . class_variable_declaration ';' + + "variable (T_VARIABLE)" shift, and go to state 878 - $default reduce using rule 435 (variable_property) + class_variable_declaration go to state 879 state 841 - 241 chaining_dereference: chaining_dereference '[' dim_offset ']' . + 200 class_statement: method_modifiers function . is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body - $default reduce using rule 241 (chaining_dereference) + '&' shift, and go to state 247 + + $default reduce using rule 103 (is_reference) + + is_reference go to state 880 state 842 - 231 class_constant_declaration: "const (T_CONST)" "identifier (T_STRING)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 878 - static_class_constant go to state 471 + 229 non_empty_member_modifiers: non_empty_member_modifiers member_modifier . + $default reduce using rule 229 (non_empty_member_modifiers) -state 843 - 193 trait_list: trait_list ',' . fully_qualified_class_name +state 843 - "identifier (T_STRING)" shift, and go to state 116 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 + 240 class_constant_declaration: class_constant_declaration ',' . "identifier (T_STRING)" '=' static_scalar - namespace_name go to state 516 - fully_qualified_class_name go to state 879 + "identifier (T_STRING)" shift, and go to state 881 state 844 - 194 trait_adaptations: ';' . + 197 class_statement: class_constant_declaration ';' . - $default reduce using rule 194 (trait_adaptations) + $default reduce using rule 197 (class_statement) state 845 - 195 trait_adaptations: '{' . trait_adaptation_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 880 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 - - $default reduce using rule 196 (trait_adaptation_list) + $default reduce using rule 28 (inner_statement_list) - namespace_name go to state 516 - trait_adaptation_list go to state 881 - non_empty_trait_adaptation_list go to state 882 - trait_adaptation_statement go to state 883 - trait_precedence go to state 884 - trait_method_reference go to state 885 - trait_method_reference_fully_qualified go to state 886 - trait_alias go to state 887 - fully_qualified_class_name go to state 888 + inner_statement_list go to state 882 state 846 - 191 trait_use_statement: "use (T_USE)" trait_list trait_adaptations . + 358 lexical_vars: "use (T_USE)" '(' . lexical_var_list ')' - $default reduce using rule 191 (trait_use_statement) + '&' shift, and go to state 883 + "variable (T_VARIABLE)" shift, and go to state 884 + + lexical_var_list go to state 885 state 847 - 228 class_variable_declaration: "variable (T_VARIABLE)" . - 229 | "variable (T_VARIABLE)" . '=' static_scalar + 344 expr_without_variable: function is_reference @56 '(' parameter_list ')' lexical_vars '{' . inner_statement_list '}' - '=' shift, and go to state 889 + $default reduce using rule 28 (inner_statement_list) - $default reduce using rule 228 (class_variable_declaration) + inner_statement_list go to state 886 state 848 - 186 class_statement: variable_modifiers @36 class_variable_declaration . ';' - 226 class_variable_declaration: class_variable_declaration . ',' "variable (T_VARIABLE)" - 227 | class_variable_declaration . ',' "variable (T_VARIABLE)" '=' static_scalar + 168 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type '&' . "variable (T_VARIABLE)" + 169 | non_empty_parameter_list ',' optional_class_type '&' . "variable (T_VARIABLE)" '=' static_scalar - ',' shift, and go to state 890 - ';' shift, and go to state 891 + "variable (T_VARIABLE)" shift, and go to state 887 state 849 - 190 class_statement: method_modifiers function is_reference . "identifier (T_STRING)" @37 '(' parameter_list ')' method_body + 167 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" . + 170 | non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" . '=' static_scalar - "identifier (T_STRING)" shift, and go to state 892 + '=' shift, and go to state 888 + $default reduce using rule 167 (non_empty_parameter_list) -state 850 - 230 class_constant_declaration: class_constant_declaration ',' "identifier (T_STRING)" . '=' static_scalar +state 850 - '=' shift, and go to state 893 + 165 non_empty_parameter_list: optional_class_type '&' "variable (T_VARIABLE)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 889 + static_class_constant go to state 502 state 851 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 99 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @29 '(' parameter_list ')' '{' inner_statement_list . '}' - - '}' shift, and go to state 894 - - $default reduce using rule 26 (@4) + 166 non_empty_parameter_list: optional_class_type "variable (T_VARIABLE)" '=' static_scalar . - @4 go to state 366 + $default reduce using rule 166 (non_empty_parameter_list) state 852 - 342 lexical_var_list: '&' . "variable (T_VARIABLE)" + 458 array_method_dereference: array_method_dereference '[' dim_offset . ']' - "variable (T_VARIABLE)" shift, and go to state 895 + ']' shift, and go to state 890 state 853 - 341 lexical_var_list: "variable (T_VARIABLE)" . + 459 array_method_dereference: method '[' dim_offset . ']' - $default reduce using rule 341 (lexical_var_list) + ']' shift, and go to state 891 state 854 - 338 lexical_vars: "use (T_USE)" '(' lexical_var_list . ')' - 339 lexical_var_list: lexical_var_list . ',' "variable (T_VARIABLE)" - 340 | lexical_var_list . ',' '&' "variable (T_VARIABLE)" + 454 variable_properties: variable_properties variable_property . - ',' shift, and go to state 896 - ')' shift, and go to state 897 + $default reduce using rule 454 (variable_properties) state 855 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 333 expr_without_variable: function is_reference '(' @53 parameter_list ')' lexical_vars '{' inner_statement_list . '}' - - '}' shift, and go to state 898 - - $default reduce using rule 26 (@4) + 394 dynamic_class_name_variable_property: "-> (T_OBJECT_OPERATOR)" object_property . - @4 go to state 366 + $default reduce using rule 394 (dynamic_class_name_variable_property) state 856 - 159 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" . - 160 | non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" . '=' static_scalar + 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr . ':' $@38 inner_statement_list - '=' shift, and go to state 899 - - $default reduce using rule 159 (non_empty_parameter_list) + ':' shift, and go to state 892 state 857 - 161 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 900 - static_class_constant go to state 471 + 160 new_else_single: "else (T_ELSE)" ':' . inner_statement_list + + $default reduce using rule 28 (inner_statement_list) + + inner_statement_list go to state 893 state 858 - 156 non_empty_parameter_list: optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar . + 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 156 (non_empty_parameter_list) + ';' shift, and go to state 894 state 859 - 439 method: '(' @68 function_call_parameter_list ')' . + 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr $@37 . statement - $default reduce using rule 439 (method) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 11 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "if (T_IF)" shift, and go to state 30 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 33 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + T_INLINE_HTML shift, and go to state 36 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "echo (T_ECHO)" shift, and go to state 38 + "do (T_DO)" shift, and go to state 39 + "while (T_WHILE)" shift, and go to state 40 + "for (T_FOR)" shift, and go to state 41 + "foreach (T_FOREACH)" shift, and go to state 42 + "declare (T_DECLARE)" shift, and go to state 43 + "switch (T_SWITCH)" shift, and go to state 44 + "break (T_BREAK)" shift, and go to state 45 + "continue (T_CONTINUE)" shift, and go to state 46 + "goto (T_GOTO)" shift, and go to state 47 + "function (T_FUNCTION)" shift, and go to state 48 + "return (T_RETURN)" shift, and go to state 50 + "try (T_TRY)" shift, and go to state 51 + "throw (T_THROW)" shift, and go to state 52 + "global (T_GLOBAL)" shift, and go to state 54 + "static (T_STATIC)" shift, and go to state 57 + "unset (T_UNSET)" shift, and go to state 58 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 79 + '{' shift, and go to state 80 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + statement go to state 895 + unticked_statement go to state 88 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 97 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 105 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 860 - 436 array_method_dereference: array_method_dereference '[' dim_offset ']' . + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr . ')' $@15 for_statement - $default reduce using rule 436 (array_method_dereference) + ')' shift, and go to state 896 state 861 - 437 array_method_dereference: method '[' dim_offset ']' . + 129 foreach_variable: "list (T_LIST)" '(' $@34 assignment_list . ')' + 496 assignment_list: assignment_list . ',' assignment_list_element - $default reduce using rule 437 (array_method_dereference) + ',' shift, and go to state 620 + ')' shift, and go to state 897 state 862 - 147 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" . '(' expr ')' ':' @35 inner_statement_list + 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 901 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 11 + ':' shift, and go to state 898 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "if (T_IF)" shift, and go to state 30 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 33 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + T_INLINE_HTML shift, and go to state 36 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "echo (T_ECHO)" shift, and go to state 38 + "do (T_DO)" shift, and go to state 39 + "while (T_WHILE)" shift, and go to state 40 + "for (T_FOR)" shift, and go to state 41 + "foreach (T_FOREACH)" shift, and go to state 42 + "declare (T_DECLARE)" shift, and go to state 43 + "switch (T_SWITCH)" shift, and go to state 44 + "break (T_BREAK)" shift, and go to state 45 + "continue (T_CONTINUE)" shift, and go to state 46 + "goto (T_GOTO)" shift, and go to state 47 + "function (T_FUNCTION)" shift, and go to state 48 + "return (T_RETURN)" shift, and go to state 50 + "try (T_TRY)" shift, and go to state 51 + "throw (T_THROW)" shift, and go to state 52 + "global (T_GLOBAL)" shift, and go to state 54 + "static (T_STATIC)" shift, and go to state 57 + "unset (T_UNSET)" shift, and go to state 58 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 79 + '{' shift, and go to state 80 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + statement go to state 899 + unticked_statement go to state 88 + foreach_statement go to state 900 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 97 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 105 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 863 - 151 new_else_single: "else (T_ELSE)" . ':' inner_statement_list + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 . foreach_statement - ':' shift, and go to state 902 + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 11 + ':' shift, and go to state 898 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "if (T_IF)" shift, and go to state 30 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 33 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + T_INLINE_HTML shift, and go to state 36 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "echo (T_ECHO)" shift, and go to state 38 + "do (T_DO)" shift, and go to state 39 + "while (T_WHILE)" shift, and go to state 40 + "for (T_FOR)" shift, and go to state 41 + "foreach (T_FOREACH)" shift, and go to state 42 + "declare (T_DECLARE)" shift, and go to state 43 + "switch (T_SWITCH)" shift, and go to state 44 + "break (T_BREAK)" shift, and go to state 45 + "continue (T_CONTINUE)" shift, and go to state 46 + "goto (T_GOTO)" shift, and go to state 47 + "function (T_FUNCTION)" shift, and go to state 48 + "return (T_RETURN)" shift, and go to state 50 + "try (T_TRY)" shift, and go to state 51 + "throw (T_THROW)" shift, and go to state 52 + "global (T_GLOBAL)" shift, and go to state 54 + "static (T_STATIC)" shift, and go to state 57 + "unset (T_UNSET)" shift, and go to state 58 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 79 + '{' shift, and go to state 80 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + statement go to state 899 + unticked_statement go to state 88 + foreach_statement go to state 901 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 97 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 105 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 864 - 41 unticked_statement: "if (T_IF)" '(' expr ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single . "endif (T_ENDIF)" ';' + 135 declare_statement: ':' inner_statement_list "enddeclare (T_ENDDECLARE)" ';' . - "endif (T_ENDIF)" shift, and go to state 903 + $default reduce using rule 135 (declare_statement) state 865 - 144 elseif_list: elseif_list "elseif (T_ELSEIF)" '(' . expr ')' @34 statement + 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 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 904 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 28 (inner_statement_list) + + inner_statement_list go to state 902 state 866 - 149 else_single: "else (T_ELSE)" statement . + 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 149 (else_single) + $@4 go to state 389 state 867 - 141 while_statement: ':' inner_statement_list "endwhile (T_ENDWHILE)" ';' . + 439 non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' static_scalar "=> (T_DOUBLE_ARROW)" static_scalar . - $default reduce using rule 141 (while_statement) + $default reduce using rule 439 (non_empty_static_array_pair_list) state 868 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' . @15 for_statement + 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 50 (@15) + $default reduce using rule 84 ($@25) - @15 go to state 905 + $@25 go to state 903 state 869 - 124 foreach_statement: ':' . inner_statement_list "endforeach (T_ENDFOREACH)" ';' + 90 finally_statement: "finally (T_FINALLY)" $@28 . '{' inner_statement_list '}' - $default reduce using rule 28 (inner_statement_list) - - inner_statement_list go to state 906 + '{' shift, and go to state 904 state 870 - 123 foreach_statement: statement . + 346 expr_without_variable: "static (T_STATIC)" function is_reference @57 '(' parameter_list ')' lexical_vars '{' . inner_statement_list '}' - $default reduce using rule 123 (foreach_statement) + $default reduce using rule 28 (inner_statement_list) + + inner_statement_list go to state 905 state 871 - 72 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 variable foreach_optional_arg ')' @20 foreach_statement . + 457 variable_property: "-> (T_OBJECT_OPERATOR)" object_property $@70 method_or_not . - $default reduce using rule 72 (unticked_statement) + $default reduce using rule 457 (variable_property) state 872 - 69 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement . + 251 chaining_dereference: chaining_dereference '[' dim_offset ']' . - $default reduce using rule 69 (unticked_statement) + $default reduce using rule 251 (chaining_dereference) state 873 - 132 switch_case_list: ':' ';' case_list "endswitch (T_ENDSWITCH)" ';' . - - $default reduce using rule 132 (switch_case_list) + 241 class_constant_declaration: "const (T_CONST)" "identifier (T_STRING)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 906 + static_class_constant go to state 502 state 874 - 135 case_list: case_list "case (T_CASE)" expr case_separator . @32 inner_statement_list + 203 trait_list: trait_list ',' . fully_qualified_class_name - $default reduce using rule 134 (@32) + "identifier (T_STRING)" shift, and go to state 122 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 - @32 go to state 907 + namespace_name go to state 549 + fully_qualified_class_name go to state 907 state 875 - 137 case_list: case_list "default (T_DEFAULT)" case_separator @33 . inner_statement_list - - $default reduce using rule 28 (inner_statement_list) + 204 trait_adaptations: ';' . - inner_statement_list go to state 908 + $default reduce using rule 204 (trait_adaptations) state 876 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 . "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches + 205 trait_adaptations: '{' . trait_adaptation_list '}' - "variable (T_VARIABLE)" shift, and go to state 909 + "identifier (T_STRING)" shift, and go to state 908 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 + $default reduce using rule 206 (trait_adaptation_list) -state 877 + namespace_name go to state 549 + trait_adaptation_list go to state 909 + non_empty_trait_adaptation_list go to state 910 + trait_adaptation_statement go to state 911 + trait_precedence go to state 912 + trait_method_reference go to state 913 + trait_method_reference_fully_qualified go to state 914 + trait_alias go to state 915 + fully_qualified_class_name go to state 916 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 335 expr_without_variable: "static (T_STATIC)" function is_reference '(' @54 parameter_list ')' lexical_vars '{' inner_statement_list . '}' - '}' shift, and go to state 910 +state 877 - $default reduce using rule 26 (@4) + 201 trait_use_statement: "use (T_USE)" trait_list trait_adaptations . - @4 go to state 366 + $default reduce using rule 201 (trait_use_statement) state 878 - 231 class_constant_declaration: "const (T_CONST)" "identifier (T_STRING)" '=' static_scalar . + 238 class_variable_declaration: "variable (T_VARIABLE)" . + 239 | "variable (T_VARIABLE)" . '=' static_scalar - $default reduce using rule 231 (class_constant_declaration) + '=' shift, and go to state 917 + + $default reduce using rule 238 (class_variable_declaration) state 879 - 193 trait_list: trait_list ',' fully_qualified_class_name . + 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 - $default reduce using rule 193 (trait_list) + ',' shift, and go to state 918 + ';' shift, and go to state 919 state 880 - 5 namespace_name: "identifier (T_STRING)" . - 205 trait_method_reference: "identifier (T_STRING)" . + 200 class_statement: method_modifiers function is_reference . "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body - "as (T_AS)" reduce using rule 205 (trait_method_reference) - $default reduce using rule 5 (namespace_name) + "identifier (T_STRING)" shift, and go to state 920 state 881 - 195 trait_adaptations: '{' trait_adaptation_list . '}' + 240 class_constant_declaration: class_constant_declaration ',' "identifier (T_STRING)" . '=' static_scalar - '}' shift, and go to state 911 + '=' shift, and go to state 921 state 882 - 197 trait_adaptation_list: non_empty_trait_adaptation_list . - 199 non_empty_trait_adaptation_list: non_empty_trait_adaptation_list . trait_adaptation_statement + 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 . '}' - "identifier (T_STRING)" shift, and go to state 880 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 + '}' shift, and go to state 922 - $default reduce using rule 197 (trait_adaptation_list) + $default reduce using rule 26 ($@4) - namespace_name go to state 516 - trait_adaptation_statement go to state 912 - trait_precedence go to state 884 - trait_method_reference go to state 885 - trait_method_reference_fully_qualified go to state 886 - trait_alias go to state 887 - fully_qualified_class_name go to state 888 + $@4 go to state 389 state 883 - 198 non_empty_trait_adaptation_list: trait_adaptation_statement . + 362 lexical_var_list: '&' . "variable (T_VARIABLE)" - $default reduce using rule 198 (non_empty_trait_adaptation_list) + "variable (T_VARIABLE)" shift, and go to state 923 state 884 - 200 trait_adaptation_statement: trait_precedence . ';' + 361 lexical_var_list: "variable (T_VARIABLE)" . - ';' shift, and go to state 913 + $default reduce using rule 361 (lexical_var_list) state 885 - 208 trait_alias: trait_method_reference . "as (T_AS)" trait_modifiers "identifier (T_STRING)" - 209 | trait_method_reference . "as (T_AS)" member_modifier + 358 lexical_vars: "use (T_USE)" '(' lexical_var_list . ')' + 359 lexical_var_list: lexical_var_list . ',' "variable (T_VARIABLE)" + 360 | lexical_var_list . ',' '&' "variable (T_VARIABLE)" - "as (T_AS)" shift, and go to state 914 + ',' shift, and go to state 924 + ')' shift, and go to state 925 state 886 - 202 trait_precedence: trait_method_reference_fully_qualified . "insteadof (T_INSTEADOF)" trait_reference_list - 206 trait_method_reference: trait_method_reference_fully_qualified . + 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 . '}' - "insteadof (T_INSTEADOF)" shift, and go to state 915 + '}' shift, and go to state 926 - $default reduce using rule 206 (trait_method_reference) + $default reduce using rule 26 ($@4) + + $@4 go to state 389 state 887 - 201 trait_adaptation_statement: trait_alias . ';' + 168 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" . + 169 | non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" . '=' static_scalar - ';' shift, and go to state 916 + '=' shift, and go to state 927 + $default reduce using rule 168 (non_empty_parameter_list) -state 888 - 207 trait_method_reference_fully_qualified: fully_qualified_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" +state 888 - ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 917 + 170 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 928 + static_class_constant go to state 502 state 889 - 229 class_variable_declaration: "variable (T_VARIABLE)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 918 - static_class_constant go to state 471 + 165 non_empty_parameter_list: optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar . + + $default reduce using rule 165 (non_empty_parameter_list) state 890 - 226 class_variable_declaration: class_variable_declaration ',' . "variable (T_VARIABLE)" - 227 | class_variable_declaration ',' . "variable (T_VARIABLE)" '=' static_scalar + 458 array_method_dereference: array_method_dereference '[' dim_offset ']' . - "variable (T_VARIABLE)" shift, and go to state 919 + $default reduce using rule 458 (array_method_dereference) state 891 - 186 class_statement: variable_modifiers @36 class_variable_declaration ';' . + 459 array_method_dereference: method '[' dim_offset ']' . - $default reduce using rule 186 (class_statement) + $default reduce using rule 459 (array_method_dereference) state 892 - 190 class_statement: method_modifiers function is_reference "identifier (T_STRING)" . @37 '(' parameter_list ')' method_body + 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' . $@38 inner_statement_list - $default reduce using rule 189 (@37) + $default reduce using rule 155 ($@38) - @37 go to state 920 + $@38 go to state 929 state 893 - 230 class_constant_declaration: class_constant_declaration ',' "identifier (T_STRING)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 921 - static_class_constant go to state 471 + 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) + + $@4 go to state 389 state 894 - 99 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @29 '(' parameter_list ')' '{' 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)" ';' . - $default reduce using rule 99 (unticked_function_declaration_statement) + $default reduce using rule 41 (unticked_statement) state 895 - 342 lexical_var_list: '&' "variable (T_VARIABLE)" . + 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr $@37 statement . - $default reduce using rule 342 (lexical_var_list) + $default reduce using rule 153 (elseif_list) state 896 - 339 lexical_var_list: lexical_var_list ',' . "variable (T_VARIABLE)" - 340 | lexical_var_list ',' . '&' "variable (T_VARIABLE)" + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' . $@15 for_statement - '&' shift, and go to state 922 - "variable (T_VARIABLE)" shift, and go to state 923 + $default reduce using rule 50 ($@15) + + $@15 go to state 930 state 897 - 338 lexical_vars: "use (T_USE)" '(' lexical_var_list ')' . + 129 foreach_variable: "list (T_LIST)" '(' $@34 assignment_list ')' . - $default reduce using rule 338 (lexical_vars) + $default reduce using rule 129 (foreach_variable) state 898 - 333 expr_without_variable: function is_reference '(' @53 parameter_list ')' lexical_vars '{' inner_statement_list '}' . + 133 foreach_statement: ':' . inner_statement_list "endforeach (T_ENDFOREACH)" ';' - $default reduce using rule 333 (expr_without_variable) + $default reduce using rule 28 (inner_statement_list) + + inner_statement_list go to state 931 state 899 - 160 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 924 - static_class_constant go to state 471 + 132 foreach_statement: statement . + + $default reduce using rule 132 (foreach_statement) state 900 - 161 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" '=' static_scalar . + 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 161 (non_empty_parameter_list) + $default reduce using rule 73 (unticked_statement) state 901 - 147 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" '(' . expr ')' ':' @35 inner_statement_list + 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 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "function (T_FUNCTION)" shift, and go to state 47 - "static (T_STATIC)" shift, and go to state 117 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 925 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + $default reduce using rule 70 (unticked_statement) state 902 - 151 new_else_single: "else (T_ELSE)" ':' . 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 . - $default reduce using rule 28 (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) - inner_statement_list go to state 926 + $@4 go to state 389 state 903 - 41 unticked_statement: "if (T_IF)" '(' expr ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" . ';' + 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 927 + "variable (T_VARIABLE)" shift, and go to state 932 state 904 - 144 elseif_list: elseif_list "elseif (T_ELSEIF)" '(' expr . ')' @34 statement - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ')' shift, and go to state 928 + 90 finally_statement: "finally (T_FINALLY)" $@28 '{' . inner_statement_list '}' + + $default reduce using rule 28 (inner_statement_list) + + inner_statement_list go to state 933 state 905 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 . for_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 . '}' - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - ':' shift, and go to state 929 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "if (T_IF)" shift, and go to state 29 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 32 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - T_INLINE_HTML shift, and go to state 35 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "echo (T_ECHO)" shift, and go to state 37 - "do (T_DO)" shift, and go to state 38 - "while (T_WHILE)" shift, and go to state 39 - "for (T_FOR)" shift, and go to state 40 - "foreach (T_FOREACH)" shift, and go to state 41 - "declare (T_DECLARE)" shift, and go to state 42 - "switch (T_SWITCH)" shift, and go to state 43 - "break (T_BREAK)" shift, and go to state 44 - "continue (T_CONTINUE)" shift, and go to state 45 - "goto (T_GOTO)" shift, and go to state 46 - "function (T_FUNCTION)" shift, and go to state 47 - "return (T_RETURN)" shift, and go to state 49 - "try (T_TRY)" shift, and go to state 50 - "throw (T_THROW)" shift, and go to state 51 - "global (T_GLOBAL)" shift, and go to state 53 - "static (T_STATIC)" shift, and go to state 56 - "unset (T_UNSET)" shift, and go to state 57 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 78 - '{' shift, and go to state 79 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - statement go to state 930 - unticked_statement go to state 87 - for_statement go to state 931 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 101 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + '}' shift, and go to state 934 + $default reduce using rule 26 ($@4) -state 906 + $@4 go to state 389 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 124 foreach_statement: ':' inner_statement_list . "endforeach (T_ENDFOREACH)" ';' - "endforeach (T_ENDFOREACH)" shift, and go to state 932 +state 906 - $default reduce using rule 26 (@4) + 241 class_constant_declaration: "const (T_CONST)" "identifier (T_STRING)" '=' static_scalar . - @4 go to state 366 + $default reduce using rule 241 (class_constant_declaration) state 907 - 135 case_list: case_list "case (T_CASE)" expr case_separator @32 . inner_statement_list + 203 trait_list: trait_list ',' fully_qualified_class_name . - $default reduce using rule 28 (inner_statement_list) - - inner_statement_list go to state 933 + $default reduce using rule 203 (trait_list) state 908 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 137 case_list: case_list "default (T_DEFAULT)" case_separator @33 inner_statement_list . - - "endswitch (T_ENDSWITCH)" reduce using rule 137 (case_list) - "case (T_CASE)" reduce using rule 137 (case_list) - "default (T_DEFAULT)" reduce using rule 137 (case_list) - '}' reduce using rule 137 (case_list) - $default reduce using rule 26 (@4) + 5 namespace_name: "identifier (T_STRING)" . + 215 trait_method_reference: "identifier (T_STRING)" . - @4 go to state 366 + "as (T_AS)" reduce using rule 215 (trait_method_reference) + $default reduce using rule 5 (namespace_name) state 909 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" . ')' @25 '{' inner_statement_list '}' @26 additional_catches + 205 trait_adaptations: '{' trait_adaptation_list . '}' - ')' shift, and go to state 934 + '}' shift, and go to state 935 state 910 - 335 expr_without_variable: "static (T_STATIC)" function is_reference '(' @54 parameter_list ')' lexical_vars '{' inner_statement_list '}' . + 207 trait_adaptation_list: non_empty_trait_adaptation_list . + 209 non_empty_trait_adaptation_list: non_empty_trait_adaptation_list . trait_adaptation_statement + + "identifier (T_STRING)" shift, and go to state 908 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 + + $default reduce using rule 207 (trait_adaptation_list) - $default reduce using rule 335 (expr_without_variable) + namespace_name go to state 549 + trait_adaptation_statement go to state 936 + trait_precedence go to state 912 + trait_method_reference go to state 913 + trait_method_reference_fully_qualified go to state 914 + trait_alias go to state 915 + fully_qualified_class_name go to state 916 state 911 - 195 trait_adaptations: '{' trait_adaptation_list '}' . + 208 non_empty_trait_adaptation_list: trait_adaptation_statement . - $default reduce using rule 195 (trait_adaptations) + $default reduce using rule 208 (non_empty_trait_adaptation_list) state 912 - 199 non_empty_trait_adaptation_list: non_empty_trait_adaptation_list trait_adaptation_statement . + 210 trait_adaptation_statement: trait_precedence . ';' - $default reduce using rule 199 (non_empty_trait_adaptation_list) + ';' shift, and go to state 937 state 913 - 200 trait_adaptation_statement: trait_precedence ';' . + 218 trait_alias: trait_method_reference . "as (T_AS)" trait_modifiers "identifier (T_STRING)" + 219 | trait_method_reference . "as (T_AS)" member_modifier - $default reduce using rule 200 (trait_adaptation_statement) + "as (T_AS)" shift, and go to state 938 state 914 - 208 trait_alias: trait_method_reference "as (T_AS)" . trait_modifiers "identifier (T_STRING)" - 209 | trait_method_reference "as (T_AS)" . member_modifier + 212 trait_precedence: trait_method_reference_fully_qualified . "insteadof (T_INSTEADOF)" trait_reference_list + 216 trait_method_reference: trait_method_reference_fully_qualified . - "public (T_PUBLIC)" shift, and go to state 740 - "protected (T_PROTECTED)" shift, and go to state 741 - "private (T_PRIVATE)" shift, and go to state 742 - "final (T_FINAL)" shift, and go to state 743 - "abstract (T_ABSTRACT)" shift, and go to state 744 - "static (T_STATIC)" shift, and go to state 745 + "insteadof (T_INSTEADOF)" shift, and go to state 939 - $default reduce using rule 210 (trait_modifiers) - - trait_modifiers go to state 935 - member_modifier go to state 936 + $default reduce using rule 216 (trait_method_reference) state 915 - 202 trait_precedence: trait_method_reference_fully_qualified "insteadof (T_INSTEADOF)" . trait_reference_list - - "identifier (T_STRING)" shift, and go to state 116 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 + 211 trait_adaptation_statement: trait_alias . ';' - namespace_name go to state 516 - trait_reference_list go to state 937 - fully_qualified_class_name go to state 938 + ';' shift, and go to state 940 state 916 - 201 trait_adaptation_statement: trait_alias ';' . + 217 trait_method_reference_fully_qualified: fully_qualified_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" - $default reduce using rule 201 (trait_adaptation_statement) + ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 941 state 917 - 207 trait_method_reference_fully_qualified: fully_qualified_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)" - - "identifier (T_STRING)" shift, and go to state 939 + 239 class_variable_declaration: "variable (T_VARIABLE)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 942 + static_class_constant go to state 502 state 918 - 229 class_variable_declaration: "variable (T_VARIABLE)" '=' static_scalar . + 236 class_variable_declaration: class_variable_declaration ',' . "variable (T_VARIABLE)" + 237 | class_variable_declaration ',' . "variable (T_VARIABLE)" '=' static_scalar - $default reduce using rule 229 (class_variable_declaration) + "variable (T_VARIABLE)" shift, and go to state 943 state 919 - 226 class_variable_declaration: class_variable_declaration ',' "variable (T_VARIABLE)" . - 227 | class_variable_declaration ',' "variable (T_VARIABLE)" . '=' static_scalar - - '=' shift, and go to state 940 + 196 class_statement: variable_modifiers $@39 class_variable_declaration ';' . - $default reduce using rule 226 (class_variable_declaration) + $default reduce using rule 196 (class_statement) state 920 - 190 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @37 . '(' 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 941 + $default reduce using rule 199 ($@40) + $@40 go to state 944 -state 921 - 230 class_constant_declaration: class_constant_declaration ',' "identifier (T_STRING)" '=' static_scalar . +state 921 - $default reduce using rule 230 (class_constant_declaration) + 240 class_constant_declaration: class_constant_declaration ',' "identifier (T_STRING)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 945 + static_class_constant go to state 502 state 922 - 340 lexical_var_list: lexical_var_list ',' '&' . "variable (T_VARIABLE)" + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list '}' . - "variable (T_VARIABLE)" shift, and go to state 942 + $default reduce using rule 106 (unticked_function_declaration_statement) state 923 - 339 lexical_var_list: lexical_var_list ',' "variable (T_VARIABLE)" . + 362 lexical_var_list: '&' "variable (T_VARIABLE)" . - $default reduce using rule 339 (lexical_var_list) + $default reduce using rule 362 (lexical_var_list) state 924 - 160 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar . + 359 lexical_var_list: lexical_var_list ',' . "variable (T_VARIABLE)" + 360 | lexical_var_list ',' . '&' "variable (T_VARIABLE)" - $default reduce using rule 160 (non_empty_parameter_list) + '&' shift, and go to state 946 + "variable (T_VARIABLE)" shift, and go to state 947 state 925 - 147 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" '(' expr . ')' ':' @35 inner_statement_list - 275 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @44 expr - 277 | expr . "&& (T_BOOLEAN_AND)" @45 expr - 279 | expr . "or (T_LOGICAL_OR)" @46 expr - 281 | expr . "and (T_LOGICAL_AND)" @47 expr - 282 | expr . "xor (T_LOGICAL_XOR)" expr - 283 | expr . '|' expr - 284 | expr . '&' expr - 285 | expr . '^' expr - 286 | expr . '.' expr - 287 | expr . '+' expr - 288 | expr . '-' expr - 289 | expr . '*' expr - 290 | expr . '/' expr - 291 | expr . '%' expr - 292 | expr . "<< (T_SL)" expr - 293 | expr . ">> (T_SR)" expr - 298 | expr . "=== (T_IS_IDENTICAL)" expr - 299 | expr . "!== (T_IS_NOT_IDENTICAL)" expr - 300 | expr . "== (T_IS_EQUAL)" expr - 301 | expr . "!= (T_IS_NOT_EQUAL)" expr - 302 | expr . '<' expr - 303 | expr . "<= (T_IS_SMALLER_OR_EQUAL)" expr - 304 | expr . '>' expr - 305 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr - 306 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 313 | expr . '?' @49 expr ':' @50 expr - 315 | expr . '?' ':' @51 expr - - "or (T_LOGICAL_OR)" shift, and go to state 235 - "xor (T_LOGICAL_XOR)" shift, and go to state 236 - "and (T_LOGICAL_AND)" shift, and go to state 237 - '?' shift, and go to state 238 - "|| (T_BOOLEAN_OR)" shift, and go to state 239 - "&& (T_BOOLEAN_AND)" shift, and go to state 240 - '|' shift, and go to state 241 - '^' shift, and go to state 242 - '&' shift, and go to state 243 - "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 244 - "=== (T_IS_IDENTICAL)" shift, and go to state 245 - "!= (T_IS_NOT_EQUAL)" shift, and go to state 246 - "== (T_IS_EQUAL)" shift, and go to state 247 - '<' shift, and go to state 248 - '>' shift, and go to state 249 - ">= (T_IS_GREATER_OR_EQUAL)" shift, and go to state 250 - "<= (T_IS_SMALLER_OR_EQUAL)" shift, and go to state 251 - ">> (T_SR)" shift, and go to state 252 - "<< (T_SL)" shift, and go to state 253 - '+' shift, and go to state 254 - '-' shift, and go to state 255 - '.' shift, and go to state 256 - '*' shift, and go to state 257 - '/' shift, and go to state 258 - '%' shift, and go to state 259 - "instanceof (T_INSTANCEOF)" shift, and go to state 260 - ')' shift, and go to state 943 + 358 lexical_vars: "use (T_USE)" '(' lexical_var_list ')' . + $default reduce using rule 358 (lexical_vars) -state 926 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 151 new_else_single: "else (T_ELSE)" ':' inner_statement_list . +state 926 - "endif (T_ENDIF)" reduce using rule 151 (new_else_single) - $default reduce using rule 26 (@4) + 344 expr_without_variable: function is_reference @56 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' . - @4 go to state 366 + $default reduce using rule 344 (expr_without_variable) state 927 - 41 unticked_statement: "if (T_IF)" '(' expr ')' ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' . - - $default reduce using rule 41 (unticked_statement) + 169 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 948 + static_class_constant go to state 502 state 928 - 144 elseif_list: elseif_list "elseif (T_ELSEIF)" '(' expr ')' . @34 statement + 170 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type "variable (T_VARIABLE)" '=' static_scalar . - $default reduce using rule 143 (@34) - - @34 go to state 944 + $default reduce using rule 170 (non_empty_parameter_list) state 929 - 122 for_statement: ':' . inner_statement_list "endfor (T_ENDFOR)" ';' + 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' $@38 . inner_statement_list $default reduce using rule 28 (inner_statement_list) - inner_statement_list go to state 945 + inner_statement_list go to state 949 state 930 - 121 for_statement: statement . + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 . for_statement - $default reduce using rule 121 (for_statement) + "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 + "require (T_REQUIRE)" shift, and go to state 6 + "eval (T_EVAL)" shift, and go to state 7 + "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 + "include (T_INCLUDE)" shift, and go to state 9 + "print (T_PRINT)" shift, and go to state 10 + "yield (T_YIELD)" shift, and go to state 11 + ':' shift, and go to state 950 + '+' shift, and go to state 12 + '-' shift, and go to state 13 + '!' shift, and go to state 14 + '~' shift, and go to state 15 + '@' shift, and go to state 16 + "(unset) (T_UNSET_CAST)" shift, and go to state 17 + "(bool) (T_BOOL_CAST)" shift, and go to state 18 + "(object) (T_OBJECT_CAST)" shift, and go to state 19 + "(array) (T_ARRAY_CAST)" shift, and go to state 20 + "(string) (T_STRING_CAST)" shift, and go to state 21 + "(double) (T_DOUBLE_CAST)" shift, and go to state 22 + "(int) (T_INT_CAST)" shift, and go to state 23 + "-- (T_DEC)" shift, and go to state 24 + "++ (T_INC)" shift, and go to state 25 + '[' shift, and go to state 26 + "clone (T_CLONE)" shift, and go to state 27 + "new (T_NEW)" shift, and go to state 28 + "exit (T_EXIT)" shift, and go to state 29 + "if (T_IF)" shift, and go to state 30 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 33 + "variable name (T_STRING_VARNAME)" shift, and go to state 34 + "variable (T_VARIABLE)" shift, and go to state 35 + T_INLINE_HTML shift, and go to state 36 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 37 + "echo (T_ECHO)" shift, and go to state 38 + "do (T_DO)" shift, and go to state 39 + "while (T_WHILE)" shift, and go to state 40 + "for (T_FOR)" shift, and go to state 41 + "foreach (T_FOREACH)" shift, and go to state 42 + "declare (T_DECLARE)" shift, and go to state 43 + "switch (T_SWITCH)" shift, and go to state 44 + "break (T_BREAK)" shift, and go to state 45 + "continue (T_CONTINUE)" shift, and go to state 46 + "goto (T_GOTO)" shift, and go to state 47 + "function (T_FUNCTION)" shift, and go to state 48 + "return (T_RETURN)" shift, and go to state 50 + "try (T_TRY)" shift, and go to state 51 + "throw (T_THROW)" shift, and go to state 52 + "global (T_GLOBAL)" shift, and go to state 54 + "static (T_STATIC)" shift, and go to state 57 + "unset (T_UNSET)" shift, and go to state 58 + "isset (T_ISSET)" shift, and go to state 59 + "empty (T_EMPTY)" shift, and go to state 60 + "list (T_LIST)" shift, and go to state 65 + "array (T_ARRAY)" shift, and go to state 66 + "__CLASS__ (T_CLASS_C)" shift, and go to state 67 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 73 + "namespace (T_NAMESPACE)" shift, and go to state 124 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 77 + '(' shift, and go to state 78 + ';' shift, and go to state 79 + '{' shift, and go to state 80 + '$' shift, and go to state 81 + '`' shift, and go to state 82 + '"' shift, and go to state 83 + + namespace_name go to state 84 + statement go to state 951 + unticked_statement go to state 88 + for_statement go to state 952 + new_expr go to state 95 + expr_without_variable go to state 96 + yield_expr go to state 97 + combined_scalar_offset go to state 98 + combined_scalar go to state 99 + function go to state 125 + function_call go to state 101 + class_name go to state 102 + common_scalar go to state 103 + scalar go to state 104 + expr go to state 105 + parenthesis_expr go to state 106 + r_variable go to state 107 + rw_variable go to state 108 + variable go to state 109 + variable_without_objects go to state 110 + static_member go to state 111 + variable_class_name go to state 112 + array_function_dereference go to state 113 + base_variable_with_function_calls go to state 114 + base_variable go to state 115 + reference_variable go to state 116 + compound_variable go to state 117 + simple_indirect_reference go to state 118 + internal_functions_in_yacc go to state 119 + class_constant go to state 120 state 931 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement . + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 133 foreach_statement: ':' inner_statement_list . "endforeach (T_ENDFOREACH)" ';' - $default reduce using rule 51 (unticked_statement) + "endforeach (T_ENDFOREACH)" shift, and go to state 953 + + $default reduce using rule 26 ($@4) + + $@4 go to state 389 state 932 - 124 foreach_statement: ':' inner_statement_list "endforeach (T_ENDFOREACH)" . ';' + 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 946 + ')' shift, and go to state 954 state 933 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 135 case_list: case_list "case (T_CASE)" expr case_separator @32 inner_statement_list . + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 90 finally_statement: "finally (T_FINALLY)" $@28 '{' inner_statement_list . '}' - "endswitch (T_ENDSWITCH)" reduce using rule 135 (case_list) - "case (T_CASE)" reduce using rule 135 (case_list) - "default (T_DEFAULT)" reduce using rule 135 (case_list) - '}' reduce using rule 135 (case_list) - $default reduce using rule 26 (@4) + '}' shift, and go to state 955 - @4 go to state 366 + $default reduce using rule 26 ($@4) + $@4 go to state 389 -state 934 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' . @25 '{' inner_statement_list '}' @26 additional_catches +state 934 - $default reduce using rule 79 (@25) + 346 expr_without_variable: "static (T_STATIC)" function is_reference @57 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' . - @25 go to state 947 + $default reduce using rule 346 (expr_without_variable) state 935 - 208 trait_alias: trait_method_reference "as (T_AS)" trait_modifiers . "identifier (T_STRING)" + 205 trait_adaptations: '{' trait_adaptation_list '}' . - "identifier (T_STRING)" shift, and go to state 948 + $default reduce using rule 205 (trait_adaptations) state 936 - 209 trait_alias: trait_method_reference "as (T_AS)" member_modifier . - 211 trait_modifiers: member_modifier . + 209 non_empty_trait_adaptation_list: non_empty_trait_adaptation_list trait_adaptation_statement . - "identifier (T_STRING)" reduce using rule 211 (trait_modifiers) - $default reduce using rule 209 (trait_alias) + $default reduce using rule 209 (non_empty_trait_adaptation_list) state 937 - 202 trait_precedence: trait_method_reference_fully_qualified "insteadof (T_INSTEADOF)" trait_reference_list . - 204 trait_reference_list: trait_reference_list . ',' fully_qualified_class_name - - ',' shift, and go to state 949 + 210 trait_adaptation_statement: trait_precedence ';' . - $default reduce using rule 202 (trait_precedence) + $default reduce using rule 210 (trait_adaptation_statement) state 938 - 203 trait_reference_list: fully_qualified_class_name . + 218 trait_alias: trait_method_reference "as (T_AS)" . trait_modifiers "identifier (T_STRING)" + 219 | trait_method_reference "as (T_AS)" . member_modifier + + "public (T_PUBLIC)" shift, and go to state 779 + "protected (T_PROTECTED)" shift, and go to state 780 + "private (T_PRIVATE)" shift, and go to state 781 + "final (T_FINAL)" shift, and go to state 782 + "abstract (T_ABSTRACT)" shift, and go to state 783 + "static (T_STATIC)" shift, and go to state 784 + + $default reduce using rule 220 (trait_modifiers) - $default reduce using rule 203 (trait_reference_list) + trait_modifiers go to state 956 + member_modifier go to state 957 state 939 - 207 trait_method_reference_fully_qualified: fully_qualified_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" . + 212 trait_precedence: trait_method_reference_fully_qualified "insteadof (T_INSTEADOF)" . trait_reference_list - $default reduce using rule 207 (trait_method_reference_fully_qualified) + "identifier (T_STRING)" shift, and go to state 122 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 + namespace_name go to state 549 + trait_reference_list go to state 958 + fully_qualified_class_name go to state 959 -state 940 - 227 class_variable_declaration: class_variable_declaration ',' "variable (T_VARIABLE)" '=' . static_scalar - - '+' shift, and go to state 459 - '-' shift, and go to state 460 - '[' shift, and go to state 461 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 116 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "static (T_STATIC)" shift, and go to state 138 - "array (T_ARRAY)" shift, and go to state 462 - "__CLASS__ (T_CLASS_C)" shift, and go to state 463 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 464 - "namespace (T_NAMESPACE)" shift, and go to state 465 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 466 - - namespace_name go to state 467 - class_name go to state 468 - common_scalar go to state 469 - static_scalar go to state 950 - static_class_constant go to state 471 +state 940 + 211 trait_adaptation_statement: trait_alias ';' . -state 941 + $default reduce using rule 211 (trait_adaptation_statement) - 190 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @37 '(' . parameter_list ')' method_body - "identifier (T_STRING)" shift, and go to state 116 - "array (T_ARRAY)" shift, and go to state 608 - "callable (T_CALLABLE)" shift, and go to state 609 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 +state 941 - ')' reduce using rule 153 (parameter_list) - $default reduce using rule 162 (optional_class_type) + 217 trait_method_reference_fully_qualified: fully_qualified_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)" - namespace_name go to state 516 - parameter_list go to state 951 - non_empty_parameter_list go to state 611 - optional_class_type go to state 612 - fully_qualified_class_name go to state 613 + "identifier (T_STRING)" shift, and go to state 960 state 942 - 340 lexical_var_list: lexical_var_list ',' '&' "variable (T_VARIABLE)" . + 239 class_variable_declaration: "variable (T_VARIABLE)" '=' static_scalar . - $default reduce using rule 340 (lexical_var_list) + $default reduce using rule 239 (class_variable_declaration) state 943 - 147 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" '(' expr ')' . ':' @35 inner_statement_list + 236 class_variable_declaration: class_variable_declaration ',' "variable (T_VARIABLE)" . + 237 | class_variable_declaration ',' "variable (T_VARIABLE)" . '=' static_scalar - ':' shift, and go to state 952 + '=' shift, and go to state 961 + + $default reduce using rule 236 (class_variable_declaration) state 944 - 144 elseif_list: elseif_list "elseif (T_ELSEIF)" '(' expr ')' @34 . statement + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 . '(' parameter_list ')' method_body - "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 - "require (T_REQUIRE)" shift, and go to state 6 - "eval (T_EVAL)" shift, and go to state 7 - "include_once (T_INCLUDE_ONCE)" shift, and go to state 8 - "include (T_INCLUDE)" shift, and go to state 9 - "print (T_PRINT)" shift, and go to state 10 - '+' shift, and go to state 11 - '-' shift, and go to state 12 - '!' shift, and go to state 13 - '~' shift, and go to state 14 - '@' shift, and go to state 15 - "(unset) (T_UNSET_CAST)" shift, and go to state 16 - "(bool) (T_BOOL_CAST)" shift, and go to state 17 - "(object) (T_OBJECT_CAST)" shift, and go to state 18 - "(array) (T_ARRAY_CAST)" shift, and go to state 19 - "(string) (T_STRING_CAST)" shift, and go to state 20 - "(double) (T_DOUBLE_CAST)" shift, and go to state 21 - "(int) (T_INT_CAST)" shift, and go to state 22 - "-- (T_DEC)" shift, and go to state 23 - "++ (T_INC)" shift, and go to state 24 - '[' shift, and go to state 25 - "clone (T_CLONE)" shift, and go to state 26 - "new (T_NEW)" shift, and go to state 27 - "exit (T_EXIT)" shift, and go to state 28 - "if (T_IF)" shift, and go to state 29 - "integer number (T_LNUMBER)" shift, and go to state 30 - "floating-point number (T_DNUMBER)" shift, and go to state 31 - "identifier (T_STRING)" shift, and go to state 32 - "variable name (T_STRING_VARNAME)" shift, and go to state 33 - "variable (T_VARIABLE)" shift, and go to state 34 - T_INLINE_HTML shift, and go to state 35 - "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 36 - "echo (T_ECHO)" shift, and go to state 37 - "do (T_DO)" shift, and go to state 38 - "while (T_WHILE)" shift, and go to state 39 - "for (T_FOR)" shift, and go to state 40 - "foreach (T_FOREACH)" shift, and go to state 41 - "declare (T_DECLARE)" shift, and go to state 42 - "switch (T_SWITCH)" shift, and go to state 43 - "break (T_BREAK)" shift, and go to state 44 - "continue (T_CONTINUE)" shift, and go to state 45 - "goto (T_GOTO)" shift, and go to state 46 - "function (T_FUNCTION)" shift, and go to state 47 - "return (T_RETURN)" shift, and go to state 49 - "try (T_TRY)" shift, and go to state 50 - "throw (T_THROW)" shift, and go to state 51 - "global (T_GLOBAL)" shift, and go to state 53 - "static (T_STATIC)" shift, and go to state 56 - "unset (T_UNSET)" shift, and go to state 57 - "isset (T_ISSET)" shift, and go to state 58 - "empty (T_EMPTY)" shift, and go to state 59 - "list (T_LIST)" shift, and go to state 64 - "array (T_ARRAY)" shift, and go to state 65 - "__CLASS__ (T_CLASS_C)" shift, and go to state 66 - "__TRAIT__ (T_TRAIT_C)" shift, and go to state 67 - "__METHOD__ (T_METHOD_C)" shift, and go to state 68 - "__FUNCTION__ (T_FUNC_C)" shift, and go to state 69 - "__LINE__ (T_LINE)" shift, and go to state 70 - "__FILE__ (T_FILE)" shift, and go to state 71 - "heredoc start (T_START_HEREDOC)" shift, and go to state 72 - "namespace (T_NAMESPACE)" shift, and go to state 118 - "__NAMESPACE__ (T_NS_C)" shift, and go to state 74 - "__DIR__ (T_DIR)" shift, and go to state 75 - "\\ (T_NS_SEPARATOR)" shift, and go to state 76 - '(' shift, and go to state 77 - ';' shift, and go to state 78 - '{' shift, and go to state 79 - '$' shift, and go to state 80 - '`' shift, and go to state 81 - '"' shift, and go to state 82 - - namespace_name go to state 83 - statement go to state 953 - unticked_statement go to state 87 - new_expr go to state 94 - expr_without_variable go to state 95 - function go to state 119 - function_call go to state 97 - class_name go to state 98 - common_scalar go to state 99 - scalar go to state 100 - expr go to state 101 - r_variable go to state 102 - rw_variable go to state 103 - variable go to state 104 - variable_without_objects go to state 105 - static_member go to state 106 - variable_class_name go to state 107 - array_function_dereference go to state 108 - base_variable_with_function_calls go to state 109 - base_variable go to state 110 - reference_variable go to state 111 - compound_variable go to state 112 - simple_indirect_reference go to state 113 - internal_functions_in_yacc go to state 114 - class_constant go to state 115 + '(' shift, and go to state 962 state 945 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 122 for_statement: ':' inner_statement_list . "endfor (T_ENDFOR)" ';' - - "endfor (T_ENDFOR)" shift, and go to state 954 - - $default reduce using rule 26 (@4) + 240 class_constant_declaration: class_constant_declaration ',' "identifier (T_STRING)" '=' static_scalar . - @4 go to state 366 + $default reduce using rule 240 (class_constant_declaration) state 946 - 124 foreach_statement: ':' inner_statement_list "endforeach (T_ENDFOREACH)" ';' . + 360 lexical_var_list: lexical_var_list ',' '&' . "variable (T_VARIABLE)" - $default reduce using rule 124 (foreach_statement) + "variable (T_VARIABLE)" shift, and go to state 963 state 947 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 . '{' inner_statement_list '}' @26 additional_catches + 359 lexical_var_list: lexical_var_list ',' "variable (T_VARIABLE)" . - '{' shift, and go to state 955 + $default reduce using rule 359 (lexical_var_list) state 948 - 208 trait_alias: trait_method_reference "as (T_AS)" trait_modifiers "identifier (T_STRING)" . + 169 non_empty_parameter_list: non_empty_parameter_list ',' optional_class_type '&' "variable (T_VARIABLE)" '=' static_scalar . - $default reduce using rule 208 (trait_alias) + $default reduce using rule 169 (non_empty_parameter_list) state 949 - 204 trait_reference_list: trait_reference_list ',' . fully_qualified_class_name + 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 . - "identifier (T_STRING)" shift, and go to state 116 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 + "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) - namespace_name go to state 516 - fully_qualified_class_name go to state 956 + $@4 go to state 389 state 950 - 227 class_variable_declaration: class_variable_declaration ',' "variable (T_VARIABLE)" '=' static_scalar . + 131 for_statement: ':' . inner_statement_list "endfor (T_ENDFOR)" ';' - $default reduce using rule 227 (class_variable_declaration) + $default reduce using rule 28 (inner_statement_list) + + inner_statement_list go to state 964 state 951 - 190 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @37 '(' parameter_list . ')' method_body + 130 for_statement: statement . - ')' shift, and go to state 957 + $default reduce using rule 130 (for_statement) state 952 - 147 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" '(' expr ')' ':' . @35 inner_statement_list - - $default reduce using rule 146 (@35) + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement . - @35 go to state 958 + $default reduce using rule 51 (unticked_statement) state 953 - 144 elseif_list: elseif_list "elseif (T_ELSEIF)" '(' expr ')' @34 statement . + 133 foreach_statement: ':' inner_statement_list "endforeach (T_ENDFOREACH)" . ';' - $default reduce using rule 144 (elseif_list) + ';' shift, and go to state 965 state 954 - 122 for_statement: ':' inner_statement_list "endfor (T_ENDFOR)" . ';' + 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 959 + $default reduce using rule 85 ($@26) + $@26 go to state 966 -state 955 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' . inner_statement_list '}' @26 additional_catches +state 955 - $default reduce using rule 28 (inner_statement_list) + 90 finally_statement: "finally (T_FINALLY)" $@28 '{' inner_statement_list '}' . - inner_statement_list go to state 960 + $default reduce using rule 90 (finally_statement) state 956 - 204 trait_reference_list: trait_reference_list ',' fully_qualified_class_name . + 218 trait_alias: trait_method_reference "as (T_AS)" trait_modifiers . "identifier (T_STRING)" - $default reduce using rule 204 (trait_reference_list) + "identifier (T_STRING)" shift, and go to state 967 state 957 - 190 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @37 '(' parameter_list ')' . method_body + 219 trait_alias: trait_method_reference "as (T_AS)" member_modifier . + 221 trait_modifiers: member_modifier . - ';' shift, and go to state 961 - '{' shift, and go to state 962 - - method_body go to state 963 + "identifier (T_STRING)" reduce using rule 221 (trait_modifiers) + $default reduce using rule 219 (trait_alias) state 958 - 147 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" '(' expr ')' ':' @35 . inner_statement_list + 212 trait_precedence: trait_method_reference_fully_qualified "insteadof (T_INSTEADOF)" trait_reference_list . + 214 trait_reference_list: trait_reference_list . ',' fully_qualified_class_name - $default reduce using rule 28 (inner_statement_list) + ',' shift, and go to state 968 - inner_statement_list go to state 964 + $default reduce using rule 212 (trait_precedence) state 959 - 122 for_statement: ':' inner_statement_list "endfor (T_ENDFOR)" ';' . + 213 trait_reference_list: fully_qualified_class_name . - $default reduce using rule 122 (for_statement) + $default reduce using rule 213 (trait_reference_list) state 960 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list . '}' @26 additional_catches - - '}' shift, and go to state 965 - - $default reduce using rule 26 (@4) + 217 trait_method_reference_fully_qualified: fully_qualified_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" . - @4 go to state 366 + $default reduce using rule 217 (trait_method_reference_fully_qualified) state 961 - 212 method_body: ';' . - - $default reduce using rule 212 (method_body) + 237 class_variable_declaration: class_variable_declaration ',' "variable (T_VARIABLE)" '=' . static_scalar + + '+' shift, and go to state 489 + '-' shift, and go to state 490 + '[' shift, and go to state 491 + "integer number (T_LNUMBER)" shift, and go to state 31 + "floating-point number (T_DNUMBER)" shift, and go to state 32 + "identifier (T_STRING)" shift, and go to state 122 + "quoted-string (T_CONSTANT_ENCAPSED_STRING)" shift, and go to state 492 + "static (T_STATIC)" shift, and go to state 147 + "array (T_ARRAY)" shift, and go to state 493 + "__CLASS__ (T_CLASS_C)" shift, and go to state 494 + "__TRAIT__ (T_TRAIT_C)" shift, and go to state 68 + "__METHOD__ (T_METHOD_C)" shift, and go to state 69 + "__FUNCTION__ (T_FUNC_C)" shift, and go to state 70 + "__LINE__ (T_LINE)" shift, and go to state 71 + "__FILE__ (T_FILE)" shift, and go to state 72 + "heredoc start (T_START_HEREDOC)" shift, and go to state 495 + "namespace (T_NAMESPACE)" shift, and go to state 496 + "__NAMESPACE__ (T_NS_C)" shift, and go to state 75 + "__DIR__ (T_DIR)" shift, and go to state 76 + "\\ (T_NS_SEPARATOR)" shift, and go to state 497 + + namespace_name go to state 498 + class_name go to state 499 + common_scalar go to state 500 + static_scalar go to state 969 + static_class_constant go to state 502 state 962 - 213 method_body: '{' . inner_statement_list '}' + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' . parameter_list ')' method_body - $default reduce using rule 28 (inner_statement_list) + "identifier (T_STRING)" shift, and go to state 122 + "array (T_ARRAY)" shift, and go to state 646 + "callable (T_CALLABLE)" shift, and go to state 647 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 - inner_statement_list go to state 966 + ')' reduce using rule 162 (parameter_list) + $default reduce using rule 171 (optional_class_type) + + namespace_name go to state 549 + parameter_list go to state 970 + non_empty_parameter_list go to state 649 + optional_class_type go to state 650 + fully_qualified_class_name go to state 651 state 963 - 190 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @37 '(' parameter_list ')' method_body . + 360 lexical_var_list: lexical_var_list ',' '&' "variable (T_VARIABLE)" . - $default reduce using rule 190 (class_statement) + $default reduce using rule 360 (lexical_var_list) state 964 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 147 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" '(' expr ')' ':' @35 inner_statement_list . + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 131 for_statement: ':' inner_statement_list . "endfor (T_ENDFOR)" ';' - "elseif (T_ELSEIF)" reduce using rule 147 (new_elseif_list) - "else (T_ELSE)" reduce using rule 147 (new_elseif_list) - "endif (T_ENDIF)" reduce using rule 147 (new_elseif_list) - $default reduce using rule 26 (@4) + "endfor (T_ENDFOR)" shift, and go to state 971 - @4 go to state 366 + $default reduce using rule 26 ($@4) + $@4 go to state 389 -state 965 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' . @26 additional_catches +state 965 - $default reduce using rule 80 (@26) + 133 foreach_statement: ':' inner_statement_list "endforeach (T_ENDFOREACH)" ';' . - @26 go to state 967 + $default reduce using rule 133 (foreach_statement) state 966 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 213 method_body: '{' inner_statement_list . '}' - - '}' shift, and go to state 968 + 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 26 (@4) - - @4 go to state 366 + '{' shift, and go to state 972 state 967 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 . additional_catches - - "catch (T_CATCH)" shift, and go to state 969 + 218 trait_alias: trait_method_reference "as (T_AS)" trait_modifiers "identifier (T_STRING)" . - $default reduce using rule 85 (additional_catches) - - additional_catches go to state 970 - non_empty_additional_catches go to state 971 - additional_catch go to state 972 + $default reduce using rule 218 (trait_alias) state 968 - 213 method_body: '{' inner_statement_list '}' . + 214 trait_reference_list: trait_reference_list ',' . fully_qualified_class_name + + "identifier (T_STRING)" shift, and go to state 122 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 - $default reduce using rule 213 (method_body) + namespace_name go to state 549 + fully_qualified_class_name go to state 973 state 969 - 90 additional_catch: "catch (T_CATCH)" . '(' fully_qualified_class_name @27 "variable (T_VARIABLE)" ')' @28 '{' inner_statement_list '}' + 237 class_variable_declaration: class_variable_declaration ',' "variable (T_VARIABLE)" '=' static_scalar . - '(' shift, and go to state 973 + $default reduce using rule 237 (class_variable_declaration) state 970 - 81 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' "catch (T_CATCH)" '(' @23 fully_qualified_class_name @24 "variable (T_VARIABLE)" ')' @25 '{' inner_statement_list '}' @26 additional_catches . + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list . ')' method_body - $default reduce using rule 81 (unticked_statement) + ')' shift, and go to state 974 state 971 - 84 additional_catches: non_empty_additional_catches . - 87 non_empty_additional_catches: non_empty_additional_catches . additional_catch - - "catch (T_CATCH)" shift, and go to state 969 + 131 for_statement: ':' inner_statement_list "endfor (T_ENDFOR)" . ';' - $default reduce using rule 84 (additional_catches) - - additional_catch go to state 974 + ';' shift, and go to state 975 state 972 - 86 non_empty_additional_catches: additional_catch . + 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) - $default reduce using rule 86 (non_empty_additional_catches) + inner_statement_list go to state 976 state 973 - 90 additional_catch: "catch (T_CATCH)" '(' . fully_qualified_class_name @27 "variable (T_VARIABLE)" ')' @28 '{' inner_statement_list '}' - - "identifier (T_STRING)" shift, and go to state 116 - "namespace (T_NAMESPACE)" shift, and go to state 514 - "\\ (T_NS_SEPARATOR)" shift, and go to state 515 + 214 trait_reference_list: trait_reference_list ',' fully_qualified_class_name . - namespace_name go to state 516 - fully_qualified_class_name go to state 975 + $default reduce using rule 214 (trait_reference_list) state 974 - 87 non_empty_additional_catches: non_empty_additional_catches additional_catch . + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' . method_body - $default reduce using rule 87 (non_empty_additional_catches) + ';' shift, and go to state 977 + '{' shift, and go to state 978 + method_body go to state 979 -state 975 - 90 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name . @27 "variable (T_VARIABLE)" ')' @28 '{' inner_statement_list '}' +state 975 - $default reduce using rule 88 (@27) + 131 for_statement: ':' inner_statement_list "endfor (T_ENDFOR)" ';' . - @27 go to state 976 + $default reduce using rule 131 (for_statement) state 976 - 90 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @27 . "variable (T_VARIABLE)" ')' @28 '{' inner_statement_list '}' + 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 980 + + $default reduce using rule 26 ($@4) - "variable (T_VARIABLE)" shift, and go to state 977 + $@4 go to state 389 state 977 - 90 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @27 "variable (T_VARIABLE)" . ')' @28 '{' inner_statement_list '}' + 222 method_body: ';' . - ')' shift, and go to state 978 + $default reduce using rule 222 (method_body) state 978 - 90 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @27 "variable (T_VARIABLE)" ')' . @28 '{' inner_statement_list '}' + 223 method_body: '{' . inner_statement_list '}' - $default reduce using rule 89 (@28) + $default reduce using rule 28 (inner_statement_list) - @28 go to state 979 + inner_statement_list go to state 981 state 979 - 90 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @27 "variable (T_VARIABLE)" ')' @28 . '{' inner_statement_list '}' + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body . - '{' shift, and go to state 980 + $default reduce using rule 200 (class_statement) state 980 - 90 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @27 "variable (T_VARIABLE)" ')' @28 '{' . inner_statement_list '}' + 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) + $default reduce using rule 86 ($@27) - inner_statement_list go to state 981 + $@27 go to state 982 state 981 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 90 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @27 "variable (T_VARIABLE)" ')' @28 '{' inner_statement_list . '}' + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 223 method_body: '{' inner_statement_list . '}' - '}' shift, and go to state 982 + '}' shift, and go to state 983 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 366 + $@4 go to state 389 state 982 - 90 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @27 "variable (T_VARIABLE)" ')' @28 '{' inner_statement_list '}' . + 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 984 + + $default reduce using rule 92 (additional_catches) + + additional_catches go to state 985 + non_empty_additional_catches go to state 986 + additional_catch go to state 987 + + +state 983 + + 223 method_body: '{' inner_statement_list '}' . + + $default reduce using rule 223 (method_body) + + +state 984 + + 97 additional_catch: "catch (T_CATCH)" . '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}' + + '(' shift, and go to state 988 + + +state 985 + + 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) + + +state 986 + + 91 additional_catches: non_empty_additional_catches . + 94 non_empty_additional_catches: non_empty_additional_catches . additional_catch + + "catch (T_CATCH)" shift, and go to state 984 + + $default reduce using rule 91 (additional_catches) + + additional_catch go to state 989 + + +state 987 + + 93 non_empty_additional_catches: additional_catch . + + $default reduce using rule 93 (non_empty_additional_catches) + + +state 988 + + 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 122 + "namespace (T_NAMESPACE)" shift, and go to state 547 + "\\ (T_NS_SEPARATOR)" shift, and go to state 548 + + namespace_name go to state 549 + fully_qualified_class_name go to state 990 + + +state 989 + + 94 non_empty_additional_catches: non_empty_additional_catches additional_catch . + + $default reduce using rule 94 (non_empty_additional_catches) + + +state 990 + + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name . @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}' + + $default reduce using rule 95 (@29) + + @29 go to state 991 + + +state 991 + + 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 992 + + +state 992 + + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" . ')' $@30 '{' inner_statement_list '}' + + ')' shift, and go to state 993 + + +state 993 + + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' . $@30 '{' inner_statement_list '}' + + $default reduce using rule 96 ($@30) + + $@30 go to state 994 + + +state 994 + + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 . '{' inner_statement_list '}' + + '{' shift, and go to state 995 + + +state 995 + + 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) + + inner_statement_list go to state 996 + + +state 996 + + 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 997 + + $default reduce using rule 26 ($@4) + + $@4 go to state 389 + + +state 997 + + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}' . - $default reduce using rule 90 (additional_catch) + $default reduce using rule 97 (additional_catch) diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 9a0b3209e..c1514c5d7 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -68,6 +68,8 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %token T_LOGICAL_AND "and (T_LOGICAL_AND)" %right T_PRINT %token T_PRINT "print (T_PRINT)" +%right T_YIELD +%token T_YIELD "yield (T_YIELD)" %left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL %token T_PLUS_EQUAL "+= (T_PLUS_EQUAL)" %token T_MINUS_EQUAL "-= (T_MINUS_EQUAL)" @@ -160,6 +162,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %token T_RETURN "return (T_RETURN)" %token T_TRY "try (T_TRY)" %token T_CATCH "catch (T_CATCH)" +%token T_FINALLY "finally (T_FINALLY)" %token T_THROW "throw (T_THROW)" %token T_USE "use (T_USE)" %token T_INSTEADOF "insteadof (T_INSTEADOF)" @@ -276,10 +279,10 @@ statement: unticked_statement: '{' inner_statement_list '}' - | T_IF '(' expr ')' { zend_do_if_cond(&$3, &$4 TSRMLS_CC); } statement { zend_do_if_after_statement(&$4, 1 TSRMLS_CC); } elseif_list else_single { zend_do_if_end(TSRMLS_C); } - | T_IF '(' expr ')' ':' { zend_do_if_cond(&$3, &$4 TSRMLS_CC); } inner_statement_list { zend_do_if_after_statement(&$4, 1 TSRMLS_CC); } new_elseif_list new_else_single T_ENDIF ';' { zend_do_if_end(TSRMLS_C); } - | T_WHILE '(' { $1.u.op.opline_num = get_next_op_number(CG(active_op_array)); } expr ')' { zend_do_while_cond(&$4, &$5 TSRMLS_CC); } while_statement { zend_do_while_end(&$1, &$5 TSRMLS_CC); } - | T_DO { $1.u.op.opline_num = get_next_op_number(CG(active_op_array)); zend_do_do_while_begin(TSRMLS_C); } statement T_WHILE '(' { $5.u.op.opline_num = get_next_op_number(CG(active_op_array)); } expr ')' ';' { zend_do_do_while_end(&$1, &$5, &$7 TSRMLS_CC); } + | T_IF parenthesis_expr { zend_do_if_cond(&$2, &$1 TSRMLS_CC); } statement { zend_do_if_after_statement(&$1, 1 TSRMLS_CC); } elseif_list else_single { zend_do_if_end(TSRMLS_C); } + | T_IF parenthesis_expr ':' { zend_do_if_cond(&$2, &$1 TSRMLS_CC); } inner_statement_list { zend_do_if_after_statement(&$1, 1 TSRMLS_CC); } new_elseif_list new_else_single T_ENDIF ';' { zend_do_if_end(TSRMLS_C); } + | T_WHILE { $1.u.op.opline_num = get_next_op_number(CG(active_op_array)); } parenthesis_expr { zend_do_while_cond(&$3, &$$ TSRMLS_CC); } while_statement { zend_do_while_end(&$1, &$4 TSRMLS_CC); } + | T_DO { $1.u.op.opline_num = get_next_op_number(CG(active_op_array)); zend_do_do_while_begin(TSRMLS_C); } statement T_WHILE { $4.u.op.opline_num = get_next_op_number(CG(active_op_array)); } parenthesis_expr ';' { zend_do_do_while_end(&$1, &$4, &$6 TSRMLS_CC); } | T_FOR '(' for_expr @@ -289,7 +292,7 @@ unticked_statement: for_expr ')' { zend_do_free(&$9 TSRMLS_CC); zend_do_for_before_statement(&$4, &$7 TSRMLS_CC); } for_statement { zend_do_for_end(&$7 TSRMLS_CC); } - | T_SWITCH '(' expr ')' { zend_do_switch_cond(&$3 TSRMLS_CC); } switch_case_list { zend_do_switch_end(&$6 TSRMLS_CC); } + | T_SWITCH parenthesis_expr { zend_do_switch_cond(&$2 TSRMLS_CC); } switch_case_list { zend_do_switch_end(&$4 TSRMLS_CC); } | T_BREAK ';' { zend_do_brk_cont(ZEND_BRK, NULL TSRMLS_CC); } | T_BREAK expr ';' { zend_do_brk_cont(ZEND_BRK, &$2 TSRMLS_CC); } | T_CONTINUE ';' { zend_do_brk_cont(ZEND_CONT, NULL TSRMLS_CC); } @@ -297,6 +300,7 @@ unticked_statement: | T_RETURN ';' { zend_do_return(NULL, 0 TSRMLS_CC); } | T_RETURN expr_without_variable ';' { zend_do_return(&$2, 0 TSRMLS_CC); } | T_RETURN variable ';' { zend_do_return(&$2, 1 TSRMLS_CC); } + | yield_expr ';' { $$ = $1; } | T_GLOBAL global_var_list ';' | T_STATIC static_var_list ';' | T_ECHO echo_expr_list ';' @@ -309,20 +313,29 @@ unticked_statement: foreach_statement { zend_do_foreach_end(&$1, &$4 TSRMLS_CC); } | T_FOREACH '(' expr_without_variable T_AS { zend_do_foreach_begin(&$1, &$2, &$3, &$4, 0 TSRMLS_CC); } - variable foreach_optional_arg ')' { zend_check_writable_variable(&$6); zend_do_foreach_cont(&$1, &$2, &$4, &$6, &$7 TSRMLS_CC); } + foreach_variable foreach_optional_arg ')' { zend_do_foreach_cont(&$1, &$2, &$4, &$6, &$7 TSRMLS_CC); } foreach_statement { zend_do_foreach_end(&$1, &$4 TSRMLS_CC); } | T_DECLARE { $1.u.op.opline_num = get_next_op_number(CG(active_op_array)); zend_do_declare_begin(TSRMLS_C); } '(' declare_list ')' declare_statement { zend_do_declare_end(&$1 TSRMLS_CC); } | ';' /* empty statement */ | T_TRY { zend_do_try(&$1 TSRMLS_CC); } '{' inner_statement_list '}' - T_CATCH '(' { zend_initialize_try_catch_element(&$1 TSRMLS_CC); } - fully_qualified_class_name { zend_do_first_catch(&$7 TSRMLS_CC); } - T_VARIABLE ')' { zend_do_begin_catch(&$1, &$9, &$11, &$7 TSRMLS_CC); } - '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); } - additional_catches { zend_do_mark_last_catch(&$7, &$18 TSRMLS_CC); } + catch_statement { zend_do_bind_catch(&$1, &$6 TSRMLS_CC); } + finally_statement { zend_do_end_finally(&$1, &$6, &$8 TSRMLS_CC); } | T_THROW expr ';' { zend_do_throw(&$2 TSRMLS_CC); } | T_GOTO T_STRING ';' { zend_do_goto(&$2 TSRMLS_CC); } ; +catch_statement: + /* empty */ { $$.op_type = IS_UNUSED; } + | T_CATCH '(' { zend_initialize_try_catch_element(&$1 TSRMLS_CC); } + fully_qualified_class_name { zend_do_first_catch(&$2 TSRMLS_CC); } + T_VARIABLE ')' { zend_do_begin_catch(&$1, &$4, &$6, &$2 TSRMLS_CC); } + '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); } + additional_catches { zend_do_mark_last_catch(&$2, &$13 TSRMLS_CC); $$ = $1;} + +finally_statement: + /* empty */ { $$.op_type = IS_UNUSED; } + | T_FINALLY { zend_do_finally(&$1 TSRMLS_CC); } '{' inner_statement_list '}' { $$ = $1; } +; additional_catches: non_empty_additional_catches { $$ = $1; } @@ -334,12 +347,10 @@ non_empty_additional_catches: | non_empty_additional_catches additional_catch { $$ = $2; } ; - additional_catch: T_CATCH '(' fully_qualified_class_name { $$.u.op.opline_num = get_next_op_number(CG(active_op_array)); } T_VARIABLE ')' { zend_do_begin_catch(&$1, &$3, &$5, NULL TSRMLS_CC); } '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); } ; - unset_variables: unset_variable | unset_variables ',' unset_variable @@ -357,7 +368,6 @@ class_declaration_statement: unticked_class_declaration_statement { DO_TICKS(); } ; - is_reference: /* empty */ { $$.op_type = ZEND_RETURN_VAL; } | '&' { $$.op_type = ZEND_RETURN_REF; } @@ -366,7 +376,8 @@ is_reference: unticked_function_declaration_statement: function is_reference T_STRING { zend_do_begin_function_declaration(&$1, &$3, 0, $2.op_type, NULL TSRMLS_CC); } - '(' parameter_list ')' '{' inner_statement_list '}' { zend_do_end_function_declaration(&$1 TSRMLS_CC); } + '(' parameter_list ')' + '{' inner_statement_list '}' { zend_do_end_function_declaration(&$1 TSRMLS_CC); } ; unticked_class_declaration_statement: @@ -421,10 +432,10 @@ foreach_optional_arg: | T_DOUBLE_ARROW foreach_variable { $$ = $2; } ; - foreach_variable: variable { zend_check_writable_variable(&$1); $$ = $1; } | '&' variable { zend_check_writable_variable(&$2); $$ = $2; $$.EA |= ZEND_PARSED_REFERENCE_VARIABLE; } + | T_LIST '(' { zend_do_list_init(TSRMLS_C); } assignment_list ')' { $$ = $1; $$.EA = ZEND_PARSED_LIST_EXPR; } ; for_statement: @@ -481,13 +492,13 @@ while_statement: elseif_list: /* empty */ - | elseif_list T_ELSEIF '(' expr ')' { zend_do_if_cond(&$4, &$5 TSRMLS_CC); } statement { zend_do_if_after_statement(&$5, 0 TSRMLS_CC); } + | elseif_list T_ELSEIF parenthesis_expr { zend_do_if_cond(&$3, &$2 TSRMLS_CC); } statement { zend_do_if_after_statement(&$2, 0 TSRMLS_CC); } ; new_elseif_list: /* empty */ - | new_elseif_list T_ELSEIF '(' expr ')' ':' { zend_do_if_cond(&$4, &$5 TSRMLS_CC); } inner_statement_list { zend_do_if_after_statement(&$5, 0 TSRMLS_CC); } + | new_elseif_list T_ELSEIF parenthesis_expr ':' { zend_do_if_cond(&$3, &$2 TSRMLS_CC); } inner_statement_list { zend_do_if_after_statement(&$2, 0 TSRMLS_CC); } ; @@ -530,8 +541,9 @@ optional_class_type: function_call_parameter_list: - non_empty_function_call_parameter_list { $$ = $1; } - | /* empty */ { Z_LVAL($$.u.constant) = 0; } + '(' ')' { Z_LVAL($$.u.constant) = 0; } + | '(' non_empty_function_call_parameter_list ')' { $$ = $2; } + | '(' yield_expr ')' { Z_LVAL($$.u.constant) = 1; zend_do_pass_param(&$2, ZEND_SEND_VAL, Z_LVAL($$.u.constant) TSRMLS_CC); } ; @@ -576,8 +588,9 @@ class_statement: variable_modifiers { CG(access_type) = Z_LVAL($1.u.constant); } class_variable_declaration ';' | class_constant_declaration ';' | trait_use_statement - | method_modifiers function is_reference T_STRING { zend_do_begin_function_declaration(&$2, &$4, 1, $3.op_type, &$1 TSRMLS_CC); } '(' - parameter_list ')' method_body { zend_do_abstract_method(&$4, &$1, &$9 TSRMLS_CC); zend_do_end_function_declaration(&$2 TSRMLS_CC); } + | method_modifiers function is_reference T_STRING { zend_do_begin_function_declaration(&$2, &$4, 1, $3.op_type, &$1 TSRMLS_CC); } + '(' parameter_list ')' + method_body { zend_do_abstract_method(&$4, &$1, &$9 TSRMLS_CC); zend_do_end_function_declaration(&$2 TSRMLS_CC); } ; trait_use_statement: @@ -770,7 +783,7 @@ expr_without_variable: | expr '>' expr { zend_do_binary_op(ZEND_IS_SMALLER, &$$, &$3, &$1 TSRMLS_CC); } | expr T_IS_GREATER_OR_EQUAL expr { zend_do_binary_op(ZEND_IS_SMALLER_OR_EQUAL, &$$, &$3, &$1 TSRMLS_CC); } | expr T_INSTANCEOF class_name_reference { zend_do_instanceof(&$$, &$1, &$3, 0 TSRMLS_CC); } - | '(' expr ')' { $$ = $2; } + | parenthesis_expr { $$ = $1; } | new_expr { $$ = $1; } | '(' new_expr ')' { $$ = $2; } instance_call { $$ = $5; } | expr '?' { zend_do_begin_qm_op(&$1, &$2 TSRMLS_CC); } @@ -789,16 +802,35 @@ expr_without_variable: | T_EXIT exit_expr { zend_do_exit(&$$, &$2 TSRMLS_CC); } | '@' { zend_do_begin_silence(&$1 TSRMLS_CC); } expr { zend_do_end_silence(&$1 TSRMLS_CC); $$ = $3; } | scalar { $$ = $1; } - | T_ARRAY '(' array_pair_list ')' { $$ = $3; } - | '[' array_pair_list ']' { $$ = $2; } + | combined_scalar_offset { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); } + | combined_scalar { $$ = $1; } | '`' backticks_expr '`' { zend_do_shell_exec(&$$, &$2 TSRMLS_CC); } | T_PRINT expr { zend_do_print(&$$, &$2 TSRMLS_CC); } - | function is_reference '(' { zend_do_begin_lambda_function_declaration(&$$, &$1, $2.op_type, 0 TSRMLS_CC); } - parameter_list ')' lexical_vars '{' inner_statement_list '}' { zend_do_end_function_declaration(&$1 TSRMLS_CC); $$ = $4; } - | T_STATIC function is_reference '(' { zend_do_begin_lambda_function_declaration(&$$, &$2, $3.op_type, 1 TSRMLS_CC); } - parameter_list ')' lexical_vars '{' inner_statement_list '}' { zend_do_end_function_declaration(&$2 TSRMLS_CC); $$ = $5; } + | T_YIELD { zend_do_yield(&$$, NULL, NULL, 0 TSRMLS_CC); } + | function is_reference { zend_do_begin_lambda_function_declaration(&$$, &$1, $2.op_type, 0 TSRMLS_CC); } + '(' parameter_list ')' lexical_vars + '{' inner_statement_list '}' { zend_do_end_function_declaration(&$1 TSRMLS_CC); $$ = $3; } + | T_STATIC function is_reference { zend_do_begin_lambda_function_declaration(&$$, &$2, $3.op_type, 1 TSRMLS_CC); } + '(' parameter_list ')' lexical_vars + '{' inner_statement_list '}' { zend_do_end_function_declaration(&$2 TSRMLS_CC); $$ = $4; } ; +yield_expr: + T_YIELD expr_without_variable { zend_do_yield(&$$, &$2, NULL, 0 TSRMLS_CC); } + | T_YIELD variable { zend_do_yield(&$$, &$2, NULL, 1 TSRMLS_CC); } + | T_YIELD expr T_DOUBLE_ARROW expr_without_variable { zend_do_yield(&$$, &$4, &$2, 0 TSRMLS_CC); } + | T_YIELD expr T_DOUBLE_ARROW variable { zend_do_yield(&$$, &$4, &$2, 1 TSRMLS_CC); } +; + +combined_scalar_offset: + combined_scalar '[' dim_offset ']' { zend_do_begin_variable_parse(TSRMLS_C); fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); } + | combined_scalar_offset '[' dim_offset ']' { fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); } + | T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']' { $1.EA = 0; zend_do_begin_variable_parse(TSRMLS_C); fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); } + +combined_scalar: + T_ARRAY '(' array_pair_list ')' { $$ = $3; } + | '[' array_pair_list ']' { $$ = $2; } + function: T_FUNCTION { $$.u.op.opline_num = CG(zend_lineno); } ; @@ -816,30 +848,22 @@ lexical_var_list: ; function_call: - namespace_name '(' { $2.u.op.opline_num = zend_do_begin_function_call(&$1, 1 TSRMLS_CC); } - function_call_parameter_list - ')' { zend_do_end_function_call(&$1, &$$, &$4, 0, $2.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } - | T_NAMESPACE T_NS_SEPARATOR namespace_name '(' { $1.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$1.u.constant); zend_do_build_namespace_name(&$1, &$1, &$3 TSRMLS_CC); $4.u.op.opline_num = zend_do_begin_function_call(&$1, 0 TSRMLS_CC); } - function_call_parameter_list - ')' { zend_do_end_function_call(&$1, &$$, &$6, 0, $4.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } - | T_NS_SEPARATOR namespace_name '(' { $3.u.op.opline_num = zend_do_begin_function_call(&$2, 0 TSRMLS_CC); } - function_call_parameter_list - ')' { zend_do_end_function_call(&$2, &$$, &$5, 0, $3.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } - | class_name T_PAAMAYIM_NEKUDOTAYIM variable_name '(' { $4.u.op.opline_num = zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } - function_call_parameter_list - ')' { zend_do_end_function_call($4.u.op.opline_num?NULL:&$3, &$$, &$6, $4.u.op.opline_num, $4.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} - | class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } - function_call_parameter_list - ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} - | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name '(' { zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } - function_call_parameter_list - ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} - | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } - function_call_parameter_list - ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} - | variable_without_objects '(' { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_dynamic_function_call(&$1, 0 TSRMLS_CC); } - function_call_parameter_list ')' - { zend_do_end_function_call(&$1, &$$, &$4, 0, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + namespace_name { $$.u.op.opline_num = zend_do_begin_function_call(&$1, 1 TSRMLS_CC); } + function_call_parameter_list { zend_do_end_function_call(&$1, &$$, &$3, 0, $2.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + | T_NAMESPACE T_NS_SEPARATOR namespace_name { $1.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$1.u.constant); zend_do_build_namespace_name(&$1, &$1, &$3 TSRMLS_CC); $$.u.op.opline_num = zend_do_begin_function_call(&$1, 0 TSRMLS_CC); } + function_call_parameter_list { zend_do_end_function_call(&$1, &$$, &$5, 0, $4.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + | T_NS_SEPARATOR namespace_name { $$.u.op.opline_num = zend_do_begin_function_call(&$2, 0 TSRMLS_CC); } + function_call_parameter_list { zend_do_end_function_call(&$2, &$$, &$4, 0, $3.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + | class_name T_PAAMAYIM_NEKUDOTAYIM variable_name { $$.u.op.opline_num = zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } + function_call_parameter_list { zend_do_end_function_call($4.u.op.opline_num?NULL:&$3, &$$, &$5, $4.u.op.opline_num, $4.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + | class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } + function_call_parameter_list { zend_do_end_function_call(NULL, &$$, &$5, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name { zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } + function_call_parameter_list { zend_do_end_function_call(NULL, &$$, &$5, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } + function_call_parameter_list { zend_do_end_function_call(NULL, &$$, &$5, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + | variable_without_objects { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_dynamic_function_call(&$1, 0 TSRMLS_CC); } + function_call_parameter_list { zend_do_end_function_call(&$1, &$$, &$3, 0, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} ; class_name: @@ -884,7 +908,7 @@ dynamic_class_name_variable_property: exit_expr: /* empty */ { memset(&$$, 0, sizeof(znode)); $$.op_type = IS_UNUSED; } | '(' ')' { memset(&$$, 0, sizeof(znode)); $$.op_type = IS_UNUSED; } - | '(' expr ')' { $$ = $2; } + | parenthesis_expr { $$ = $1; } ; backticks_expr: @@ -895,8 +919,8 @@ backticks_expr: ctor_arguments: - /* empty */ { Z_LVAL($$.u.constant)=0; } - | '(' function_call_parameter_list ')' { $$ = $2; } + /* empty */ { Z_LVAL($$.u.constant) = 0; } + | function_call_parameter_list { $$ = $1; } ; @@ -911,8 +935,8 @@ common_scalar: | T_METHOD_C { $$ = $1; } | T_FUNC_C { $$ = $1; } | T_NS_C { $$ = $1; } - | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { $$ = $2; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); } - | T_START_HEREDOC T_END_HEREDOC { ZVAL_EMPTY_STRING(&$$.u.constant); INIT_PZVAL(&$$.u.constant); $$.op_type = IS_CONST; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); } + | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { $$ = $2; } + | T_START_HEREDOC T_END_HEREDOC { ZVAL_EMPTY_STRING(&$$.u.constant); INIT_PZVAL(&$$.u.constant); $$.op_type = IS_CONST; } ; @@ -941,7 +965,7 @@ scalar: | T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_RT, 0 TSRMLS_CC); } | common_scalar { $$ = $1; } | '"' encaps_list '"' { $$ = $2; } - | T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = $2; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); } + | T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = $2; } | T_CLASS_C { if (Z_TYPE($1.u.constant) == IS_CONSTANT) {zend_do_fetch_constant(&$$, NULL, &$1, ZEND_RT, 1 TSRMLS_CC);} else {$$ = $1;} } ; @@ -968,6 +992,11 @@ expr: | expr_without_variable { $$ = $1; } ; +parenthesis_expr: + '(' expr ')' { $$ = $2; } + | '(' yield_expr ')' { $$ = $2; } +; + r_variable: variable { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); $$ = $1; } @@ -1007,9 +1036,8 @@ array_method_dereference: ; method: - '(' { zend_do_pop_object(&$1 TSRMLS_CC); zend_do_begin_method_call(&$1 TSRMLS_CC); } - function_call_parameter_list ')' - { zend_do_end_function_call(&$1, &$$, &$3, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + { zend_do_pop_object(&$$ TSRMLS_CC); zend_do_begin_method_call(&$$ TSRMLS_CC); } + function_call_parameter_list { zend_do_end_function_call(&$1, &$$, &$2, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } ; method_or_not: @@ -1149,6 +1177,7 @@ encaps_var_offset: internal_functions_in_yacc: T_ISSET '(' isset_variables ')' { $$ = $3; } | T_EMPTY '(' variable ')' { zend_do_isset_or_isempty(ZEND_ISEMPTY, &$$, &$3 TSRMLS_CC); } + | T_EMPTY '(' expr_without_variable ')' { zend_do_unary_op(ZEND_BOOL_NOT, &$$, &$3 TSRMLS_CC); } | T_INCLUDE expr { zend_do_include_or_eval(ZEND_INCLUDE, &$$, &$2 TSRMLS_CC); } | T_INCLUDE_ONCE expr { zend_do_include_or_eval(ZEND_INCLUDE_ONCE, &$$, &$2 TSRMLS_CC); } | T_EVAL '(' expr ')' { zend_do_include_or_eval(ZEND_EVAL, &$$, &$3 TSRMLS_CC); } @@ -1157,8 +1186,13 @@ internal_functions_in_yacc: ; isset_variables: - variable { zend_do_isset_or_isempty(ZEND_ISSET, &$$, &$1 TSRMLS_CC); } - | isset_variables ',' { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); } variable { znode tmp; zend_do_isset_or_isempty(ZEND_ISSET, &tmp, &$4 TSRMLS_CC); zend_do_boolean_and_end(&$$, &$1, &tmp, &$2 TSRMLS_CC); } + isset_variable { $$ = $1; } + | isset_variables ',' { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); } isset_variable { zend_do_boolean_and_end(&$$, &$1, &$4, &$2 TSRMLS_CC); } +; + +isset_variable: + variable { zend_do_isset_or_isempty(ZEND_ISSET, &$$, &$1 TSRMLS_CC); } + | expr_without_variable { zend_error(E_COMPILE_ERROR, "Cannot use isset() on the result of an expression (you can use \"null !== expression\" instead)"); } ; class_constant: diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index e3d3de283..07ccb5d75 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Mon Apr 30 15:55:05 2012 */ +/* Generated by re2c 0.13.5 on Mon Aug 20 13:34:50 2012 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -180,22 +180,23 @@ static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC) void startup_scanner(TSRMLS_D) { CG(parse_error) = 0; - CG(heredoc) = NULL; - CG(heredoc_len) = 0; CG(doc_comment) = NULL; CG(doc_comment_len) = 0; zend_stack_init(&SCNG(state_stack)); + zend_ptr_stack_init(&SCNG(heredoc_label_stack)); +} + +static void heredoc_label_dtor(zend_heredoc_label *heredoc_label) { + efree(heredoc_label->label); } void shutdown_scanner(TSRMLS_D) { - if (CG(heredoc)) { - efree(CG(heredoc)); - CG(heredoc_len)=0; - } CG(parse_error) = 0; - zend_stack_destroy(&SCNG(state_stack)); RESET_DOC_COMMENT(); + zend_stack_destroy(&SCNG(state_stack)); + zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1); + zend_ptr_stack_destroy(&SCNG(heredoc_label_stack)); } ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state TSRMLS_DC) @@ -210,6 +211,9 @@ ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state TSRMLS_DC) lex_state->state_stack = SCNG(state_stack); zend_stack_init(&SCNG(state_stack)); + lex_state->heredoc_label_stack = SCNG(heredoc_label_stack); + zend_ptr_stack_init(&SCNG(heredoc_label_stack)); + lex_state->in = SCNG(yy_in); lex_state->yy_state = YYSTATE; lex_state->filename = zend_get_compiled_filename(TSRMLS_C); @@ -236,6 +240,10 @@ ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC) zend_stack_destroy(&SCNG(state_stack)); SCNG(state_stack) = lex_state->state_stack; + zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1); + zend_ptr_stack_destroy(&SCNG(heredoc_label_stack)); + SCNG(heredoc_label_stack) = lex_state->heredoc_label_stack; + SCNG(yy_in) = lex_state->in; YYSETCONDITION(lex_state->yy_state); CG(zend_lineno) = lex_state->lineno; @@ -252,12 +260,6 @@ ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC) SCNG(input_filter) = lex_state->input_filter; SCNG(output_filter) = lex_state->output_filter; SCNG(script_encoding) = lex_state->script_encoding; - - if (CG(heredoc)) { - efree(CG(heredoc)); - CG(heredoc) = NULL; - CG(heredoc_len) = 0; - } } ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC) @@ -998,7 +1000,7 @@ restart: yymore_restart: -#line 1002 "Zend/zend_language_scanner.c" +#line 1004 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1097,7 +1099,7 @@ yyc_INITIAL: yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1790 "Zend/zend_language_scanner.l" +#line 1801 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1157,7 +1159,7 @@ inline_html: HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1161 "Zend/zend_language_scanner.c" +#line 1163 "Zend/zend_language_scanner.c" yy4: YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; @@ -1175,7 +1177,7 @@ yy5: yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1778 "Zend/zend_language_scanner.l" +#line 1789 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { zendlval->value.str.val = yytext; /* no copying - intentional */ @@ -1187,14 +1189,14 @@ yy6: goto inline_char_handler; } } -#line 1191 "Zend/zend_language_scanner.c" +#line 1193 "Zend/zend_language_scanner.c" yy7: YYDEBUG(7, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1755 "Zend/zend_language_scanner.l" +#line 1766 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { zendlval->value.str.val = yytext; /* no copying - intentional */ @@ -1206,7 +1208,7 @@ yy7: goto inline_char_handler; } } -#line 1210 "Zend/zend_language_scanner.c" +#line 1212 "Zend/zend_language_scanner.c" yy9: YYDEBUG(9, *YYCURSOR); yych = *++YYCURSOR; @@ -1392,7 +1394,7 @@ yy35: ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1715 "Zend/zend_language_scanner.l" +#line 1726 "Zend/zend_language_scanner.l" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1409,7 +1411,7 @@ yy35: BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1413 "Zend/zend_language_scanner.c" +#line 1415 "Zend/zend_language_scanner.c" yy39: YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; @@ -1436,7 +1438,7 @@ yy43: ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1733 "Zend/zend_language_scanner.l" +#line 1744 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { zendlval->value.str.val = yytext; /* no copying - intentional */ @@ -1448,13 +1450,13 @@ yy43: goto inline_char_handler; } } -#line 1452 "Zend/zend_language_scanner.c" +#line 1454 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1746 "Zend/zend_language_scanner.l" +#line 1757 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -1462,7 +1464,7 @@ yy45: BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG_WITH_ECHO; } -#line 1466 "Zend/zend_language_scanner.c" +#line 1468 "Zend/zend_language_scanner.c" yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; @@ -1489,7 +1491,7 @@ yy50: yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1768 "Zend/zend_language_scanner.l" +#line 1779 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -1498,7 +1500,7 @@ yy51: BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1502 "Zend/zend_language_scanner.c" +#line 1504 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; @@ -1569,7 +1571,7 @@ yyc_ST_BACKQUOTE: yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2241 "Zend/zend_language_scanner.l" +#line 2252 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1610,7 +1612,7 @@ yy56: zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1614 "Zend/zend_language_scanner.c" +#line 1616 "Zend/zend_language_scanner.c" yy57: YYDEBUG(57, *YYCURSOR); yych = *++YYCURSOR; @@ -1621,12 +1623,12 @@ yy58: ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2185 "Zend/zend_language_scanner.l" +#line 2196 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1630 "Zend/zend_language_scanner.c" +#line 1632 "Zend/zend_language_scanner.c" yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; @@ -1636,14 +1638,14 @@ yy61: ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2172 "Zend/zend_language_scanner.l" +#line 2183 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1647 "Zend/zend_language_scanner.c" +#line 1649 "Zend/zend_language_scanner.c" yy63: YYDEBUG(63, *YYCURSOR); yyaccept = 0; @@ -1659,24 +1661,24 @@ yy63: yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1872 "Zend/zend_language_scanner.l" +#line 1883 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1669 "Zend/zend_language_scanner.c" +#line 1671 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); ++YYCURSOR; YYDEBUG(67, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1449 "Zend/zend_language_scanner.l" +#line 1459 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1680 "Zend/zend_language_scanner.c" +#line 1682 "Zend/zend_language_scanner.c" yy68: YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; @@ -1690,7 +1692,7 @@ yy70: ++YYCURSOR; YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1864 "Zend/zend_language_scanner.l" +#line 1875 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1698,7 +1700,7 @@ yy70: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1702 "Zend/zend_language_scanner.c" +#line 1704 "Zend/zend_language_scanner.c" yy72: YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; @@ -1716,7 +1718,7 @@ yy73: ++YYCURSOR; YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1854 "Zend/zend_language_scanner.l" +#line 1865 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1724,7 +1726,7 @@ yy73: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1728 "Zend/zend_language_scanner.c" +#line 1730 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1792,7 +1794,7 @@ yy77: yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2191 "Zend/zend_language_scanner.l" +#line 2202 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1841,7 +1843,7 @@ double_quotes_scan_done: zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1845 "Zend/zend_language_scanner.c" +#line 1847 "Zend/zend_language_scanner.c" yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; @@ -1852,12 +1854,12 @@ yy80: ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2180 "Zend/zend_language_scanner.l" +#line 2191 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 1861 "Zend/zend_language_scanner.c" +#line 1863 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -1867,14 +1869,14 @@ yy83: ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2172 "Zend/zend_language_scanner.l" +#line 2183 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1878 "Zend/zend_language_scanner.c" +#line 1880 "Zend/zend_language_scanner.c" yy85: YYDEBUG(85, *YYCURSOR); yyaccept = 0; @@ -1890,24 +1892,24 @@ yy85: yy87: YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1872 "Zend/zend_language_scanner.l" +#line 1883 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1900 "Zend/zend_language_scanner.c" +#line 1902 "Zend/zend_language_scanner.c" yy88: YYDEBUG(88, *YYCURSOR); ++YYCURSOR; YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1449 "Zend/zend_language_scanner.l" +#line 1459 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1911 "Zend/zend_language_scanner.c" +#line 1913 "Zend/zend_language_scanner.c" yy90: YYDEBUG(90, *YYCURSOR); yych = *++YYCURSOR; @@ -1921,7 +1923,7 @@ yy92: ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1864 "Zend/zend_language_scanner.l" +#line 1875 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1929,7 +1931,7 @@ yy92: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1933 "Zend/zend_language_scanner.c" +#line 1935 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; @@ -1947,7 +1949,7 @@ yy95: ++YYCURSOR; YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1854 "Zend/zend_language_scanner.l" +#line 1865 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1955,7 +1957,7 @@ yy95: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1959 "Zend/zend_language_scanner.c" +#line 1961 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1966,19 +1968,20 @@ yyc_ST_END_HEREDOC: ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2159 "Zend/zend_language_scanner.l" +#line 2169 "Zend/zend_language_scanner.l" { - YYCURSOR += CG(heredoc_len) - 1; - yyleng = CG(heredoc_len); + zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); + + YYCURSOR += heredoc_label->length - 1; + yyleng = heredoc_label->length; + + heredoc_label_dtor(heredoc_label); + efree(heredoc_label); - Z_STRVAL_P(zendlval) = CG(heredoc); - Z_STRLEN_P(zendlval) = CG(heredoc_len); - CG(heredoc) = NULL; - CG(heredoc_len) = 0; BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 1982 "Zend/zend_language_scanner.c" +#line 1985 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -2040,10 +2043,12 @@ yy103: yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2283 "Zend/zend_language_scanner.l" +#line 2294 "Zend/zend_language_scanner.l" { int newline = 0; + zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); + if (YYCURSOR > YYLIMIT) { return 0; } @@ -2059,8 +2064,8 @@ yy104: /* fall through */ case '\n': /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, CG(heredoc), CG(heredoc_len))) { - YYCTYPE *end = YYCURSOR + CG(heredoc_len); + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + YYCTYPE *end = YYCURSOR + heredoc_label->length; if (*end == ';') { end++; @@ -2111,7 +2116,7 @@ heredoc_scan_done: zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2115 "Zend/zend_language_scanner.c" +#line 2120 "Zend/zend_language_scanner.c" yy105: YYDEBUG(105, *YYCURSOR); yych = *++YYCURSOR; @@ -2126,14 +2131,14 @@ yy107: ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2172 "Zend/zend_language_scanner.l" +#line 2183 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2137 "Zend/zend_language_scanner.c" +#line 2142 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 0; @@ -2149,24 +2154,24 @@ yy109: yy111: YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1872 "Zend/zend_language_scanner.l" +#line 1883 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2159 "Zend/zend_language_scanner.c" +#line 2164 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1449 "Zend/zend_language_scanner.l" +#line 1459 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2170 "Zend/zend_language_scanner.c" +#line 2175 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); yych = *++YYCURSOR; @@ -2180,7 +2185,7 @@ yy116: ++YYCURSOR; YYDEBUG(117, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1864 "Zend/zend_language_scanner.l" +#line 1875 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2188,7 +2193,7 @@ yy116: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2192 "Zend/zend_language_scanner.c" +#line 2197 "Zend/zend_language_scanner.c" yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; @@ -2206,7 +2211,7 @@ yy119: ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1854 "Zend/zend_language_scanner.l" +#line 1865 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2214,7 +2219,7 @@ yy119: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2218 "Zend/zend_language_scanner.c" +#line 2223 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2286,32 +2291,32 @@ yyc_ST_IN_SCRIPTING: case 0x1C: case 0x1D: case 0x1E: - case 0x1F: goto yy183; + case 0x1F: goto yy184; case '\t': case '\n': case '\r': - case ' ': goto yy139; - case '!': goto yy152; - case '"': goto yy179; - case '#': goto yy175; - case '$': goto yy164; - case '%': goto yy158; - case '&': goto yy159; - case '\'': goto yy177; - case '(': goto yy146; + case ' ': goto yy140; + case '!': goto yy153; + case '"': goto yy180; + case '#': goto yy176; + case '$': goto yy165; + case '%': goto yy159; + case '&': goto yy160; + case '\'': goto yy178; + case '(': goto yy147; case ')': case ',': case ';': case '@': case '[': case ']': - case '~': goto yy165; - case '*': goto yy155; - case '+': goto yy151; - case '-': goto yy137; - case '.': goto yy157; - case '/': goto yy156; - case '0': goto yy171; + case '~': goto yy166; + case '*': goto yy156; + case '+': goto yy152; + case '-': goto yy138; + case '.': goto yy158; + case '/': goto yy157; + case '0': goto yy172; case '1': case '2': case '3': @@ -2320,16 +2325,16 @@ yyc_ST_IN_SCRIPTING: case '6': case '7': case '8': - case '9': goto yy173; - case ':': goto yy141; - case '<': goto yy153; - case '=': goto yy149; - case '>': goto yy154; - case '?': goto yy166; + case '9': goto yy174; + case ':': goto yy142; + case '<': goto yy154; + case '=': goto yy150; + case '>': goto yy155; + case '?': goto yy167; case 'A': - case 'a': goto yy132; + case 'a': goto yy133; case 'B': - case 'b': goto yy134; + case 'b': goto yy135; case 'C': case 'c': goto yy127; case 'D': @@ -2339,39 +2344,41 @@ yyc_ST_IN_SCRIPTING: case 'F': case 'f': goto yy126; case 'G': - case 'g': goto yy135; + case 'g': goto yy136; case 'I': - case 'i': goto yy130; + case 'i': goto yy131; case 'L': - case 'l': goto yy150; + case 'l': goto yy151; case 'N': - case 'n': goto yy144; + case 'n': goto yy145; case 'O': - case 'o': goto yy162; + case 'o': goto yy163; case 'P': - case 'p': goto yy136; + case 'p': goto yy137; case 'R': case 'r': goto yy128; case 'S': - case 's': goto yy133; + case 's': goto yy134; case 'T': - case 't': goto yy129; + case 't': goto yy130; case 'U': - case 'u': goto yy147; + case 'u': goto yy148; case 'V': - case 'v': goto yy145; + case 'v': goto yy146; case 'W': - case 'w': goto yy131; + case 'w': goto yy132; case 'X': - case 'x': goto yy163; - case '\\': goto yy142; - case '^': goto yy161; - case '_': goto yy148; - case '`': goto yy181; - case '{': goto yy167; - case '|': goto yy160; - case '}': goto yy169; - default: goto yy174; + case 'x': goto yy164; + case 'Y': + case 'y': goto yy129; + case '\\': goto yy143; + case '^': goto yy162; + case '_': goto yy149; + case '`': goto yy182; + case '{': goto yy168; + case '|': goto yy161; + case '}': goto yy170; + default: goto yy175; } yy123: YYDEBUG(123, *YYCURSOR); @@ -2379,49 +2386,49 @@ yy123: YYDEBUG(-1, yych); switch ((yych = *YYCURSOR)) { case 'C': - case 'c': goto yy726; + case 'c': goto yy735; case 'L': - case 'l': goto yy727; + case 'l': goto yy736; case 'M': - case 'm': goto yy728; + case 'm': goto yy737; case 'N': - case 'n': goto yy729; + case 'n': goto yy738; case 'V': - case 'v': goto yy730; + case 'v': goto yy739; case 'X': - case 'x': goto yy731; - default: goto yy186; + case 'x': goto yy740; + default: goto yy187; } yy124: YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1895 "Zend/zend_language_scanner.l" +#line 1906 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 2405 "Zend/zend_language_scanner.c" +#line 2412 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'H') { - if (yych == 'E') goto yy708; - goto yy186; + if (yych == 'E') goto yy717; + goto yy187; } else { - if (yych <= 'I') goto yy709; - if (yych <= 'N') goto yy186; - goto yy710; + if (yych <= 'I') goto yy718; + if (yych <= 'N') goto yy187; + goto yy719; } } else { if (yych <= 'h') { - if (yych == 'e') goto yy708; - goto yy186; + if (yych == 'e') goto yy717; + goto yy187; } else { - if (yych <= 'i') goto yy709; - if (yych == 'o') goto yy710; - goto yy186; + if (yych <= 'i') goto yy718; + if (yych == 'o') goto yy719; + goto yy187; } } yy126: @@ -2429,21 +2436,21 @@ yy126: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'N') { - if (yych == 'I') goto yy687; - goto yy186; + if (yych == 'I') goto yy693; + goto yy187; } else { - if (yych <= 'O') goto yy688; - if (yych <= 'T') goto yy186; - goto yy689; + if (yych <= 'O') goto yy694; + if (yych <= 'T') goto yy187; + goto yy695; } } else { if (yych <= 'n') { - if (yych == 'i') goto yy687; - goto yy186; + if (yych == 'i') goto yy693; + goto yy187; } else { - if (yych <= 'o') goto yy688; - if (yych == 'u') goto yy689; - goto yy186; + if (yych <= 'o') goto yy694; + if (yych == 'u') goto yy695; + goto yy187; } } yy127: @@ -2451,196 +2458,202 @@ yy127: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'K') { - if (yych == 'A') goto yy652; - goto yy186; + if (yych == 'A') goto yy658; + goto yy187; } else { - if (yych <= 'L') goto yy653; - if (yych <= 'N') goto yy186; - goto yy654; + if (yych <= 'L') goto yy659; + if (yych <= 'N') goto yy187; + goto yy660; } } else { if (yych <= 'k') { - if (yych == 'a') goto yy652; - goto yy186; + if (yych == 'a') goto yy658; + goto yy187; } else { - if (yych <= 'l') goto yy653; - if (yych == 'o') goto yy654; - goto yy186; + if (yych <= 'l') goto yy659; + if (yych == 'o') goto yy660; + goto yy187; } } yy128: YYDEBUG(128, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy634; - if (yych == 'e') goto yy634; - goto yy186; + if (yych == 'E') goto yy640; + if (yych == 'e') goto yy640; + goto yy187; yy129: YYDEBUG(129, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'I') goto yy635; + if (yych == 'i') goto yy635; + goto yy187; +yy130: + YYDEBUG(130, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'R') { - if (yych == 'H') goto yy622; - if (yych <= 'Q') goto yy186; - goto yy623; + if (yych == 'H') goto yy623; + if (yych <= 'Q') goto yy187; + goto yy624; } else { if (yych <= 'h') { - if (yych <= 'g') goto yy186; - goto yy622; + if (yych <= 'g') goto yy187; + goto yy623; } else { - if (yych == 'r') goto yy623; - goto yy186; + if (yych == 'r') goto yy624; + goto yy187; } } -yy130: - YYDEBUG(130, *YYCURSOR); +yy131: + YYDEBUG(131, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'L') { - if (yych == 'F') goto yy569; - goto yy186; + if (yych == 'F') goto yy570; + goto yy187; } else { - if (yych <= 'M') goto yy571; - if (yych <= 'N') goto yy572; - if (yych <= 'R') goto yy186; - goto yy573; + if (yych <= 'M') goto yy572; + if (yych <= 'N') goto yy573; + if (yych <= 'R') goto yy187; + goto yy574; } } else { if (yych <= 'm') { - if (yych == 'f') goto yy569; - if (yych <= 'l') goto yy186; - goto yy571; + if (yych == 'f') goto yy570; + if (yych <= 'l') goto yy187; + goto yy572; } else { - if (yych <= 'n') goto yy572; - if (yych == 's') goto yy573; - goto yy186; + if (yych <= 'n') goto yy573; + if (yych == 's') goto yy574; + goto yy187; } } -yy131: - YYDEBUG(131, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy564; - if (yych == 'h') goto yy564; - goto yy186; yy132: YYDEBUG(132, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'H') goto yy565; + if (yych == 'h') goto yy565; + goto yy187; +yy133: + YYDEBUG(133, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'M') { - if (yych == 'B') goto yy546; - goto yy186; + if (yych == 'B') goto yy547; + goto yy187; } else { - if (yych <= 'N') goto yy547; - if (yych <= 'Q') goto yy186; - if (yych <= 'R') goto yy548; - goto yy549; + if (yych <= 'N') goto yy548; + if (yych <= 'Q') goto yy187; + if (yych <= 'R') goto yy549; + goto yy550; } } else { if (yych <= 'n') { - if (yych == 'b') goto yy546; - if (yych <= 'm') goto yy186; - goto yy547; + if (yych == 'b') goto yy547; + if (yych <= 'm') goto yy187; + goto yy548; } else { - if (yych <= 'q') goto yy186; - if (yych <= 'r') goto yy548; - if (yych <= 's') goto yy549; - goto yy186; + if (yych <= 'q') goto yy187; + if (yych <= 'r') goto yy549; + if (yych <= 's') goto yy550; + goto yy187; } } -yy133: - YYDEBUG(133, *YYCURSOR); +yy134: + YYDEBUG(134, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'W') { - if (yych == 'T') goto yy534; - if (yych <= 'V') goto yy186; - goto yy535; + if (yych == 'T') goto yy535; + if (yych <= 'V') goto yy187; + goto yy536; } else { if (yych <= 't') { - if (yych <= 's') goto yy186; - goto yy534; + if (yych <= 's') goto yy187; + goto yy535; } else { - if (yych == 'w') goto yy535; - goto yy186; + if (yych == 'w') goto yy536; + goto yy187; } } -yy134: - YYDEBUG(134, *YYCURSOR); +yy135: + YYDEBUG(135, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ';') { if (yych <= '"') { - if (yych <= '!') goto yy186; - goto yy526; + if (yych <= '!') goto yy187; + goto yy527; } else { - if (yych == '\'') goto yy527; - goto yy186; + if (yych == '\'') goto yy528; + goto yy187; } } else { if (yych <= 'R') { - if (yych <= '<') goto yy525; - if (yych <= 'Q') goto yy186; - goto yy528; + if (yych <= '<') goto yy526; + if (yych <= 'Q') goto yy187; + goto yy529; } else { - if (yych == 'r') goto yy528; - goto yy186; + if (yych == 'r') goto yy529; + goto yy187; } } -yy135: - YYDEBUG(135, *YYCURSOR); +yy136: + YYDEBUG(136, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'L') goto yy515; - if (yych <= 'N') goto yy186; - goto yy516; + if (yych == 'L') goto yy516; + if (yych <= 'N') goto yy187; + goto yy517; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy186; - goto yy515; + if (yych <= 'k') goto yy187; + goto yy516; } else { - if (yych == 'o') goto yy516; - goto yy186; + if (yych == 'o') goto yy517; + goto yy187; } } -yy136: - YYDEBUG(136, *YYCURSOR); +yy137: + YYDEBUG(137, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'R') goto yy491; - if (yych <= 'T') goto yy186; - goto yy492; + if (yych == 'R') goto yy492; + if (yych <= 'T') goto yy187; + goto yy493; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy186; - goto yy491; + if (yych <= 'q') goto yy187; + goto yy492; } else { - if (yych == 'u') goto yy492; - goto yy186; + if (yych == 'u') goto yy493; + goto yy187; } } -yy137: - YYDEBUG(137, *YYCURSOR); +yy138: + YYDEBUG(138, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '<') { - if (yych == '-') goto yy487; + if (yych == '-') goto yy488; } else { - if (yych <= '=') goto yy485; - if (yych <= '>') goto yy489; + if (yych <= '=') goto yy486; + if (yych <= '>') goto yy490; } -yy138: - YYDEBUG(138, *YYCURSOR); +yy139: + YYDEBUG(139, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1438 "Zend/zend_language_scanner.l" +#line 1448 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 2635 "Zend/zend_language_scanner.c" -yy139: - YYDEBUG(139, *YYCURSOR); - ++YYCURSOR; - yych = *YYCURSOR; - goto yy484; +#line 2648 "Zend/zend_language_scanner.c" yy140: YYDEBUG(140, *YYCURSOR); + ++YYCURSOR; + yych = *YYCURSOR; + goto yy485; +yy141: + YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1169 "Zend/zend_language_scanner.l" +#line 1179 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -2648,261 +2661,261 @@ yy140: HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 2652 "Zend/zend_language_scanner.c" -yy141: - YYDEBUG(141, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == ':') goto yy481; - goto yy138; +#line 2665 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == ':') goto yy482; + goto yy139; +yy143: YYDEBUG(143, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1198 "Zend/zend_language_scanner.l" +#line 1208 "Zend/zend_language_scanner.l" { return T_NS_SEPARATOR; } -#line 2667 "Zend/zend_language_scanner.c" -yy144: - YYDEBUG(144, *YYCURSOR); +#line 2680 "Zend/zend_language_scanner.c" +yy145: + YYDEBUG(145, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy469; - if (yych <= 'D') goto yy186; - goto yy470; + if (yych == 'A') goto yy470; + if (yych <= 'D') goto yy187; + goto yy471; } else { if (yych <= 'a') { - if (yych <= '`') goto yy186; - goto yy469; + if (yych <= '`') goto yy187; + goto yy470; } else { - if (yych == 'e') goto yy470; - goto yy186; + if (yych == 'e') goto yy471; + goto yy187; } } -yy145: - YYDEBUG(145, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy466; - if (yych == 'a') goto yy466; - goto yy186; yy146: YYDEBUG(146, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy467; + if (yych == 'a') goto yy467; + goto yy187; +yy147: + YYDEBUG(147, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy391; - if (yych <= 0x1F) goto yy138; - goto yy391; + if (yych == '\t') goto yy392; + if (yych <= 0x1F) goto yy139; + goto yy392; } else { - if (yych <= '@') goto yy138; - if (yych == 'C') goto yy138; - goto yy391; + if (yych <= '@') goto yy139; + if (yych == 'C') goto yy139; + goto yy392; } } else { if (yych <= 'I') { - if (yych == 'F') goto yy391; - if (yych <= 'H') goto yy138; - goto yy391; + if (yych == 'F') goto yy392; + if (yych <= 'H') goto yy139; + goto yy392; } else { - if (yych == 'O') goto yy391; - if (yych <= 'Q') goto yy138; - goto yy391; + if (yych == 'O') goto yy392; + if (yych <= 'Q') goto yy139; + goto yy392; } } } else { if (yych <= 'f') { if (yych <= 'b') { - if (yych == 'U') goto yy391; - if (yych <= '`') goto yy138; - goto yy391; + if (yych == 'U') goto yy392; + if (yych <= '`') goto yy139; + goto yy392; } else { - if (yych == 'd') goto yy391; - if (yych <= 'e') goto yy138; - goto yy391; + if (yych == 'd') goto yy392; + if (yych <= 'e') goto yy139; + goto yy392; } } else { if (yych <= 'o') { - if (yych == 'i') goto yy391; - if (yych <= 'n') goto yy138; - goto yy391; + if (yych == 'i') goto yy392; + if (yych <= 'n') goto yy139; + goto yy392; } else { if (yych <= 's') { - if (yych <= 'q') goto yy138; - goto yy391; + if (yych <= 'q') goto yy139; + goto yy392; } else { - if (yych == 'u') goto yy391; - goto yy138; + if (yych == 'u') goto yy392; + goto yy139; } } } } -yy147: - YYDEBUG(147, *YYCURSOR); +yy148: + YYDEBUG(148, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == 'N') goto yy382; - if (yych <= 'R') goto yy186; - goto yy383; + if (yych == 'N') goto yy383; + if (yych <= 'R') goto yy187; + goto yy384; } else { if (yych <= 'n') { - if (yych <= 'm') goto yy186; - goto yy382; + if (yych <= 'm') goto yy187; + goto yy383; } else { - if (yych == 's') goto yy383; - goto yy186; + if (yych == 's') goto yy384; + goto yy187; } } -yy148: - YYDEBUG(148, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy300; - goto yy186; yy149: YYDEBUG(149, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy138; - if (yych <= '=') goto yy294; - if (yych <= '>') goto yy296; - goto yy138; + if (yych == '_') goto yy301; + goto yy187; yy150: YYDEBUG(150, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy290; - if (yych == 'i') goto yy290; - goto yy186; + if (yych <= '<') goto yy139; + if (yych <= '=') goto yy295; + if (yych <= '>') goto yy297; + goto yy139; yy151: YYDEBUG(151, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '+') goto yy288; - if (yych == '=') goto yy286; - goto yy138; + if (yych == 'I') goto yy291; + if (yych == 'i') goto yy291; + goto yy187; yy152: YYDEBUG(152, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy283; - goto yy138; + if (yych == '+') goto yy289; + if (yych == '=') goto yy287; + goto yy139; yy153: YYDEBUG(153, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy284; + goto yy139; +yy154: + YYDEBUG(154, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ';') { - if (yych == '/') goto yy255; - goto yy138; + if (yych == '/') goto yy256; + goto yy139; } else { - if (yych <= '<') goto yy253; - if (yych <= '=') goto yy256; - if (yych <= '>') goto yy258; - goto yy138; + if (yych <= '<') goto yy254; + if (yych <= '=') goto yy257; + if (yych <= '>') goto yy259; + goto yy139; } -yy154: - YYDEBUG(154, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') goto yy138; - if (yych <= '=') goto yy249; - if (yych <= '>') goto yy247; - goto yy138; yy155: YYDEBUG(155, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy245; - goto yy138; + if (yych <= '<') goto yy139; + if (yych <= '=') goto yy250; + if (yych <= '>') goto yy248; + goto yy139; yy156: YYDEBUG(156, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '.') { - if (yych == '*') goto yy237; - goto yy138; - } else { - if (yych <= '/') goto yy239; - if (yych == '=') goto yy240; - goto yy138; - } + if (yych == '=') goto yy246; + goto yy139; yy157: YYDEBUG(157, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy138; - if (yych <= '9') goto yy233; - if (yych == '=') goto yy235; - goto yy138; + if (yych <= '.') { + if (yych == '*') goto yy238; + goto yy139; + } else { + if (yych <= '/') goto yy240; + if (yych == '=') goto yy241; + goto yy139; + } yy158: YYDEBUG(158, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy138; - if (yych <= '=') goto yy229; - if (yych <= '>') goto yy227; - goto yy138; + if (yych <= '/') goto yy139; + if (yych <= '9') goto yy234; + if (yych == '=') goto yy236; + goto yy139; yy159: YYDEBUG(159, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '&') goto yy223; - if (yych == '=') goto yy225; - goto yy138; + if (yych <= '<') goto yy139; + if (yych <= '=') goto yy230; + if (yych <= '>') goto yy228; + goto yy139; yy160: YYDEBUG(160, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy221; - if (yych == '|') goto yy219; - goto yy138; + if (yych == '&') goto yy224; + if (yych == '=') goto yy226; + goto yy139; yy161: YYDEBUG(161, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy217; - goto yy138; + if (yych == '=') goto yy222; + if (yych == '|') goto yy220; + goto yy139; yy162: YYDEBUG(162, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy215; - if (yych == 'r') goto yy215; - goto yy186; + if (yych == '=') goto yy218; + goto yy139; yy163: YYDEBUG(163, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy212; - if (yych == 'o') goto yy212; - goto yy186; + if (yych == 'R') goto yy216; + if (yych == 'r') goto yy216; + goto yy187; yy164: YYDEBUG(164, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy138; - if (yych <= 'Z') goto yy209; - if (yych <= '^') goto yy138; - goto yy209; - } else { - if (yych <= '`') goto yy138; - if (yych <= 'z') goto yy209; - if (yych <= '~') goto yy138; - goto yy209; - } + if (yych == 'O') goto yy213; + if (yych == 'o') goto yy213; + goto yy187; yy165: YYDEBUG(165, *YYCURSOR); yych = *++YYCURSOR; - goto yy138; + if (yych <= '_') { + if (yych <= '@') goto yy139; + if (yych <= 'Z') goto yy210; + if (yych <= '^') goto yy139; + goto yy210; + } else { + if (yych <= '`') goto yy139; + if (yych <= 'z') goto yy210; + if (yych <= '~') goto yy139; + goto yy210; + } yy166: YYDEBUG(166, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy205; - goto yy138; + goto yy139; yy167: YYDEBUG(167, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '>') goto yy206; + goto yy139; +yy168: YYDEBUG(168, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1443 "Zend/zend_language_scanner.l" +#line 1453 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 2900 "Zend/zend_language_scanner.c" -yy169: - YYDEBUG(169, *YYCURSOR); - ++YYCURSOR; +#line 2913 "Zend/zend_language_scanner.c" +yy170: YYDEBUG(170, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1455 "Zend/zend_language_scanner.l" +#line 1465 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2910,35 +2923,35 @@ yy169: } return '}'; } -#line 2914 "Zend/zend_language_scanner.c" -yy171: - YYDEBUG(171, *YYCURSOR); +#line 2927 "Zend/zend_language_scanner.c" +yy172: + YYDEBUG(172, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'E') { if (yych <= '9') { - if (yych == '.') goto yy187; - if (yych >= '0') goto yy190; + if (yych == '.') goto yy188; + if (yych >= '0') goto yy191; } else { - if (yych == 'B') goto yy198; - if (yych >= 'E') goto yy192; + if (yych == 'B') goto yy199; + if (yych >= 'E') goto yy193; } } else { if (yych <= 'b') { - if (yych == 'X') goto yy197; - if (yych >= 'b') goto yy198; + if (yych == 'X') goto yy198; + if (yych >= 'b') goto yy199; } else { if (yych <= 'e') { - if (yych >= 'e') goto yy192; + if (yych >= 'e') goto yy193; } else { - if (yych == 'x') goto yy197; + if (yych == 'x') goto yy198; } } } -yy172: - YYDEBUG(172, *YYCURSOR); +yy173: + YYDEBUG(173, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1505 "Zend/zend_language_scanner.l" +#line 1516 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ zendlval->value.lval = strtol(yytext, NULL, 0); @@ -2959,35 +2972,35 @@ yy172: zendlval->type = IS_LONG; return T_LNUMBER; } -#line 2963 "Zend/zend_language_scanner.c" -yy173: - YYDEBUG(173, *YYCURSOR); +#line 2976 "Zend/zend_language_scanner.c" +yy174: + YYDEBUG(174, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { - if (yych == '.') goto yy187; - if (yych <= '/') goto yy172; - goto yy190; + if (yych == '.') goto yy188; + if (yych <= '/') goto yy173; + goto yy191; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy172; - goto yy192; + if (yych <= 'D') goto yy173; + goto yy193; } else { - if (yych == 'e') goto yy192; - goto yy172; + if (yych == 'e') goto yy193; + goto yy173; } } -yy174: - YYDEBUG(174, *YYCURSOR); - yych = *++YYCURSOR; - goto yy186; yy175: YYDEBUG(175, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + goto yy187; yy176: YYDEBUG(176, *YYCURSOR); + ++YYCURSOR; +yy177: + YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1902 "Zend/zend_language_scanner.l" +#line 1913 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3021,14 +3034,14 @@ yy176: return T_COMMENT; } -#line 3025 "Zend/zend_language_scanner.c" -yy177: - YYDEBUG(177, *YYCURSOR); - ++YYCURSOR; +#line 3038 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); + ++YYCURSOR; +yy179: + YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1993 "Zend/zend_language_scanner.l" +#line 2004 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3096,14 +3109,14 @@ yy178: } return T_CONSTANT_ENCAPSED_STRING; } -#line 3100 "Zend/zend_language_scanner.c" -yy179: - YYDEBUG(179, *YYCURSOR); - ++YYCURSOR; +#line 3113 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); + ++YYCURSOR; +yy181: + YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2062 "Zend/zend_language_scanner.l" +#line 2073 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3144,24 +3157,24 @@ yy180: BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 3148 "Zend/zend_language_scanner.c" -yy181: - YYDEBUG(181, *YYCURSOR); - ++YYCURSOR; +#line 3161 "Zend/zend_language_scanner.c" +yy182: YYDEBUG(182, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2153 "Zend/zend_language_scanner.l" +#line 2163 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 3159 "Zend/zend_language_scanner.c" -yy183: - YYDEBUG(183, *YYCURSOR); - ++YYCURSOR; +#line 3172 "Zend/zend_language_scanner.c" +yy184: YYDEBUG(184, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2411 "Zend/zend_language_scanner.l" +#line 2426 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3170,132 +3183,132 @@ yy183: zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3174 "Zend/zend_language_scanner.c" -yy185: - YYDEBUG(185, *YYCURSOR); +#line 3187 "Zend/zend_language_scanner.c" +yy186: + YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy186: - YYDEBUG(186, *YYCURSOR); +yy187: + YYDEBUG(187, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy185; + goto yy186; } goto yy124; -yy187: - YYDEBUG(187, *YYCURSOR); +yy188: + YYDEBUG(188, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(188, *YYCURSOR); + YYDEBUG(189, *YYCURSOR); if (yybm[0+yych] & 8) { - goto yy187; + goto yy188; } - if (yych == 'E') goto yy192; - if (yych == 'e') goto yy192; -yy189: - YYDEBUG(189, *YYCURSOR); + if (yych == 'E') goto yy193; + if (yych == 'e') goto yy193; +yy190: + YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1570 "Zend/zend_language_scanner.l" +#line 1581 "Zend/zend_language_scanner.l" { zendlval->value.dval = zend_strtod(yytext, NULL); zendlval->type = IS_DOUBLE; return T_DNUMBER; } -#line 3207 "Zend/zend_language_scanner.c" -yy190: - YYDEBUG(190, *YYCURSOR); +#line 3220 "Zend/zend_language_scanner.c" +yy191: + YYDEBUG(191, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(191, *YYCURSOR); + YYDEBUG(192, *YYCURSOR); if (yych <= '9') { - if (yych == '.') goto yy187; - if (yych <= '/') goto yy172; - goto yy190; + if (yych == '.') goto yy188; + if (yych <= '/') goto yy173; + goto yy191; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy172; + if (yych <= 'D') goto yy173; } else { - if (yych != 'e') goto yy172; + if (yych != 'e') goto yy173; } } -yy192: - YYDEBUG(192, *YYCURSOR); +yy193: + YYDEBUG(193, *YYCURSOR); yych = *++YYCURSOR; if (yych <= ',') { - if (yych == '+') goto yy194; + if (yych == '+') goto yy195; } else { - if (yych <= '-') goto yy194; - if (yych <= '/') goto yy193; - if (yych <= '9') goto yy195; + if (yych <= '-') goto yy195; + if (yych <= '/') goto yy194; + if (yych <= '9') goto yy196; } -yy193: - YYDEBUG(193, *YYCURSOR); +yy194: + YYDEBUG(194, *YYCURSOR); YYCURSOR = YYMARKER; if (yyaccept <= 2) { if (yyaccept <= 1) { if (yyaccept <= 0) { goto yy124; } else { - goto yy138; + goto yy139; } } else { - goto yy172; + goto yy173; } } else { if (yyaccept <= 4) { if (yyaccept <= 3) { - goto yy189; + goto yy190; } else { - goto yy238; + goto yy239; } } else { - goto yy254; + goto yy255; } } -yy194: - YYDEBUG(194, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy193; - if (yych >= ':') goto yy193; yy195: YYDEBUG(195, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy194; + if (yych >= ':') goto yy194; +yy196: + YYDEBUG(196, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(196, *YYCURSOR); - if (yych <= '/') goto yy189; - if (yych <= '9') goto yy195; - goto yy189; -yy197: YYDEBUG(197, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 32) { - goto yy202; - } - goto yy193; + if (yych <= '/') goto yy190; + if (yych <= '9') goto yy196; + goto yy190; yy198: YYDEBUG(198, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy199; + if (yybm[0+yych] & 32) { + goto yy203; } - goto yy193; + goto yy194; yy199: YYDEBUG(199, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy200; + } + goto yy194; +yy200: + YYDEBUG(200, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(200, *YYCURSOR); + YYDEBUG(201, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy199; + goto yy200; } - YYDEBUG(201, *YYCURSOR); + YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1480 "Zend/zend_language_scanner.l" +#line 1491 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3320,19 +3333,19 @@ yy199: return T_DNUMBER; } } -#line 3324 "Zend/zend_language_scanner.c" -yy202: - YYDEBUG(202, *YYCURSOR); +#line 3337 "Zend/zend_language_scanner.c" +yy203: + YYDEBUG(203, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(203, *YYCURSOR); + YYDEBUG(204, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy202; + goto yy203; } - YYDEBUG(204, *YYCURSOR); + YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1526 "Zend/zend_language_scanner.l" +#line 1537 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3357,16 +3370,16 @@ yy202: return T_DNUMBER; } } -#line 3361 "Zend/zend_language_scanner.c" -yy205: - YYDEBUG(205, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy207; - if (yych == '\r') goto yy208; +#line 3374 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '\n') goto yy208; + if (yych == '\r') goto yy209; +yy207: + YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1970 "Zend/zend_language_scanner.l" +#line 1981 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -3374,137 +3387,137 @@ yy206: BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 3378 "Zend/zend_language_scanner.c" -yy207: - YYDEBUG(207, *YYCURSOR); - yych = *++YYCURSOR; - goto yy206; +#line 3391 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy207; - goto yy206; + goto yy207; yy209: YYDEBUG(209, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy208; + goto yy207; +yy210: + YYDEBUG(210, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(210, *YYCURSOR); + YYDEBUG(211, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy209; + if (yych >= '0') goto yy210; } else { - if (yych <= '@') goto yy211; - if (yych <= 'Z') goto yy209; + if (yych <= '@') goto yy212; + if (yych <= 'Z') goto yy210; } } else { if (yych <= '`') { - if (yych <= '_') goto yy209; + if (yych <= '_') goto yy210; } else { - if (yych <= 'z') goto yy209; - if (yych >= 0x7F) goto yy209; + if (yych <= 'z') goto yy210; + if (yych >= 0x7F) goto yy210; } } -yy211: - YYDEBUG(211, *YYCURSOR); +yy212: + YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1872 "Zend/zend_language_scanner.l" +#line 1883 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3418 "Zend/zend_language_scanner.c" -yy212: - YYDEBUG(212, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy213; - if (yych != 'r') goto yy186; +#line 3431 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy214; + if (yych != 'r') goto yy187; +yy214: + YYDEBUG(214, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(214, *YYCURSOR); + YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1426 "Zend/zend_language_scanner.l" +#line 1436 "Zend/zend_language_scanner.l" { return T_LOGICAL_XOR; } -#line 3436 "Zend/zend_language_scanner.c" -yy215: - YYDEBUG(215, *YYCURSOR); +#line 3449 "Zend/zend_language_scanner.c" +yy216: + YYDEBUG(216, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(216, *YYCURSOR); + YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1418 "Zend/zend_language_scanner.l" +#line 1428 "Zend/zend_language_scanner.l" { return T_LOGICAL_OR; } -#line 3449 "Zend/zend_language_scanner.c" -yy217: - YYDEBUG(217, *YYCURSOR); - ++YYCURSOR; +#line 3462 "Zend/zend_language_scanner.c" +yy218: YYDEBUG(218, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1406 "Zend/zend_language_scanner.l" +#line 1416 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 3459 "Zend/zend_language_scanner.c" -yy219: - YYDEBUG(219, *YYCURSOR); - ++YYCURSOR; +#line 3472 "Zend/zend_language_scanner.c" +yy220: YYDEBUG(220, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1410 "Zend/zend_language_scanner.l" +#line 1420 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 3469 "Zend/zend_language_scanner.c" -yy221: - YYDEBUG(221, *YYCURSOR); - ++YYCURSOR; +#line 3482 "Zend/zend_language_scanner.c" +yy222: YYDEBUG(222, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(223, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1402 "Zend/zend_language_scanner.l" +#line 1412 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 3479 "Zend/zend_language_scanner.c" -yy223: - YYDEBUG(223, *YYCURSOR); - ++YYCURSOR; +#line 3492 "Zend/zend_language_scanner.c" +yy224: YYDEBUG(224, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(225, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1414 "Zend/zend_language_scanner.l" +#line 1424 "Zend/zend_language_scanner.l" { return T_BOOLEAN_AND; } -#line 3489 "Zend/zend_language_scanner.c" -yy225: - YYDEBUG(225, *YYCURSOR); - ++YYCURSOR; +#line 3502 "Zend/zend_language_scanner.c" +yy226: YYDEBUG(226, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(227, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1398 "Zend/zend_language_scanner.l" +#line 1408 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 3499 "Zend/zend_language_scanner.c" -yy227: - YYDEBUG(227, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy231; - if (yych == '\r') goto yy232; +#line 3512 "Zend/zend_language_scanner.c" yy228: YYDEBUG(228, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '\n') goto yy232; + if (yych == '\r') goto yy233; +yy229: + YYDEBUG(229, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1979 "Zend/zend_language_scanner.l" +#line 1990 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3517,61 +3530,61 @@ yy228: return yytext[0]; } } -#line 3521 "Zend/zend_language_scanner.c" -yy229: - YYDEBUG(229, *YYCURSOR); - ++YYCURSOR; +#line 3534 "Zend/zend_language_scanner.c" +yy230: YYDEBUG(230, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(231, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1386 "Zend/zend_language_scanner.l" +#line 1396 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 3531 "Zend/zend_language_scanner.c" -yy231: - YYDEBUG(231, *YYCURSOR); - yych = *++YYCURSOR; - goto yy228; +#line 3544 "Zend/zend_language_scanner.c" yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy231; - goto yy228; + goto yy229; yy233: YYDEBUG(233, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy232; + goto yy229; +yy234: + YYDEBUG(234, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(234, *YYCURSOR); + YYDEBUG(235, *YYCURSOR); if (yych <= 'D') { - if (yych <= '/') goto yy189; - if (yych <= '9') goto yy233; - goto yy189; + if (yych <= '/') goto yy190; + if (yych <= '9') goto yy234; + goto yy190; } else { - if (yych <= 'E') goto yy192; - if (yych == 'e') goto yy192; - goto yy189; + if (yych <= 'E') goto yy193; + if (yych == 'e') goto yy193; + goto yy190; } -yy235: - YYDEBUG(235, *YYCURSOR); - ++YYCURSOR; +yy236: YYDEBUG(236, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(237, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1382 "Zend/zend_language_scanner.l" +#line 1392 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 3566 "Zend/zend_language_scanner.c" -yy237: - YYDEBUG(237, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '*') goto yy242; +#line 3579 "Zend/zend_language_scanner.c" yy238: YYDEBUG(238, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '*') goto yy243; +yy239: + YYDEBUG(239, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1936 "Zend/zend_language_scanner.l" +#line 1947 "Zend/zend_language_scanner.l" { int doc_com; @@ -3605,316 +3618,313 @@ yy238: return T_COMMENT; } -#line 3609 "Zend/zend_language_scanner.c" -yy239: - YYDEBUG(239, *YYCURSOR); - yych = *++YYCURSOR; - goto yy176; +#line 3622 "Zend/zend_language_scanner.c" yy240: YYDEBUG(240, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + goto yy177; +yy241: YYDEBUG(241, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(242, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1378 "Zend/zend_language_scanner.l" +#line 1388 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 3623 "Zend/zend_language_scanner.c" -yy242: - YYDEBUG(242, *YYCURSOR); +#line 3636 "Zend/zend_language_scanner.c" +yy243: + YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy243; + goto yy244; } - goto yy193; -yy243: - YYDEBUG(243, *YYCURSOR); + goto yy194; +yy244: + YYDEBUG(244, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(244, *YYCURSOR); + YYDEBUG(245, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy243; + goto yy244; } - goto yy238; -yy245: - YYDEBUG(245, *YYCURSOR); - ++YYCURSOR; + goto yy239; +yy246: YYDEBUG(246, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1374 "Zend/zend_language_scanner.l" +#line 1384 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 3650 "Zend/zend_language_scanner.c" -yy247: - YYDEBUG(247, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy251; +#line 3663 "Zend/zend_language_scanner.c" +yy248: YYDEBUG(248, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy252; + YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1434 "Zend/zend_language_scanner.l" +#line 1444 "Zend/zend_language_scanner.l" { return T_SR; } -#line 3661 "Zend/zend_language_scanner.c" -yy249: - YYDEBUG(249, *YYCURSOR); - ++YYCURSOR; +#line 3674 "Zend/zend_language_scanner.c" +yy250: YYDEBUG(250, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1362 "Zend/zend_language_scanner.l" +#line 1372 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 3671 "Zend/zend_language_scanner.c" -yy251: - YYDEBUG(251, *YYCURSOR); - ++YYCURSOR; +#line 3684 "Zend/zend_language_scanner.c" +yy252: YYDEBUG(252, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1394 "Zend/zend_language_scanner.l" +#line 1404 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 3681 "Zend/zend_language_scanner.c" -yy253: - YYDEBUG(253, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy254; - if (yych <= '<') goto yy269; - if (yych <= '=') goto yy267; +#line 3694 "Zend/zend_language_scanner.c" yy254: YYDEBUG(254, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') goto yy255; + if (yych <= '<') goto yy270; + if (yych <= '=') goto yy268; +yy255: + YYDEBUG(255, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1430 "Zend/zend_language_scanner.l" +#line 1440 "Zend/zend_language_scanner.l" { return T_SL; } -#line 3696 "Zend/zend_language_scanner.c" -yy255: - YYDEBUG(255, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy260; - if (yych == 's') goto yy260; - goto yy193; +#line 3709 "Zend/zend_language_scanner.c" yy256: YYDEBUG(256, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'S') goto yy261; + if (yych == 's') goto yy261; + goto yy194; +yy257: YYDEBUG(257, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(258, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1358 "Zend/zend_language_scanner.l" +#line 1368 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 3712 "Zend/zend_language_scanner.c" -yy258: - YYDEBUG(258, *YYCURSOR); - ++YYCURSOR; +#line 3725 "Zend/zend_language_scanner.c" yy259: YYDEBUG(259, *YYCURSOR); + ++YYCURSOR; +yy260: + YYDEBUG(260, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1354 "Zend/zend_language_scanner.l" +#line 1364 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 3723 "Zend/zend_language_scanner.c" -yy260: - YYDEBUG(260, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy261; - if (yych != 'c') goto yy193; +#line 3736 "Zend/zend_language_scanner.c" yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy262; - if (yych != 'r') goto yy193; + if (yych == 'C') goto yy262; + if (yych != 'c') goto yy194; yy262: YYDEBUG(262, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy263; - if (yych != 'i') goto yy193; + if (yych == 'R') goto yy263; + if (yych != 'r') goto yy194; yy263: YYDEBUG(263, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy264; - if (yych != 'p') goto yy193; + if (yych == 'I') goto yy264; + if (yych != 'i') goto yy194; yy264: YYDEBUG(264, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy265; - if (yych != 't') goto yy193; + if (yych == 'P') goto yy265; + if (yych != 'p') goto yy194; yy265: YYDEBUG(265, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy266; + if (yych != 't') goto yy194; +yy266: + YYDEBUG(266, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(266, *YYCURSOR); + YYDEBUG(267, *YYCURSOR); if (yych <= '\r') { - if (yych <= 0x08) goto yy193; - if (yych <= '\n') goto yy265; - if (yych <= '\f') goto yy193; - goto yy265; + if (yych <= 0x08) goto yy194; + if (yych <= '\n') goto yy266; + if (yych <= '\f') goto yy194; + goto yy266; } else { if (yych <= ' ') { - if (yych <= 0x1F) goto yy193; - goto yy265; + if (yych <= 0x1F) goto yy194; + goto yy266; } else { - if (yych == '>') goto yy205; - goto yy193; + if (yych == '>') goto yy206; + goto yy194; } } -yy267: - YYDEBUG(267, *YYCURSOR); - ++YYCURSOR; +yy268: YYDEBUG(268, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1390 "Zend/zend_language_scanner.l" +#line 1400 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 3778 "Zend/zend_language_scanner.c" -yy269: - YYDEBUG(269, *YYCURSOR); +#line 3791 "Zend/zend_language_scanner.c" +yy270: + YYDEBUG(270, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(270, *YYCURSOR); + YYDEBUG(271, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy269; + goto yy270; } if (yych <= 'Z') { if (yych <= '&') { - if (yych == '"') goto yy274; - goto yy193; + if (yych == '"') goto yy275; + goto yy194; } else { - if (yych <= '\'') goto yy273; - if (yych <= '@') goto yy193; + if (yych <= '\'') goto yy274; + if (yych <= '@') goto yy194; } } else { if (yych <= '`') { - if (yych != '_') goto yy193; + if (yych != '_') goto yy194; } else { - if (yych <= 'z') goto yy271; - if (yych <= '~') goto yy193; + if (yych <= 'z') goto yy272; + if (yych <= '~') goto yy194; } } -yy271: - YYDEBUG(271, *YYCURSOR); +yy272: + YYDEBUG(272, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(272, *YYCURSOR); + YYDEBUG(273, *YYCURSOR); if (yych <= '@') { if (yych <= '\f') { - if (yych == '\n') goto yy278; - goto yy193; + if (yych == '\n') goto yy279; + goto yy194; } else { - if (yych <= '\r') goto yy280; - if (yych <= '/') goto yy193; - if (yych <= '9') goto yy271; - goto yy193; + if (yych <= '\r') goto yy281; + if (yych <= '/') goto yy194; + if (yych <= '9') goto yy272; + goto yy194; } } else { if (yych <= '_') { - if (yych <= 'Z') goto yy271; - if (yych <= '^') goto yy193; - goto yy271; + if (yych <= 'Z') goto yy272; + if (yych <= '^') goto yy194; + goto yy272; } else { - if (yych <= '`') goto yy193; - if (yych <= 'z') goto yy271; - if (yych <= '~') goto yy193; - goto yy271; + if (yych <= '`') goto yy194; + if (yych <= 'z') goto yy272; + if (yych <= '~') goto yy194; + goto yy272; } } -yy273: - YYDEBUG(273, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\'') goto yy193; - if (yych <= '/') goto yy282; - if (yych <= '9') goto yy193; - goto yy282; yy274: YYDEBUG(274, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '"') goto yy193; - if (yych <= '/') goto yy276; - if (yych <= '9') goto yy193; - goto yy276; + if (yych == '\'') goto yy194; + if (yych <= '/') goto yy283; + if (yych <= '9') goto yy194; + goto yy283; yy275: YYDEBUG(275, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '"') goto yy194; + if (yych <= '/') goto yy277; + if (yych <= '9') goto yy194; + goto yy277; +yy276: + YYDEBUG(276, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy276: - YYDEBUG(276, *YYCURSOR); +yy277: + YYDEBUG(277, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych != '"') goto yy193; + if (yych != '"') goto yy194; } else { - if (yych <= '9') goto yy275; - if (yych <= '@') goto yy193; - goto yy275; + if (yych <= '9') goto yy276; + if (yych <= '@') goto yy194; + goto yy276; } } else { if (yych <= '`') { - if (yych == '_') goto yy275; - goto yy193; + if (yych == '_') goto yy276; + goto yy194; } else { - if (yych <= 'z') goto yy275; - if (yych <= '~') goto yy193; - goto yy275; + if (yych <= 'z') goto yy276; + if (yych <= '~') goto yy194; + goto yy276; } } -yy277: - YYDEBUG(277, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy278; - if (yych == '\r') goto yy280; - goto yy193; yy278: YYDEBUG(278, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '\n') goto yy279; + if (yych == '\r') goto yy281; + goto yy194; yy279: YYDEBUG(279, *YYCURSOR); + ++YYCURSOR; +yy280: + YYDEBUG(280, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2104 "Zend/zend_language_scanner.l" +#line 2115 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; - - /* save old heredoc label */ - Z_STRVAL_P(zendlval) = CG(heredoc); - Z_STRLEN_P(zendlval) = CG(heredoc_len); + zend_heredoc_label *heredoc_label = emalloc(sizeof(zend_heredoc_label)); CG(zend_lineno)++; - CG(heredoc_len) = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0); + heredoc_label->length = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0); s = yytext+bprefix+3; while ((*s == ' ') || (*s == '\t')) { s++; - CG(heredoc_len)--; + heredoc_label->length--; } if (*s == '\'') { s++; - CG(heredoc_len) -= 2; + heredoc_label->length -= 2; BEGIN(ST_NOWDOC); } else { if (*s == '"') { s++; - CG(heredoc_len) -= 2; + heredoc_label->length -= 2; } BEGIN(ST_HEREDOC); } - CG(heredoc) = estrndup(s, CG(heredoc_len)); + heredoc_label->label = estrndup(s, heredoc_label->length); /* Check for ending label on the next line */ - if (CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, CG(heredoc_len))) { - YYCTYPE *end = YYCURSOR + CG(heredoc_len); + if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { + YYCTYPE *end = YYCURSOR + heredoc_label->length; if (*end == ';') { end++; @@ -3925,257 +3935,259 @@ yy279: } } + zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); + return T_START_HEREDOC; } -#line 3931 "Zend/zend_language_scanner.c" -yy280: - YYDEBUG(280, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy278; - goto yy279; +#line 3943 "Zend/zend_language_scanner.c" yy281: YYDEBUG(281, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy279; + goto yy280; +yy282: + YYDEBUG(282, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy282: - YYDEBUG(282, *YYCURSOR); +yy283: + YYDEBUG(283, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych == '\'') goto yy277; - goto yy193; + if (yych == '\'') goto yy278; + goto yy194; } else { - if (yych <= '9') goto yy281; - if (yych <= '@') goto yy193; - goto yy281; + if (yych <= '9') goto yy282; + if (yych <= '@') goto yy194; + goto yy282; } } else { if (yych <= '`') { - if (yych == '_') goto yy281; - goto yy193; + if (yych == '_') goto yy282; + goto yy194; } else { - if (yych <= 'z') goto yy281; - if (yych <= '~') goto yy193; - goto yy281; + if (yych <= 'z') goto yy282; + if (yych <= '~') goto yy194; + goto yy282; } } -yy283: - YYDEBUG(283, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '=') goto yy259; +yy284: YYDEBUG(284, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych != '=') goto yy260; YYDEBUG(285, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(286, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1356 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 3975 "Zend/zend_language_scanner.c" -yy286: - YYDEBUG(286, *YYCURSOR); - ++YYCURSOR; +#line 3987 "Zend/zend_language_scanner.c" +yy287: YYDEBUG(287, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(288, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1366 "Zend/zend_language_scanner.l" +#line 1376 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 3985 "Zend/zend_language_scanner.c" -yy288: - YYDEBUG(288, *YYCURSOR); - ++YYCURSOR; +#line 3997 "Zend/zend_language_scanner.c" +yy289: YYDEBUG(289, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(290, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1334 "Zend/zend_language_scanner.l" +#line 1344 "Zend/zend_language_scanner.l" { return T_INC; } -#line 3995 "Zend/zend_language_scanner.c" -yy290: - YYDEBUG(290, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy291; - if (yych != 's') goto yy186; +#line 4007 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy292; - if (yych != 't') goto yy186; + if (yych == 'S') goto yy292; + if (yych != 's') goto yy187; yy292: YYDEBUG(292, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy293; + if (yych != 't') goto yy187; +yy293: + YYDEBUG(293, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(293, *YYCURSOR); + YYDEBUG(294, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1322 "Zend/zend_language_scanner.l" +#line 1332 "Zend/zend_language_scanner.l" { return T_LIST; } -#line 4018 "Zend/zend_language_scanner.c" -yy294: - YYDEBUG(294, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy298; +#line 4030 "Zend/zend_language_scanner.c" +yy295: YYDEBUG(295, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy299; + YYDEBUG(296, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1350 "Zend/zend_language_scanner.l" +#line 1360 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 4029 "Zend/zend_language_scanner.c" -yy296: - YYDEBUG(296, *YYCURSOR); - ++YYCURSOR; +#line 4041 "Zend/zend_language_scanner.c" +yy297: YYDEBUG(297, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(298, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1318 "Zend/zend_language_scanner.l" +#line 1328 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 4039 "Zend/zend_language_scanner.c" -yy298: - YYDEBUG(298, *YYCURSOR); - ++YYCURSOR; +#line 4051 "Zend/zend_language_scanner.c" +yy299: YYDEBUG(299, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1342 "Zend/zend_language_scanner.l" +#line 1352 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 4049 "Zend/zend_language_scanner.c" -yy300: - YYDEBUG(300, *YYCURSOR); +#line 4061 "Zend/zend_language_scanner.c" +yy301: + YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { case 'C': - case 'c': goto yy302; + case 'c': goto yy303; case 'D': - case 'd': goto yy307; + case 'd': goto yy308; case 'F': - case 'f': goto yy304; + case 'f': goto yy305; case 'H': - case 'h': goto yy301; + case 'h': goto yy302; case 'L': - case 'l': goto yy306; + case 'l': goto yy307; case 'M': - case 'm': goto yy305; + case 'm': goto yy306; case 'N': - case 'n': goto yy308; + case 'n': goto yy309; case 'T': - case 't': goto yy303; - default: goto yy186; + case 't': goto yy304; + default: goto yy187; } -yy301: - YYDEBUG(301, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy369; - if (yych == 'a') goto yy369; - goto yy186; yy302: YYDEBUG(302, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy362; - if (yych == 'l') goto yy362; - goto yy186; + if (yych == 'A') goto yy370; + if (yych == 'a') goto yy370; + goto yy187; yy303: YYDEBUG(303, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy355; - if (yych == 'r') goto yy355; - goto yy186; + if (yych == 'L') goto yy363; + if (yych == 'l') goto yy363; + goto yy187; yy304: YYDEBUG(304, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'R') goto yy356; + if (yych == 'r') goto yy356; + goto yy187; +yy305: + YYDEBUG(305, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'I') goto yy339; - if (yych <= 'T') goto yy186; - goto yy340; + if (yych == 'I') goto yy340; + if (yych <= 'T') goto yy187; + goto yy341; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy186; - goto yy339; + if (yych <= 'h') goto yy187; + goto yy340; } else { - if (yych == 'u') goto yy340; - goto yy186; + if (yych == 'u') goto yy341; + goto yy187; } } -yy305: - YYDEBUG(305, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy331; - if (yych == 'e') goto yy331; - goto yy186; yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy325; - if (yych == 'i') goto yy325; - goto yy186; + if (yych == 'E') goto yy332; + if (yych == 'e') goto yy332; + goto yy187; yy307: YYDEBUG(307, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy320; - if (yych == 'i') goto yy320; - goto yy186; + if (yych == 'I') goto yy326; + if (yych == 'i') goto yy326; + goto yy187; yy308: YYDEBUG(308, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy309; - if (yych != 'a') goto yy186; + if (yych == 'I') goto yy321; + if (yych == 'i') goto yy321; + goto yy187; yy309: YYDEBUG(309, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy310; - if (yych != 'm') goto yy186; + if (yych == 'A') goto yy310; + if (yych != 'a') goto yy187; yy310: YYDEBUG(310, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy311; - if (yych != 'e') goto yy186; + if (yych == 'M') goto yy311; + if (yych != 'm') goto yy187; yy311: YYDEBUG(311, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy312; - if (yych != 's') goto yy186; + if (yych == 'E') goto yy312; + if (yych != 'e') goto yy187; yy312: YYDEBUG(312, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy313; - if (yych != 'p') goto yy186; + if (yych == 'S') goto yy313; + if (yych != 's') goto yy187; yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy314; - if (yych != 'a') goto yy186; + if (yych == 'P') goto yy314; + if (yych != 'p') goto yy187; yy314: YYDEBUG(314, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy315; - if (yych != 'c') goto yy186; + if (yych == 'A') goto yy315; + if (yych != 'a') goto yy187; yy315: YYDEBUG(315, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy316; - if (yych != 'e') goto yy186; + if (yych == 'C') goto yy316; + if (yych != 'c') goto yy187; yy316: YYDEBUG(316, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych == 'E') goto yy317; + if (yych != 'e') goto yy187; +yy317: YYDEBUG(317, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych != '_') goto yy187; YYDEBUG(318, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy187; + YYDEBUG(319, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(319, *YYCURSOR); + YYDEBUG(320, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1705 "Zend/zend_language_scanner.l" +#line 1716 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -4185,27 +4197,27 @@ yy316: } return T_NS_C; } -#line 4189 "Zend/zend_language_scanner.c" -yy320: - YYDEBUG(320, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy321; - if (yych != 'r') goto yy186; +#line 4201 "Zend/zend_language_scanner.c" yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych == 'R') goto yy322; + if (yych != 'r') goto yy187; +yy322: YYDEBUG(322, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych != '_') goto yy187; YYDEBUG(323, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy187; + YYDEBUG(324, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(324, *YYCURSOR); + YYDEBUG(325, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1678 "Zend/zend_language_scanner.l" +#line 1689 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -4232,73 +4244,73 @@ yy321: zendlval->type = IS_STRING; return T_DIR; } -#line 4236 "Zend/zend_language_scanner.c" -yy325: - YYDEBUG(325, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy326; - if (yych != 'n') goto yy186; +#line 4248 "Zend/zend_language_scanner.c" yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy327; - if (yych != 'e') goto yy186; + if (yych == 'N') goto yy327; + if (yych != 'n') goto yy187; yy327: YYDEBUG(327, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych == 'E') goto yy328; + if (yych != 'e') goto yy187; +yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych != '_') goto yy187; YYDEBUG(329, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy187; + YYDEBUG(330, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(330, *YYCURSOR); + YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1660 "Zend/zend_language_scanner.l" +#line 1671 "Zend/zend_language_scanner.l" { zendlval->value.lval = CG(zend_lineno); zendlval->type = IS_LONG; return T_LINE; } -#line 4267 "Zend/zend_language_scanner.c" -yy331: - YYDEBUG(331, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy332; - if (yych != 't') goto yy186; +#line 4279 "Zend/zend_language_scanner.c" yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy333; - if (yych != 'h') goto yy186; + if (yych == 'T') goto yy333; + if (yych != 't') goto yy187; yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy334; - if (yych != 'o') goto yy186; + if (yych == 'H') goto yy334; + if (yych != 'h') goto yy187; yy334: YYDEBUG(334, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy335; - if (yych != 'd') goto yy186; + if (yych == 'O') goto yy335; + if (yych != 'o') goto yy187; yy335: YYDEBUG(335, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych == 'D') goto yy336; + if (yych != 'd') goto yy187; +yy336: YYDEBUG(336, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych != '_') goto yy187; YYDEBUG(337, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy187; + YYDEBUG(338, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(338, *YYCURSOR); + YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1639 "Zend/zend_language_scanner.l" +#line 1650 "Zend/zend_language_scanner.l" { const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL; const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; @@ -4319,58 +4331,58 @@ yy335: zendlval->type = IS_STRING; return T_METHOD_C; } -#line 4323 "Zend/zend_language_scanner.c" -yy339: - YYDEBUG(339, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy350; - if (yych == 'l') goto yy350; - goto yy186; +#line 4335 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy341; - if (yych != 'n') goto yy186; + if (yych == 'L') goto yy351; + if (yych == 'l') goto yy351; + goto yy187; yy341: YYDEBUG(341, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy342; - if (yych != 'c') goto yy186; + if (yych == 'N') goto yy342; + if (yych != 'n') goto yy187; yy342: YYDEBUG(342, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy343; - if (yych != 't') goto yy186; + if (yych == 'C') goto yy343; + if (yych != 'c') goto yy187; yy343: YYDEBUG(343, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy344; - if (yych != 'i') goto yy186; + if (yych == 'T') goto yy344; + if (yych != 't') goto yy187; yy344: YYDEBUG(344, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy345; - if (yych != 'o') goto yy186; + if (yych == 'I') goto yy345; + if (yych != 'i') goto yy187; yy345: YYDEBUG(345, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy346; - if (yych != 'n') goto yy186; + if (yych == 'O') goto yy346; + if (yych != 'o') goto yy187; yy346: YYDEBUG(346, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych == 'N') goto yy347; + if (yych != 'n') goto yy187; +yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych != '_') goto yy187; YYDEBUG(348, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy187; + YYDEBUG(349, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(349, *YYCURSOR); + YYDEBUG(350, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1623 "Zend/zend_language_scanner.l" +#line 1634 "Zend/zend_language_scanner.l" { const char *func_name = NULL; @@ -4386,27 +4398,27 @@ yy346: zendlval->type = IS_STRING; return T_FUNC_C; } -#line 4390 "Zend/zend_language_scanner.c" -yy350: - YYDEBUG(350, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy351; - if (yych != 'e') goto yy186; +#line 4402 "Zend/zend_language_scanner.c" yy351: YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych == 'E') goto yy352; + if (yych != 'e') goto yy187; +yy352: YYDEBUG(352, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych != '_') goto yy187; YYDEBUG(353, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy187; + YYDEBUG(354, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(354, *YYCURSOR); + YYDEBUG(355, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1666 "Zend/zend_language_scanner.l" +#line 1677 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -4418,37 +4430,37 @@ yy351: zendlval->type = IS_STRING; return T_FILE; } -#line 4422 "Zend/zend_language_scanner.c" -yy355: - YYDEBUG(355, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy356; - if (yych != 'a') goto yy186; +#line 4434 "Zend/zend_language_scanner.c" yy356: YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy357; - if (yych != 'i') goto yy186; + if (yych == 'A') goto yy357; + if (yych != 'a') goto yy187; yy357: YYDEBUG(357, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy358; - if (yych != 't') goto yy186; + if (yych == 'I') goto yy358; + if (yych != 'i') goto yy187; yy358: YYDEBUG(358, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych == 'T') goto yy359; + if (yych != 't') goto yy187; +yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych != '_') goto yy187; YYDEBUG(360, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy187; + YYDEBUG(361, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(361, *YYCURSOR); + YYDEBUG(362, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1603 "Zend/zend_language_scanner.l" +#line 1614 "Zend/zend_language_scanner.l" { const char *trait_name = NULL; @@ -4468,37 +4480,37 @@ yy358: return T_TRAIT_C; } -#line 4472 "Zend/zend_language_scanner.c" -yy362: - YYDEBUG(362, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy363; - if (yych != 'a') goto yy186; +#line 4484 "Zend/zend_language_scanner.c" yy363: YYDEBUG(363, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy364; - if (yych != 's') goto yy186; + if (yych == 'A') goto yy364; + if (yych != 'a') goto yy187; yy364: YYDEBUG(364, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'S') goto yy365; - if (yych != 's') goto yy186; + if (yych != 's') goto yy187; yy365: YYDEBUG(365, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych == 'S') goto yy366; + if (yych != 's') goto yy187; +yy366: YYDEBUG(366, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych != '_') goto yy187; YYDEBUG(367, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy187; + YYDEBUG(368, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(368, *YYCURSOR); + YYDEBUG(369, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1576 "Zend/zend_language_scanner.l" +#line 1587 "Zend/zend_language_scanner.l" { const char *class_name = NULL; @@ -4525,2648 +4537,2709 @@ yy365: } return T_CLASS_C; } -#line 4529 "Zend/zend_language_scanner.c" -yy369: - YYDEBUG(369, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy370; - if (yych != 'l') goto yy186; +#line 4541 "Zend/zend_language_scanner.c" yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy371; - if (yych != 't') goto yy186; + if (yych == 'L') goto yy371; + if (yych != 'l') goto yy187; yy371: YYDEBUG(371, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy186; + if (yych == 'T') goto yy372; + if (yych != 't') goto yy187; +yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy373; - if (yych != 'c') goto yy186; -yy373: + if (yych != '_') goto yy187; YYDEBUG(373, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy374; - if (yych != 'o') goto yy186; + if (yych == 'C') goto yy374; + if (yych != 'c') goto yy187; yy374: YYDEBUG(374, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy375; - if (yych != 'm') goto yy186; + if (yych == 'O') goto yy375; + if (yych != 'o') goto yy187; yy375: YYDEBUG(375, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy376; - if (yych != 'p') goto yy186; + if (yych == 'M') goto yy376; + if (yych != 'm') goto yy187; yy376: YYDEBUG(376, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy377; - if (yych != 'i') goto yy186; + if (yych == 'P') goto yy377; + if (yych != 'p') goto yy187; yy377: YYDEBUG(377, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy378; - if (yych != 'l') goto yy186; + if (yych == 'I') goto yy378; + if (yych != 'i') goto yy187; yy378: YYDEBUG(378, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy379; - if (yych != 'e') goto yy186; + if (yych == 'L') goto yy379; + if (yych != 'l') goto yy187; yy379: YYDEBUG(379, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy380; - if (yych != 'r') goto yy186; + if (yych == 'E') goto yy380; + if (yych != 'e') goto yy187; yy380: YYDEBUG(380, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy381; + if (yych != 'r') goto yy187; +yy381: + YYDEBUG(381, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(381, *YYCURSOR); + YYDEBUG(382, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1286 "Zend/zend_language_scanner.l" +#line 1296 "Zend/zend_language_scanner.l" { return T_HALT_COMPILER; } -#line 4595 "Zend/zend_language_scanner.c" -yy382: - YYDEBUG(382, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy386; - if (yych == 's') goto yy386; - goto yy186; +#line 4607 "Zend/zend_language_scanner.c" yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy384; - if (yych != 'e') goto yy186; + if (yych == 'S') goto yy387; + if (yych == 's') goto yy387; + goto yy187; yy384: YYDEBUG(384, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy385; + if (yych != 'e') goto yy187; +yy385: + YYDEBUG(385, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(385, *YYCURSOR); + YYDEBUG(386, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1266 "Zend/zend_language_scanner.l" +#line 1276 "Zend/zend_language_scanner.l" { return T_USE; } -#line 4619 "Zend/zend_language_scanner.c" -yy386: - YYDEBUG(386, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy387; - if (yych != 'e') goto yy186; +#line 4631 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy388; - if (yych != 't') goto yy186; + if (yych == 'E') goto yy388; + if (yych != 'e') goto yy187; yy388: YYDEBUG(388, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy389; + if (yych != 't') goto yy187; +yy389: + YYDEBUG(389, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(389, *YYCURSOR); + YYDEBUG(390, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1314 "Zend/zend_language_scanner.l" +#line 1324 "Zend/zend_language_scanner.l" { return T_UNSET; } -#line 4642 "Zend/zend_language_scanner.c" -yy390: - YYDEBUG(390, *YYCURSOR); +#line 4654 "Zend/zend_language_scanner.c" +yy391: + YYDEBUG(391, *YYCURSOR); ++YYCURSOR; YYFILL(7); yych = *YYCURSOR; -yy391: - YYDEBUG(391, *YYCURSOR); +yy392: + YYDEBUG(392, *YYCURSOR); if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy390; - if (yych <= 0x1F) goto yy193; - goto yy390; + if (yych == '\t') goto yy391; + if (yych <= 0x1F) goto yy194; + goto yy391; } else { if (yych <= 'A') { - if (yych <= '@') goto yy193; - goto yy395; + if (yych <= '@') goto yy194; + goto yy396; } else { - if (yych <= 'B') goto yy393; - if (yych <= 'C') goto yy193; - goto yy398; + if (yych <= 'B') goto yy394; + if (yych <= 'C') goto yy194; + goto yy399; } } } else { if (yych <= 'I') { - if (yych == 'F') goto yy399; - if (yych <= 'H') goto yy193; - goto yy400; + if (yych == 'F') goto yy400; + if (yych <= 'H') goto yy194; + goto yy401; } else { if (yych <= 'O') { - if (yych <= 'N') goto yy193; - goto yy394; + if (yych <= 'N') goto yy194; + goto yy395; } else { - if (yych <= 'Q') goto yy193; - if (yych <= 'R') goto yy397; - goto yy396; + if (yych <= 'Q') goto yy194; + if (yych <= 'R') goto yy398; + goto yy397; } } } } else { if (yych <= 'f') { if (yych <= 'a') { - if (yych == 'U') goto yy392; - if (yych <= '`') goto yy193; - goto yy395; + if (yych == 'U') goto yy393; + if (yych <= '`') goto yy194; + goto yy396; } else { if (yych <= 'c') { - if (yych <= 'b') goto yy393; - goto yy193; + if (yych <= 'b') goto yy394; + goto yy194; } else { - if (yych <= 'd') goto yy398; - if (yych <= 'e') goto yy193; - goto yy399; + if (yych <= 'd') goto yy399; + if (yych <= 'e') goto yy194; + goto yy400; } } } else { if (yych <= 'q') { if (yych <= 'i') { - if (yych <= 'h') goto yy193; - goto yy400; + if (yych <= 'h') goto yy194; + goto yy401; } else { - if (yych == 'o') goto yy394; - goto yy193; + if (yych == 'o') goto yy395; + goto yy194; } } else { if (yych <= 's') { - if (yych <= 'r') goto yy397; - goto yy396; + if (yych <= 'r') goto yy398; + goto yy397; } else { - if (yych != 'u') goto yy193; + if (yych != 'u') goto yy194; } } } } -yy392: - YYDEBUG(392, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy459; - if (yych == 'n') goto yy459; - goto yy193; yy393: YYDEBUG(393, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'N') goto yy460; + if (yych == 'n') goto yy460; + goto yy194; +yy394: + YYDEBUG(394, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy446; - if (yych <= 'N') goto yy193; - goto yy447; + if (yych == 'I') goto yy447; + if (yych <= 'N') goto yy194; + goto yy448; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy193; - goto yy446; + if (yych <= 'h') goto yy194; + goto yy447; } else { - if (yych == 'o') goto yy447; - goto yy193; + if (yych == 'o') goto yy448; + goto yy194; } } -yy394: - YYDEBUG(394, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy438; - if (yych == 'b') goto yy438; - goto yy193; yy395: YYDEBUG(395, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy431; - if (yych == 'r') goto yy431; - goto yy193; + if (yych == 'B') goto yy439; + if (yych == 'b') goto yy439; + goto yy194; yy396: YYDEBUG(396, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy423; - if (yych == 't') goto yy423; - goto yy193; + if (yych == 'R') goto yy432; + if (yych == 'r') goto yy432; + goto yy194; yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy421; - if (yych == 'e') goto yy421; - goto yy193; + if (yych == 'T') goto yy424; + if (yych == 't') goto yy424; + goto yy194; yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy417; - if (yych == 'o') goto yy417; - goto yy193; + if (yych == 'E') goto yy422; + if (yych == 'e') goto yy422; + goto yy194; yy399: YYDEBUG(399, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy410; - if (yych == 'l') goto yy410; - goto yy193; + if (yych == 'O') goto yy418; + if (yych == 'o') goto yy418; + goto yy194; yy400: YYDEBUG(400, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy401; - if (yych != 'n') goto yy193; + if (yych == 'L') goto yy411; + if (yych == 'l') goto yy411; + goto yy194; yy401: YYDEBUG(401, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy402; - if (yych != 't') goto yy193; + if (yych == 'N') goto yy402; + if (yych != 'n') goto yy194; yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy403; - if (yych != 'e') goto yy405; + if (yych == 'T') goto yy403; + if (yych != 't') goto yy194; yy403: YYDEBUG(403, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy408; - if (yych == 'g') goto yy408; - goto yy193; + if (yych == 'E') goto yy404; + if (yych != 'e') goto yy406; yy404: YYDEBUG(404, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy409; + if (yych == 'g') goto yy409; + goto yy194; +yy405: + YYDEBUG(405, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy405: - YYDEBUG(405, *YYCURSOR); +yy406: + YYDEBUG(406, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy404; - goto yy193; + if (yych == '\t') goto yy405; + goto yy194; } else { - if (yych <= ' ') goto yy404; - if (yych != ')') goto yy193; + if (yych <= ' ') goto yy405; + if (yych != ')') goto yy194; } - YYDEBUG(406, *YYCURSOR); - ++YYCURSOR; YYDEBUG(407, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1214 "Zend/zend_language_scanner.l" +#line 1224 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 4818 "Zend/zend_language_scanner.c" -yy408: - YYDEBUG(408, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy409; - if (yych != 'e') goto yy193; +#line 4830 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy404; - if (yych == 'r') goto yy404; - goto yy193; + if (yych == 'E') goto yy410; + if (yych != 'e') goto yy194; yy410: YYDEBUG(410, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy411; - if (yych != 'o') goto yy193; + if (yych == 'R') goto yy405; + if (yych == 'r') goto yy405; + goto yy194; yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy412; - if (yych != 'a') goto yy193; + if (yych == 'O') goto yy412; + if (yych != 'o') goto yy194; yy412: YYDEBUG(412, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy413; - if (yych != 't') goto yy193; + if (yych == 'A') goto yy413; + if (yych != 'a') goto yy194; yy413: YYDEBUG(413, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy414; + if (yych != 't') goto yy194; +yy414: + YYDEBUG(414, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(414, *YYCURSOR); + YYDEBUG(415, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy413; - goto yy193; + if (yych == '\t') goto yy414; + goto yy194; } else { - if (yych <= ' ') goto yy413; - if (yych != ')') goto yy193; + if (yych <= ' ') goto yy414; + if (yych != ')') goto yy194; } - YYDEBUG(415, *YYCURSOR); - ++YYCURSOR; YYDEBUG(416, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(417, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1218 "Zend/zend_language_scanner.l" +#line 1228 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 4866 "Zend/zend_language_scanner.c" -yy417: - YYDEBUG(417, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy418; - if (yych != 'u') goto yy193; +#line 4878 "Zend/zend_language_scanner.c" yy418: YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy419; - if (yych != 'b') goto yy193; + if (yych == 'U') goto yy419; + if (yych != 'u') goto yy194; yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy420; - if (yych != 'l') goto yy193; + if (yych == 'B') goto yy420; + if (yych != 'b') goto yy194; yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy413; - if (yych == 'e') goto yy413; - goto yy193; + if (yych == 'L') goto yy421; + if (yych != 'l') goto yy194; yy421: YYDEBUG(421, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy422; - if (yych != 'a') goto yy193; + if (yych == 'E') goto yy414; + if (yych == 'e') goto yy414; + goto yy194; yy422: YYDEBUG(422, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy413; - if (yych == 'l') goto yy413; - goto yy193; + if (yych == 'A') goto yy423; + if (yych != 'a') goto yy194; yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy424; - if (yych != 'r') goto yy193; + if (yych == 'L') goto yy414; + if (yych == 'l') goto yy414; + goto yy194; yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy425; - if (yych != 'i') goto yy193; + if (yych == 'R') goto yy425; + if (yych != 'r') goto yy194; yy425: YYDEBUG(425, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy426; - if (yych != 'n') goto yy193; + if (yych == 'I') goto yy426; + if (yych != 'i') goto yy194; yy426: YYDEBUG(426, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy427; - if (yych != 'g') goto yy193; + if (yych == 'N') goto yy427; + if (yych != 'n') goto yy194; yy427: YYDEBUG(427, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy428; + if (yych != 'g') goto yy194; +yy428: + YYDEBUG(428, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(428, *YYCURSOR); + YYDEBUG(429, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy427; - goto yy193; + if (yych == '\t') goto yy428; + goto yy194; } else { - if (yych <= ' ') goto yy427; - if (yych != ')') goto yy193; + if (yych <= ' ') goto yy428; + if (yych != ')') goto yy194; } - YYDEBUG(429, *YYCURSOR); - ++YYCURSOR; YYDEBUG(430, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1222 "Zend/zend_language_scanner.l" +#line 1232 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 4940 "Zend/zend_language_scanner.c" -yy431: - YYDEBUG(431, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy432; - if (yych != 'r') goto yy193; +#line 4952 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy433; - if (yych != 'a') goto yy193; + if (yych == 'R') goto yy433; + if (yych != 'r') goto yy194; yy433: YYDEBUG(433, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy434; - if (yych != 'y') goto yy193; + if (yych == 'A') goto yy434; + if (yych != 'a') goto yy194; yy434: YYDEBUG(434, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy435; + if (yych != 'y') goto yy194; +yy435: + YYDEBUG(435, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(435, *YYCURSOR); + YYDEBUG(436, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy434; - goto yy193; + if (yych == '\t') goto yy435; + goto yy194; } else { - if (yych <= ' ') goto yy434; - if (yych != ')') goto yy193; + if (yych <= ' ') goto yy435; + if (yych != ')') goto yy194; } - YYDEBUG(436, *YYCURSOR); - ++YYCURSOR; YYDEBUG(437, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(438, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1226 "Zend/zend_language_scanner.l" +#line 1236 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 4977 "Zend/zend_language_scanner.c" -yy438: - YYDEBUG(438, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'J') goto yy439; - if (yych != 'j') goto yy193; +#line 4989 "Zend/zend_language_scanner.c" yy439: YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy440; - if (yych != 'e') goto yy193; + if (yych == 'J') goto yy440; + if (yych != 'j') goto yy194; yy440: YYDEBUG(440, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy441; - if (yych != 'c') goto yy193; + if (yych == 'E') goto yy441; + if (yych != 'e') goto yy194; yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy442; - if (yych != 't') goto yy193; + if (yych == 'C') goto yy442; + if (yych != 'c') goto yy194; yy442: YYDEBUG(442, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy443; + if (yych != 't') goto yy194; +yy443: + YYDEBUG(443, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(443, *YYCURSOR); + YYDEBUG(444, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy442; - goto yy193; + if (yych == '\t') goto yy443; + goto yy194; } else { - if (yych <= ' ') goto yy442; - if (yych != ')') goto yy193; + if (yych <= ' ') goto yy443; + if (yych != ')') goto yy194; } - YYDEBUG(444, *YYCURSOR); - ++YYCURSOR; YYDEBUG(445, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1230 "Zend/zend_language_scanner.l" +#line 1240 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 5019 "Zend/zend_language_scanner.c" -yy446: - YYDEBUG(446, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy456; - if (yych == 'n') goto yy456; - goto yy193; +#line 5031 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy448; - if (yych != 'o') goto yy193; + if (yych == 'N') goto yy457; + if (yych == 'n') goto yy457; + goto yy194; yy448: YYDEBUG(448, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy449; - if (yych != 'l') goto yy193; + if (yych == 'O') goto yy449; + if (yych != 'o') goto yy194; yy449: YYDEBUG(449, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy454; - if (yych == 'e') goto yy454; - goto yy451; + if (yych == 'L') goto yy450; + if (yych != 'l') goto yy194; yy450: YYDEBUG(450, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy455; + if (yych == 'e') goto yy455; + goto yy452; +yy451: + YYDEBUG(451, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy451: - YYDEBUG(451, *YYCURSOR); +yy452: + YYDEBUG(452, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy450; - goto yy193; + if (yych == '\t') goto yy451; + goto yy194; } else { - if (yych <= ' ') goto yy450; - if (yych != ')') goto yy193; + if (yych <= ' ') goto yy451; + if (yych != ')') goto yy194; } - YYDEBUG(452, *YYCURSOR); - ++YYCURSOR; YYDEBUG(453, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1234 "Zend/zend_language_scanner.l" +#line 1244 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 5064 "Zend/zend_language_scanner.c" -yy454: - YYDEBUG(454, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy455; - if (yych != 'a') goto yy193; +#line 5076 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy450; - if (yych == 'n') goto yy450; - goto yy193; + if (yych == 'A') goto yy456; + if (yych != 'a') goto yy194; yy456: YYDEBUG(456, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy457; - if (yych != 'a') goto yy193; + if (yych == 'N') goto yy451; + if (yych == 'n') goto yy451; + goto yy194; yy457: YYDEBUG(457, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy458; - if (yych != 'r') goto yy193; + if (yych == 'A') goto yy458; + if (yych != 'a') goto yy194; yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy427; - if (yych == 'y') goto yy427; - goto yy193; + if (yych == 'R') goto yy459; + if (yych != 'r') goto yy194; yy459: YYDEBUG(459, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy460; - if (yych != 's') goto yy193; + if (yych == 'Y') goto yy428; + if (yych == 'y') goto yy428; + goto yy194; yy460: YYDEBUG(460, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy461; - if (yych != 'e') goto yy193; + if (yych == 'S') goto yy461; + if (yych != 's') goto yy194; yy461: YYDEBUG(461, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy462; - if (yych != 't') goto yy193; + if (yych == 'E') goto yy462; + if (yych != 'e') goto yy194; yy462: YYDEBUG(462, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy463; + if (yych != 't') goto yy194; +yy463: + YYDEBUG(463, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(463, *YYCURSOR); + YYDEBUG(464, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy462; - goto yy193; + if (yych == '\t') goto yy463; + goto yy194; } else { - if (yych <= ' ') goto yy462; - if (yych != ')') goto yy193; + if (yych <= ' ') goto yy463; + if (yych != ')') goto yy194; } - YYDEBUG(464, *YYCURSOR); - ++YYCURSOR; YYDEBUG(465, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(466, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1238 "Zend/zend_language_scanner.l" +#line 1248 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 5128 "Zend/zend_language_scanner.c" -yy466: - YYDEBUG(466, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy467; - if (yych != 'r') goto yy186; +#line 5140 "Zend/zend_language_scanner.c" yy467: YYDEBUG(467, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy468; + if (yych != 'r') goto yy187; +yy468: + YYDEBUG(468, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(468, *YYCURSOR); + YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1210 "Zend/zend_language_scanner.l" +#line 1220 "Zend/zend_language_scanner.l" { return T_VAR; } -#line 5146 "Zend/zend_language_scanner.c" -yy469: - YYDEBUG(469, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy473; - if (yych == 'm') goto yy473; - goto yy186; +#line 5158 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy471; - if (yych != 'w') goto yy186; + if (yych == 'M') goto yy474; + if (yych == 'm') goto yy474; + goto yy187; yy471: YYDEBUG(471, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy472; + if (yych != 'w') goto yy187; +yy472: + YYDEBUG(472, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(472, *YYCURSOR); + YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1202 "Zend/zend_language_scanner.l" +#line 1212 "Zend/zend_language_scanner.l" { return T_NEW; } -#line 5170 "Zend/zend_language_scanner.c" -yy473: - YYDEBUG(473, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy474; - if (yych != 'e') goto yy186; +#line 5182 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy475; - if (yych != 's') goto yy186; + if (yych == 'E') goto yy475; + if (yych != 'e') goto yy187; yy475: YYDEBUG(475, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy476; - if (yych != 'p') goto yy186; + if (yych == 'S') goto yy476; + if (yych != 's') goto yy187; yy476: YYDEBUG(476, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy477; - if (yych != 'a') goto yy186; + if (yych == 'P') goto yy477; + if (yych != 'p') goto yy187; yy477: YYDEBUG(477, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy478; - if (yych != 'c') goto yy186; + if (yych == 'A') goto yy478; + if (yych != 'a') goto yy187; yy478: YYDEBUG(478, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy479; - if (yych != 'e') goto yy186; + if (yych == 'C') goto yy479; + if (yych != 'c') goto yy187; yy479: YYDEBUG(479, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy480; + if (yych != 'e') goto yy187; +yy480: + YYDEBUG(480, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(480, *YYCURSOR); + YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1262 "Zend/zend_language_scanner.l" +#line 1272 "Zend/zend_language_scanner.l" { return T_NAMESPACE; } -#line 5213 "Zend/zend_language_scanner.c" -yy481: - YYDEBUG(481, *YYCURSOR); - ++YYCURSOR; +#line 5225 "Zend/zend_language_scanner.c" +yy482: YYDEBUG(482, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1194 "Zend/zend_language_scanner.l" +#line 1204 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5223 "Zend/zend_language_scanner.c" -yy483: - YYDEBUG(483, *YYCURSOR); +#line 5235 "Zend/zend_language_scanner.c" +yy484: + YYDEBUG(484, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy484: - YYDEBUG(484, *YYCURSOR); +yy485: + YYDEBUG(485, *YYCURSOR); if (yych <= '\f') { - if (yych <= 0x08) goto yy140; - if (yych <= '\n') goto yy483; - goto yy140; + if (yych <= 0x08) goto yy141; + if (yych <= '\n') goto yy484; + goto yy141; } else { - if (yych <= '\r') goto yy483; - if (yych == ' ') goto yy483; - goto yy140; + if (yych <= '\r') goto yy484; + if (yych == ' ') goto yy484; + goto yy141; } -yy485: - YYDEBUG(485, *YYCURSOR); - ++YYCURSOR; +yy486: YYDEBUG(486, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(487, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1370 "Zend/zend_language_scanner.l" +#line 1380 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 5249 "Zend/zend_language_scanner.c" -yy487: - YYDEBUG(487, *YYCURSOR); - ++YYCURSOR; +#line 5261 "Zend/zend_language_scanner.c" +yy488: YYDEBUG(488, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(489, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1338 "Zend/zend_language_scanner.l" +#line 1348 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 5259 "Zend/zend_language_scanner.c" -yy489: - YYDEBUG(489, *YYCURSOR); - ++YYCURSOR; +#line 5271 "Zend/zend_language_scanner.c" +yy490: YYDEBUG(490, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(491, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1164 "Zend/zend_language_scanner.l" +#line 1174 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5270 "Zend/zend_language_scanner.c" -yy491: - YYDEBUG(491, *YYCURSOR); +#line 5282 "Zend/zend_language_scanner.c" +yy492: + YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy498; - if (yych <= 'N') goto yy186; - goto yy499; + if (yych == 'I') goto yy499; + if (yych <= 'N') goto yy187; + goto yy500; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy186; - goto yy498; + if (yych <= 'h') goto yy187; + goto yy499; } else { - if (yych == 'o') goto yy499; - goto yy186; + if (yych == 'o') goto yy500; + goto yy187; } } -yy492: - YYDEBUG(492, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy493; - if (yych != 'b') goto yy186; yy493: YYDEBUG(493, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy494; - if (yych != 'l') goto yy186; + if (yych == 'B') goto yy494; + if (yych != 'b') goto yy187; yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy495; - if (yych != 'i') goto yy186; + if (yych == 'L') goto yy495; + if (yych != 'l') goto yy187; yy495: YYDEBUG(495, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy496; - if (yych != 'c') goto yy186; + if (yych == 'I') goto yy496; + if (yych != 'i') goto yy187; yy496: YYDEBUG(496, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy497; + if (yych != 'c') goto yy187; +yy497: + YYDEBUG(497, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(497, *YYCURSOR); + YYDEBUG(498, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1310 "Zend/zend_language_scanner.l" +#line 1320 "Zend/zend_language_scanner.l" { return T_PUBLIC; } -#line 5319 "Zend/zend_language_scanner.c" -yy498: - YYDEBUG(498, *YYCURSOR); +#line 5331 "Zend/zend_language_scanner.c" +yy499: + YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'V') { - if (yych == 'N') goto yy507; - if (yych <= 'U') goto yy186; - goto yy508; + if (yych == 'N') goto yy508; + if (yych <= 'U') goto yy187; + goto yy509; } else { if (yych <= 'n') { - if (yych <= 'm') goto yy186; - goto yy507; + if (yych <= 'm') goto yy187; + goto yy508; } else { - if (yych == 'v') goto yy508; - goto yy186; + if (yych == 'v') goto yy509; + goto yy187; } } -yy499: - YYDEBUG(499, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy500; - if (yych != 't') goto yy186; yy500: YYDEBUG(500, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy501; - if (yych != 'e') goto yy186; + if (yych == 'T') goto yy501; + if (yych != 't') goto yy187; yy501: YYDEBUG(501, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy502; - if (yych != 'c') goto yy186; + if (yych == 'E') goto yy502; + if (yych != 'e') goto yy187; yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy503; - if (yych != 't') goto yy186; + if (yych == 'C') goto yy503; + if (yych != 'c') goto yy187; yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy504; - if (yych != 'e') goto yy186; + if (yych == 'T') goto yy504; + if (yych != 't') goto yy187; yy504: YYDEBUG(504, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy505; - if (yych != 'd') goto yy186; + if (yych == 'E') goto yy505; + if (yych != 'e') goto yy187; yy505: YYDEBUG(505, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy506; + if (yych != 'd') goto yy187; +yy506: + YYDEBUG(506, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(506, *YYCURSOR); + YYDEBUG(507, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1306 "Zend/zend_language_scanner.l" +#line 1316 "Zend/zend_language_scanner.l" { return T_PROTECTED; } -#line 5378 "Zend/zend_language_scanner.c" -yy507: - YYDEBUG(507, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy513; - if (yych == 't') goto yy513; - goto yy186; +#line 5390 "Zend/zend_language_scanner.c" yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy509; - if (yych != 'a') goto yy186; + if (yych == 'T') goto yy514; + if (yych == 't') goto yy514; + goto yy187; yy509: YYDEBUG(509, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy510; - if (yych != 't') goto yy186; + if (yych == 'A') goto yy510; + if (yych != 'a') goto yy187; yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy511; - if (yych != 'e') goto yy186; + if (yych == 'T') goto yy511; + if (yych != 't') goto yy187; yy511: YYDEBUG(511, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy512; + if (yych != 'e') goto yy187; +yy512: + YYDEBUG(512, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(512, *YYCURSOR); + YYDEBUG(513, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1302 "Zend/zend_language_scanner.l" +#line 1312 "Zend/zend_language_scanner.l" { return T_PRIVATE; } -#line 5412 "Zend/zend_language_scanner.c" -yy513: - YYDEBUG(513, *YYCURSOR); +#line 5424 "Zend/zend_language_scanner.c" +yy514: + YYDEBUG(514, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(514, *YYCURSOR); + YYDEBUG(515, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1140 "Zend/zend_language_scanner.l" +#line 1150 "Zend/zend_language_scanner.l" { return T_PRINT; } -#line 5425 "Zend/zend_language_scanner.c" -yy515: - YYDEBUG(515, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy520; - if (yych == 'o') goto yy520; - goto yy186; +#line 5437 "Zend/zend_language_scanner.c" yy516: YYDEBUG(516, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy517; - if (yych != 't') goto yy186; + if (yych == 'O') goto yy521; + if (yych == 'o') goto yy521; + goto yy187; yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy518; - if (yych != 'o') goto yy186; + if (yych == 'T') goto yy518; + if (yych != 't') goto yy187; yy518: YYDEBUG(518, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy519; + if (yych != 'o') goto yy187; +yy519: + YYDEBUG(519, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(519, *YYCURSOR); + YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1132 "Zend/zend_language_scanner.l" +#line 1142 "Zend/zend_language_scanner.l" { return T_GOTO; } -#line 5454 "Zend/zend_language_scanner.c" -yy520: - YYDEBUG(520, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy521; - if (yych != 'b') goto yy186; +#line 5466 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy522; - if (yych != 'a') goto yy186; + if (yych == 'B') goto yy522; + if (yych != 'b') goto yy187; yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy523; - if (yych != 'l') goto yy186; + if (yych == 'A') goto yy523; + if (yych != 'a') goto yy187; yy523: YYDEBUG(523, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy524; + if (yych != 'l') goto yy187; +yy524: + YYDEBUG(524, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(524, *YYCURSOR); + YYDEBUG(525, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1274 "Zend/zend_language_scanner.l" +#line 1284 "Zend/zend_language_scanner.l" { return T_GLOBAL; } -#line 5482 "Zend/zend_language_scanner.c" -yy525: - YYDEBUG(525, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy533; - goto yy193; +#line 5494 "Zend/zend_language_scanner.c" yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; - goto yy180; + if (yych == '<') goto yy534; + goto yy194; yy527: YYDEBUG(527, *YYCURSOR); yych = *++YYCURSOR; - goto yy178; + goto yy181; yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy529; - if (yych != 'e') goto yy186; + goto yy179; yy529: YYDEBUG(529, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy530; - if (yych != 'a') goto yy186; + if (yych == 'E') goto yy530; + if (yych != 'e') goto yy187; yy530: YYDEBUG(530, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy531; - if (yych != 'k') goto yy186; + if (yych == 'A') goto yy531; + if (yych != 'a') goto yy187; yy531: YYDEBUG(531, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'K') goto yy532; + if (yych != 'k') goto yy187; +yy532: + YYDEBUG(532, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(532, *YYCURSOR); + YYDEBUG(533, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1124 "Zend/zend_language_scanner.l" +#line 1134 "Zend/zend_language_scanner.l" { return T_BREAK; } -#line 5523 "Zend/zend_language_scanner.c" -yy533: - YYDEBUG(533, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy269; - goto yy193; +#line 5535 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy541; - if (yych == 'a') goto yy541; - goto yy186; + if (yych == '<') goto yy270; + goto yy194; yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy536; - if (yych != 'i') goto yy186; + if (yych == 'A') goto yy542; + if (yych == 'a') goto yy542; + goto yy187; yy536: YYDEBUG(536, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy537; - if (yych != 't') goto yy186; + if (yych == 'I') goto yy537; + if (yych != 'i') goto yy187; yy537: YYDEBUG(537, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy538; - if (yych != 'c') goto yy186; + if (yych == 'T') goto yy538; + if (yych != 't') goto yy187; yy538: YYDEBUG(538, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy539; - if (yych != 'h') goto yy186; + if (yych == 'C') goto yy539; + if (yych != 'c') goto yy187; yy539: YYDEBUG(539, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy540; + if (yych != 'h') goto yy187; +yy540: + YYDEBUG(540, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(540, *YYCURSOR); + YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1108 "Zend/zend_language_scanner.l" +#line 1118 "Zend/zend_language_scanner.l" { return T_SWITCH; } -#line 5567 "Zend/zend_language_scanner.c" -yy541: - YYDEBUG(541, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy542; - if (yych != 't') goto yy186; +#line 5579 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy543; - if (yych != 'i') goto yy186; + if (yych == 'T') goto yy543; + if (yych != 't') goto yy187; yy543: YYDEBUG(543, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy544; - if (yych != 'c') goto yy186; + if (yych == 'I') goto yy544; + if (yych != 'i') goto yy187; yy544: YYDEBUG(544, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy545; + if (yych != 'c') goto yy187; +yy545: + YYDEBUG(545, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(545, *YYCURSOR); + YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1290 "Zend/zend_language_scanner.l" +#line 1300 "Zend/zend_language_scanner.l" { return T_STATIC; } -#line 5595 "Zend/zend_language_scanner.c" -yy546: - YYDEBUG(546, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy557; - if (yych == 's') goto yy557; - goto yy186; +#line 5607 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy555; - if (yych == 'd') goto yy555; - goto yy186; + if (yych == 'S') goto yy558; + if (yych == 's') goto yy558; + goto yy187; yy548: YYDEBUG(548, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy551; - if (yych == 'r') goto yy551; - goto yy186; + if (yych == 'D') goto yy556; + if (yych == 'd') goto yy556; + goto yy187; yy549: YYDEBUG(549, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy552; + if (yych == 'r') goto yy552; + goto yy187; +yy550: + YYDEBUG(550, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(550, *YYCURSOR); + YYDEBUG(551, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1104 "Zend/zend_language_scanner.l" +#line 1114 "Zend/zend_language_scanner.l" { return T_AS; } -#line 5626 "Zend/zend_language_scanner.c" -yy551: - YYDEBUG(551, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy552; - if (yych != 'a') goto yy186; +#line 5638 "Zend/zend_language_scanner.c" yy552: YYDEBUG(552, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy553; - if (yych != 'y') goto yy186; + if (yych == 'A') goto yy553; + if (yych != 'a') goto yy187; yy553: YYDEBUG(553, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy554; + if (yych != 'y') goto yy187; +yy554: + YYDEBUG(554, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(554, *YYCURSOR); + YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1326 "Zend/zend_language_scanner.l" +#line 1336 "Zend/zend_language_scanner.l" { return T_ARRAY; } -#line 5649 "Zend/zend_language_scanner.c" -yy555: - YYDEBUG(555, *YYCURSOR); +#line 5661 "Zend/zend_language_scanner.c" +yy556: + YYDEBUG(556, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(556, *YYCURSOR); + YYDEBUG(557, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1422 "Zend/zend_language_scanner.l" +#line 1432 "Zend/zend_language_scanner.l" { return T_LOGICAL_AND; } -#line 5662 "Zend/zend_language_scanner.c" -yy557: - YYDEBUG(557, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy558; - if (yych != 't') goto yy186; +#line 5674 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy559; - if (yych != 'r') goto yy186; + if (yych == 'T') goto yy559; + if (yych != 't') goto yy187; yy559: YYDEBUG(559, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy560; - if (yych != 'a') goto yy186; + if (yych == 'R') goto yy560; + if (yych != 'r') goto yy187; yy560: YYDEBUG(560, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy561; - if (yych != 'c') goto yy186; + if (yych == 'A') goto yy561; + if (yych != 'a') goto yy187; yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy562; - if (yych != 't') goto yy186; + if (yych == 'C') goto yy562; + if (yych != 'c') goto yy187; yy562: YYDEBUG(562, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy563; + if (yych != 't') goto yy187; +yy563: + YYDEBUG(563, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(563, *YYCURSOR); + YYDEBUG(564, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1294 "Zend/zend_language_scanner.l" +#line 1304 "Zend/zend_language_scanner.l" { return T_ABSTRACT; } -#line 5700 "Zend/zend_language_scanner.c" -yy564: - YYDEBUG(564, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy565; - if (yych != 'i') goto yy186; +#line 5712 "Zend/zend_language_scanner.c" yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy566; - if (yych != 'l') goto yy186; + if (yych == 'I') goto yy566; + if (yych != 'i') goto yy187; yy566: YYDEBUG(566, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy567; - if (yych != 'e') goto yy186; + if (yych == 'L') goto yy567; + if (yych != 'l') goto yy187; yy567: YYDEBUG(567, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy568; + if (yych != 'e') goto yy187; +yy568: + YYDEBUG(568, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(568, *YYCURSOR); + YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1064 "Zend/zend_language_scanner.l" +#line 1074 "Zend/zend_language_scanner.l" { return T_WHILE; } -#line 5728 "Zend/zend_language_scanner.c" -yy569: - YYDEBUG(569, *YYCURSOR); +#line 5740 "Zend/zend_language_scanner.c" +yy570: + YYDEBUG(570, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(570, *YYCURSOR); + YYDEBUG(571, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1048 "Zend/zend_language_scanner.l" +#line 1058 "Zend/zend_language_scanner.l" { return T_IF; } -#line 5741 "Zend/zend_language_scanner.c" -yy571: - YYDEBUG(571, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy613; - if (yych == 'p') goto yy613; - goto yy186; +#line 5753 "Zend/zend_language_scanner.c" yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'P') goto yy614; + if (yych == 'p') goto yy614; + goto yy187; +yy573: + YYDEBUG(573, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'C') { - if (yych <= 'B') goto yy186; - goto yy580; + if (yych <= 'B') goto yy187; + goto yy581; } else { - if (yych <= 'R') goto yy186; - if (yych <= 'S') goto yy578; - goto yy579; + if (yych <= 'R') goto yy187; + if (yych <= 'S') goto yy579; + goto yy580; } } else { if (yych <= 'r') { - if (yych == 'c') goto yy580; - goto yy186; + if (yych == 'c') goto yy581; + goto yy187; } else { - if (yych <= 's') goto yy578; - if (yych <= 't') goto yy579; - goto yy186; + if (yych <= 's') goto yy579; + if (yych <= 't') goto yy580; + goto yy187; } } -yy573: - YYDEBUG(573, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy574; - if (yych != 's') goto yy186; yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy575; - if (yych != 'e') goto yy186; + if (yych == 'S') goto yy575; + if (yych != 's') goto yy187; yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy576; - if (yych != 't') goto yy186; + if (yych == 'E') goto yy576; + if (yych != 'e') goto yy187; yy576: YYDEBUG(576, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy577; + if (yych != 't') goto yy187; +yy577: + YYDEBUG(577, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(577, *YYCURSOR); + YYDEBUG(578, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1278 "Zend/zend_language_scanner.l" +#line 1288 "Zend/zend_language_scanner.l" { return T_ISSET; } -#line 5797 "Zend/zend_language_scanner.c" -yy578: - YYDEBUG(578, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy599; - if (yych == 't') goto yy599; - goto yy186; +#line 5809 "Zend/zend_language_scanner.c" yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy592; - if (yych == 'e') goto yy592; - goto yy186; + if (yych == 'T') goto yy600; + if (yych == 't') goto yy600; + goto yy187; yy580: YYDEBUG(580, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy581; - if (yych != 'l') goto yy186; + if (yych == 'E') goto yy593; + if (yych == 'e') goto yy593; + goto yy187; yy581: YYDEBUG(581, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy582; - if (yych != 'u') goto yy186; + if (yych == 'L') goto yy582; + if (yych != 'l') goto yy187; yy582: YYDEBUG(582, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy583; - if (yych != 'd') goto yy186; + if (yych == 'U') goto yy583; + if (yych != 'u') goto yy187; yy583: YYDEBUG(583, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy584; - if (yych != 'e') goto yy186; + if (yych == 'D') goto yy584; + if (yych != 'd') goto yy187; yy584: YYDEBUG(584, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy585; + if (yych != 'e') goto yy187; +yy585: + YYDEBUG(585, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy185; + if (yych >= '0') goto yy186; } else { - if (yych <= '@') goto yy585; - if (yych <= 'Z') goto yy185; + if (yych <= '@') goto yy586; + if (yych <= 'Z') goto yy186; } } else { if (yych <= '`') { - if (yych <= '_') goto yy586; + if (yych <= '_') goto yy587; } else { - if (yych <= 'z') goto yy185; - if (yych >= 0x7F) goto yy185; + if (yych <= 'z') goto yy186; + if (yych >= 0x7F) goto yy186; } } -yy585: - YYDEBUG(585, *YYCURSOR); +yy586: + YYDEBUG(586, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1246 "Zend/zend_language_scanner.l" +#line 1256 "Zend/zend_language_scanner.l" { return T_INCLUDE; } -#line 5855 "Zend/zend_language_scanner.c" -yy586: - YYDEBUG(586, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy587; - if (yych != 'o') goto yy186; +#line 5867 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy588; - if (yych != 'n') goto yy186; + if (yych == 'O') goto yy588; + if (yych != 'o') goto yy187; yy588: YYDEBUG(588, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy589; - if (yych != 'c') goto yy186; + if (yych == 'N') goto yy589; + if (yych != 'n') goto yy187; yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy590; - if (yych != 'e') goto yy186; + if (yych == 'C') goto yy590; + if (yych != 'c') goto yy187; yy590: YYDEBUG(590, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy591; + if (yych != 'e') goto yy187; +yy591: + YYDEBUG(591, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(591, *YYCURSOR); + YYDEBUG(592, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1250 "Zend/zend_language_scanner.l" +#line 1260 "Zend/zend_language_scanner.l" { return T_INCLUDE_ONCE; } -#line 5888 "Zend/zend_language_scanner.c" -yy592: - YYDEBUG(592, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy593; - if (yych != 'r') goto yy186; +#line 5900 "Zend/zend_language_scanner.c" yy593: YYDEBUG(593, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy594; - if (yych != 'f') goto yy186; + if (yych == 'R') goto yy594; + if (yych != 'r') goto yy187; yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy595; - if (yych != 'a') goto yy186; + if (yych == 'F') goto yy595; + if (yych != 'f') goto yy187; yy595: YYDEBUG(595, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy596; - if (yych != 'c') goto yy186; + if (yych == 'A') goto yy596; + if (yych != 'a') goto yy187; yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy597; - if (yych != 'e') goto yy186; + if (yych == 'C') goto yy597; + if (yych != 'c') goto yy187; yy597: YYDEBUG(597, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy598; + if (yych != 'e') goto yy187; +yy598: + YYDEBUG(598, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(598, *YYCURSOR); + YYDEBUG(599, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1148 "Zend/zend_language_scanner.l" +#line 1158 "Zend/zend_language_scanner.l" { return T_INTERFACE; } -#line 5926 "Zend/zend_language_scanner.c" -yy599: - YYDEBUG(599, *YYCURSOR); +#line 5938 "Zend/zend_language_scanner.c" +yy600: + YYDEBUG(600, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy600; - if (yych <= 'D') goto yy186; - goto yy601; + if (yych == 'A') goto yy601; + if (yych <= 'D') goto yy187; + goto yy602; } else { if (yych <= 'a') { - if (yych <= '`') goto yy186; + if (yych <= '`') goto yy187; } else { - if (yych == 'e') goto yy601; - goto yy186; + if (yych == 'e') goto yy602; + goto yy187; } } -yy600: - YYDEBUG(600, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy607; - if (yych == 'n') goto yy607; - goto yy186; yy601: YYDEBUG(601, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy602; - if (yych != 'a') goto yy186; + if (yych == 'N') goto yy608; + if (yych == 'n') goto yy608; + goto yy187; yy602: YYDEBUG(602, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy603; - if (yych != 'd') goto yy186; + if (yych == 'A') goto yy603; + if (yych != 'a') goto yy187; yy603: YYDEBUG(603, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy604; - if (yych != 'o') goto yy186; + if (yych == 'D') goto yy604; + if (yych != 'd') goto yy187; yy604: YYDEBUG(604, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy605; - if (yych != 'f') goto yy186; + if (yych == 'O') goto yy605; + if (yych != 'o') goto yy187; yy605: YYDEBUG(605, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy606; + if (yych != 'f') goto yy187; +yy606: + YYDEBUG(606, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(606, *YYCURSOR); + YYDEBUG(607, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1270 "Zend/zend_language_scanner.l" +#line 1280 "Zend/zend_language_scanner.l" { return T_INSTEADOF; } -#line 5980 "Zend/zend_language_scanner.c" -yy607: - YYDEBUG(607, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy608; - if (yych != 'c') goto yy186; +#line 5992 "Zend/zend_language_scanner.c" yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy609; - if (yych != 'e') goto yy186; + if (yych == 'C') goto yy609; + if (yych != 'c') goto yy187; yy609: YYDEBUG(609, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy610; - if (yych != 'o') goto yy186; + if (yych == 'E') goto yy610; + if (yych != 'e') goto yy187; yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy611; - if (yych != 'f') goto yy186; + if (yych == 'O') goto yy611; + if (yych != 'o') goto yy187; yy611: YYDEBUG(611, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy612; + if (yych != 'f') goto yy187; +yy612: + YYDEBUG(612, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(612, *YYCURSOR); + YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1100 "Zend/zend_language_scanner.l" +#line 1110 "Zend/zend_language_scanner.l" { return T_INSTANCEOF; } -#line 6013 "Zend/zend_language_scanner.c" -yy613: - YYDEBUG(613, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy614; - if (yych != 'l') goto yy186; +#line 6025 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy615; - if (yych != 'e') goto yy186; + if (yych == 'L') goto yy615; + if (yych != 'l') goto yy187; yy615: YYDEBUG(615, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy616; - if (yych != 'm') goto yy186; + if (yych == 'E') goto yy616; + if (yych != 'e') goto yy187; yy616: YYDEBUG(616, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy617; - if (yych != 'e') goto yy186; + if (yych == 'M') goto yy617; + if (yych != 'm') goto yy187; yy617: YYDEBUG(617, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy618; - if (yych != 'n') goto yy186; + if (yych == 'E') goto yy618; + if (yych != 'e') goto yy187; yy618: YYDEBUG(618, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy619; - if (yych != 't') goto yy186; + if (yych == 'N') goto yy619; + if (yych != 'n') goto yy187; yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy620; - if (yych != 's') goto yy186; + if (yych == 'T') goto yy620; + if (yych != 't') goto yy187; yy620: YYDEBUG(620, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy621; + if (yych != 's') goto yy187; +yy621: + YYDEBUG(621, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(621, *YYCURSOR); + YYDEBUG(622, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1160 "Zend/zend_language_scanner.l" +#line 1170 "Zend/zend_language_scanner.l" { return T_IMPLEMENTS; } -#line 6061 "Zend/zend_language_scanner.c" -yy622: - YYDEBUG(622, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy630; - if (yych == 'r') goto yy630; - goto yy186; +#line 6073 "Zend/zend_language_scanner.c" yy623: YYDEBUG(623, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'R') goto yy631; + if (yych == 'r') goto yy631; + goto yy187; +yy624: + YYDEBUG(624, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'A') goto yy626; - if (yych <= 'X') goto yy186; + if (yych == 'A') goto yy627; + if (yych <= 'X') goto yy187; } else { if (yych <= 'a') { - if (yych <= '`') goto yy186; - goto yy626; + if (yych <= '`') goto yy187; + goto yy627; } else { - if (yych != 'y') goto yy186; + if (yych != 'y') goto yy187; } } - YYDEBUG(624, *YYCURSOR); + YYDEBUG(625, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(625, *YYCURSOR); + YYDEBUG(626, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1036 "Zend/zend_language_scanner.l" +#line 1042 "Zend/zend_language_scanner.l" { return T_TRY; } -#line 6093 "Zend/zend_language_scanner.c" -yy626: - YYDEBUG(626, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy627; - if (yych != 'i') goto yy186; +#line 6105 "Zend/zend_language_scanner.c" yy627: YYDEBUG(627, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy628; - if (yych != 't') goto yy186; + if (yych == 'I') goto yy628; + if (yych != 'i') goto yy187; yy628: YYDEBUG(628, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy629; + if (yych != 't') goto yy187; +yy629: + YYDEBUG(629, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(629, *YYCURSOR); + YYDEBUG(630, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1152 "Zend/zend_language_scanner.l" +#line 1162 "Zend/zend_language_scanner.l" { return T_TRAIT; } -#line 6116 "Zend/zend_language_scanner.c" -yy630: - YYDEBUG(630, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy631; - if (yych != 'o') goto yy186; +#line 6128 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy632; - if (yych != 'w') goto yy186; + if (yych == 'O') goto yy632; + if (yych != 'o') goto yy187; yy632: YYDEBUG(632, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy633; + if (yych != 'w') goto yy187; +yy633: + YYDEBUG(633, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(633, *YYCURSOR); + YYDEBUG(634, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1044 "Zend/zend_language_scanner.l" +#line 1054 "Zend/zend_language_scanner.l" { return T_THROW; } -#line 6139 "Zend/zend_language_scanner.c" -yy634: - YYDEBUG(634, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'Q') goto yy636; - if (yych <= 'S') goto yy186; - } else { - if (yych <= 'q') { - if (yych <= 'p') goto yy186; - goto yy636; - } else { - if (yych != 't') goto yy186; - } - } +#line 6151 "Zend/zend_language_scanner.c" +yy635: YYDEBUG(635, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy648; - if (yych == 'u') goto yy648; - goto yy186; + if (yych == 'E') goto yy636; + if (yych != 'e') goto yy187; yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy637; - if (yych != 'u') goto yy186; + if (yych == 'L') goto yy637; + if (yych != 'l') goto yy187; yy637: YYDEBUG(637, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy638; - if (yych != 'i') goto yy186; + if (yych == 'D') goto yy638; + if (yych != 'd') goto yy187; yy638: YYDEBUG(638, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy639; - if (yych != 'r') goto yy186; -yy639: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy186; + } YYDEBUG(639, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy640; - if (yych != 'e') goto yy186; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1038 "Zend/zend_language_scanner.l" + { + return T_YIELD; +} +#line 6179 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy185; - } else { - if (yych <= '@') goto yy641; - if (yych <= 'Z') goto yy185; - } + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych == 'Q') goto yy642; + if (yych <= 'S') goto yy187; } else { - if (yych <= '`') { - if (yych <= '_') goto yy642; + if (yych <= 'q') { + if (yych <= 'p') goto yy187; + goto yy642; } else { - if (yych <= 'z') goto yy185; - if (yych >= 0x7F) goto yy185; + if (yych != 't') goto yy187; } } -yy641: YYDEBUG(641, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1254 "Zend/zend_language_scanner.l" - { - return T_REQUIRE; -} -#line 6204 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'U') goto yy654; + if (yych == 'u') goto yy654; + goto yy187; yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy643; - if (yych != 'o') goto yy186; + if (yych == 'U') goto yy643; + if (yych != 'u') goto yy187; yy643: YYDEBUG(643, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy644; - if (yych != 'n') goto yy186; + if (yych == 'I') goto yy644; + if (yych != 'i') goto yy187; yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy645; - if (yych != 'c') goto yy186; + if (yych == 'R') goto yy645; + if (yych != 'r') goto yy187; yy645: YYDEBUG(645, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'E') goto yy646; - if (yych != 'e') goto yy186; + if (yych != 'e') goto yy187; yy646: YYDEBUG(646, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy186; + } else { + if (yych <= '@') goto yy647; + if (yych <= 'Z') goto yy186; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy648; + } else { + if (yych <= 'z') goto yy186; + if (yych >= 0x7F) goto yy186; + } } +yy647: YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1258 "Zend/zend_language_scanner.l" +#line 1264 "Zend/zend_language_scanner.l" { - return T_REQUIRE_ONCE; + return T_REQUIRE; } -#line 6237 "Zend/zend_language_scanner.c" +#line 6244 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy649; - if (yych != 'r') goto yy186; + if (yych == 'O') goto yy649; + if (yych != 'o') goto yy187; yy649: YYDEBUG(649, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'N') goto yy650; - if (yych != 'n') goto yy186; + if (yych != 'n') goto yy187; yy650: YYDEBUG(650, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy651; + if (yych != 'c') goto yy187; +yy651: + YYDEBUG(651, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy652; + if (yych != 'e') goto yy187; +yy652: + YYDEBUG(652, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(651, *YYCURSOR); + YYDEBUG(653, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1268 "Zend/zend_language_scanner.l" + { + return T_REQUIRE_ONCE; +} +#line 6277 "Zend/zend_language_scanner.c" +yy654: + YYDEBUG(654, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy655; + if (yych != 'r') goto yy187; +yy655: + YYDEBUG(655, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy656; + if (yych != 'n') goto yy187; +yy656: + YYDEBUG(656, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy186; + } + YYDEBUG(657, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1032 "Zend/zend_language_scanner.l" +#line 1034 "Zend/zend_language_scanner.l" { return T_RETURN; } -#line 6260 "Zend/zend_language_scanner.c" -yy652: - YYDEBUG(652, *YYCURSOR); +#line 6300 "Zend/zend_language_scanner.c" +yy658: + YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'L') { - if (yych <= 'K') goto yy186; - goto yy675; + if (yych <= 'K') goto yy187; + goto yy681; } else { - if (yych <= 'R') goto yy186; - if (yych <= 'S') goto yy674; - goto yy673; + if (yych <= 'R') goto yy187; + if (yych <= 'S') goto yy680; + goto yy679; } } else { if (yych <= 'r') { - if (yych == 'l') goto yy675; - goto yy186; + if (yych == 'l') goto yy681; + goto yy187; } else { - if (yych <= 's') goto yy674; - if (yych <= 't') goto yy673; - goto yy186; + if (yych <= 's') goto yy680; + if (yych <= 't') goto yy679; + goto yy187; } } -yy653: - YYDEBUG(653, *YYCURSOR); +yy659: + YYDEBUG(659, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'A') goto yy665; - if (yych <= 'N') goto yy186; - goto yy666; + if (yych == 'A') goto yy671; + if (yych <= 'N') goto yy187; + goto yy672; } else { if (yych <= 'a') { - if (yych <= '`') goto yy186; - goto yy665; + if (yych <= '`') goto yy187; + goto yy671; } else { - if (yych == 'o') goto yy666; - goto yy186; + if (yych == 'o') goto yy672; + goto yy187; } } -yy654: - YYDEBUG(654, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy655; - if (yych != 'n') goto yy186; -yy655: - YYDEBUG(655, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'R') goto yy186; - if (yych >= 'T') goto yy657; - } else { - if (yych <= 'r') goto yy186; - if (yych <= 's') goto yy656; - if (yych <= 't') goto yy657; - goto yy186; - } -yy656: - YYDEBUG(656, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy663; - if (yych == 't') goto yy663; - goto yy186; -yy657: - YYDEBUG(657, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy658; - if (yych != 'i') goto yy186; -yy658: - YYDEBUG(658, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy659; - if (yych != 'n') goto yy186; -yy659: - YYDEBUG(659, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy660; - if (yych != 'u') goto yy186; yy660: YYDEBUG(660, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy661; - if (yych != 'e') goto yy186; + if (yych == 'N') goto yy661; + if (yych != 'n') goto yy187; yy661: YYDEBUG(661, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'R') goto yy187; + if (yych >= 'T') goto yy663; + } else { + if (yych <= 'r') goto yy187; + if (yych <= 's') goto yy662; + if (yych <= 't') goto yy663; + goto yy187; } +yy662: YYDEBUG(662, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1128 "Zend/zend_language_scanner.l" - { - return T_CONTINUE; -} -#line 6354 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy669; + if (yych == 't') goto yy669; + goto yy187; yy663: YYDEBUG(663, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; - } + yych = *++YYCURSOR; + if (yych == 'I') goto yy664; + if (yych != 'i') goto yy187; +yy664: YYDEBUG(664, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1028 "Zend/zend_language_scanner.l" - { - return T_CONST; -} -#line 6367 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy665; + if (yych != 'n') goto yy187; yy665: YYDEBUG(665, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy670; - if (yych == 's') goto yy670; - goto yy186; + if (yych == 'U') goto yy666; + if (yych != 'u') goto yy187; yy666: YYDEBUG(666, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy667; - if (yych != 'n') goto yy186; + if (yych == 'E') goto yy667; + if (yych != 'e') goto yy187; yy667: YYDEBUG(667, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy668; - if (yych != 'e') goto yy186; -yy668: - YYDEBUG(668, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(669, *YYCURSOR); + YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1206 "Zend/zend_language_scanner.l" +#line 1138 "Zend/zend_language_scanner.l" { - return T_CLONE; + return T_CONTINUE; } -#line 6396 "Zend/zend_language_scanner.c" -yy670: - YYDEBUG(670, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy671; - if (yych != 's') goto yy186; -yy671: - YYDEBUG(671, *YYCURSOR); +#line 6394 "Zend/zend_language_scanner.c" +yy669: + YYDEBUG(669, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(672, *YYCURSOR); + YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1144 "Zend/zend_language_scanner.l" +#line 1030 "Zend/zend_language_scanner.l" { - return T_CLASS; + return T_CONST; } -#line 6414 "Zend/zend_language_scanner.c" +#line 6407 "Zend/zend_language_scanner.c" +yy671: + YYDEBUG(671, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy676; + if (yych == 's') goto yy676; + goto yy187; +yy672: + YYDEBUG(672, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy673; + if (yych != 'n') goto yy187; yy673: YYDEBUG(673, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy684; - if (yych == 'c') goto yy684; - goto yy186; + if (yych == 'E') goto yy674; + if (yych != 'e') goto yy187; yy674: YYDEBUG(674, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy682; - if (yych == 'e') goto yy682; - goto yy186; -yy675: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy186; + } YYDEBUG(675, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy676; - if (yych != 'l') goto yy186; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1216 "Zend/zend_language_scanner.l" + { + return T_CLONE; +} +#line 6436 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy677; - if (yych != 'a') goto yy186; + if (yych == 'S') goto yy677; + if (yych != 's') goto yy187; yy677: YYDEBUG(677, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy678; - if (yych != 'b') goto yy186; -yy678: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy186; + } YYDEBUG(678, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy679; - if (yych != 'l') goto yy186; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1154 "Zend/zend_language_scanner.l" + { + return T_CLASS; +} +#line 6454 "Zend/zend_language_scanner.c" yy679: YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy680; - if (yych != 'e') goto yy186; + if (yych == 'C') goto yy690; + if (yych == 'c') goto yy690; + goto yy187; yy680: YYDEBUG(680, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy688; + if (yych == 'e') goto yy688; + goto yy187; +yy681: YYDEBUG(681, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1330 "Zend/zend_language_scanner.l" - { - return T_CALLABLE; -} -#line 6464 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy682; + if (yych != 'l') goto yy187; yy682: YYDEBUG(682, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy683; + if (yych != 'a') goto yy187; +yy683: YYDEBUG(683, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1116 "Zend/zend_language_scanner.l" - { - return T_CASE; -} -#line 6477 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'B') goto yy684; + if (yych != 'b') goto yy187; yy684: YYDEBUG(684, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy685; - if (yych != 'h') goto yy186; + if (yych == 'L') goto yy685; + if (yych != 'l') goto yy187; yy685: YYDEBUG(685, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy686; + if (yych != 'e') goto yy187; +yy686: + YYDEBUG(686, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(686, *YYCURSOR); + YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1040 "Zend/zend_language_scanner.l" +#line 1340 "Zend/zend_language_scanner.l" { - return T_CATCH; + return T_CALLABLE; } -#line 6495 "Zend/zend_language_scanner.c" -yy687: - YYDEBUG(687, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy704; - if (yych == 'n') goto yy704; - goto yy186; +#line 6504 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy697; - if (yych == 'r') goto yy697; - goto yy186; -yy689: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy186; + } YYDEBUG(689, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy690; - if (yych != 'n') goto yy186; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1126 "Zend/zend_language_scanner.l" + { + return T_CASE; +} +#line 6517 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy691; - if (yych != 'c') goto yy186; + if (yych == 'H') goto yy691; + if (yych != 'h') goto yy187; yy691: YYDEBUG(691, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy692; - if (yych != 't') goto yy186; -yy692: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy186; + } YYDEBUG(692, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy693; - if (yych != 'i') goto yy186; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1046 "Zend/zend_language_scanner.l" + { + return T_CATCH; +} +#line 6535 "Zend/zend_language_scanner.c" yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy694; - if (yych != 'o') goto yy186; + if (yych == 'N') goto yy710; + if (yych == 'n') goto yy710; + goto yy187; yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy695; - if (yych != 'n') goto yy186; + if (yych == 'R') goto yy703; + if (yych == 'r') goto yy703; + goto yy187; yy695: YYDEBUG(695, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; - } + yych = *++YYCURSOR; + if (yych == 'N') goto yy696; + if (yych != 'n') goto yy187; +yy696: YYDEBUG(696, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1024 "Zend/zend_language_scanner.l" - { - return T_FUNCTION; -} -#line 6550 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy697; + if (yych != 'c') goto yy187; yy697: YYDEBUG(697, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy698; - if (yych <= '9') goto yy185; - } else { - if (yych == 'E') goto yy699; - if (yych <= 'Z') goto yy185; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy185; - } else { - if (yych <= 'e') goto yy699; - if (yych <= 'z') goto yy185; - if (yych >= 0x7F) goto yy185; - } - } + yych = *++YYCURSOR; + if (yych == 'T') goto yy698; + if (yych != 't') goto yy187; yy698: YYDEBUG(698, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1076 "Zend/zend_language_scanner.l" - { - return T_FOR; -} -#line 6578 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'I') goto yy699; + if (yych != 'i') goto yy187; yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy700; - if (yych != 'a') goto yy186; + if (yych == 'O') goto yy700; + if (yych != 'o') goto yy187; yy700: YYDEBUG(700, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy701; - if (yych != 'c') goto yy186; + if (yych == 'N') goto yy701; + if (yych != 'n') goto yy187; yy701: YYDEBUG(701, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy702; - if (yych != 'h') goto yy186; -yy702: - YYDEBUG(702, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(703, *YYCURSOR); + YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1084 "Zend/zend_language_scanner.l" +#line 1026 "Zend/zend_language_scanner.l" { - return T_FOREACH; + return T_FUNCTION; } -#line 6606 "Zend/zend_language_scanner.c" +#line 6590 "Zend/zend_language_scanner.c" +yy703: + YYDEBUG(703, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy704; + if (yych <= '9') goto yy186; + } else { + if (yych == 'E') goto yy705; + if (yych <= 'Z') goto yy186; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy186; + } else { + if (yych <= 'e') goto yy705; + if (yych <= 'z') goto yy186; + if (yych >= 0x7F) goto yy186; + } + } yy704: YYDEBUG(704, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy705; - if (yych != 'a') goto yy186; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1086 "Zend/zend_language_scanner.l" + { + return T_FOR; +} +#line 6618 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy706; - if (yych != 'l') goto yy186; + if (yych == 'A') goto yy706; + if (yych != 'a') goto yy187; yy706: YYDEBUG(706, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy707; + if (yych != 'c') goto yy187; +yy707: YYDEBUG(707, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1298 "Zend/zend_language_scanner.l" - { - return T_FINAL; -} -#line 6629 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy708; + if (yych != 'h') goto yy187; yy708: YYDEBUG(708, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'F') { - if (yych == 'C') goto yy714; - if (yych <= 'E') goto yy186; - goto yy715; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy186; - goto yy714; - } else { - if (yych == 'f') goto yy715; - goto yy186; - } - } -yy709: - YYDEBUG(709, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy712; - if (yych == 'e') goto yy712; - goto yy186; -yy710: - YYDEBUG(710, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(711, *YYCURSOR); + YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1072 "Zend/zend_language_scanner.l" +#line 1094 "Zend/zend_language_scanner.l" { - return T_DO; + return T_FOREACH; } -#line 6664 "Zend/zend_language_scanner.c" +#line 6646 "Zend/zend_language_scanner.c" +yy710: + YYDEBUG(710, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy711; + if (yych != 'a') goto yy187; +yy711: + YYDEBUG(711, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy712; + if (yych != 'l') goto yy187; yy712: YYDEBUG(712, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy713; + if (yych <= '9') goto yy186; + } else { + if (yych == 'L') goto yy714; + if (yych <= 'Z') goto yy186; + } + } else { + if (yych <= 'k') { + if (yych != '`') goto yy186; + } else { + if (yych <= 'l') goto yy714; + if (yych <= 'z') goto yy186; + if (yych >= 0x7F) goto yy186; + } } +yy713: YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1020 "Zend/zend_language_scanner.l" +#line 1308 "Zend/zend_language_scanner.l" { - return T_EXIT; + return T_FINAL; } -#line 6677 "Zend/zend_language_scanner.c" +#line 6684 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy721; - if (yych == 'l') goto yy721; - goto yy186; + if (yych == 'Y') goto yy715; + if (yych != 'y') goto yy187; yy715: YYDEBUG(715, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy716; - if (yych != 'a') goto yy186; -yy716: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy186; + } YYDEBUG(716, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy717; - if (yych != 'u') goto yy186; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1050 "Zend/zend_language_scanner.l" + { + return T_FINALLY; +} +#line 6702 "Zend/zend_language_scanner.c" yy717: YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy718; - if (yych != 'l') goto yy186; + if (yych <= 'F') { + if (yych == 'C') goto yy723; + if (yych <= 'E') goto yy187; + goto yy724; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy187; + goto yy723; + } else { + if (yych == 'f') goto yy724; + goto yy187; + } + } yy718: YYDEBUG(718, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy719; - if (yych != 't') goto yy186; + if (yych == 'E') goto yy721; + if (yych == 'e') goto yy721; + goto yy187; yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1120 "Zend/zend_language_scanner.l" +#line 1082 "Zend/zend_language_scanner.l" { - return T_DEFAULT; + return T_DO; } -#line 6716 "Zend/zend_language_scanner.c" +#line 6737 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy722; - if (yych != 'a') goto yy186; -yy722: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy186; + } YYDEBUG(722, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy723; - if (yych != 'r') goto yy186; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1022 "Zend/zend_language_scanner.l" + { + return T_EXIT; +} +#line 6750 "Zend/zend_language_scanner.c" yy723: YYDEBUG(723, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy724; - if (yych != 'e') goto yy186; + if (yych == 'L') goto yy730; + if (yych == 'l') goto yy730; + goto yy187; yy724: YYDEBUG(724, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy725; + if (yych != 'a') goto yy187; +yy725: YYDEBUG(725, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1092 "Zend/zend_language_scanner.l" - { - return T_DECLARE; -} -#line 6744 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'U') goto yy726; + if (yych != 'u') goto yy187; yy726: YYDEBUG(726, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy788; - if (yych == 'h') goto yy788; - goto yy186; + if (yych == 'L') goto yy727; + if (yych != 'l') goto yy187; yy727: YYDEBUG(727, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy782; - if (yych == 's') goto yy782; - goto yy186; + if (yych == 'T') goto yy728; + if (yych != 't') goto yy187; yy728: YYDEBUG(728, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy778; - if (yych == 'p') goto yy778; - goto yy186; -yy729: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy186; + } YYDEBUG(729, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy744; - if (yych == 'd') goto yy744; - goto yy186; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1130 "Zend/zend_language_scanner.l" + { + return T_DEFAULT; +} +#line 6789 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy741; - if (yych == 'a') goto yy741; - goto yy186; + if (yych == 'A') goto yy731; + if (yych != 'a') goto yy187; yy731: YYDEBUG(731, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'I') goto yy732; - if (yych <= 'S') goto yy186; - goto yy733; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy186; - } else { - if (yych == 't') goto yy733; - goto yy186; - } - } + if (yych == 'R') goto yy732; + if (yych != 'r') goto yy187; yy732: YYDEBUG(732, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy739; - if (yych == 't') goto yy739; - goto yy186; + if (yych == 'E') goto yy733; + if (yych != 'e') goto yy187; yy733: YYDEBUG(733, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy734; - if (yych != 'e') goto yy186; -yy734: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy186; + } YYDEBUG(734, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy735; - if (yych != 'n') goto yy186; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1102 "Zend/zend_language_scanner.l" + { + return T_DECLARE; +} +#line 6817 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy736; - if (yych != 'd') goto yy186; + if (yych == 'H') goto yy797; + if (yych == 'h') goto yy797; + goto yy187; yy736: YYDEBUG(736, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy737; - if (yych != 's') goto yy186; + if (yych == 'S') goto yy791; + if (yych == 's') goto yy791; + goto yy187; yy737: YYDEBUG(737, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy787; + if (yych == 'p') goto yy787; + goto yy187; +yy738: + YYDEBUG(738, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy753; + if (yych == 'd') goto yy753; + goto yy187; +yy739: + YYDEBUG(739, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy750; + if (yych == 'a') goto yy750; + goto yy187; +yy740: + YYDEBUG(740, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych == 'I') goto yy741; + if (yych <= 'S') goto yy187; + goto yy742; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy187; + } else { + if (yych == 't') goto yy742; + goto yy187; + } + } +yy741: + YYDEBUG(741, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy748; + if (yych == 't') goto yy748; + goto yy187; +yy742: + YYDEBUG(742, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy743; + if (yych != 'e') goto yy187; +yy743: + YYDEBUG(743, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy744; + if (yych != 'n') goto yy187; +yy744: + YYDEBUG(744, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy745; + if (yych != 'd') goto yy187; +yy745: + YYDEBUG(745, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy746; + if (yych != 's') goto yy187; +yy746: + YYDEBUG(746, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(738, *YYCURSOR); + YYDEBUG(747, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1156 "Zend/zend_language_scanner.l" +#line 1166 "Zend/zend_language_scanner.l" { return T_EXTENDS; } -#line 6828 "Zend/zend_language_scanner.c" -yy739: - YYDEBUG(739, *YYCURSOR); +#line 6901 "Zend/zend_language_scanner.c" +yy748: + YYDEBUG(748, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(740, *YYCURSOR); + YYDEBUG(749, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1016 "Zend/zend_language_scanner.l" +#line 1018 "Zend/zend_language_scanner.l" { return T_EXIT; } -#line 6841 "Zend/zend_language_scanner.c" -yy741: - YYDEBUG(741, *YYCURSOR); +#line 6914 "Zend/zend_language_scanner.c" +yy750: + YYDEBUG(750, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy742; - if (yych != 'l') goto yy186; -yy742: - YYDEBUG(742, *YYCURSOR); + if (yych == 'L') goto yy751; + if (yych != 'l') goto yy187; +yy751: + YYDEBUG(751, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(743, *YYCURSOR); + YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1242 "Zend/zend_language_scanner.l" +#line 1252 "Zend/zend_language_scanner.l" { return T_EVAL; } -#line 6859 "Zend/zend_language_scanner.c" -yy744: - YYDEBUG(744, *YYCURSOR); +#line 6932 "Zend/zend_language_scanner.c" +yy753: + YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { case 'D': - case 'd': goto yy745; + case 'd': goto yy754; case 'F': - case 'f': goto yy746; + case 'f': goto yy755; case 'I': - case 'i': goto yy747; + case 'i': goto yy756; case 'S': - case 's': goto yy748; + case 's': goto yy757; case 'W': - case 'w': goto yy749; - default: goto yy186; + case 'w': goto yy758; + default: goto yy187; } -yy745: - YYDEBUG(745, *YYCURSOR); +yy754: + YYDEBUG(754, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy771; - if (yych == 'e') goto yy771; - goto yy186; -yy746: - YYDEBUG(746, *YYCURSOR); + if (yych == 'E') goto yy780; + if (yych == 'e') goto yy780; + goto yy187; +yy755: + YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy763; - if (yych == 'o') goto yy763; - goto yy186; -yy747: - YYDEBUG(747, *YYCURSOR); + if (yych == 'O') goto yy772; + if (yych == 'o') goto yy772; + goto yy187; +yy756: + YYDEBUG(756, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy761; - if (yych == 'f') goto yy761; - goto yy186; -yy748: - YYDEBUG(748, *YYCURSOR); + if (yych == 'F') goto yy770; + if (yych == 'f') goto yy770; + goto yy187; +yy757: + YYDEBUG(757, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy755; - if (yych == 'w') goto yy755; - goto yy186; -yy749: - YYDEBUG(749, *YYCURSOR); + if (yych == 'W') goto yy764; + if (yych == 'w') goto yy764; + goto yy187; +yy758: + YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy750; - if (yych != 'h') goto yy186; -yy750: - YYDEBUG(750, *YYCURSOR); + if (yych == 'H') goto yy759; + if (yych != 'h') goto yy187; +yy759: + YYDEBUG(759, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy751; - if (yych != 'i') goto yy186; -yy751: - YYDEBUG(751, *YYCURSOR); + if (yych == 'I') goto yy760; + if (yych != 'i') goto yy187; +yy760: + YYDEBUG(760, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy752; - if (yych != 'l') goto yy186; -yy752: - YYDEBUG(752, *YYCURSOR); + if (yych == 'L') goto yy761; + if (yych != 'l') goto yy187; +yy761: + YYDEBUG(761, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy753; - if (yych != 'e') goto yy186; -yy753: - YYDEBUG(753, *YYCURSOR); + if (yych == 'E') goto yy762; + if (yych != 'e') goto yy187; +yy762: + YYDEBUG(762, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(754, *YYCURSOR); + YYDEBUG(763, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1068 "Zend/zend_language_scanner.l" +#line 1078 "Zend/zend_language_scanner.l" { return T_ENDWHILE; } -#line 6933 "Zend/zend_language_scanner.c" -yy755: - YYDEBUG(755, *YYCURSOR); +#line 7006 "Zend/zend_language_scanner.c" +yy764: + YYDEBUG(764, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy756; - if (yych != 'i') goto yy186; -yy756: - YYDEBUG(756, *YYCURSOR); + if (yych == 'I') goto yy765; + if (yych != 'i') goto yy187; +yy765: + YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy757; - if (yych != 't') goto yy186; -yy757: - YYDEBUG(757, *YYCURSOR); + if (yych == 'T') goto yy766; + if (yych != 't') goto yy187; +yy766: + YYDEBUG(766, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy758; - if (yych != 'c') goto yy186; -yy758: - YYDEBUG(758, *YYCURSOR); + if (yych == 'C') goto yy767; + if (yych != 'c') goto yy187; +yy767: + YYDEBUG(767, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy759; - if (yych != 'h') goto yy186; -yy759: - YYDEBUG(759, *YYCURSOR); + if (yych == 'H') goto yy768; + if (yych != 'h') goto yy187; +yy768: + YYDEBUG(768, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(760, *YYCURSOR); + YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1112 "Zend/zend_language_scanner.l" +#line 1122 "Zend/zend_language_scanner.l" { return T_ENDSWITCH; } -#line 6966 "Zend/zend_language_scanner.c" -yy761: - YYDEBUG(761, *YYCURSOR); +#line 7039 "Zend/zend_language_scanner.c" +yy770: + YYDEBUG(770, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(762, *YYCURSOR); + YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1056 "Zend/zend_language_scanner.l" +#line 1066 "Zend/zend_language_scanner.l" { return T_ENDIF; } -#line 6979 "Zend/zend_language_scanner.c" -yy763: - YYDEBUG(763, *YYCURSOR); +#line 7052 "Zend/zend_language_scanner.c" +yy772: + YYDEBUG(772, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy764; - if (yych != 'r') goto yy186; -yy764: - YYDEBUG(764, *YYCURSOR); + if (yych == 'R') goto yy773; + if (yych != 'r') goto yy187; +yy773: + YYDEBUG(773, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy765; - if (yych <= '9') goto yy185; + if (yych <= '/') goto yy774; + if (yych <= '9') goto yy186; } else { - if (yych == 'E') goto yy766; - if (yych <= 'Z') goto yy185; + if (yych == 'E') goto yy775; + if (yych <= 'Z') goto yy186; } } else { if (yych <= 'd') { - if (yych != '`') goto yy185; + if (yych != '`') goto yy186; } else { - if (yych <= 'e') goto yy766; - if (yych <= 'z') goto yy185; - if (yych >= 0x7F) goto yy185; + if (yych <= 'e') goto yy775; + if (yych <= 'z') goto yy186; + if (yych >= 0x7F) goto yy186; } } -yy765: - YYDEBUG(765, *YYCURSOR); +yy774: + YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1080 "Zend/zend_language_scanner.l" +#line 1090 "Zend/zend_language_scanner.l" { return T_ENDFOR; } -#line 7012 "Zend/zend_language_scanner.c" -yy766: - YYDEBUG(766, *YYCURSOR); +#line 7085 "Zend/zend_language_scanner.c" +yy775: + YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy767; - if (yych != 'a') goto yy186; -yy767: - YYDEBUG(767, *YYCURSOR); + if (yych == 'A') goto yy776; + if (yych != 'a') goto yy187; +yy776: + YYDEBUG(776, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy768; - if (yych != 'c') goto yy186; -yy768: - YYDEBUG(768, *YYCURSOR); + if (yych == 'C') goto yy777; + if (yych != 'c') goto yy187; +yy777: + YYDEBUG(777, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy769; - if (yych != 'h') goto yy186; -yy769: - YYDEBUG(769, *YYCURSOR); + if (yych == 'H') goto yy778; + if (yych != 'h') goto yy187; +yy778: + YYDEBUG(778, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(770, *YYCURSOR); + YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1088 "Zend/zend_language_scanner.l" +#line 1098 "Zend/zend_language_scanner.l" { return T_ENDFOREACH; } -#line 7040 "Zend/zend_language_scanner.c" -yy771: - YYDEBUG(771, *YYCURSOR); +#line 7113 "Zend/zend_language_scanner.c" +yy780: + YYDEBUG(780, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy772; - if (yych != 'c') goto yy186; -yy772: - YYDEBUG(772, *YYCURSOR); + if (yych == 'C') goto yy781; + if (yych != 'c') goto yy187; +yy781: + YYDEBUG(781, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy773; - if (yych != 'l') goto yy186; -yy773: - YYDEBUG(773, *YYCURSOR); + if (yych == 'L') goto yy782; + if (yych != 'l') goto yy187; +yy782: + YYDEBUG(782, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy774; - if (yych != 'a') goto yy186; -yy774: - YYDEBUG(774, *YYCURSOR); + if (yych == 'A') goto yy783; + if (yych != 'a') goto yy187; +yy783: + YYDEBUG(783, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy775; - if (yych != 'r') goto yy186; -yy775: - YYDEBUG(775, *YYCURSOR); + if (yych == 'R') goto yy784; + if (yych != 'r') goto yy187; +yy784: + YYDEBUG(784, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy776; - if (yych != 'e') goto yy186; -yy776: - YYDEBUG(776, *YYCURSOR); + if (yych == 'E') goto yy785; + if (yych != 'e') goto yy187; +yy785: + YYDEBUG(785, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(777, *YYCURSOR); + YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1096 "Zend/zend_language_scanner.l" +#line 1106 "Zend/zend_language_scanner.l" { return T_ENDDECLARE; } -#line 7078 "Zend/zend_language_scanner.c" -yy778: - YYDEBUG(778, *YYCURSOR); +#line 7151 "Zend/zend_language_scanner.c" +yy787: + YYDEBUG(787, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy779; - if (yych != 't') goto yy186; -yy779: - YYDEBUG(779, *YYCURSOR); + if (yych == 'T') goto yy788; + if (yych != 't') goto yy187; +yy788: + YYDEBUG(788, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy780; - if (yych != 'y') goto yy186; -yy780: - YYDEBUG(780, *YYCURSOR); + if (yych == 'Y') goto yy789; + if (yych != 'y') goto yy187; +yy789: + YYDEBUG(789, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(781, *YYCURSOR); + YYDEBUG(790, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1282 "Zend/zend_language_scanner.l" +#line 1292 "Zend/zend_language_scanner.l" { return T_EMPTY; } -#line 7101 "Zend/zend_language_scanner.c" -yy782: - YYDEBUG(782, *YYCURSOR); +#line 7174 "Zend/zend_language_scanner.c" +yy791: + YYDEBUG(791, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy783; - if (yych != 'e') goto yy186; -yy783: - YYDEBUG(783, *YYCURSOR); + if (yych == 'E') goto yy792; + if (yych != 'e') goto yy187; +yy792: + YYDEBUG(792, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy784; - if (yych <= '9') goto yy185; + if (yych <= '/') goto yy793; + if (yych <= '9') goto yy186; } else { - if (yych == 'I') goto yy785; - if (yych <= 'Z') goto yy185; + if (yych == 'I') goto yy794; + if (yych <= 'Z') goto yy186; } } else { if (yych <= 'h') { - if (yych != '`') goto yy185; + if (yych != '`') goto yy186; } else { - if (yych <= 'i') goto yy785; - if (yych <= 'z') goto yy185; - if (yych >= 0x7F) goto yy185; + if (yych <= 'i') goto yy794; + if (yych <= 'z') goto yy186; + if (yych >= 0x7F) goto yy186; } } -yy784: - YYDEBUG(784, *YYCURSOR); +yy793: + YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1060 "Zend/zend_language_scanner.l" +#line 1070 "Zend/zend_language_scanner.l" { return T_ELSE; } -#line 7134 "Zend/zend_language_scanner.c" -yy785: - YYDEBUG(785, *YYCURSOR); +#line 7207 "Zend/zend_language_scanner.c" +yy794: + YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy786; - if (yych != 'f') goto yy186; -yy786: - YYDEBUG(786, *YYCURSOR); + if (yych == 'F') goto yy795; + if (yych != 'f') goto yy187; +yy795: + YYDEBUG(795, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(787, *YYCURSOR); + YYDEBUG(796, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1052 "Zend/zend_language_scanner.l" +#line 1062 "Zend/zend_language_scanner.l" { return T_ELSEIF; } -#line 7152 "Zend/zend_language_scanner.c" -yy788: - YYDEBUG(788, *YYCURSOR); +#line 7225 "Zend/zend_language_scanner.c" +yy797: + YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy789; - if (yych != 'o') goto yy186; -yy789: - YYDEBUG(789, *YYCURSOR); + if (yych == 'O') goto yy798; + if (yych != 'o') goto yy187; +yy798: + YYDEBUG(798, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy185; + goto yy186; } - YYDEBUG(790, *YYCURSOR); + YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1136 "Zend/zend_language_scanner.l" +#line 1146 "Zend/zend_language_scanner.l" { return T_ECHO; } -#line 7170 "Zend/zend_language_scanner.c" +#line 7243 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7205,41 +7278,41 @@ yyc_ST_LOOKING_FOR_PROPERTY: 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }; - YYDEBUG(791, *YYCURSOR); + YYDEBUG(800, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '-') { if (yych <= '\r') { - if (yych <= 0x08) goto yy799; - if (yych <= '\n') goto yy793; - if (yych <= '\f') goto yy799; + if (yych <= 0x08) goto yy808; + if (yych <= '\n') goto yy802; + if (yych <= '\f') goto yy808; } else { - if (yych == ' ') goto yy793; - if (yych <= ',') goto yy799; - goto yy795; + if (yych == ' ') goto yy802; + if (yych <= ',') goto yy808; + goto yy804; } } else { if (yych <= '_') { - if (yych <= '@') goto yy799; - if (yych <= 'Z') goto yy797; - if (yych <= '^') goto yy799; - goto yy797; + if (yych <= '@') goto yy808; + if (yych <= 'Z') goto yy806; + if (yych <= '^') goto yy808; + goto yy806; } else { - if (yych <= '`') goto yy799; - if (yych <= 'z') goto yy797; - if (yych <= '~') goto yy799; - goto yy797; + if (yych <= '`') goto yy808; + if (yych <= 'z') goto yy806; + if (yych <= '~') goto yy808; + goto yy806; } } -yy793: - YYDEBUG(793, *YYCURSOR); +yy802: + YYDEBUG(802, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy805; -yy794: - YYDEBUG(794, *YYCURSOR); + goto yy814; +yy803: + YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1169 "Zend/zend_language_scanner.l" +#line 1179 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -7247,73 +7320,73 @@ yy794: HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7251 "Zend/zend_language_scanner.c" -yy795: - YYDEBUG(795, *YYCURSOR); +#line 7324 "Zend/zend_language_scanner.c" +yy804: + YYDEBUG(804, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy802; -yy796: - YYDEBUG(796, *YYCURSOR); + if ((yych = *YYCURSOR) == '>') goto yy811; +yy805: + YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1188 "Zend/zend_language_scanner.l" +#line 1198 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 7265 "Zend/zend_language_scanner.c" -yy797: - YYDEBUG(797, *YYCURSOR); +#line 7338 "Zend/zend_language_scanner.c" +yy806: + YYDEBUG(806, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy801; -yy798: - YYDEBUG(798, *YYCURSOR); + goto yy810; +yy807: + YYDEBUG(807, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1181 "Zend/zend_language_scanner.l" +#line 1191 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7281 "Zend/zend_language_scanner.c" -yy799: - YYDEBUG(799, *YYCURSOR); +#line 7354 "Zend/zend_language_scanner.c" +yy808: + YYDEBUG(808, *YYCURSOR); yych = *++YYCURSOR; - goto yy796; -yy800: - YYDEBUG(800, *YYCURSOR); + goto yy805; +yy809: + YYDEBUG(809, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy801: - YYDEBUG(801, *YYCURSOR); +yy810: + YYDEBUG(810, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy800; + goto yy809; } - goto yy798; -yy802: - YYDEBUG(802, *YYCURSOR); + goto yy807; +yy811: + YYDEBUG(811, *YYCURSOR); ++YYCURSOR; - YYDEBUG(803, *YYCURSOR); + YYDEBUG(812, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1177 "Zend/zend_language_scanner.l" +#line 1187 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 7306 "Zend/zend_language_scanner.c" -yy804: - YYDEBUG(804, *YYCURSOR); +#line 7379 "Zend/zend_language_scanner.c" +yy813: + YYDEBUG(813, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy805: - YYDEBUG(805, *YYCURSOR); +yy814: + YYDEBUG(814, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy804; + goto yy813; } - goto yy794; + goto yy803; } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7352,73 +7425,99 @@ yyc_ST_LOOKING_FOR_VARNAME: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(806, *YYCURSOR); + YYDEBUG(815, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy810; - if (yych <= 'Z') goto yy808; - if (yych <= '^') goto yy810; + if (yych <= '@') goto yy819; + if (yych <= 'Z') goto yy817; + if (yych <= '^') goto yy819; } else { - if (yych <= '`') goto yy810; - if (yych <= 'z') goto yy808; - if (yych <= '~') goto yy810; + if (yych <= '`') goto yy819; + if (yych <= 'z') goto yy817; + if (yych <= '~') goto yy819; } -yy808: - YYDEBUG(808, *YYCURSOR); - ++YYCURSOR; - yych = *YYCURSOR; - goto yy813; -yy809: - YYDEBUG(809, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1464 "Zend/zend_language_scanner.l" - { - zend_copy_value(zendlval, yytext, yyleng); - zendlval->type = IS_STRING; - yy_pop_state(TSRMLS_C); - yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); - return T_STRING_VARNAME; -} -#line 7384 "Zend/zend_language_scanner.c" -yy810: - YYDEBUG(810, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(811, *YYCURSOR); +yy817: + YYDEBUG(817, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '_') { + if (yych <= '@') { + if (yych <= '/') goto yy818; + if (yych <= '9') goto yy821; + } else { + if (yych <= '[') goto yy821; + if (yych >= '_') goto yy821; + } + } else { + if (yych <= '|') { + if (yych <= '`') goto yy818; + if (yych <= 'z') goto yy821; + } else { + if (yych != '~') goto yy821; + } + } +yy818: + YYDEBUG(818, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1473 "Zend/zend_language_scanner.l" +#line 1484 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7397 "Zend/zend_language_scanner.c" -yy812: - YYDEBUG(812, *YYCURSOR); +#line 7471 "Zend/zend_language_scanner.c" +yy819: + YYDEBUG(819, *YYCURSOR); + yych = *++YYCURSOR; + goto yy818; +yy820: + YYDEBUG(820, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy813: - YYDEBUG(813, *YYCURSOR); +yy821: + YYDEBUG(821, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy812; + goto yy820; } - goto yy809; + if (yych == '[') goto yy823; + if (yych == '}') goto yy823; + YYDEBUG(822, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy818; +yy823: + YYDEBUG(823, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(824, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1474 "Zend/zend_language_scanner.l" + { + yyless(yyleng - 1); + zend_copy_value(zendlval, yytext, yyleng); + zendlval->type = IS_STRING; + yy_pop_state(TSRMLS_C); + yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); + return T_STRING_VARNAME; +} +#line 7505 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: - YYDEBUG(814, *YYCURSOR); + YYDEBUG(825, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; - YYDEBUG(816, *YYCURSOR); + YYDEBUG(827, *YYCURSOR); ++YYCURSOR; - YYDEBUG(817, *YYCURSOR); + YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2355 "Zend/zend_language_scanner.l" +#line 2368 "Zend/zend_language_scanner.l" { int newline = 0; + zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); + if (YYCURSOR > YYLIMIT) { return 0; } @@ -7434,8 +7533,8 @@ yyc_ST_NOWDOC: /* fall through */ case '\n': /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, CG(heredoc), CG(heredoc_len))) { - YYCTYPE *end = YYCURSOR + CG(heredoc_len); + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + YYCTYPE *end = YYCURSOR + heredoc_label->length; if (*end == ';') { end++; @@ -7470,7 +7569,7 @@ nowdoc_scan_done: HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7474 "Zend/zend_language_scanner.c" +#line 7573 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7508,76 +7607,76 @@ yyc_ST_VAR_OFFSET: 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }; - YYDEBUG(818, *YYCURSOR); + YYDEBUG(829, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; if (yych <= '/') { if (yych <= ' ') { if (yych <= '\f') { - if (yych <= 0x08) goto yy832; - if (yych <= '\n') goto yy828; - goto yy832; + if (yych <= 0x08) goto yy843; + if (yych <= '\n') goto yy839; + goto yy843; } else { - if (yych <= '\r') goto yy828; - if (yych <= 0x1F) goto yy832; - goto yy828; + if (yych <= '\r') goto yy839; + if (yych <= 0x1F) goto yy843; + goto yy839; } } else { if (yych <= '$') { - if (yych <= '"') goto yy827; - if (yych <= '#') goto yy828; - goto yy823; + if (yych <= '"') goto yy838; + if (yych <= '#') goto yy839; + goto yy834; } else { - if (yych == '\'') goto yy828; - goto yy827; + if (yych == '\'') goto yy839; + goto yy838; } } } else { if (yych <= '\\') { if (yych <= '@') { - if (yych <= '0') goto yy820; - if (yych <= '9') goto yy822; - goto yy827; + if (yych <= '0') goto yy831; + if (yych <= '9') goto yy833; + goto yy838; } else { - if (yych <= 'Z') goto yy830; - if (yych <= '[') goto yy827; - goto yy828; + if (yych <= 'Z') goto yy841; + if (yych <= '[') goto yy838; + goto yy839; } } else { if (yych <= '_') { - if (yych <= ']') goto yy825; - if (yych <= '^') goto yy827; - goto yy830; + if (yych <= ']') goto yy836; + if (yych <= '^') goto yy838; + goto yy841; } else { - if (yych <= '`') goto yy827; - if (yych <= 'z') goto yy830; - if (yych <= '~') goto yy827; - goto yy830; + if (yych <= '`') goto yy838; + if (yych <= 'z') goto yy841; + if (yych <= '~') goto yy838; + goto yy841; } } } -yy820: - YYDEBUG(820, *YYCURSOR); +yy831: + YYDEBUG(831, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '9') { - if (yych >= '0') goto yy844; + if (yych >= '0') goto yy855; } else { - if (yych == 'B') goto yy841; + if (yych == 'B') goto yy852; } } else { if (yych <= 'b') { - if (yych <= 'X') goto yy843; - if (yych >= 'b') goto yy841; + if (yych <= 'X') goto yy854; + if (yych >= 'b') goto yy852; } else { - if (yych == 'x') goto yy843; + if (yych == 'x') goto yy854; } } -yy821: - YYDEBUG(821, *YYCURSOR); +yy832: + YYDEBUG(832, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1551 "Zend/zend_language_scanner.l" +#line 1562 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { zendlval->value.lval = strtol(yytext, NULL, 10); @@ -7589,81 +7688,81 @@ yy821: } return T_NUM_STRING; } -#line 7593 "Zend/zend_language_scanner.c" -yy822: - YYDEBUG(822, *YYCURSOR); +#line 7692 "Zend/zend_language_scanner.c" +yy833: + YYDEBUG(833, *YYCURSOR); yych = *++YYCURSOR; - goto yy840; -yy823: - YYDEBUG(823, *YYCURSOR); + goto yy851; +yy834: + YYDEBUG(834, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy824; - if (yych <= 'Z') goto yy836; - if (yych >= '_') goto yy836; + if (yych <= '@') goto yy835; + if (yych <= 'Z') goto yy847; + if (yych >= '_') goto yy847; } else { - if (yych <= '`') goto yy824; - if (yych <= 'z') goto yy836; - if (yych >= 0x7F) goto yy836; + if (yych <= '`') goto yy835; + if (yych <= 'z') goto yy847; + if (yych >= 0x7F) goto yy847; } -yy824: - YYDEBUG(824, *YYCURSOR); +yy835: + YYDEBUG(835, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1883 "Zend/zend_language_scanner.l" +#line 1894 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 7618 "Zend/zend_language_scanner.c" -yy825: - YYDEBUG(825, *YYCURSOR); +#line 7717 "Zend/zend_language_scanner.c" +yy836: + YYDEBUG(836, *YYCURSOR); ++YYCURSOR; - YYDEBUG(826, *YYCURSOR); + YYDEBUG(837, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1878 "Zend/zend_language_scanner.l" +#line 1889 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 7629 "Zend/zend_language_scanner.c" -yy827: - YYDEBUG(827, *YYCURSOR); +#line 7728 "Zend/zend_language_scanner.c" +yy838: + YYDEBUG(838, *YYCURSOR); yych = *++YYCURSOR; - goto yy824; -yy828: - YYDEBUG(828, *YYCURSOR); + goto yy835; +yy839: + YYDEBUG(839, *YYCURSOR); ++YYCURSOR; - YYDEBUG(829, *YYCURSOR); + YYDEBUG(840, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1888 "Zend/zend_language_scanner.l" +#line 1899 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); yy_pop_state(TSRMLS_C); return T_ENCAPSED_AND_WHITESPACE; } -#line 7646 "Zend/zend_language_scanner.c" -yy830: - YYDEBUG(830, *YYCURSOR); +#line 7745 "Zend/zend_language_scanner.c" +yy841: + YYDEBUG(841, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy835; -yy831: - YYDEBUG(831, *YYCURSOR); + goto yy846; +yy842: + YYDEBUG(842, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1895 "Zend/zend_language_scanner.l" +#line 1906 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7661 "Zend/zend_language_scanner.c" -yy832: - YYDEBUG(832, *YYCURSOR); +#line 7760 "Zend/zend_language_scanner.c" +yy843: + YYDEBUG(843, *YYCURSOR); ++YYCURSOR; - YYDEBUG(833, *YYCURSOR); + YYDEBUG(844, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2411 "Zend/zend_language_scanner.l" +#line 2426 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -7672,118 +7771,118 @@ yy832: zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7676 "Zend/zend_language_scanner.c" -yy834: - YYDEBUG(834, *YYCURSOR); +#line 7775 "Zend/zend_language_scanner.c" +yy845: + YYDEBUG(845, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy835: - YYDEBUG(835, *YYCURSOR); +yy846: + YYDEBUG(846, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy834; + goto yy845; } - goto yy831; -yy836: - YYDEBUG(836, *YYCURSOR); + goto yy842; +yy847: + YYDEBUG(847, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(837, *YYCURSOR); + YYDEBUG(848, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy836; + if (yych >= '0') goto yy847; } else { - if (yych <= '@') goto yy838; - if (yych <= 'Z') goto yy836; + if (yych <= '@') goto yy849; + if (yych <= 'Z') goto yy847; } } else { if (yych <= '`') { - if (yych <= '_') goto yy836; + if (yych <= '_') goto yy847; } else { - if (yych <= 'z') goto yy836; - if (yych >= 0x7F) goto yy836; + if (yych <= 'z') goto yy847; + if (yych >= 0x7F) goto yy847; } } -yy838: - YYDEBUG(838, *YYCURSOR); +yy849: + YYDEBUG(849, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1872 "Zend/zend_language_scanner.l" +#line 1883 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 7718 "Zend/zend_language_scanner.c" -yy839: - YYDEBUG(839, *YYCURSOR); +#line 7817 "Zend/zend_language_scanner.c" +yy850: + YYDEBUG(850, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy840: - YYDEBUG(840, *YYCURSOR); +yy851: + YYDEBUG(851, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy839; + goto yy850; } - goto yy821; -yy841: - YYDEBUG(841, *YYCURSOR); + goto yy832; +yy852: + YYDEBUG(852, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy849; + goto yy860; } -yy842: - YYDEBUG(842, *YYCURSOR); +yy853: + YYDEBUG(853, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy821; -yy843: - YYDEBUG(843, *YYCURSOR); + goto yy832; +yy854: + YYDEBUG(854, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy847; + goto yy858; } - goto yy842; -yy844: - YYDEBUG(844, *YYCURSOR); + goto yy853; +yy855: + YYDEBUG(855, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(845, *YYCURSOR); - if (yych <= '/') goto yy846; - if (yych <= '9') goto yy844; -yy846: - YYDEBUG(846, *YYCURSOR); + YYDEBUG(856, *YYCURSOR); + if (yych <= '/') goto yy857; + if (yych <= '9') goto yy855; +yy857: + YYDEBUG(857, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1563 "Zend/zend_language_scanner.l" +#line 1574 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ zendlval->value.str.val = (char *)estrndup(yytext, yyleng); zendlval->value.str.len = yyleng; zendlval->type = IS_STRING; return T_NUM_STRING; } -#line 7765 "Zend/zend_language_scanner.c" -yy847: - YYDEBUG(847, *YYCURSOR); +#line 7864 "Zend/zend_language_scanner.c" +yy858: + YYDEBUG(858, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(848, *YYCURSOR); + YYDEBUG(859, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy847; + goto yy858; } - goto yy846; -yy849: - YYDEBUG(849, *YYCURSOR); + goto yy857; +yy860: + YYDEBUG(860, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(850, *YYCURSOR); + YYDEBUG(861, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy849; + goto yy860; } - goto yy846; + goto yy857; } } -#line 2420 "Zend/zend_language_scanner.l" +#line 2435 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.h b/Zend/zend_language_scanner.h index a1a84b3bc..c1a2313b2 100644 --- a/Zend/zend_language_scanner.h +++ b/Zend/zend_language_scanner.h @@ -31,6 +31,7 @@ typedef struct _zend_lex_state { unsigned char *yy_limit; int yy_state; zend_stack state_stack; + zend_ptr_stack heredoc_label_stack; zend_file_handle *in; uint lineno; @@ -50,6 +51,10 @@ typedef struct _zend_lex_state { const zend_encoding *script_encoding; } zend_lex_state; +typedef struct _zend_heredoc_label { + char *label; + int length; +} zend_heredoc_label; BEGIN_EXTERN_C() int zend_compare_file_handles(zend_file_handle *fh1, zend_file_handle *fh2); diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 703ca968e..dbf43977f 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -178,22 +178,23 @@ static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC) void startup_scanner(TSRMLS_D) { CG(parse_error) = 0; - CG(heredoc) = NULL; - CG(heredoc_len) = 0; CG(doc_comment) = NULL; CG(doc_comment_len) = 0; zend_stack_init(&SCNG(state_stack)); + zend_ptr_stack_init(&SCNG(heredoc_label_stack)); +} + +static void heredoc_label_dtor(zend_heredoc_label *heredoc_label) { + efree(heredoc_label->label); } void shutdown_scanner(TSRMLS_D) { - if (CG(heredoc)) { - efree(CG(heredoc)); - CG(heredoc_len)=0; - } CG(parse_error) = 0; - zend_stack_destroy(&SCNG(state_stack)); RESET_DOC_COMMENT(); + zend_stack_destroy(&SCNG(state_stack)); + zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1); + zend_ptr_stack_destroy(&SCNG(heredoc_label_stack)); } ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state TSRMLS_DC) @@ -208,6 +209,9 @@ ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state TSRMLS_DC) lex_state->state_stack = SCNG(state_stack); zend_stack_init(&SCNG(state_stack)); + lex_state->heredoc_label_stack = SCNG(heredoc_label_stack); + zend_ptr_stack_init(&SCNG(heredoc_label_stack)); + lex_state->in = SCNG(yy_in); lex_state->yy_state = YYSTATE; lex_state->filename = zend_get_compiled_filename(TSRMLS_C); @@ -234,6 +238,10 @@ ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC) zend_stack_destroy(&SCNG(state_stack)); SCNG(state_stack) = lex_state->state_stack; + zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1); + zend_ptr_stack_destroy(&SCNG(heredoc_label_stack)); + SCNG(heredoc_label_stack) = lex_state->heredoc_label_stack; + SCNG(yy_in) = lex_state->in; YYSETCONDITION(lex_state->yy_state); CG(zend_lineno) = lex_state->lineno; @@ -250,12 +258,6 @@ ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC) SCNG(input_filter) = lex_state->input_filter; SCNG(output_filter) = lex_state->output_filter; SCNG(script_encoding) = lex_state->script_encoding; - - if (CG(heredoc)) { - efree(CG(heredoc)); - CG(heredoc) = NULL; - CG(heredoc_len) = 0; - } } ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC) @@ -1033,6 +1035,10 @@ NEWLINE ("\r"|"\n"|"\r\n") return T_RETURN; } +<ST_IN_SCRIPTING>"yield" { + return T_YIELD; +} + <ST_IN_SCRIPTING>"try" { return T_TRY; } @@ -1041,6 +1047,10 @@ NEWLINE ("\r"|"\n"|"\r\n") return T_CATCH; } +<ST_IN_SCRIPTING>"finally" { + return T_FINALLY; +} + <ST_IN_SCRIPTING>"throw" { return T_THROW; } @@ -1461,7 +1471,8 @@ NEWLINE ("\r"|"\n"|"\r\n") } -<ST_LOOKING_FOR_VARNAME>{LABEL} { +<ST_LOOKING_FOR_VARNAME>{LABEL}[[}] { + yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; yy_pop_state(TSRMLS_C); @@ -2104,38 +2115,35 @@ inline_html: <ST_IN_SCRIPTING>b?"<<<"{TABS_AND_SPACES}({LABEL}|([']{LABEL}['])|(["]{LABEL}["])){NEWLINE} { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; - - /* save old heredoc label */ - Z_STRVAL_P(zendlval) = CG(heredoc); - Z_STRLEN_P(zendlval) = CG(heredoc_len); + zend_heredoc_label *heredoc_label = emalloc(sizeof(zend_heredoc_label)); CG(zend_lineno)++; - CG(heredoc_len) = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0); + heredoc_label->length = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0); s = yytext+bprefix+3; while ((*s == ' ') || (*s == '\t')) { s++; - CG(heredoc_len)--; + heredoc_label->length--; } if (*s == '\'') { s++; - CG(heredoc_len) -= 2; + heredoc_label->length -= 2; BEGIN(ST_NOWDOC); } else { if (*s == '"') { s++; - CG(heredoc_len) -= 2; + heredoc_label->length -= 2; } BEGIN(ST_HEREDOC); } - CG(heredoc) = estrndup(s, CG(heredoc_len)); + heredoc_label->label = estrndup(s, heredoc_label->length); /* Check for ending label on the next line */ - if (CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, CG(heredoc_len))) { - YYCTYPE *end = YYCURSOR + CG(heredoc_len); + if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { + YYCTYPE *end = YYCURSOR + heredoc_label->length; if (*end == ';') { end++; @@ -2146,6 +2154,8 @@ inline_html: } } + zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); + return T_START_HEREDOC; } @@ -2157,13 +2167,14 @@ inline_html: <ST_END_HEREDOC>{ANY_CHAR} { - YYCURSOR += CG(heredoc_len) - 1; - yyleng = CG(heredoc_len); + zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); + + YYCURSOR += heredoc_label->length - 1; + yyleng = heredoc_label->length; + + heredoc_label_dtor(heredoc_label); + efree(heredoc_label); - Z_STRVAL_P(zendlval) = CG(heredoc); - Z_STRLEN_P(zendlval) = CG(heredoc_len); - CG(heredoc) = NULL; - CG(heredoc_len) = 0; BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } @@ -2283,6 +2294,8 @@ double_quotes_scan_done: <ST_HEREDOC>{ANY_CHAR} { int newline = 0; + zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); + if (YYCURSOR > YYLIMIT) { return 0; } @@ -2298,8 +2311,8 @@ double_quotes_scan_done: /* fall through */ case '\n': /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, CG(heredoc), CG(heredoc_len))) { - YYCTYPE *end = YYCURSOR + CG(heredoc_len); + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + YYCTYPE *end = YYCURSOR + heredoc_label->length; if (*end == ';') { end++; @@ -2355,6 +2368,8 @@ heredoc_scan_done: <ST_NOWDOC>{ANY_CHAR} { int newline = 0; + zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); + if (YYCURSOR > YYLIMIT) { return 0; } @@ -2370,8 +2385,8 @@ heredoc_scan_done: /* fall through */ case '\n': /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, CG(heredoc), CG(heredoc_len))) { - YYCTYPE *end = YYCURSOR + CG(heredoc_len); + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + YYCTYPE *end = YYCURSOR + heredoc_label->length; if (*end == ';') { end++; diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index dbf867404..47df7e92d 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Mon Apr 30 15:55:05 2012 */ +/* Generated by re2c 0.13.5 on Mon Aug 20 13:34:50 2012 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { diff --git a/Zend/zend_modules.h b/Zend/zend_modules.h index ad15a9662..442535bc6 100644 --- a/Zend/zend_modules.h +++ b/Zend/zend_modules.h @@ -33,7 +33,7 @@ #define ZEND_MODULE_INFO_FUNC_ARGS zend_module_entry *zend_module TSRMLS_DC #define ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU zend_module TSRMLS_CC -#define ZEND_MODULE_API_NO 20100525 +#define ZEND_MODULE_API_NO 20121113 #ifdef ZTS #define USING_ZTS 1 #else diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 4c6a784a8..224c7a209 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -87,6 +87,7 @@ void init_op_array(zend_op_array *op_array, zend_uchar type, int initial_ops_siz op_array->static_variables = NULL; op_array->last_try_catch = 0; + op_array->has_finally_block = 0; op_array->this_var = -1; @@ -498,6 +499,24 @@ static void zend_extension_op_array_handler(zend_extension *extension, zend_op_a } } +static void zend_check_finally_breakout(zend_op_array *op_array, zend_op *opline, zend_uint dst_num TSRMLS_DC) { + zend_uint i, op_num = opline - op_array->opcodes; + for (i=0; i < op_array->last_try_catch; i++) { + if (op_array->try_catch_array[i].try_op > op_num) { + break; + } + if ((op_num >= op_array->try_catch_array[i].finally_op + && op_num < op_array->try_catch_array[i].finally_end) + && (dst_num >= op_array->try_catch_array[i].finally_end + || dst_num < op_array->try_catch_array[i].finally_op)) { + CG(in_compilation) = 1; + CG(active_op_array) = op_array; + CG(zend_lineno) = opline->lineno; + zend_error(E_COMPILE_ERROR, "jump out of a finally block is disallowed"); + } + } +} + ZEND_API int pass_two(zend_op_array *op_array TSRMLS_DC) { zend_op *opline, *end; @@ -541,8 +560,30 @@ ZEND_API int pass_two(zend_op_array *op_array TSRMLS_DC) } /* break omitted intentionally */ case ZEND_JMP: + if (op_array->last_try_catch) { + zend_check_finally_breakout(op_array, opline, opline->op1.opline_num TSRMLS_CC); + } opline->op1.jmp_addr = &op_array->opcodes[opline->op1.opline_num]; break; + case ZEND_BRK: + case ZEND_CONT: + if (op_array->last_try_catch) { + int nest_levels, array_offset; + zend_brk_cont_element *jmp_to; + + nest_levels = Z_LVAL_P(opline->op2.zv); + array_offset = opline->op1.opline_num; + do { + jmp_to = &op_array->brk_cont_array[array_offset]; + if (nest_levels > 1) { + array_offset = jmp_to->parent; + } + } while (--nest_levels > 0); + if (op_array->last_try_catch) { + zend_check_finally_breakout(op_array, opline, jmp_to->brk TSRMLS_CC); + } + } + break; case ZEND_JMPZ: case ZEND_JMPNZ: case ZEND_JMPZ_EX: @@ -551,6 +592,17 @@ ZEND_API int pass_two(zend_op_array *op_array TSRMLS_DC) case ZEND_JMP_SET_VAR: opline->op2.jmp_addr = &op_array->opcodes[opline->op2.opline_num]; break; + case ZEND_RETURN: + case ZEND_RETURN_BY_REF: + if (op_array->fn_flags & ZEND_ACC_GENERATOR) { + if (opline->op1_type != IS_CONST || Z_TYPE_P(opline->op1.zv) != IS_NULL) { + CG(zend_lineno) = opline->lineno; + zend_error(E_COMPILE_ERROR, "Generators cannot return values using \"return\""); + } + + opline->opcode = ZEND_GENERATOR_RETURN; + } + break; } ZEND_VM_SET_OPCODE_HANDLER(opline); opline++; diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 9b01e5fbc..cf3a908ad 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -42,6 +42,43 @@ static _locale_t current_locale = NULL; #define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2)) +static const unsigned char tolower_map[256] = { +0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, +0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, +0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f, +0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, +0x40,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, +0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x5b,0x5c,0x5d,0x5e,0x5f, +0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, +0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f, +0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, +0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, +0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf, +0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, +0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf, +0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, +0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef, +0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff +}; + +#define zend_tolower_ascii(c) (tolower_map[(unsigned char)(c)]) + +/** + * Functions using locale lowercase: + zend_binary_strncasecmp_l + zend_binary_strcasecmp_l + zend_binary_zval_strcasecmp + zend_binary_zval_strncasecmp + string_compare_function_ex + string_case_compare_function + * Functions using ascii lowercase: + zend_str_tolower_copy + zend_str_tolower_dup + zend_str_tolower + zend_binary_strcasecmp + zend_binary_strncasecmp + */ + ZEND_API int zend_atoi(const char *str, int str_len) /* {{{ */ { int retval; @@ -1911,7 +1948,7 @@ ZEND_API char *zend_str_tolower_copy(char *dest, const char *source, unsigned in register unsigned char *end = str + length; while (str < end) { - *result++ = zend_tolower((int)*str++); + *result++ = zend_tolower_ascii(*str++); } *result = '\0'; @@ -1931,7 +1968,7 @@ ZEND_API void zend_str_tolower(char *str, unsigned int length) /* {{{ */ register unsigned char *end = p + length; while (p < end) { - *p = zend_tolower((int)*p); + *p = zend_tolower_ascii(*p); p++; } } @@ -1980,6 +2017,49 @@ ZEND_API int zend_binary_strcasecmp(const char *s1, uint len1, const char *s2, u len = MIN(len1, len2); while (len--) { + c1 = zend_tolower_ascii(*(unsigned char *)s1++); + c2 = zend_tolower_ascii(*(unsigned char *)s2++); + if (c1 != c2) { + return c1 - c2; + } + } + + return len1 - len2; +} +/* }}} */ + +ZEND_API int zend_binary_strncasecmp(const char *s1, uint len1, const char *s2, uint len2, uint length) /* {{{ */ +{ + int len; + int c1, c2; + + if (s1 == s2) { + return 0; + } + len = MIN(length, MIN(len1, len2)); + while (len--) { + c1 = zend_tolower_ascii(*(unsigned char *)s1++); + c2 = zend_tolower_ascii(*(unsigned char *)s2++); + if (c1 != c2) { + return c1 - c2; + } + } + + return MIN(length, len1) - MIN(length, len2); +} +/* }}} */ + +ZEND_API int zend_binary_strcasecmp_l(const char *s1, uint len1, const char *s2, uint len2) /* {{{ */ +{ + int len; + int c1, c2; + + if (s1 == s2) { + return 0; + } + + len = MIN(len1, len2); + while (len--) { c1 = zend_tolower((int)*(unsigned char *)s1++); c2 = zend_tolower((int)*(unsigned char *)s2++); if (c1 != c2) { @@ -1991,7 +2071,7 @@ ZEND_API int zend_binary_strcasecmp(const char *s1, uint len1, const char *s2, u } /* }}} */ -ZEND_API int zend_binary_strncasecmp(const char *s1, uint len1, const char *s2, uint len2, uint length) /* {{{ */ +ZEND_API int zend_binary_strncasecmp_l(const char *s1, uint len1, const char *s2, uint len2, uint length) /* {{{ */ { int len; int c1, c2; @@ -2026,13 +2106,13 @@ ZEND_API int zend_binary_zval_strncmp(zval *s1, zval *s2, zval *s3) /* {{{ */ ZEND_API int zend_binary_zval_strcasecmp(zval *s1, zval *s2) /* {{{ */ { - return zend_binary_strcasecmp(Z_STRVAL_P(s1), Z_STRLEN_P(s1), Z_STRVAL_P(s2), Z_STRLEN_P(s2)); + return zend_binary_strcasecmp_l(Z_STRVAL_P(s1), Z_STRLEN_P(s1), Z_STRVAL_P(s2), Z_STRLEN_P(s2)); } /* }}} */ ZEND_API int zend_binary_zval_strncasecmp(zval *s1, zval *s2, zval *s3) /* {{{ */ { - return zend_binary_strncasecmp(Z_STRVAL_P(s1), Z_STRLEN_P(s1), Z_STRVAL_P(s2), Z_STRLEN_P(s2), Z_LVAL_P(s3)); + return zend_binary_strncasecmp_l(Z_STRVAL_P(s1), Z_STRLEN_P(s1), Z_STRVAL_P(s2), Z_STRLEN_P(s2), Z_LVAL_P(s3)); } /* }}} */ @@ -2067,7 +2147,7 @@ ZEND_API void zendi_smart_strcmp(zval *result, zval *s1, zval *s2) /* {{{ */ } else if (ret2!=IS_DOUBLE) { if (oflow1) { ZVAL_LONG(result, oflow1); - return; + return; } dval2 = (double) lval2; } else if (dval1 == dval2 && !zend_finite(dval1)) { diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h index d28140e9e..08a6b19bd 100644 --- a/Zend/zend_operators.h +++ b/Zend/zend_operators.h @@ -340,6 +340,7 @@ ZEND_API int zend_binary_strcmp(const char *s1, uint len1, const char *s2, uint ZEND_API int zend_binary_strncmp(const char *s1, uint len1, const char *s2, uint len2, uint length); ZEND_API int zend_binary_strcasecmp(const char *s1, uint len1, const char *s2, uint len2); ZEND_API int zend_binary_strncasecmp(const char *s1, uint len1, const char *s2, uint len2, uint length); +ZEND_API int zend_binary_strncasecmp_l(const char *s1, uint len1, const char *s2, uint len2, uint length); ZEND_API void zendi_smart_strcmp(zval *result, zval *s1, zval *s2); ZEND_API void zend_compare_symbol_tables(zval *result, HashTable *ht1, HashTable *ht2 TSRMLS_DC); diff --git a/Zend/zend_ptr_stack.c b/Zend/zend_ptr_stack.c index aefa91f73..d178cc018 100644 --- a/Zend/zend_ptr_stack.c +++ b/Zend/zend_ptr_stack.c @@ -111,6 +111,22 @@ ZEND_API int zend_ptr_stack_num_elements(zend_ptr_stack *stack) return stack->top; } +ZEND_API void zend_ptr_stack_push_from_memory(zend_ptr_stack *stack, int count, void **pointers) +{ + ZEND_PTR_STACK_RESIZE_IF_NEEDED(stack, count); + + memcpy(stack->top_element, pointers, count * sizeof(void *)); + stack->top_element += count; + stack->top += count; +} + +ZEND_API void zend_ptr_stack_pop_into_memory(zend_ptr_stack *stack, int count, void **pointers) +{ + memcpy(pointers, stack->top_element - count, count * sizeof(void *)); + stack->top_element -= count; + stack->top -= count; +} + /* * Local variables: * tab-width: 4 diff --git a/Zend/zend_ptr_stack.h b/Zend/zend_ptr_stack.h index cc062de87..fe93e93b5 100644 --- a/Zend/zend_ptr_stack.h +++ b/Zend/zend_ptr_stack.h @@ -41,6 +41,8 @@ ZEND_API void zend_ptr_stack_destroy(zend_ptr_stack *stack); ZEND_API void zend_ptr_stack_apply(zend_ptr_stack *stack, void (*func)(void *)); ZEND_API void zend_ptr_stack_clean(zend_ptr_stack *stack, void (*func)(void *), zend_bool free_elements); ZEND_API int zend_ptr_stack_num_elements(zend_ptr_stack *stack); +ZEND_API void zend_ptr_stack_push_from_memory(zend_ptr_stack *stack, int count, void **pointers); +ZEND_API void zend_ptr_stack_pop_into_memory(zend_ptr_stack *stack, int count, void **pointers); END_EXTERN_C() #define ZEND_PTR_STACK_RESIZE_IF_NEEDED(stack, count) \ @@ -111,6 +113,11 @@ static zend_always_inline void *zend_ptr_stack_pop(zend_ptr_stack *stack) return *(--stack->top_element); } +static inline void *zend_ptr_stack_top(zend_ptr_stack *stack) +{ + return stack->elements[stack->top - 1]; +} + #endif /* ZEND_PTR_STACK_H */ /* diff --git a/Zend/zend_signal.c b/Zend/zend_signal.c index f61ae0b17..6105fb111 100644 --- a/Zend/zend_signal.c +++ b/Zend/zend_signal.c @@ -215,7 +215,7 @@ ZEND_API int zend_sigaction(int signo, const struct sigaction *act, struct sigac sa.sa_mask = global_sigmask; if (sigaction(signo, &sa, NULL) < 0) { - zend_error(E_WARNING, "Error installing signal handler for %d", signo); + zend_error(E_ERROR, "Error installing signal handler for %d", signo); } /* unsure this signal is not blocked */ @@ -267,7 +267,7 @@ static int zend_signal_register(int signo, void (*handler)(int, siginfo_t*, void sa.sa_mask = global_sigmask; if (sigaction(signo, &sa, NULL) < 0) { - zend_error(E_WARNING, "Error installing signal handler for %d", signo); + zend_error(E_ERROR, "Error installing signal handler for %d", signo); } return SUCCESS; diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c index 70e61122a..25a66a197 100644 --- a/Zend/zend_variables.c +++ b/Zend/zend_variables.c @@ -40,6 +40,8 @@ ZEND_API void _zval_dtor_func(zval *zvalue ZEND_FILE_LINE_DC) TSRMLS_FETCH(); if (zvalue->value.ht && (zvalue->value.ht != &EG(symbol_table))) { + /* break possible cycles */ + Z_TYPE_P(zvalue) = IS_NULL; zend_hash_destroy(zvalue->value.ht); FREE_HASHTABLE(zvalue->value.ht); } diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 9d475a688..b06c09f48 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1174,7 +1174,7 @@ ZEND_VM_HANDLER(89, ZEND_FETCH_IS, CONST|TMP|VAR|CV, UNUSED|CONST|VAR) ZEND_VM_DISPATCH_TO_HELPER_EX(zend_fetch_var_address_helper, type, BP_VAR_IS); } -ZEND_VM_HANDLER(81, ZEND_FETCH_DIM_R, VAR|CV, CONST|TMP|VAR|CV) +ZEND_VM_HANDLER(81, ZEND_FETCH_DIM_R, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV) { USE_OPLINE zend_free_op free_op1, free_op2; @@ -1187,10 +1187,19 @@ ZEND_VM_HANDLER(81, ZEND_FETCH_DIM_R, VAR|CV, CONST|TMP|VAR|CV) EX_T(opline->op1.var).var.ptr_ptr) { PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); } - container = GET_OP1_ZVAL_PTR_PTR(BP_VAR_R); - zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_R TSRMLS_CC); - FREE_OP2(); - FREE_OP1_VAR_PTR(); + + if (OP1_TYPE == IS_TMP_VAR || OP1_TYPE == IS_CONST) { + zval *container = GET_OP1_ZVAL_PTR(BP_VAR_R); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_R TSRMLS_CC); + FREE_OP2(); + FREE_OP1(); + } else { + container = GET_OP1_ZVAL_PTR_PTR(BP_VAR_R); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_R TSRMLS_CC); + FREE_OP2(); + FREE_OP1_VAR_PTR(); + } + CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } @@ -1831,6 +1840,386 @@ ZEND_VM_HANDLER(39, ZEND_ASSIGN_REF, VAR|CV, VAR|CV) ZEND_VM_NEXT_OPCODE(); } +ZEND_VM_HELPER(zend_leave_helper, ANY, ANY) +{ + zend_bool nested; + zend_op_array *op_array = EX(op_array); + + /* Generators go throw a different cleanup process */ + if (EX(op_array)->fn_flags & ZEND_ACC_GENERATOR) { + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + /* Close the generator to free up resources */ + zend_generator_close(generator, 1 TSRMLS_CC); + + /* Pass execution back to handling code */ + ZEND_VM_RETURN(); + } + + EG(current_execute_data) = EX(prev_execute_data); + EG(opline_ptr) = NULL; + if (!EG(active_symbol_table)) { + zend_free_compiled_variables(EX_CVs(), op_array->last_var); + } + + if ((op_array->fn_flags & ZEND_ACC_CLOSURE) && op_array->prototype) { + zval_ptr_dtor((zval**)&op_array->prototype); + } + + nested = EX(nested); + + zend_vm_stack_free(execute_data TSRMLS_CC); + + if (nested) { + execute_data = EG(current_execute_data); + } + if (nested) { + USE_OPLINE + + LOAD_REGS(); + LOAD_OPLINE(); + if (UNEXPECTED(opline->opcode == ZEND_INCLUDE_OR_EVAL)) { + + EX(function_state).function = (zend_function *) EX(op_array); + EX(function_state).arguments = NULL; + EX(object) = EX(current_object); + + EG(opline_ptr) = &EX(opline); + EG(active_op_array) = EX(op_array); + EG(return_value_ptr_ptr) = EX(original_return_value); + destroy_op_array(op_array TSRMLS_CC); + efree(op_array); + if (UNEXPECTED(EG(exception) != NULL)) { + zend_throw_exception_internal(NULL TSRMLS_CC); + HANDLE_EXCEPTION_LEAVE(); + } else if (RETURN_VALUE_USED(opline)) { + if (!EX_T(opline->result.var).var.ptr) { /* there was no return statement */ + zval *retval; + + ALLOC_ZVAL(retval); + ZVAL_BOOL(retval, 1); + INIT_PZVAL(retval); + EX_T(opline->result.var).var.ptr = retval; + } + } + + ZEND_VM_INC_OPCODE(); + ZEND_VM_LEAVE(); + } else { + EG(opline_ptr) = &EX(opline); + EG(active_op_array) = EX(op_array); + EG(return_value_ptr_ptr) = EX(original_return_value); + if (EG(active_symbol_table)) { + zend_clean_and_cache_symbol_table(EG(active_symbol_table) TSRMLS_CC); + } + EG(active_symbol_table) = EX(symbol_table); + + EX(function_state).function = (zend_function *) EX(op_array); + EX(function_state).arguments = NULL; + + if (EG(This)) { + if (UNEXPECTED(EG(exception) != NULL) && IS_CTOR_CALL(EX(called_scope))) { + if (IS_CTOR_USED(EX(called_scope))) { + Z_DELREF_P(EG(This)); + } + if (Z_REFCOUNT_P(EG(This)) == 1) { + zend_object_store_ctor_failed(EG(This) TSRMLS_CC); + } + } + zval_ptr_dtor(&EG(This)); + } + EG(This) = EX(current_this); + EG(scope) = EX(current_scope); + EG(called_scope) = EX(current_called_scope); + + EX(object) = EX(current_object); + EX(called_scope) = DECODE_CTOR(EX(called_scope)); + + zend_vm_stack_clear_multiple(TSRMLS_C); + + if (UNEXPECTED(EG(exception) != NULL)) { + zend_throw_exception_internal(NULL TSRMLS_CC); + if (RETURN_VALUE_USED(opline) && EX_T(opline->result.var).var.ptr) { + zval_ptr_dtor(&EX_T(opline->result.var).var.ptr); + } + HANDLE_EXCEPTION_LEAVE(); + } + + ZEND_VM_INC_OPCODE(); + ZEND_VM_LEAVE(); + } + } + ZEND_VM_RETURN(); +} + +ZEND_VM_HELPER(zend_do_fcall_common_helper, ANY, ANY) +{ + USE_OPLINE + zend_bool should_change_scope = 0; + zend_function *fbc = EX(function_state).function; + + SAVE_OPLINE(); + if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED)) != 0)) { + if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_ABSTRACT) != 0)) { + zend_error_noreturn(E_ERROR, "Cannot call abstract method %s::%s()", fbc->common.scope->name, fbc->common.function_name); + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); /* Never reached */ + } + if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) { + zend_error(E_DEPRECATED, "Function %s%s%s() is deprecated", + fbc->common.scope ? fbc->common.scope->name : "", + fbc->common.scope ? "::" : "", + fbc->common.function_name); + } + } + if (fbc->common.scope && + !(fbc->common.fn_flags & ZEND_ACC_STATIC) && + !EX(object)) { + + if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) { + /* FIXME: output identifiers properly */ + zend_error(E_STRICT, "Non-static method %s::%s() should not be called statically", fbc->common.scope->name, fbc->common.function_name); + } else { + /* FIXME: output identifiers properly */ + /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */ + zend_error_noreturn(E_ERROR, "Non-static method %s::%s() cannot be called statically", fbc->common.scope->name, fbc->common.function_name); + } + } + + if (fbc->type == ZEND_USER_FUNCTION || fbc->common.scope) { + should_change_scope = 1; + EX(current_this) = EG(This); + EX(current_scope) = EG(scope); + EX(current_called_scope) = EG(called_scope); + EG(This) = EX(object); + EG(scope) = (fbc->type == ZEND_USER_FUNCTION || !EX(object)) ? fbc->common.scope : NULL; + EG(called_scope) = EX(called_scope); + } + + zend_arg_types_stack_3_pop(&EG(arg_types_stack), &EX(called_scope), &EX(current_object), &EX(fbc)); + EX(function_state).arguments = zend_vm_stack_push_args(opline->extended_value TSRMLS_CC); + LOAD_OPLINE(); + + if (fbc->type == ZEND_INTERNAL_FUNCTION) { + temp_variable *ret = &EX_T(opline->result.var); + + MAKE_STD_ZVAL(ret->var.ptr); + ZVAL_NULL(ret->var.ptr); + ret->var.ptr_ptr = &ret->var.ptr; + ret->var.fcall_returned_reference = (fbc->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0; + + if (fbc->common.arg_info) { + zend_uint i=0; + zval **p = (zval**)EX(function_state).arguments; + ulong arg_count = opline->extended_value; + + while (arg_count>0) { + zend_verify_arg_type(fbc, ++i, *(p-arg_count), 0 TSRMLS_CC); + arg_count--; + } + } + + if (!zend_execute_internal) { + /* saves one function call if zend_execute_internal is not used */ + fbc->internal_function.handler(opline->extended_value, ret->var.ptr, (fbc->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? &ret->var.ptr : NULL, EX(object), RETURN_VALUE_USED(opline) TSRMLS_CC); + } else { + zend_execute_internal(EXECUTE_DATA, NULL, RETURN_VALUE_USED(opline) TSRMLS_CC); + } + + if (!RETURN_VALUE_USED(opline)) { + zval_ptr_dtor(&ret->var.ptr); + } + } else if (fbc->type == ZEND_USER_FUNCTION) { + EX(original_return_value) = EG(return_value_ptr_ptr); + EG(active_symbol_table) = NULL; + EG(active_op_array) = &fbc->op_array; + EG(return_value_ptr_ptr) = NULL; + if (RETURN_VALUE_USED(opline)) { + temp_variable *ret = &EX_T(opline->result.var); + + ret->var.ptr = NULL; + EG(return_value_ptr_ptr) = &ret->var.ptr; + ret->var.ptr_ptr = &ret->var.ptr; + ret->var.fcall_returned_reference = (fbc->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0; + } + + if (EG(active_op_array)->fn_flags & ZEND_ACC_GENERATOR) { + if (RETURN_VALUE_USED(opline)) { + EX_T(opline->result.var).var.ptr = zend_generator_create_zval(EG(active_op_array) TSRMLS_CC); + } + } else if (EXPECTED(zend_execute == execute)) { + if (EXPECTED(EG(exception) == NULL)) { + ZEND_VM_ENTER(); + } + } else { + zend_execute(EG(active_op_array) TSRMLS_CC); + } + + EG(opline_ptr) = &EX(opline); + EG(active_op_array) = EX(op_array); + EG(return_value_ptr_ptr) = EX(original_return_value); + if (EG(active_symbol_table)) { + zend_clean_and_cache_symbol_table(EG(active_symbol_table) TSRMLS_CC); + } + EG(active_symbol_table) = EX(symbol_table); + } else { /* ZEND_OVERLOADED_FUNCTION */ + MAKE_STD_ZVAL(EX_T(opline->result.var).var.ptr); + ZVAL_NULL(EX_T(opline->result.var).var.ptr); + + /* Not sure what should be done here if it's a static method */ + if (EXPECTED(EX(object) != NULL)) { + Z_OBJ_HT_P(EX(object))->call_method(fbc->common.function_name, opline->extended_value, EX_T(opline->result.var).var.ptr, &EX_T(opline->result.var).var.ptr, EX(object), RETURN_VALUE_USED(opline) TSRMLS_CC); + } else { + zend_error_noreturn(E_ERROR, "Cannot call overloaded function for non-object"); + } + + if (fbc->type == ZEND_OVERLOADED_FUNCTION_TEMPORARY) { + efree((char*)fbc->common.function_name); + } + efree(fbc); + + if (!RETURN_VALUE_USED(opline)) { + zval_ptr_dtor(&EX_T(opline->result.var).var.ptr); + } else { + Z_UNSET_ISREF_P(EX_T(opline->result.var).var.ptr); + Z_SET_REFCOUNT_P(EX_T(opline->result.var).var.ptr, 1); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + } + + EX(function_state).function = (zend_function *) EX(op_array); + EX(function_state).arguments = NULL; + + if (should_change_scope) { + if (EG(This)) { + if (UNEXPECTED(EG(exception) != NULL) && IS_CTOR_CALL(EX(called_scope))) { + if (IS_CTOR_USED(EX(called_scope))) { + Z_DELREF_P(EG(This)); + } + if (Z_REFCOUNT_P(EG(This)) == 1) { + zend_object_store_ctor_failed(EG(This) TSRMLS_CC); + } + } + zval_ptr_dtor(&EG(This)); + } + EG(This) = EX(current_this); + EG(scope) = EX(current_scope); + EG(called_scope) = EX(current_called_scope); + } + + EX(object) = EX(current_object); + EX(called_scope) = DECODE_CTOR(EX(called_scope)); + + zend_vm_stack_clear_multiple(TSRMLS_C); + + if (UNEXPECTED(EG(exception) != NULL)) { + zend_throw_exception_internal(NULL TSRMLS_CC); + if (RETURN_VALUE_USED(opline) && EX_T(opline->result.var).var.ptr) { + zval_ptr_dtor(&EX_T(opline->result.var).var.ptr); + } + HANDLE_EXCEPTION(); + } + + ZEND_VM_NEXT_OPCODE(); +} + +ZEND_VM_HELPER_EX(zend_finally_handler_leaving, ANY, ANY, int type) +{ + USE_OPLINE + zend_uint i, op_num = opline - EX(op_array)->opcodes; + zend_uint catch_op_num = 0, finally_op_num = 0; + + SAVE_OPLINE(); + + switch (type) { + case ZEND_THROW: + case ZEND_RETURN: + case ZEND_RETURN_BY_REF: + case ZEND_LEAVE: + { + if (EG(prev_exception) || (type == ZEND_LEAVE && EG(exception))) { + for (i=0; i<EX(op_array)->last_try_catch; i++) { + if (EX(op_array)->try_catch_array[i].try_op > op_num) { + break; + } + if (op_num < EX(op_array)->try_catch_array[i].finally_op) { + finally_op_num = EX(op_array)->try_catch_array[i].finally_op; + } + if (op_num < EX(op_array)->try_catch_array[i].catch_op) { + catch_op_num = EX(op_array)->try_catch_array[i].catch_op; + } + } + } else { + for (i=0; i<EX(op_array)->last_try_catch; i++) { + if (EX(op_array)->try_catch_array[i].try_op > op_num) { + break; + } + if (op_num < EX(op_array)->try_catch_array[i].finally_op) { + finally_op_num = EX(op_array)->try_catch_array[i].finally_op; + } + } + } + + if (catch_op_num && finally_op_num) { + /* EG(exception) || EG(prev_exception) */ + if (catch_op_num > finally_op_num) { + zend_exception_save(TSRMLS_C); + EX(leaving) = ZEND_THROW; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]); + } else { + EX(leaving) = 0; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]); + } + } else if (catch_op_num) { + EX(leaving) = 0; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]); + } else if (finally_op_num) { + zend_exception_save(TSRMLS_C); + if (type != ZEND_LEAVE) { + EX(leaving) = type; + } + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]); + } else if (EX(leaving) && type != ZEND_LEAVE) { + /* leave it to ZEND_LEAVE */ + EX(leaving) = type; + ZEND_VM_NEXT_OPCODE(); + } else { + ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper); + } + } + break; + case ZEND_JMP: + case ZEND_BRK: + case ZEND_CONT: + case ZEND_GOTO: + { + /* these can not occurred in exception context */ + for (i=0; i<EG(active_op_array)->last_try_catch; i++) { + if (EG(active_op_array)->try_catch_array[i].try_op > op_num) { + break; + } + if (op_num < EG(active_op_array)->try_catch_array[i].finally_op + && (EX(leaving_dest) < EG(active_op_array)->try_catch_array[i].try_op + || EX(leaving_dest) >= EG(active_op_array)->try_catch_array[i].finally_end)) { + finally_op_num = EG(active_op_array)->try_catch_array[i].finally_op; + } + } + + if (finally_op_num) { + EX(leaving) = type; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]); + } else { + EX(leaving) = 0; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[EX(leaving_dest)]); + } + } + break; + } + ZEND_VM_CONTINUE(); +} + ZEND_VM_HANDLER(42, ZEND_JMP, ANY, ANY) { USE_OPLINE @@ -1838,8 +2227,12 @@ ZEND_VM_HANDLER(42, ZEND_JMP, ANY, ANY) #if DEBUG_ZEND>=2 printf("Jumping to %d\n", opline->op1.opline_num); #endif - ZEND_VM_SET_OPCODE(opline->op1.jmp_addr); - ZEND_VM_CONTINUE(); /* CHECK_ME */ + if (EXPECTED(!EX(op_array)->has_finally_block)) { + ZEND_VM_SET_OPCODE(opline->op1.jmp_addr); + ZEND_VM_CONTINUE(); /* CHECK_ME */ + } + EX(leaving_dest) = opline->op1.jmp_addr - EX(op_array)->opcodes; + ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, type, ZEND_JMP); } ZEND_VM_HANDLER(43, ZEND_JMPZ, CONST|TMP|VAR|CV, ANY) @@ -2124,7 +2517,9 @@ ZEND_VM_HANDLER(109, ZEND_FETCH_CLASS, ANY, CONST|TMP|VAR|UNUSED|CV) USE_OPLINE SAVE_OPLINE(); - EG(exception) = NULL; + if (EG(exception)) { + zend_exception_save(TSRMLS_C); + } if (OP2_TYPE == IS_UNUSED) { EX_T(opline->result.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC); CHECK_EXCEPTION(); @@ -2501,299 +2896,6 @@ ZEND_VM_HANDLER(69, ZEND_INIT_NS_FCALL_BY_NAME, ANY, CONST) ZEND_VM_NEXT_OPCODE(); } -ZEND_VM_HELPER(zend_leave_helper, ANY, ANY) -{ - zend_bool nested; - zend_op_array *op_array = EX(op_array); - - EG(current_execute_data) = EX(prev_execute_data); - EG(opline_ptr) = NULL; - if (!EG(active_symbol_table)) { - zval ***cv = EX_CVs(); - zval ***end = cv + op_array->last_var; - while (cv != end) { - if (*cv) { - zval_ptr_dtor(*cv); - } - cv++; - } - } - - if ((op_array->fn_flags & ZEND_ACC_CLOSURE) && op_array->prototype) { - zval_ptr_dtor((zval**)&op_array->prototype); - } - - nested = EX(nested); - - zend_vm_stack_free(execute_data TSRMLS_CC); - - if (nested) { - execute_data = EG(current_execute_data); - } - if (nested) { - USE_OPLINE - - LOAD_REGS(); - LOAD_OPLINE(); - if (UNEXPECTED(opline->opcode == ZEND_INCLUDE_OR_EVAL)) { - - EX(function_state).function = (zend_function *) EX(op_array); - EX(function_state).arguments = NULL; - EX(object) = EX(current_object); - - EG(opline_ptr) = &EX(opline); - EG(active_op_array) = EX(op_array); - EG(return_value_ptr_ptr) = EX(original_return_value); - destroy_op_array(op_array TSRMLS_CC); - efree(op_array); - if (UNEXPECTED(EG(exception) != NULL)) { - zend_throw_exception_internal(NULL TSRMLS_CC); - HANDLE_EXCEPTION_LEAVE(); - } else if (RETURN_VALUE_USED(opline)) { - if (!EX_T(opline->result.var).var.ptr) { /* there was no return statement */ - zval *retval; - - ALLOC_ZVAL(retval); - ZVAL_BOOL(retval, 1); - INIT_PZVAL(retval); - EX_T(opline->result.var).var.ptr = retval; - } - } - - ZEND_VM_INC_OPCODE(); - ZEND_VM_LEAVE(); - } else { - - EG(opline_ptr) = &EX(opline); - EG(active_op_array) = EX(op_array); - EG(return_value_ptr_ptr) = EX(original_return_value); - if (EG(active_symbol_table)) { - if (EG(symtable_cache_ptr)>=EG(symtable_cache_limit)) { - zend_hash_destroy(EG(active_symbol_table)); - FREE_HASHTABLE(EG(active_symbol_table)); - } else { - /* clean before putting into the cache, since clean - could call dtors, which could use cached hash */ - zend_hash_clean(EG(active_symbol_table)); - *(++EG(symtable_cache_ptr)) = EG(active_symbol_table); - } - } - EG(active_symbol_table) = EX(symbol_table); - - EX(function_state).function = (zend_function *) EX(op_array); - EX(function_state).arguments = NULL; - - if (EG(This)) { - if (UNEXPECTED(EG(exception) != NULL) && IS_CTOR_CALL(EX(called_scope))) { - if (IS_CTOR_USED(EX(called_scope))) { - Z_DELREF_P(EG(This)); - } - if (Z_REFCOUNT_P(EG(This)) == 1) { - zend_object_store_ctor_failed(EG(This) TSRMLS_CC); - } - } - zval_ptr_dtor(&EG(This)); - } - EG(This) = EX(current_this); - EG(scope) = EX(current_scope); - EG(called_scope) = EX(current_called_scope); - - EX(object) = EX(current_object); - EX(called_scope) = DECODE_CTOR(EX(called_scope)); - - zend_vm_stack_clear_multiple(TSRMLS_C); - - if (UNEXPECTED(EG(exception) != NULL)) { - zend_throw_exception_internal(NULL TSRMLS_CC); - if (RETURN_VALUE_USED(opline) && EX_T(opline->result.var).var.ptr) { - zval_ptr_dtor(&EX_T(opline->result.var).var.ptr); - } - HANDLE_EXCEPTION_LEAVE(); - } - - ZEND_VM_INC_OPCODE(); - ZEND_VM_LEAVE(); - } - } - ZEND_VM_RETURN(); -} - -ZEND_VM_HELPER(zend_do_fcall_common_helper, ANY, ANY) -{ - USE_OPLINE - zend_bool should_change_scope = 0; - zend_function *fbc = EX(function_state).function; - - SAVE_OPLINE(); - if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED)) != 0)) { - if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_ABSTRACT) != 0)) { - zend_error_noreturn(E_ERROR, "Cannot call abstract method %s::%s()", fbc->common.scope->name, fbc->common.function_name); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); /* Never reached */ - } - if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) { - zend_error(E_DEPRECATED, "Function %s%s%s() is deprecated", - fbc->common.scope ? fbc->common.scope->name : "", - fbc->common.scope ? "::" : "", - fbc->common.function_name); - } - } - if (fbc->common.scope && - !(fbc->common.fn_flags & ZEND_ACC_STATIC) && - !EX(object)) { - - if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) { - /* FIXME: output identifiers properly */ - zend_error(E_STRICT, "Non-static method %s::%s() should not be called statically", fbc->common.scope->name, fbc->common.function_name); - } else { - /* FIXME: output identifiers properly */ - /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */ - zend_error_noreturn(E_ERROR, "Non-static method %s::%s() cannot be called statically", fbc->common.scope->name, fbc->common.function_name); - } - } - - if (fbc->type == ZEND_USER_FUNCTION || fbc->common.scope) { - should_change_scope = 1; - EX(current_this) = EG(This); - EX(current_scope) = EG(scope); - EX(current_called_scope) = EG(called_scope); - EG(This) = EX(object); - EG(scope) = (fbc->type == ZEND_USER_FUNCTION || !EX(object)) ? fbc->common.scope : NULL; - EG(called_scope) = EX(called_scope); - } - - zend_arg_types_stack_3_pop(&EG(arg_types_stack), &EX(called_scope), &EX(current_object), &EX(fbc)); - EX(function_state).arguments = zend_vm_stack_push_args(opline->extended_value TSRMLS_CC); - LOAD_OPLINE(); - - if (fbc->type == ZEND_INTERNAL_FUNCTION) { - temp_variable *ret = &EX_T(opline->result.var); - - MAKE_STD_ZVAL(ret->var.ptr); - ZVAL_NULL(ret->var.ptr); - ret->var.ptr_ptr = &ret->var.ptr; - ret->var.fcall_returned_reference = (fbc->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0; - - if (fbc->common.arg_info) { - zend_uint i=0; - zval **p = (zval**)EX(function_state).arguments; - ulong arg_count = opline->extended_value; - - while (arg_count>0) { - zend_verify_arg_type(fbc, ++i, *(p-arg_count), 0 TSRMLS_CC); - arg_count--; - } - } - - if (!zend_execute_internal) { - /* saves one function call if zend_execute_internal is not used */ - fbc->internal_function.handler(opline->extended_value, ret->var.ptr, (fbc->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? &ret->var.ptr : NULL, EX(object), RETURN_VALUE_USED(opline) TSRMLS_CC); - } else { - zend_execute_internal(EXECUTE_DATA, RETURN_VALUE_USED(opline) TSRMLS_CC); - } - - if (!RETURN_VALUE_USED(opline)) { - zval_ptr_dtor(&ret->var.ptr); - } - } else if (fbc->type == ZEND_USER_FUNCTION) { - EX(original_return_value) = EG(return_value_ptr_ptr); - EG(active_symbol_table) = NULL; - EG(active_op_array) = &fbc->op_array; - EG(return_value_ptr_ptr) = NULL; - if (RETURN_VALUE_USED(opline)) { - temp_variable *ret = &EX_T(opline->result.var); - - ret->var.ptr = NULL; - EG(return_value_ptr_ptr) = &ret->var.ptr; - ret->var.ptr_ptr = &ret->var.ptr; - ret->var.fcall_returned_reference = (fbc->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0; - } - - if (EXPECTED(zend_execute == execute)) { - if (EXPECTED(EG(exception) == NULL)) { - ZEND_VM_ENTER(); - } - } else { - zend_execute(EG(active_op_array) TSRMLS_CC); - } - - EG(opline_ptr) = &EX(opline); - EG(active_op_array) = EX(op_array); - EG(return_value_ptr_ptr) = EX(original_return_value); - if (EG(active_symbol_table)) { - if (EG(symtable_cache_ptr)>=EG(symtable_cache_limit)) { - zend_hash_destroy(EG(active_symbol_table)); - FREE_HASHTABLE(EG(active_symbol_table)); - } else { - /* clean before putting into the cache, since clean - could call dtors, which could use cached hash */ - zend_hash_clean(EG(active_symbol_table)); - *(++EG(symtable_cache_ptr)) = EG(active_symbol_table); - } - } - EG(active_symbol_table) = EX(symbol_table); - } else { /* ZEND_OVERLOADED_FUNCTION */ - MAKE_STD_ZVAL(EX_T(opline->result.var).var.ptr); - ZVAL_NULL(EX_T(opline->result.var).var.ptr); - - /* Not sure what should be done here if it's a static method */ - if (EXPECTED(EX(object) != NULL)) { - Z_OBJ_HT_P(EX(object))->call_method(fbc->common.function_name, opline->extended_value, EX_T(opline->result.var).var.ptr, &EX_T(opline->result.var).var.ptr, EX(object), RETURN_VALUE_USED(opline) TSRMLS_CC); - } else { - zend_error_noreturn(E_ERROR, "Cannot call overloaded function for non-object"); - } - - if (fbc->type == ZEND_OVERLOADED_FUNCTION_TEMPORARY) { - efree((char*)fbc->common.function_name); - } - efree(fbc); - - if (!RETURN_VALUE_USED(opline)) { - zval_ptr_dtor(&EX_T(opline->result.var).var.ptr); - } else { - Z_UNSET_ISREF_P(EX_T(opline->result.var).var.ptr); - Z_SET_REFCOUNT_P(EX_T(opline->result.var).var.ptr, 1); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; - } - } - - EX(function_state).function = (zend_function *) EX(op_array); - EX(function_state).arguments = NULL; - - if (should_change_scope) { - if (EG(This)) { - if (UNEXPECTED(EG(exception) != NULL) && IS_CTOR_CALL(EX(called_scope))) { - if (IS_CTOR_USED(EX(called_scope))) { - Z_DELREF_P(EG(This)); - } - if (Z_REFCOUNT_P(EG(This)) == 1) { - zend_object_store_ctor_failed(EG(This) TSRMLS_CC); - } - } - zval_ptr_dtor(&EG(This)); - } - EG(This) = EX(current_this); - EG(scope) = EX(current_scope); - EG(called_scope) = EX(current_called_scope); - } - - EX(object) = EX(current_object); - EX(called_scope) = DECODE_CTOR(EX(called_scope)); - - zend_vm_stack_clear_multiple(TSRMLS_C); - - if (UNEXPECTED(EG(exception) != NULL)) { - zend_throw_exception_internal(NULL TSRMLS_CC); - if (RETURN_VALUE_USED(opline) && EX_T(opline->result.var).var.ptr) { - zval_ptr_dtor(&EX_T(opline->result.var).var.ptr); - } - HANDLE_EXCEPTION(); - } - - ZEND_VM_NEXT_OPCODE(); -} - ZEND_VM_HANDLER(61, ZEND_DO_FCALL_BY_NAME, ANY, ANY) { EX(function_state).function = EX(fbc); @@ -2837,6 +2939,9 @@ ZEND_VM_HANDLER(62, ZEND_RETURN, CONST|TMP|VAR|CV, ANY) FREE_OP1(); } } else if (!IS_OP1_TMP_FREE()) { /* Not a temp var */ + if (*EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } if (OP1_TYPE == IS_CONST || (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) { zval *ret; @@ -2858,12 +2963,20 @@ ZEND_VM_HANDLER(62, ZEND_RETURN, CONST|TMP|VAR|CV, ANY) } else { zval *ret; + if (*EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } + ALLOC_ZVAL(ret); INIT_PZVAL_COPY(ret, retval_ptr); *EG(return_value_ptr_ptr) = ret; } FREE_OP1_IF_VAR(); - ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper); + + if (EXPECTED(!EX(op_array)->has_finally_block)) { + ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper); + } + ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, type, ZEND_RETURN); } ZEND_VM_HANDLER(111, ZEND_RETURN_BY_REF, CONST|TMP|VAR|CV, ANY) @@ -2876,6 +2989,10 @@ ZEND_VM_HANDLER(111, ZEND_RETURN_BY_REF, CONST|TMP|VAR|CV, ANY) SAVE_OPLINE(); do { + if (EG(return_value_ptr_ptr) && *EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } + if (OP1_TYPE == IS_CONST || OP1_TYPE == IS_TMP_VAR) { /* Not supposed to happen, but we'll allow it */ zend_error(E_NOTICE, "Only variable references should be returned by reference"); @@ -2931,6 +3048,18 @@ ZEND_VM_HANDLER(111, ZEND_RETURN_BY_REF, CONST|TMP|VAR|CV, ANY) } while (0); FREE_OP1_IF_VAR(); + + if (EXPECTED(!EX(op_array)->has_finally_block)) { + ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper); + } + ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, type, ZEND_RETURN_BY_REF); +} + +ZEND_VM_HANDLER(161, ZEND_GENERATOR_RETURN, ANY, ANY) +{ + if (EX(op_array)->has_finally_block) { + ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, type, ZEND_RETURN); + } ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper); } @@ -3275,7 +3404,11 @@ ZEND_VM_HANDLER(50, ZEND_BRK, ANY, CONST) el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num, EX(op_array), EX_Ts() TSRMLS_CC); FREE_OP2(); - ZEND_VM_JMP(EX(op_array)->opcodes + el->brk); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + ZEND_VM_JMP(EX(op_array)->opcodes + el->brk); + } + EX(leaving_dest) = el->brk; + ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, type, ZEND_BRK); } ZEND_VM_HANDLER(51, ZEND_CONT, ANY, CONST) @@ -3287,7 +3420,11 @@ ZEND_VM_HANDLER(51, ZEND_CONT, ANY, CONST) el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num, EX(op_array), EX_Ts() TSRMLS_CC); FREE_OP2(); - ZEND_VM_JMP(EX(op_array)->opcodes + el->cont); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + ZEND_VM_JMP(EX(op_array)->opcodes + el->cont); + } + EX(leaving_dest) = el->cont; + ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, type, ZEND_CONT); } ZEND_VM_HANDLER(100, ZEND_GOTO, ANY, CONST) @@ -3314,7 +3451,11 @@ ZEND_VM_HANDLER(100, ZEND_GOTO, ANY, CONST) } break; } - ZEND_VM_JMP(opline->op1.jmp_addr); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + ZEND_VM_JMP(opline->op1.jmp_addr); + } + EX(leaving_dest) = opline->op1.jmp_addr - EX(op_array)->opcodes; + ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, type, ZEND_GOTO); } ZEND_VM_HANDLER(48, ZEND_CASE, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV) @@ -3712,7 +3853,7 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMP|VAR|CV, ANY) zend_op_array *new_op_array=NULL; zend_free_op free_op1; zval *inc_filename; - zval *tmp_inc_filename = NULL; + zval *tmp_inc_filename = NULL; zend_bool failure_retval=0; SAVE_OPLINE(); @@ -4992,13 +5133,28 @@ ZEND_VM_HANDLER(149, ZEND_HANDLE_EXCEPTION, ANY, ANY) { zend_uint op_num = EG(opline_before_exception)-EG(active_op_array)->opcodes; int i; - zend_uint catch_op_num = 0; - int catched = 0; - zval restored_error_reporting; - - void **stack_frame = (void**)(((char*)EX_Ts()) + - (ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * EX(op_array)->T)); + zend_uint catch_op_num = 0, finally_op_num = 0; + int catched = 0, finally = 0; + void **stack_frame; + + /* Figure out where the next stack frame (which maybe contains pushed + * arguments that have to be dtor'ed) starts */ + if (EX(op_array)->fn_flags & ZEND_ACC_GENERATOR) { + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + /* For generators the next stack frame is conveniently stored in the + * generator object. */ + stack_frame = generator->original_stack_top; + } else { + /* In all other cases the next stack frame starts after the temporary + * variables section of the current execution context */ + stack_frame = (void **) ((char *) EX_Ts() + + ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * EX(op_array)->T); + } + /* If the exception was thrown during a function call there might be + * arguments pushed to the stack that have to be dtor'ed. */ while (zend_vm_stack_top(TSRMLS_C) != stack_frame) { zval *stack_zval_p = zend_vm_stack_pop(TSRMLS_C); zval_ptr_dtor(&stack_zval_p); @@ -5008,9 +5164,14 @@ ZEND_VM_HANDLER(149, ZEND_HANDLE_EXCEPTION, ANY, ANY) if (EG(active_op_array)->try_catch_array[i].try_op > op_num) { /* further blocks will not be relevant... */ break; - } else if (op_num < EG(active_op_array)->try_catch_array[i].catch_op) { + } + if (op_num < EG(active_op_array)->try_catch_array[i].catch_op) { catch_op_num = EX(op_array)->try_catch_array[i].catch_op; - catched = 1; + catched = i + 1; + } + if (op_num < EG(active_op_array)->try_catch_array[i].finally_op) { + finally_op_num = EX(op_array)->try_catch_array[i].finally_op; + finally = i + 1; } } @@ -5060,6 +5221,8 @@ ZEND_VM_HANDLER(149, ZEND_HANDLE_EXCEPTION, ANY, ANY) /* restore previous error_reporting value */ if (!EG(error_reporting) && EX(old_error_reporting) != NULL && Z_LVAL_P(EX(old_error_reporting)) != 0) { + zval restored_error_reporting; + Z_TYPE(restored_error_reporting) = IS_LONG; Z_LVAL(restored_error_reporting) = Z_LVAL_P(EX(old_error_reporting)); convert_to_string(&restored_error_reporting); @@ -5068,12 +5231,29 @@ ZEND_VM_HANDLER(149, ZEND_HANDLE_EXCEPTION, ANY, ANY) } EX(old_error_reporting) = NULL; - if (!catched) { - ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper); - } else { + if (catched && finally) { + if (finally_op_num > catch_op_num) { + EX(leaving) = 0; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]); + ZEND_VM_CONTINUE(); + } else { + zend_exception_save(TSRMLS_C); + EX(leaving) = ZEND_THROW; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]); + ZEND_VM_CONTINUE(); + } + } else if (catched) { + EX(leaving) = 0; ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]); - ZEND_VM_CONTINUE(); - } + ZEND_VM_CONTINUE(); + } else if (finally) { + zend_exception_save(TSRMLS_C); + EX(leaving) = ZEND_THROW; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]); + ZEND_VM_CONTINUE(); + } else { + ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper); + } } ZEND_VM_HANDLER(146, ZEND_VERIFY_ABSTRACT_CLASS, ANY, ANY) @@ -5164,7 +5344,7 @@ ZEND_VM_HANDLER(153, ZEND_DECLARE_LAMBDA_FUNCTION, CONST, UNUSED) zend_error_noreturn(E_ERROR, "Base lambda function for closure not found"); } - zend_create_closure(&EX_T(opline->result.var).tmp_var, op_array, EG(scope), EG(This) TSRMLS_CC); + zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(scope), EG(This) TSRMLS_CC); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -5178,8 +5358,8 @@ ZEND_VM_HANDLER(156, ZEND_SEPARATE, VAR, UNUSED) SAVE_OPLINE(); var_ptr = EX_T(opline->op1.var).var.ptr; if (Z_TYPE_P(var_ptr) != IS_OBJECT && - !PZVAL_IS_REF(var_ptr) && - Z_REFCOUNT_P(var_ptr) > 1) { + !PZVAL_IS_REF(var_ptr) && + Z_REFCOUNT_P(var_ptr) > 1) { Z_DELREF_P(var_ptr); ALLOC_ZVAL(new_zv); @@ -5191,4 +5371,185 @@ ZEND_VM_HANDLER(156, ZEND_SEPARATE, VAR, UNUSED) ZEND_VM_NEXT_OPCODE(); } +ZEND_VM_HANDLER(159, ZEND_LEAVE, ANY, ANY) +{ + zend_exception_restore(TSRMLS_C); + if (!EX(leaving)) { + ZEND_VM_NEXT_OPCODE(); + } else { + zend_uint leaving = EX(leaving); + switch (leaving) { + case ZEND_RETURN: + case ZEND_RETURN_BY_REF: + case ZEND_THROW: + leaving = ZEND_LEAVE; + case ZEND_JMP: + case ZEND_BRK: + case ZEND_CONT: + case ZEND_GOTO: + ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, type, leaving); + break; + } + } + + ZEND_VM_CONTINUE(); +} + +ZEND_VM_HANDLER(160, ZEND_YIELD, CONST|TMP|VAR|CV|UNUSED, CONST|TMP|VAR|CV|UNUSED) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (OP1_TYPE != IS_UNUSED) { + zend_free_op free_op1; + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (OP1_TYPE == IS_CONST || OP1_TYPE == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = GET_OP1_ZVAL_PTR(BP_VAR_R); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!IS_OP1_TMP_FREE()) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = GET_OP1_ZVAL_PTR_PTR(BP_VAR_W); + + if (OP1_TYPE == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (OP1_TYPE == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + FREE_OP1_IF_VAR(); + } + } else { + zval *value = GET_OP1_ZVAL_PTR(BP_VAR_R); + + /* Consts, temporary variables and references need copying */ + if (OP1_TYPE == IS_CONST || OP1_TYPE == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!IS_OP1_TMP_FREE()) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + FREE_OP1_IF_VAR(); + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (OP2_TYPE != IS_UNUSED) { + zend_free_op free_op2; + zval *key = GET_OP2_ZVAL_PTR(BP_VAR_R); + + /* Consts, temporary variables and references need copying */ + if (OP2_TYPE == IS_CONST || OP2_TYPE == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!IS_OP2_TMP_FREE()) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + FREE_OP2_IF_VAR(); + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + ZEND_VM_EXPORT_HELPER(zend_do_fcall, zend_do_fcall_common_helper) diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 4abe6503c..7a2cfc88d 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -339,30 +339,43 @@ static opcode_handler_t zend_vm_get_opcode_handler(zend_uchar opcode, zend_op* o #define EX_Ts() EX(Ts) -ZEND_API void execute(zend_op_array *op_array TSRMLS_DC) -{ - DCL_OPLINE +zend_execute_data *zend_create_execute_data_from_op_array(zend_op_array *op_array, zend_bool nested TSRMLS_DC) { zend_execute_data *execute_data; - zend_bool nested = 0; - zend_bool original_in_execution = EG(in_execution); - - if (EG(exception)) { - return; + /* + * When allocating the execute_data, memory for compiled variables and + * temporary variables is also allocated after the actual zend_execute_data + * struct. op_array->last_var specifies the number of compiled variables and + * op_array->T is the number of temporary variables. If there is no symbol + * table, then twice as much memory is allocated for compiled variables. + * In that case the first half contains zval**s and the second half the + * actual zval*s (which would otherwise be in the symbol table). + */ + size_t execute_data_size = ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data)); + size_t CVs_size = ZEND_MM_ALIGNED_SIZE(sizeof(zval **) * op_array->last_var * (EG(active_symbol_table) ? 1 : 2)); + size_t Ts_size = ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * op_array->T; + size_t total_size = execute_data_size + CVs_size + Ts_size; + + /* + * Normally the execute_data is allocated on the VM stack (because it does + * not actually do any allocation and thus is faster). For generators + * though this behavior would be suboptimal, because the (rather large) + * structure would have to be copied back and forth every time execution is + * suspended or resumed. That's why for generators the execution context + * is allocated using emalloc, thus allowing to save and restore it simply + * by replacing a pointer. + */ + if (op_array->fn_flags & ZEND_ACC_GENERATOR) { + execute_data = emalloc(total_size); + } else { + execute_data = zend_vm_stack_alloc(total_size TSRMLS_CC); } - EG(in_execution) = 1; + EX(CVs) = (zval ***) ((char *) execute_data + execute_data_size); + memset(EX(CVs), 0, sizeof(zval **) * op_array->last_var); -zend_vm_enter: - /* Initialize execute_data */ - execute_data = (zend_execute_data *)zend_vm_stack_alloc( - ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data)) + - ZEND_MM_ALIGNED_SIZE(sizeof(zval**) * op_array->last_var * (EG(active_symbol_table) ? 1 : 2)) + - ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * op_array->T TSRMLS_CC); + EX(Ts) = (temp_variable *) ((char *) EX(CVs) + CVs_size); - EX(CVs) = (zval***)((char*)execute_data + ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data))); - memset(EX(CVs), 0, sizeof(zval**) * op_array->last_var); - EX(Ts) = (temp_variable *)(((char*)EX(CVs)) + ZEND_MM_ALIGNED_SIZE(sizeof(zval**) * op_array->last_var * (EG(active_symbol_table) ? 1 : 2))); EX(fbc) = NULL; EX(called_scope) = NULL; EX(object) = NULL; @@ -372,9 +385,7 @@ zend_vm_enter: EX(prev_execute_data) = EG(current_execute_data); EG(current_execute_data) = execute_data; EX(nested) = nested; - nested = 1; - - LOAD_REGS(); + EX(leaving) = 0; if (!op_array->run_time_cache && op_array->last_cache_slot) { op_array->run_time_cache = ecalloc(op_array->last_cache_slot, sizeof(void*)); @@ -383,10 +394,10 @@ zend_vm_enter: if (op_array->this_var != -1 && EG(This)) { Z_ADDREF_P(EG(This)); /* For $this pointer */ if (!EG(active_symbol_table)) { - EX_CV(op_array->this_var) = (zval**)EX_CVs() + (op_array->last_var + op_array->this_var); - *EX_CV(op_array->this_var) = EG(This); + EX(CVs)[op_array->this_var] = (zval **) EX(CVs) + op_array->last_var + op_array->this_var; + *EX(CVs)[op_array->this_var] = EG(This); } else { - if (zend_hash_add(EG(active_symbol_table), "this", sizeof("this"), &EG(This), sizeof(zval *), (void**)&EX_CV(op_array->this_var))==FAILURE) { + if (zend_hash_add(EG(active_symbol_table), "this", sizeof("this"), &EG(This), sizeof(zval *), (void **) &EX(CVs)[op_array->this_var])==FAILURE) { Z_DELREF_P(EG(This)); } } @@ -394,11 +405,26 @@ zend_vm_enter: EX(opline) = UNEXPECTED((op_array->fn_flags & ZEND_ACC_INTERACTIVE) != 0) && EG(start_op) ? EG(start_op) : op_array->opcodes; EG(opline_ptr) = &EX(opline); - LOAD_OPLINE(); EX(function_state).function = (zend_function *) op_array; EX(function_state).arguments = NULL; + return execute_data; +} + +ZEND_API void execute_ex(zend_execute_data *execute_data TSRMLS_DC) +{ + DCL_OPLINE + zend_bool original_in_execution; + + + + original_in_execution = EG(in_execution); + EG(in_execution) = 1; + + LOAD_REGS(); + LOAD_OPLINE(); + while (1) { int ret; #ifdef ZEND_WIN32 @@ -413,10 +439,11 @@ zend_vm_enter: EG(in_execution) = original_in_execution; return; case 2: - op_array = EG(active_op_array); - goto zend_vm_enter; + execute_data = zend_create_execute_data_from_op_array(EG(active_op_array), 1 TSRMLS_CC); + break; case 3: execute_data = EG(current_execute_data); + break; default: break; } @@ -426,31 +453,12 @@ zend_vm_enter: zend_error_noreturn(E_ERROR, "Arrived at end of main loop which shouldn't happen"); } -static int ZEND_FASTCALL ZEND_JMP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) -{ - USE_OPLINE - -#if DEBUG_ZEND>=2 - printf("Jumping to %d\n", opline->op1.opline_num); -#endif - ZEND_VM_SET_OPCODE(opline->op1.jmp_addr); - ZEND_VM_CONTINUE(); /* CHECK_ME */ -} - -static int ZEND_FASTCALL ZEND_INIT_STRING_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +ZEND_API void execute(zend_op_array *op_array TSRMLS_DC) { - USE_OPLINE - zval *tmp = &EX_T(opline->result.var).tmp_var; - - SAVE_OPLINE(); - tmp->value.str.val = emalloc(1); - tmp->value.str.val[0] = 0; - tmp->value.str.len = 0; - Z_SET_REFCOUNT_P(tmp, 1); - tmp->type = IS_STRING; - Z_UNSET_ISREF_P(tmp); - /*CHECK_EXCEPTION();*/ - ZEND_VM_NEXT_OPCODE(); + if (EG(exception)) { + return; + } + execute_ex(zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC) TSRMLS_CC); } static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS) @@ -458,17 +466,22 @@ static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS) zend_bool nested; zend_op_array *op_array = EX(op_array); + /* Generators go throw a different cleanup process */ + if (EX(op_array)->fn_flags & ZEND_ACC_GENERATOR) { + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + /* Close the generator to free up resources */ + zend_generator_close(generator, 1 TSRMLS_CC); + + /* Pass execution back to handling code */ + ZEND_VM_RETURN(); + } + EG(current_execute_data) = EX(prev_execute_data); EG(opline_ptr) = NULL; if (!EG(active_symbol_table)) { - zval ***cv = EX_CVs(); - zval ***end = cv + op_array->last_var; - while (cv != end) { - if (*cv) { - zval_ptr_dtor(*cv); - } - cv++; - } + zend_free_compiled_variables(EX_CVs(), op_array->last_var); } if ((op_array->fn_flags & ZEND_ACC_CLOSURE) && op_array->prototype) { @@ -515,20 +528,11 @@ static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS) ZEND_VM_INC_OPCODE(); ZEND_VM_LEAVE(); } else { - EG(opline_ptr) = &EX(opline); EG(active_op_array) = EX(op_array); EG(return_value_ptr_ptr) = EX(original_return_value); if (EG(active_symbol_table)) { - if (EG(symtable_cache_ptr)>=EG(symtable_cache_limit)) { - zend_hash_destroy(EG(active_symbol_table)); - FREE_HASHTABLE(EG(active_symbol_table)); - } else { - /* clean before putting into the cache, since clean - could call dtors, which could use cached hash */ - zend_hash_clean(EG(active_symbol_table)); - *(++EG(symtable_cache_ptr)) = EG(active_symbol_table); - } + zend_clean_and_cache_symbol_table(EG(active_symbol_table) TSRMLS_CC); } EG(active_symbol_table) = EX(symbol_table); @@ -641,7 +645,7 @@ static int ZEND_FASTCALL zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_AR /* saves one function call if zend_execute_internal is not used */ fbc->internal_function.handler(opline->extended_value, ret->var.ptr, (fbc->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? &ret->var.ptr : NULL, EX(object), RETURN_VALUE_USED(opline) TSRMLS_CC); } else { - zend_execute_internal(execute_data, RETURN_VALUE_USED(opline) TSRMLS_CC); + zend_execute_internal(execute_data, NULL, RETURN_VALUE_USED(opline) TSRMLS_CC); } if (!RETURN_VALUE_USED(opline)) { @@ -661,7 +665,11 @@ static int ZEND_FASTCALL zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_AR ret->var.fcall_returned_reference = (fbc->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0; } - if (EXPECTED(zend_execute == execute)) { + if (EG(active_op_array)->fn_flags & ZEND_ACC_GENERATOR) { + if (RETURN_VALUE_USED(opline)) { + EX_T(opline->result.var).var.ptr = zend_generator_create_zval(EG(active_op_array) TSRMLS_CC); + } + } else if (EXPECTED(zend_execute == execute)) { if (EXPECTED(EG(exception) == NULL)) { ZEND_VM_ENTER(); } @@ -673,22 +681,14 @@ static int ZEND_FASTCALL zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_AR EG(active_op_array) = EX(op_array); EG(return_value_ptr_ptr) = EX(original_return_value); if (EG(active_symbol_table)) { - if (EG(symtable_cache_ptr)>=EG(symtable_cache_limit)) { - zend_hash_destroy(EG(active_symbol_table)); - FREE_HASHTABLE(EG(active_symbol_table)); - } else { - /* clean before putting into the cache, since clean - could call dtors, which could use cached hash */ - zend_hash_clean(EG(active_symbol_table)); - *(++EG(symtable_cache_ptr)) = EG(active_symbol_table); - } + zend_clean_and_cache_symbol_table(EG(active_symbol_table) TSRMLS_CC); } EG(active_symbol_table) = EX(symbol_table); } else { /* ZEND_OVERLOADED_FUNCTION */ MAKE_STD_ZVAL(EX_T(opline->result.var).var.ptr); ZVAL_NULL(EX_T(opline->result.var).var.ptr); - /* Not sure what should be done here if it's a static method */ + /* Not sure what should be done here if it's a static method */ if (EXPECTED(EX(object) != NULL)) { Z_OBJ_HT_P(EX(object))->call_method(fbc->common.function_name, opline->extended_value, EX_T(opline->result.var).var.ptr, &EX_T(opline->result.var).var.ptr, EX(object), RETURN_VALUE_USED(opline) TSRMLS_CC); } else { @@ -746,12 +746,146 @@ static int ZEND_FASTCALL zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_AR ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL zend_finally_handler_leaving_SPEC(int type, ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_uint i, op_num = opline - EX(op_array)->opcodes; + zend_uint catch_op_num = 0, finally_op_num = 0; + + SAVE_OPLINE(); + + switch (type) { + case ZEND_THROW: + case ZEND_RETURN: + case ZEND_RETURN_BY_REF: + case ZEND_LEAVE: + { + if (EG(prev_exception) || (type == ZEND_LEAVE && EG(exception))) { + for (i=0; i<EX(op_array)->last_try_catch; i++) { + if (EX(op_array)->try_catch_array[i].try_op > op_num) { + break; + } + if (op_num < EX(op_array)->try_catch_array[i].finally_op) { + finally_op_num = EX(op_array)->try_catch_array[i].finally_op; + } + if (op_num < EX(op_array)->try_catch_array[i].catch_op) { + catch_op_num = EX(op_array)->try_catch_array[i].catch_op; + } + } + } else { + for (i=0; i<EX(op_array)->last_try_catch; i++) { + if (EX(op_array)->try_catch_array[i].try_op > op_num) { + break; + } + if (op_num < EX(op_array)->try_catch_array[i].finally_op) { + finally_op_num = EX(op_array)->try_catch_array[i].finally_op; + } + } + } + + if (catch_op_num && finally_op_num) { + /* EG(exception) || EG(prev_exception) */ + if (catch_op_num > finally_op_num) { + zend_exception_save(TSRMLS_C); + EX(leaving) = ZEND_THROW; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]); + } else { + EX(leaving) = 0; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]); + } + } else if (catch_op_num) { + EX(leaving) = 0; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]); + } else if (finally_op_num) { + zend_exception_save(TSRMLS_C); + if (type != ZEND_LEAVE) { + EX(leaving) = type; + } + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]); + } else if (EX(leaving) && type != ZEND_LEAVE) { + /* leave it to ZEND_LEAVE */ + EX(leaving) = type; + ZEND_VM_NEXT_OPCODE(); + } else { + return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + } + } + break; + case ZEND_JMP: + case ZEND_BRK: + case ZEND_CONT: + case ZEND_GOTO: + { + /* these can not occurred in exception context */ + for (i=0; i<EG(active_op_array)->last_try_catch; i++) { + if (EG(active_op_array)->try_catch_array[i].try_op > op_num) { + break; + } + if (op_num < EG(active_op_array)->try_catch_array[i].finally_op + && (EX(leaving_dest) < EG(active_op_array)->try_catch_array[i].try_op + || EX(leaving_dest) >= EG(active_op_array)->try_catch_array[i].finally_end)) { + finally_op_num = EG(active_op_array)->try_catch_array[i].finally_op; + } + } + + if (finally_op_num) { + EX(leaving) = type; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]); + } else { + EX(leaving) = 0; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[EX(leaving_dest)]); + } + } + break; + } + ZEND_VM_CONTINUE(); +} + +static int ZEND_FASTCALL ZEND_JMP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + +#if DEBUG_ZEND>=2 + printf("Jumping to %d\n", opline->op1.opline_num); +#endif + if (EXPECTED(!EX(op_array)->has_finally_block)) { + ZEND_VM_SET_OPCODE(opline->op1.jmp_addr); + ZEND_VM_CONTINUE(); /* CHECK_ME */ + } + EX(leaving_dest) = opline->op1.jmp_addr - EX(op_array)->opcodes; + return zend_finally_handler_leaving_SPEC(ZEND_JMP, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + +static int ZEND_FASTCALL ZEND_INIT_STRING_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zval *tmp = &EX_T(opline->result.var).tmp_var; + + SAVE_OPLINE(); + tmp->value.str.val = emalloc(1); + tmp->value.str.val[0] = 0; + tmp->value.str.len = 0; + Z_SET_REFCOUNT_P(tmp, 1); + tmp->type = IS_STRING; + Z_UNSET_ISREF_P(tmp); + /*CHECK_EXCEPTION();*/ + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { EX(function_state).function = EX(fbc); return zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + if (EX(op_array)->has_finally_block) { + return zend_finally_handler_leaving_SPEC(ZEND_RETURN, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + } + return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL ZEND_RECV_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -1033,13 +1167,28 @@ static int ZEND_FASTCALL ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER { zend_uint op_num = EG(opline_before_exception)-EG(active_op_array)->opcodes; int i; - zend_uint catch_op_num = 0; - int catched = 0; - zval restored_error_reporting; + zend_uint catch_op_num = 0, finally_op_num = 0; + int catched = 0, finally = 0; + void **stack_frame; - void **stack_frame = (void**)(((char*)EX_Ts()) + - (ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * EX(op_array)->T)); + /* Figure out where the next stack frame (which maybe contains pushed + * arguments that have to be dtor'ed) starts */ + if (EX(op_array)->fn_flags & ZEND_ACC_GENERATOR) { + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + /* For generators the next stack frame is conveniently stored in the + * generator object. */ + stack_frame = generator->original_stack_top; + } else { + /* In all other cases the next stack frame starts after the temporary + * variables section of the current execution context */ + stack_frame = (void **) ((char *) EX_Ts() + + ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * EX(op_array)->T); + } + + /* If the exception was thrown during a function call there might be + * arguments pushed to the stack that have to be dtor'ed. */ while (zend_vm_stack_top(TSRMLS_C) != stack_frame) { zval *stack_zval_p = zend_vm_stack_pop(TSRMLS_C); zval_ptr_dtor(&stack_zval_p); @@ -1049,9 +1198,14 @@ static int ZEND_FASTCALL ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER if (EG(active_op_array)->try_catch_array[i].try_op > op_num) { /* further blocks will not be relevant... */ break; - } else if (op_num < EG(active_op_array)->try_catch_array[i].catch_op) { + } + if (op_num < EG(active_op_array)->try_catch_array[i].catch_op) { catch_op_num = EX(op_array)->try_catch_array[i].catch_op; - catched = 1; + catched = i + 1; + } + if (op_num < EG(active_op_array)->try_catch_array[i].finally_op) { + finally_op_num = EX(op_array)->try_catch_array[i].finally_op; + finally = i + 1; } } @@ -1101,6 +1255,8 @@ static int ZEND_FASTCALL ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER /* restore previous error_reporting value */ if (!EG(error_reporting) && EX(old_error_reporting) != NULL && Z_LVAL_P(EX(old_error_reporting)) != 0) { + zval restored_error_reporting; + Z_TYPE(restored_error_reporting) = IS_LONG; Z_LVAL(restored_error_reporting) = Z_LVAL_P(EX(old_error_reporting)); convert_to_string(&restored_error_reporting); @@ -1109,12 +1265,29 @@ static int ZEND_FASTCALL ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER } EX(old_error_reporting) = NULL; - if (!catched) { - return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); - } else { + if (catched && finally) { + if (finally_op_num > catch_op_num) { + EX(leaving) = 0; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]); + ZEND_VM_CONTINUE(); + } else { + zend_exception_save(TSRMLS_C); + EX(leaving) = ZEND_THROW; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]); + ZEND_VM_CONTINUE(); + } + } else if (catched) { + EX(leaving) = 0; ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]); - ZEND_VM_CONTINUE(); - } + ZEND_VM_CONTINUE(); + } else if (finally) { + zend_exception_save(TSRMLS_C); + EX(leaving) = ZEND_THROW; + ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]); + ZEND_VM_CONTINUE(); + } else { + return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + } } static int ZEND_FASTCALL ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -1152,12 +1325,38 @@ static int ZEND_FASTCALL ZEND_USER_OPCODE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS } } +static int ZEND_FASTCALL ZEND_LEAVE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + zend_exception_restore(TSRMLS_C); + if (!EX(leaving)) { + ZEND_VM_NEXT_OPCODE(); + } else { + zend_uint leaving = EX(leaving); + switch (leaving) { + case ZEND_RETURN: + case ZEND_RETURN_BY_REF: + case ZEND_THROW: + leaving = ZEND_LEAVE; + case ZEND_JMP: + case ZEND_BRK: + case ZEND_CONT: + case ZEND_GOTO: + return zend_finally_handler_leaving_SPEC(leaving, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + break; + } + } + + ZEND_VM_CONTINUE(); +} + static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE SAVE_OPLINE(); - EG(exception) = NULL; + if (EG(exception)) { + zend_exception_save(TSRMLS_C); + } if (IS_CONST == IS_UNUSED) { EX_T(opline->result.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC); CHECK_EXCEPTION(); @@ -1388,7 +1587,11 @@ static int ZEND_FASTCALL ZEND_BRK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num, EX(op_array), EX_Ts() TSRMLS_CC); - ZEND_VM_JMP(EX(op_array)->opcodes + el->brk); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + ZEND_VM_JMP(EX(op_array)->opcodes + el->brk); + } + EX(leaving_dest) = el->brk; + return zend_finally_handler_leaving_SPEC(ZEND_BRK, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } static int ZEND_FASTCALL ZEND_CONT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -1400,7 +1603,11 @@ static int ZEND_FASTCALL ZEND_CONT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num, EX(op_array), EX_Ts() TSRMLS_CC); - ZEND_VM_JMP(EX(op_array)->opcodes + el->cont); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + ZEND_VM_JMP(EX(op_array)->opcodes + el->cont); + } + EX(leaving_dest) = el->cont; + return zend_finally_handler_leaving_SPEC(ZEND_CONT, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } static int ZEND_FASTCALL ZEND_GOTO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -1427,7 +1634,11 @@ static int ZEND_FASTCALL ZEND_GOTO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } break; } - ZEND_VM_JMP(opline->op1.jmp_addr); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + ZEND_VM_JMP(opline->op1.jmp_addr); + } + EX(leaving_dest) = opline->op1.jmp_addr - EX(op_array)->opcodes; + return zend_finally_handler_leaving_SPEC(ZEND_GOTO, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } static int ZEND_FASTCALL ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -1462,7 +1673,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ USE_OPLINE SAVE_OPLINE(); - EG(exception) = NULL; + if (EG(exception)) { + zend_exception_save(TSRMLS_C); + } if (IS_TMP_VAR == IS_UNUSED) { EX_T(opline->result.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC); CHECK_EXCEPTION(); @@ -1630,7 +1843,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ USE_OPLINE SAVE_OPLINE(); - EG(exception) = NULL; + if (EG(exception)) { + zend_exception_save(TSRMLS_C); + } if (IS_VAR == IS_UNUSED) { EX_T(opline->result.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC); CHECK_EXCEPTION(); @@ -1798,7 +2013,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDL USE_OPLINE SAVE_OPLINE(); - EG(exception) = NULL; + if (EG(exception)) { + zend_exception_save(TSRMLS_C); + } if (IS_UNUSED == IS_UNUSED) { EX_T(opline->result.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC); CHECK_EXCEPTION(); @@ -1832,7 +2049,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_A USE_OPLINE SAVE_OPLINE(); - EG(exception) = NULL; + if (EG(exception)) { + zend_exception_save(TSRMLS_C); + } if (IS_CV == IS_UNUSED) { EX_T(opline->result.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC); CHECK_EXCEPTION(); @@ -2249,6 +2468,9 @@ static int ZEND_FASTCALL ZEND_RETURN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG } } else if (!0) { /* Not a temp var */ + if (*EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } if (IS_CONST == IS_CONST || (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) { zval *ret; @@ -2270,12 +2492,19 @@ static int ZEND_FASTCALL ZEND_RETURN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG } else { zval *ret; + if (*EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } + ALLOC_ZVAL(ret); INIT_PZVAL_COPY(ret, retval_ptr); *EG(return_value_ptr_ptr) = ret; } - return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + } + return zend_finally_handler_leaving_SPEC(ZEND_RETURN, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -2288,6 +2517,10 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER(ZEND_OPCODE_HAND SAVE_OPLINE(); do { + if (EG(return_value_ptr_ptr) && *EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR) { /* Not supposed to happen, but we'll allow it */ zend_error(E_NOTICE, "Only variable references should be returned by reference"); @@ -2342,7 +2575,10 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER(ZEND_OPCODE_HAND } } while (0); - return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + } + return zend_finally_handler_leaving_SPEC(ZEND_RETURN_BY_REF, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } static int ZEND_FASTCALL ZEND_THROW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -2542,7 +2778,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA zend_op_array *new_op_array=NULL; zval *inc_filename; - zval *tmp_inc_filename = NULL; + zval *tmp_inc_filename = NULL; zend_bool failure_retval=0; SAVE_OPLINE(); @@ -3390,6 +3626,36 @@ static int ZEND_FASTCALL ZEND_FETCH_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HAN return zend_fetch_var_address_helper_SPEC_CONST_CONST(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + zval **container; + + SAVE_OPLINE(); + + if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && + IS_CONST != IS_CV && + EX_T(opline->op1.var).var.ptr_ptr) { + PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); + } + + if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) { + zval *container = opline->op1.zv; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); + + + } else { + container = NULL; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); + + + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_FETCH_DIM_TMP_VAR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -3940,6 +4206,160 @@ static int ZEND_FASTCALL ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCOD ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_CONST != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = opline->op1.zv; + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_CONST == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_CONST == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = opline->op1.zv; + + /* Consts, temporary variables and references need copying */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_CONST != IS_UNUSED) { + + zval *key = opline->op2.zv; + + /* Consts, temporary variables and references need copying */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -4216,6 +4636,36 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDL ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op2; + zval **container; + + SAVE_OPLINE(); + + if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && + IS_CONST != IS_CV && + EX_T(opline->op1.var).var.ptr_ptr) { + PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); + } + + if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) { + zval *container = opline->op1.zv; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); + zval_dtor(free_op2.var); + + } else { + container = NULL; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); + zval_dtor(free_op2.var); + + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -4450,6 +4900,160 @@ static int ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HAN } } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_CONST != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = opline->op1.zv; + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_CONST == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_CONST == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = opline->op1.zv; + + /* Consts, temporary variables and references need copying */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_TMP_VAR != IS_UNUSED) { + zend_free_op free_op2; + zval *key = _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -4890,6 +5494,36 @@ static int ZEND_FASTCALL ZEND_FETCH_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDL return zend_fetch_var_address_helper_SPEC_CONST_VAR(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op2; + zval **container; + + SAVE_OPLINE(); + + if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && + IS_CONST != IS_CV && + EX_T(opline->op1.var).var.ptr_ptr) { + PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); + } + + if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) { + zval *container = opline->op1.zv; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + + } else { + container = NULL; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -5285,6 +5919,161 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_VAR_HANDLER(ZEND_OPC ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_CONST != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = opline->op1.zv; + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_CONST == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_CONST == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = opline->op1.zv; + + /* Consts, temporary variables and references need copying */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_VAR != IS_UNUSED) { + zend_free_op free_op2; + zval *key = _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int type, ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -5838,12 +6627,166 @@ static int ZEND_FASTCALL ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER zend_error_noreturn(E_ERROR, "Base lambda function for closure not found"); } - zend_create_closure(&EX_T(opline->result.var).tmp_var, op_array, EG(scope), EG(This) TSRMLS_CC); + zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(scope), EG(This) TSRMLS_CC); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_CONST != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = opline->op1.zv; + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_CONST == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_CONST == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = opline->op1.zv; + + /* Consts, temporary variables and references need copying */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_UNUSED != IS_UNUSED) { + + zval *key = NULL; + + /* Consts, temporary variables and references need copying */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -6120,6 +7063,36 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLE ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + zval **container; + + SAVE_OPLINE(); + + if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && + IS_CONST != IS_CV && + EX_T(opline->op1.var).var.ptr_ptr) { + PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); + } + + if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) { + zval *container = opline->op1.zv; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); + + + } else { + container = NULL; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); + + + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -6413,6 +7386,160 @@ static int ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HAND } } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_CONST != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = opline->op1.zv; + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_CONST == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_CONST == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = opline->op1.zv; + + /* Consts, temporary variables and references need copying */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_CV != IS_UNUSED) { + + zval *key = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_BW_NOT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -6662,6 +7789,9 @@ static int ZEND_FASTCALL ZEND_RETURN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval_dtor(free_op1.var); } } else if (!1) { /* Not a temp var */ + if (*EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } if (IS_TMP_VAR == IS_CONST || (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) { zval *ret; @@ -6683,12 +7813,19 @@ static int ZEND_FASTCALL ZEND_RETURN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } else { zval *ret; + if (*EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } + ALLOC_ZVAL(ret); INIT_PZVAL_COPY(ret, retval_ptr); *EG(return_value_ptr_ptr) = ret; } - return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + } + return zend_finally_handler_leaving_SPEC(ZEND_RETURN, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -6701,6 +7838,10 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLE SAVE_OPLINE(); do { + if (EG(return_value_ptr_ptr) && *EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR) { /* Not supposed to happen, but we'll allow it */ zend_error(E_NOTICE, "Only variable references should be returned by reference"); @@ -6755,7 +7896,10 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLE } } while (0); - return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + } + return zend_finally_handler_leaving_SPEC(ZEND_RETURN_BY_REF, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } static int ZEND_FASTCALL ZEND_THROW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -6956,7 +8100,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HAND zend_op_array *new_op_array=NULL; zend_free_op free_op1; zval *inc_filename; - zval *tmp_inc_filename = NULL; + zval *tmp_inc_filename = NULL; zend_bool failure_retval=0; SAVE_OPLINE(); @@ -7856,6 +9000,36 @@ static int ZEND_FASTCALL ZEND_FETCH_IS_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDL return zend_fetch_var_address_helper_SPEC_TMP_CONST(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1; + zval **container; + + SAVE_OPLINE(); + + if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && + IS_TMP_VAR != IS_CV && + EX_T(opline->op1.var).var.ptr_ptr) { + PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); + } + + if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) { + zval *container = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); + + zval_dtor(free_op1.var); + } else { + container = NULL; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); + + + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_FETCH_DIM_TMP_VAR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -8274,6 +9448,160 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_CONST_HANDLER(ZEND_OPC ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_TMP_VAR != IS_UNUSED) { + zend_free_op free_op1; + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_TMP_VAR == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_TMP_VAR == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_CONST != IS_UNUSED) { + + zval *key = opline->op2.zv; + + /* Consts, temporary variables and references need copying */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -8550,6 +9878,36 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1, free_op2; + zval **container; + + SAVE_OPLINE(); + + if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && + IS_TMP_VAR != IS_CV && + EX_T(opline->op1.var).var.ptr_ptr) { + PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); + } + + if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) { + zval *container = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); + zval_dtor(free_op2.var); + zval_dtor(free_op1.var); + } else { + container = NULL; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); + zval_dtor(free_op2.var); + + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -8784,6 +10142,160 @@ static int ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDL } } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_TMP_VAR != IS_UNUSED) { + zend_free_op free_op1; + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_TMP_VAR == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_TMP_VAR == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_TMP_VAR != IS_UNUSED) { + zend_free_op free_op2; + zval *key = _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -9224,6 +10736,36 @@ static int ZEND_FASTCALL ZEND_FETCH_IS_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER return zend_fetch_var_address_helper_SPEC_TMP_VAR(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1, free_op2; + zval **container; + + SAVE_OPLINE(); + + if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && + IS_TMP_VAR != IS_CV && + EX_T(opline->op1.var).var.ptr_ptr) { + PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); + } + + if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) { + zval *container = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + zval_dtor(free_op1.var); + } else { + container = NULL; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -9619,6 +11161,161 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_VAR_HANDLER(ZEND_OPCOD ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_TMP_VAR != IS_UNUSED) { + zend_free_op free_op1; + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_TMP_VAR == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_TMP_VAR == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_VAR != IS_UNUSED) { + zend_free_op free_op2; + zval *key = _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_UNUSED(int type, ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -10044,6 +11741,160 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_UNUSED_HANDLER(ZEND_OP ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_TMP_VAR != IS_UNUSED) { + zend_free_op free_op1; + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_TMP_VAR == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_TMP_VAR == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_UNUSED != IS_UNUSED) { + + zval *key = NULL; + + /* Consts, temporary variables and references need copying */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -10320,6 +12171,36 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1; + zval **container; + + SAVE_OPLINE(); + + if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && + IS_TMP_VAR != IS_CV && + EX_T(opline->op1.var).var.ptr_ptr) { + PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); + } + + if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) { + zval *container = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); + + zval_dtor(free_op1.var); + } else { + container = NULL; + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); + + + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -10551,6 +12432,160 @@ static int ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLE } } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_TMP_VAR != IS_UNUSED) { + zend_free_op free_op1; + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_TMP_VAR == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_TMP_VAR == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_CV != IS_UNUSED) { + + zval *key = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_BW_NOT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -10980,6 +13015,9 @@ static int ZEND_FASTCALL ZEND_RETURN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; } } else if (!0) { /* Not a temp var */ + if (*EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } if (IS_VAR == IS_CONST || (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) { zval *ret; @@ -11001,12 +13039,20 @@ static int ZEND_FASTCALL ZEND_RETURN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } else { zval *ret; + if (*EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } + ALLOC_ZVAL(ret); INIT_PZVAL_COPY(ret, retval_ptr); *EG(return_value_ptr_ptr) = ret; } if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; - return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + + if (EXPECTED(!EX(op_array)->has_finally_block)) { + return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + } + return zend_finally_handler_leaving_SPEC(ZEND_RETURN, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -11019,6 +13065,10 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLE SAVE_OPLINE(); do { + if (EG(return_value_ptr_ptr) && *EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR) { /* Not supposed to happen, but we'll allow it */ zend_error(E_NOTICE, "Only variable references should be returned by reference"); @@ -11074,7 +13124,11 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLE } while (0); if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; - return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + + if (EXPECTED(!EX(op_array)->has_finally_block)) { + return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + } + return zend_finally_handler_leaving_SPEC(ZEND_RETURN_BY_REF, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } static int ZEND_FASTCALL ZEND_THROW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -11384,7 +13438,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND zend_op_array *new_op_array=NULL; zend_free_op free_op1; zval *inc_filename; - zval *tmp_inc_filename = NULL; + zval *tmp_inc_filename = NULL; zend_bool failure_retval=0; SAVE_OPLINE(); @@ -12874,10 +14928,19 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA EX_T(opline->op1.var).var.ptr_ptr) { PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); } - container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); - zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); - if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) { + zval *container = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } else { + container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } @@ -14290,6 +16353,162 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_CONST_HANDLER(ZEN return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_CONST(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_VAR != IS_UNUSED) { + zend_free_op free_op1; + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + if (IS_VAR == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_VAR == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + } else { + zval *value = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_CONST != IS_UNUSED) { + + zval *key = opline->op2.zv; + + /* Consts, temporary variables and references need copying */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -15042,10 +17261,19 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAND EX_T(opline->op1.var).var.ptr_ptr) { PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); } - container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); - zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); - zval_dtor(free_op2.var); - if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + + if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) { + zval *container = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); + zval_dtor(free_op2.var); + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } else { + container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); + zval_dtor(free_op2.var); + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } @@ -16208,6 +18436,162 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_TMP_HANDLER(ZEND_ return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_TMP(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_VAR != IS_UNUSED) { + zend_free_op free_op1; + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + if (IS_VAR == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_VAR == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + } else { + zval *value = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_TMP_VAR != IS_UNUSED) { + zend_free_op free_op2; + zval *key = _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -17124,10 +19508,19 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAND EX_T(opline->op1.var).var.ptr_ptr) { PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); } - container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); - zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); - if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; - if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + + if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) { + zval *container = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } else { + container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } @@ -18506,6 +20899,163 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_VAR_HANDLER(ZEND_ return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_VAR(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_VAR != IS_UNUSED) { + zend_free_op free_op1; + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + if (IS_VAR == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_VAR == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + } else { + zval *value = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_VAR != IS_UNUSED) { + zend_free_op free_op2; + zval *key = _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -19477,8 +22027,8 @@ static int ZEND_FASTCALL ZEND_SEPARATE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HAND SAVE_OPLINE(); var_ptr = EX_T(opline->op1.var).var.ptr; if (Z_TYPE_P(var_ptr) != IS_OBJECT && - !PZVAL_IS_REF(var_ptr) && - Z_REFCOUNT_P(var_ptr) > 1) { + !PZVAL_IS_REF(var_ptr) && + Z_REFCOUNT_P(var_ptr) > 1) { Z_DELREF_P(var_ptr); ALLOC_ZVAL(new_zv); @@ -19490,6 +22040,162 @@ static int ZEND_FASTCALL ZEND_SEPARATE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HAND ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_VAR != IS_UNUSED) { + zend_free_op free_op1; + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + if (IS_VAR == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_VAR == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + } else { + zval *value = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_UNUSED != IS_UNUSED) { + + zval *key = NULL; + + /* Consts, temporary variables and references need copying */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -20241,10 +22947,19 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL EX_T(opline->op1.var).var.ptr_ptr) { PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); } - container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); - zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); - if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) { + zval *container = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } else { + container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } @@ -21457,6 +24172,162 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_CV_HANDLER(ZEND_O return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_CV(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_VAR != IS_UNUSED) { + zend_free_op free_op1; + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + if (IS_VAR == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_VAR == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + } else { + zval *value = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_CV != IS_UNUSED) { + + zval *key = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -22792,6 +25663,160 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER( return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_CONST(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_UNUSED != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = NULL; + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_UNUSED == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_UNUSED == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = NULL; + + /* Consts, temporary variables and references need copying */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_CONST != IS_UNUSED) { + + zval *key = opline->op2.zv; + + /* Consts, temporary variables and references need copying */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMP(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -23951,6 +26976,160 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMP_HANDLER(ZE return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_TMP(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_UNUSED != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = NULL; + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_UNUSED == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_UNUSED == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = NULL; + + /* Consts, temporary variables and references need copying */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_TMP_VAR != IS_UNUSED) { + zend_free_op free_op2; + zval *key = _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_VAR(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -25110,6 +28289,161 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_VAR_HANDLER(ZE return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_VAR(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_UNUSED != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = NULL; + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_UNUSED == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_UNUSED == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = NULL; + + /* Consts, temporary variables and references need copying */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_VAR != IS_UNUSED) { + zend_free_op free_op2; + zval *key = _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -25379,6 +28713,160 @@ static int ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE } } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_UNUSED != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = NULL; + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_UNUSED == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_UNUSED == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = NULL; + + /* Consts, temporary variables and references need copying */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_UNUSED != IS_UNUSED) { + + zval *key = NULL; + + /* Consts, temporary variables and references need copying */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -26535,6 +30023,160 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_HANDLER(ZEN return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_CV(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_UNUSED != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = NULL; + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = NULL; + + if (IS_UNUSED == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_UNUSED == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = NULL; + + /* Consts, temporary variables and references need copying */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_CV != IS_UNUSED) { + + zval *key = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_BW_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -26945,6 +30587,9 @@ static int ZEND_FASTCALL ZEND_RETURN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } } else if (!0) { /* Not a temp var */ + if (*EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } if (IS_CV == IS_CONST || (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) { zval *ret; @@ -26966,12 +30611,19 @@ static int ZEND_FASTCALL ZEND_RETURN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } else { zval *ret; + if (*EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } + ALLOC_ZVAL(ret); INIT_PZVAL_COPY(ret, retval_ptr); *EG(return_value_ptr_ptr) = ret; } - return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + } + return zend_finally_handler_leaving_SPEC(ZEND_RETURN, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -26984,6 +30636,10 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER SAVE_OPLINE(); do { + if (EG(return_value_ptr_ptr) && *EG(return_value_ptr_ptr)) { + zval_ptr_dtor(EG(return_value_ptr_ptr)); + } + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR) { /* Not supposed to happen, but we'll allow it */ zend_error(E_NOTICE, "Only variable references should be returned by reference"); @@ -27038,7 +30694,10 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER } } while (0); - return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + if (EXPECTED(!EX(op_array)->has_finally_block)) { + return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + } + return zend_finally_handler_leaving_SPEC(ZEND_RETURN_BY_REF, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } static int ZEND_FASTCALL ZEND_THROW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -27336,7 +30995,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL zend_op_array *new_op_array=NULL; zval *inc_filename; - zval *tmp_inc_filename = NULL; + zval *tmp_inc_filename = NULL; zend_bool failure_retval=0; SAVE_OPLINE(); @@ -28679,10 +32338,19 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN EX_T(opline->op1.var).var.ptr_ptr) { PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); } - container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); - zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); + + if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) { + zval *container = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); + + + } else { + container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); + } + CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } @@ -29875,6 +33543,160 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER(ZEND return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_CONST(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_CV != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(EX_CVs(), opline->op1.var TSRMLS_CC); + + if (IS_CV == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_CV == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_CONST != IS_UNUSED) { + + zval *key = opline->op2.zv; + + /* Consts, temporary variables and references need copying */ + if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -30626,9 +34448,18 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDL EX_T(opline->op1.var).var.ptr_ptr) { PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); } - container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); - zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); - zval_dtor(free_op2.var); + + if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) { + zval *container = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); + zval_dtor(free_op2.var); + + } else { + container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); + zval_dtor(free_op2.var); + + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -31664,6 +35495,160 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMP_HANDLER(ZEND_O return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_TMP(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_CV != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(EX_CVs(), opline->op1.var TSRMLS_CC); + + if (IS_CV == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_CV == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_TMP_VAR != IS_UNUSED) { + zend_free_op free_op2; + zval *key = _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!1) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -32579,9 +36564,18 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDL EX_T(opline->op1.var).var.ptr_ptr) { PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); } - container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); - zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); - if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + + if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) { + zval *container = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + + } else { + container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -33832,6 +37826,161 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_VAR_HANDLER(ZEND_O return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_VAR(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_CV != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(EX_CVs(), opline->op1.var TSRMLS_CC); + + if (IS_CV == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_CV == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_VAR != IS_UNUSED) { + zend_free_op free_op2; + zval *key = _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -34677,6 +38826,160 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPC ZEND_VM_NEXT_OPCODE(); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_CV != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(EX_CVs(), opline->op1.var TSRMLS_CC); + + if (IS_CV == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_CV == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_UNUSED != IS_UNUSED) { + + zval *key = NULL; + + /* Consts, temporary variables and references need copying */ + if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -35427,10 +39730,19 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE EX_T(opline->op1.var).var.ptr_ptr) { PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); } - container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); - zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); + + if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) { + zval *container = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); + } else { + container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); + + + } + CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } @@ -36514,6 +40826,160 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_HANDLER(ZEND_OP return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_CV(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } +static int ZEND_FASTCALL ZEND_YIELD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + /* The generator object is stored in return_value_ptr_ptr */ + zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr); + + if (generator->flags & ZEND_GENERATOR_FORCED_CLOSE) { + zend_error_noreturn(E_ERROR, "Cannot yield from finally in a force-closed generator"); + } + + /* Destroy the previously yielded value */ + if (generator->value) { + zval_ptr_dtor(&generator->value); + } + + /* Destroy the previously yielded key */ + if (generator->key) { + zval_ptr_dtor(&generator->key); + } + + /* Set the new yielded value */ + if (IS_CV != IS_UNUSED) { + + + if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) { + /* Constants and temporary variables aren't yieldable by reference, + * but we still allow them with a notice. */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR) { + zval *value, *copy; + + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + value = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + zval **value_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(EX_CVs(), opline->op1.var TSRMLS_CC); + + if (IS_CV == IS_VAR && UNEXPECTED(value_ptr == NULL)) { + zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference"); + } + + /* If a function call result is yielded and the function did + * not return by reference we throw a notice. */ + if (IS_CV == IS_VAR && !Z_ISREF_PP(value_ptr) + && !(opline->extended_value == ZEND_RETURNS_FUNCTION + && EX_T(opline->op1.var).var.fcall_returned_reference) + && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) { + zend_error(E_NOTICE, "Only variable references should be yielded by reference"); + + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } else { + SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); + Z_ADDREF_PP(value_ptr); + generator->value = *value_ptr; + } + + } + } else { + zval *value = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR + || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, value); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->value = copy; + } else { + Z_ADDREF_P(value); + generator->value = value; + } + + } + } else { + /* If no value was specified yield null */ + Z_ADDREF(EG(uninitialized_zval)); + generator->value = &EG(uninitialized_zval); + } + + /* Set the new yielded key */ + if (IS_CV != IS_UNUSED) { + + zval *key = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC); + + /* Consts, temporary variables and references need copying */ + if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR + || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0) + ) { + zval *copy; + + ALLOC_ZVAL(copy); + INIT_PZVAL_COPY(copy, key); + + /* Temporary variables don't need ctor copying */ + if (!0) { + zval_copy_ctor(copy); + } + + generator->key = copy; + } else { + Z_ADDREF_P(key); + generator->key = key; + } + + if (Z_TYPE_P(generator->key) == IS_LONG + && Z_LVAL_P(generator->key) > generator->largest_used_integer_key + ) { + generator->largest_used_integer_key = Z_LVAL_P(generator->key); + } + + } else { + /* If no key was specified we use auto-increment keys */ + generator->largest_used_integer_key++; + + ALLOC_INIT_ZVAL(generator->key); + ZVAL_LONG(generator->key, generator->largest_used_integer_key); + } + + /* If a value is sent it should go into the result var */ + generator->send_target = &EX_T(opline->result.var); + + /* Initialize the sent value to NULL */ + Z_ADDREF(EG(uninitialized_zval)); + AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval)); + + /* We increment to the next op, so we are at the correct position when the + * generator is resumed. */ + ZEND_VM_INC_OPCODE(); + + /* The GOTO VM uses a local opline variable. We need to set the opline + * variable in execute_data so we don't resume at an old position. */ + SAVE_OPLINE(); + + ZEND_VM_RETURN(); +} + static int ZEND_FASTCALL ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_error_noreturn(E_ERROR, "Invalid opcode %d/%d/%d.", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type); @@ -38548,16 +43014,16 @@ void zend_init_opcodes_handlers(void) ZEND_FETCH_R_SPEC_CV_VAR_HANDLER, ZEND_FETCH_R_SPEC_CV_UNUSED_HANDLER, ZEND_NULL_HANDLER, + ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER, + ZEND_FETCH_DIM_R_SPEC_CONST_TMP_HANDLER, + ZEND_FETCH_DIM_R_SPEC_CONST_VAR_HANDLER, ZEND_NULL_HANDLER, + ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER, + ZEND_FETCH_DIM_R_SPEC_TMP_CONST_HANDLER, + ZEND_FETCH_DIM_R_SPEC_TMP_TMP_HANDLER, + ZEND_FETCH_DIM_R_SPEC_TMP_VAR_HANDLER, ZEND_NULL_HANDLER, - ZEND_NULL_HANDLER, - ZEND_NULL_HANDLER, - ZEND_NULL_HANDLER, - ZEND_NULL_HANDLER, - ZEND_NULL_HANDLER, - ZEND_NULL_HANDLER, - ZEND_NULL_HANDLER, - ZEND_NULL_HANDLER, + ZEND_FETCH_DIM_R_SPEC_TMP_CV_HANDLER, ZEND_FETCH_DIM_R_SPEC_VAR_CONST_HANDLER, ZEND_FETCH_DIM_R_SPEC_VAR_TMP_HANDLER, ZEND_FETCH_DIM_R_SPEC_VAR_VAR_HANDLER, @@ -40498,6 +44964,81 @@ void zend_init_opcodes_handlers(void) ZEND_JMP_SET_VAR_SPEC_CV_HANDLER, ZEND_JMP_SET_VAR_SPEC_CV_HANDLER, ZEND_JMP_SET_VAR_SPEC_CV_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_LEAVE_SPEC_HANDLER, + ZEND_YIELD_SPEC_CONST_CONST_HANDLER, + ZEND_YIELD_SPEC_CONST_TMP_HANDLER, + ZEND_YIELD_SPEC_CONST_VAR_HANDLER, + ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER, + ZEND_YIELD_SPEC_CONST_CV_HANDLER, + ZEND_YIELD_SPEC_TMP_CONST_HANDLER, + ZEND_YIELD_SPEC_TMP_TMP_HANDLER, + ZEND_YIELD_SPEC_TMP_VAR_HANDLER, + ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER, + ZEND_YIELD_SPEC_TMP_CV_HANDLER, + ZEND_YIELD_SPEC_VAR_CONST_HANDLER, + ZEND_YIELD_SPEC_VAR_TMP_HANDLER, + ZEND_YIELD_SPEC_VAR_VAR_HANDLER, + ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER, + ZEND_YIELD_SPEC_VAR_CV_HANDLER, + ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER, + ZEND_YIELD_SPEC_UNUSED_TMP_HANDLER, + ZEND_YIELD_SPEC_UNUSED_VAR_HANDLER, + ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER, + ZEND_YIELD_SPEC_UNUSED_CV_HANDLER, + ZEND_YIELD_SPEC_CV_CONST_HANDLER, + ZEND_YIELD_SPEC_CV_TMP_HANDLER, + ZEND_YIELD_SPEC_CV_VAR_HANDLER, + ZEND_YIELD_SPEC_CV_UNUSED_HANDLER, + ZEND_YIELD_SPEC_CV_CV_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, + ZEND_GENERATOR_RETURN_SPEC_HANDLER, ZEND_NULL_HANDLER }; zend_opcode_handlers = (opcode_handler_t*)labels; diff --git a/Zend/zend_vm_execute.skl b/Zend/zend_vm_execute.skl index 6d1b2e70e..2a6fd71ec 100644 --- a/Zend/zend_vm_execute.skl +++ b/Zend/zend_vm_execute.skl @@ -1,31 +1,42 @@ {%DEFINES%} -ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC) -{ - DCL_OPLINE +zend_execute_data *zend_create_execute_data_from_op_array(zend_op_array *op_array, zend_bool nested TSRMLS_DC) { zend_execute_data *execute_data; - zend_bool nested = 0; - {%HELPER_VARS%} - {%EXECUTION_STATUS%} - {%INTERNAL_LABELS%} - - if (EG(exception)) { - return; + /* + * When allocating the execute_data, memory for compiled variables and + * temporary variables is also allocated after the actual zend_execute_data + * struct. op_array->last_var specifies the number of compiled variables and + * op_array->T is the number of temporary variables. If there is no symbol + * table, then twice as much memory is allocated for compiled variables. + * In that case the first half contains zval**s and the second half the + * actual zval*s (which would otherwise be in the symbol table). + */ + size_t execute_data_size = ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data)); + size_t CVs_size = ZEND_MM_ALIGNED_SIZE(sizeof(zval **) * op_array->last_var * (EG(active_symbol_table) ? 1 : 2)); + size_t Ts_size = ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * op_array->T; + size_t total_size = execute_data_size + CVs_size + Ts_size; + + /* + * Normally the execute_data is allocated on the VM stack (because it does + * not actually do any allocation and thus is faster). For generators + * though this behavior would be suboptimal, because the (rather large) + * structure would have to be copied back and forth every time execution is + * suspended or resumed. That's why for generators the execution context + * is allocated using emalloc, thus allowing to save and restore it simply + * by replacing a pointer. + */ + if (op_array->fn_flags & ZEND_ACC_GENERATOR) { + execute_data = emalloc(total_size); + } else { + execute_data = zend_vm_stack_alloc(total_size TSRMLS_CC); } - EG(in_execution) = 1; + EX(CVs) = (zval ***) ((char *) execute_data + execute_data_size); + memset(EX(CVs), 0, sizeof(zval **) * op_array->last_var); -zend_vm_enter: - /* Initialize execute_data */ - execute_data = (zend_execute_data *)zend_vm_stack_alloc( - ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data)) + - ZEND_MM_ALIGNED_SIZE(sizeof(zval**) * op_array->last_var * (EG(active_symbol_table) ? 1 : 2)) + - ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * op_array->T TSRMLS_CC); + EX(Ts) = (temp_variable *) ((char *) EX(CVs) + CVs_size); - EX(CVs) = (zval***)((char*)execute_data + ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data))); - memset(EX(CVs), 0, sizeof(zval**) * op_array->last_var); - EX(Ts) = (temp_variable *)(((char*)EX(CVs)) + ZEND_MM_ALIGNED_SIZE(sizeof(zval**) * op_array->last_var * (EG(active_symbol_table) ? 1 : 2))); EX(fbc) = NULL; EX(called_scope) = NULL; EX(object) = NULL; @@ -35,9 +46,7 @@ zend_vm_enter: EX(prev_execute_data) = EG(current_execute_data); EG(current_execute_data) = execute_data; EX(nested) = nested; - nested = 1; - - LOAD_REGS(); + EX(leaving) = 0; if (!op_array->run_time_cache && op_array->last_cache_slot) { op_array->run_time_cache = ecalloc(op_array->last_cache_slot, sizeof(void*)); @@ -46,10 +55,10 @@ zend_vm_enter: if (op_array->this_var != -1 && EG(This)) { Z_ADDREF_P(EG(This)); /* For $this pointer */ if (!EG(active_symbol_table)) { - EX_CV(op_array->this_var) = (zval**)EX_CVs() + (op_array->last_var + op_array->this_var); - *EX_CV(op_array->this_var) = EG(This); + EX(CVs)[op_array->this_var] = (zval **) EX(CVs) + op_array->last_var + op_array->this_var; + *EX(CVs)[op_array->this_var] = EG(This); } else { - if (zend_hash_add(EG(active_symbol_table), "this", sizeof("this"), &EG(This), sizeof(zval *), (void**)&EX_CV(op_array->this_var))==FAILURE) { + if (zend_hash_add(EG(active_symbol_table), "this", sizeof("this"), &EG(This), sizeof(zval *), (void **) &EX(CVs)[op_array->this_var])==FAILURE) { Z_DELREF_P(EG(This)); } } @@ -57,11 +66,28 @@ zend_vm_enter: EX(opline) = UNEXPECTED((op_array->fn_flags & ZEND_ACC_INTERACTIVE) != 0) && EG(start_op) ? EG(start_op) : op_array->opcodes; EG(opline_ptr) = &EX(opline); - LOAD_OPLINE(); EX(function_state).function = (zend_function *) op_array; EX(function_state).arguments = NULL; + return execute_data; +} + +ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data *execute_data TSRMLS_DC) +{ + DCL_OPLINE + zend_bool original_in_execution; + + {%HELPER_VARS%} + + {%INTERNAL_LABELS%} + + original_in_execution = EG(in_execution); + EG(in_execution) = 1; + + LOAD_REGS(); + LOAD_OPLINE(); + while (1) { {%ZEND_VM_CONTINUE_LABEL%} #ifdef ZEND_WIN32 @@ -78,6 +104,14 @@ zend_vm_enter: zend_error_noreturn(E_ERROR, "Arrived at end of main loop which shouldn't happen"); } +ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC) +{ + if (EG(exception)) { + return; + } + {%EXECUTOR_NAME%}_ex(zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC) TSRMLS_CC); +} + {%EXTERNAL_EXECUTOR%} void {%INITIALIZER_NAME%}(void) diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php index fde1baf90..bd5f2dede 100644 --- a/Zend/zend_vm_gen.php +++ b/Zend/zend_vm_gen.php @@ -387,52 +387,67 @@ function gen_code($f, $spec, $kind, $export, $code, $op1, $op2, $name) { // Updating code according to selected threading model switch($kind) { case ZEND_VM_KIND_CALL: - $code = preg_replace( + $code = preg_replace_callback( array( "/EXECUTE_DATA/m", "/ZEND_VM_DISPATCH_TO_HANDLER\(\s*([A-Z_]*)\s*\)/m", - "/ZEND_VM_DISPATCH_TO_HELPER\(\s*([A-Za-z_]*)\s*\)/me", - "/ZEND_VM_DISPATCH_TO_HELPER_EX\(\s*([A-Za-z_]*)\s*,\s*[A-Za-z_]*\s*,\s*(.*)\s*\);/me", - ), - array( - "execute_data", - "return \\1".($spec?"_SPEC":"").$prefix[$op1].$prefix[$op2]."_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)", - "'return '.helper_name('\\1',$spec,'$op1','$op2').'(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)'", - "'return '.helper_name('\\1',$spec,'$op1','$op2').'(\\2, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);'", + "/ZEND_VM_DISPATCH_TO_HELPER\(\s*([A-Za-z_]*)\s*\)/m", + "/ZEND_VM_DISPATCH_TO_HELPER_EX\(\s*([A-Za-z_]*)\s*,\s*[A-Za-z_]*\s*,\s*(.*)\s*\);/m", ), + function($matches) use ($spec, $prefix, $op1, $op2) { + if (strncasecmp($matches[0], "EXECUTE_DATA", strlen("EXECUTE_DATA")) == 0) { + return "execute_data"; + } else if (strncasecmp($matches[0], "ZEND_VM_DISPATCH_TO_HANDLER", strlen("ZEND_VM_DISPATCH_TO_HANDLER")) == 0) { + return "return " . $matches[1] . ($spec?"_SPEC":"") . $prefix[$op1] . $prefix[$op2] . "_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)"; + } else if (strncasecmp($matches[0], "ZEND_VM_DISPATCH_TO_HELPER_EX", strlen("ZEND_VM_DISPATCH_TO_HELPER_EX")) == 0) { + return "return " . helper_name($matches[1], $spec, $op1, $op2) . "(" . $matches[2]. ", ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);"; + } else { + return "return " . helper_name($matches[1], $spec, $op1, $op2) . "(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)"; + } + }, $code); break; case ZEND_VM_KIND_SWITCH: - $code = preg_replace( + $code = preg_replace_callback( array( "/EXECUTE_DATA/m", "/ZEND_VM_DISPATCH_TO_HANDLER\(\s*([A-Z_]*)\s*\)/m", - "/ZEND_VM_DISPATCH_TO_HELPER\(\s*([A-Za-z_]*)\s*\)/me", - "/ZEND_VM_DISPATCH_TO_HELPER_EX\(\s*([A-Za-z_]*)\s*,\s*([A-Za-z_]*)\s*,\s*(.*)\s*\);/me", + "/ZEND_VM_DISPATCH_TO_HELPER\(\s*([A-Za-z_]*)\s*\)/m", + "/ZEND_VM_DISPATCH_TO_HELPER_EX\(\s*([A-Za-z_]*)\s*,\s*([A-Za-z_]*)\s*,\s*(.*)\s*\);/m", ), - array( - "execute_data", - "goto \\1".($spec?"_SPEC":"").$prefix[$op1].$prefix[$op2]."_LABEL", - "'goto '.helper_name('\\1',$spec,'$op1','$op2')", - "'\\2 = \\3; goto '.helper_name('\\1',$spec,'$op1','$op2').';'", - ), - $code); + function($matches) use ($spec, $prefix, $op1, $op2) { + if (strncasecmp($matches[0], "EXECUTE_DATA", strlen("EXECUTE_DATA")) == 0) { + return "execute_data"; + } else if (strncasecmp($matches[0], "ZEND_VM_DISPATCH_TO_HANDLER", strlen("ZEND_VM_DISPATCH_TO_HANDLER")) == 0) { + return "goto " . $matches[1] . ($spec?"_SPEC":"") . $prefix[$op1] . $prefix[$op2] . "_LABEL"; + } else if (strncasecmp($matches[0], "ZEND_VM_DISPATCH_TO_HELPER_EX", strlen("ZEND_VM_DISPATCH_TO_HELPER_EX")) == 0) { + return $matches[2] . " = " . $matches[3] . "; goto " . helper_name($matches[1], $spec, $op1, $op2) . ";"; + } else { + return "goto " . helper_name($matches[1], $spec, $op1, $op2); + } + }, + $code); break; case ZEND_VM_KIND_GOTO: - $code = preg_replace( + $code = preg_replace_callback( array( "/EXECUTE_DATA/m", "/ZEND_VM_DISPATCH_TO_HANDLER\(\s*([A-Z_]*)\s*\)/m", - "/ZEND_VM_DISPATCH_TO_HELPER\(\s*([A-Za-z_]*)\s*\)/me", - "/ZEND_VM_DISPATCH_TO_HELPER_EX\(\s*([A-Za-z_]*)\s*,\s*([A-Za-z_]*)\s*,\s*(.*)\s*\);/me", + "/ZEND_VM_DISPATCH_TO_HELPER\(\s*([A-Za-z_]*)\s*\)/m", + "/ZEND_VM_DISPATCH_TO_HELPER_EX\(\s*([A-Za-z_]*)\s*,\s*([A-Za-z_]*)\s*,\s*(.*)\s*\);/m", ), - array( - "execute_data", - "goto \\1".($spec?"_SPEC":"").$prefix[$op1].$prefix[$op2]."_HANDLER", - "'goto '.helper_name('\\1',$spec,'$op1','$op2')", - "'\\2 = \\3; goto '.helper_name('\\1',$spec,'$op1','$op2').';'", - ), - $code); + function($matches) use ($spec, $prefix, $op1, $op2) { + if (strncasecmp($matches[0], "EXECUTE_DATA", strlen("EXECUTE_DATA")) == 0) { + return "execute_data"; + } else if (strncasecmp($matches[0], "ZEND_VM_DISPATCH_TO_HANDLER", strlen("ZEND_VM_DISPATCH_TO_HANDLER")) == 0) { + return "goto " . $matches[1] . ($spec?"_SPEC":"") . $prefix[$op1] . $prefix[$op2] . "_HANDLER"; + } else if (strncasecmp($matches[0], "ZEND_VM_DISPATCH_TO_HELPER_EX", strlen("ZEND_VM_DISPATCH_TO_HELPER_EX")) == 0) { + return $matches[2] . " = " . $matches[3] . "; goto " . helper_name($matches[1], $spec, $op1, $op2) . ";"; + } else { + return "goto " . helper_name($matches[1], $spec, $op1, $op2); + } + }, + $code); break; } @@ -856,7 +871,7 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name, out($f,"#define LOAD_REGS() do {Ts = EX(Ts); CVs = EX(CVs);} while (0)\n"); out($f,"#define ZEND_VM_CONTINUE() goto zend_vm_continue\n"); out($f,"#define ZEND_VM_RETURN() EG(in_execution) = original_in_execution; return\n"); - out($f,"#define ZEND_VM_ENTER() op_array = EG(active_op_array); goto zend_vm_enter\n"); + out($f,"#define ZEND_VM_ENTER() execute_data = zend_create_execute_data_from_op_array(EG(active_op_array), 1 TSRMLS_CC); LOAD_REGS(); LOAD_OPLINE(); ZEND_VM_CONTINUE()\n"); out($f,"#define ZEND_VM_LEAVE() ZEND_VM_CONTINUE()\n"); out($f,"#define ZEND_VM_DISPATCH(opcode, opline) dispatch_handler = zend_vm_get_opcode_handler(opcode, opline); goto zend_vm_dispatch;\n\n"); out($f,"#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_INTERNAL execute_data TSRMLS_CC\n"); @@ -892,7 +907,7 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name, out($f,"#define LOAD_REGS() do {Ts = EX(Ts); CVs = EX(CVs);} while (0)\n"); out($f,"#define ZEND_VM_CONTINUE() goto *(void**)(OPLINE->handler)\n"); out($f,"#define ZEND_VM_RETURN() EG(in_execution) = original_in_execution; return\n"); - out($f,"#define ZEND_VM_ENTER() op_array = EG(active_op_array); goto zend_vm_enter\n"); + out($f,"#define ZEND_VM_ENTER() execute_data = zend_create_execute_data_from_op_array(EG(active_op_array), 1 TSRMLS_CC); LOAD_REGS(); LOAD_OPLINE(); ZEND_VM_CONTINUE()\n"); out($f,"#define ZEND_VM_LEAVE() ZEND_VM_CONTINUE()\n"); out($f,"#define ZEND_VM_DISPATCH(opcode, opline) goto *(void**)(zend_vm_get_opcode_handler(opcode, opline));\n\n"); out($f,"#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_INTERNAL execute_data TSRMLS_CC\n"); @@ -927,19 +942,12 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name, skip_blanks($f, $m[1], $m[3]."\n"); } break; - case "EXECUTION_STATUS": - if ($kind != ZEND_VM_KIND_GOTO) { - out($f, $m[1] . "zend_bool original_in_execution = EG(in_execution);\n"); - } else { - out($f, $m[1] . "zend_bool original_in_execution = op_array? EG(in_execution) : 0;\n"); - } - break; case "INTERNAL_LABELS": if ($kind == ZEND_VM_KIND_GOTO) { // Emit array of labels of opcode handlers and code for // zend_opcode_handlers initialization $prolog = $m[1]; - out($f,$prolog."if (op_array == NULL) {\n"); + out($f,$prolog."if (execute_data == NULL) {\n"); out($f,$prolog."\tstatic const opcode_handler_t labels[] = {\n"); gen_labels($f, $spec, $kind, $prolog."\t\t"); out($f,$prolog."\t};\n"); @@ -983,10 +991,11 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name, $m[1]."\t\tEG(in_execution) = original_in_execution;\n". $m[1]."\t\treturn;\n". $m[1]."\tcase 2:\n" . - $m[1]."\t\top_array = EG(active_op_array);\n". - $m[1]."\t\tgoto zend_vm_enter;\n". + $m[1]."\t\texecute_data = zend_create_execute_data_from_op_array(EG(active_op_array), 1 TSRMLS_CC);\n". + $m[1]."\t\tbreak;\n" . $m[1]."\tcase 3:\n" . $m[1]."\t\texecute_data = EG(current_execute_data);\n". + $m[1]."\t\tbreak;\n" . $m[1]."\tdefault:\n". $m[1]."\t\tbreak;\n". $m[1]."}".$m[3]."\n"); @@ -1013,9 +1022,9 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name, $prolog = $m[1]; if ($kind == ZEND_VM_KIND_GOTO) { // Labels are defined in the executor itself, so we call it - // with op_array NULL and it sets zend_opcode_handlers array + // with execute_data NULL and it sets zend_opcode_handlers array out($f,$prolog."TSRMLS_FETCH();\n"); - out($f,$prolog."zend_execute(NULL TSRMLS_CC);\n"); + out($f,$prolog.$executor_name."_ex(NULL TSRMLS_CC);\n"); } else { if ($old) { // Reserving space for user-defined opcodes @@ -1189,7 +1198,7 @@ function gen_vm($def, $skel) { // Generate opcode #defines (zend_vm_opcodes.h) $code_len = strlen((string)$max_opcode); - $f = fopen("zend_vm_opcodes.h", "w+") or die("ERROR: Cannot create zend_vm_opcodes.h\n"); + $f = fopen(__DIR__ . "/zend_vm_opcodes.h", "w+") or die("ERROR: Cannot create zend_vm_opcodes.h\n"); // Insert header out($f, $GLOBALS['header_text']); @@ -1203,8 +1212,8 @@ function gen_vm($def, $skel) { echo "zend_vm_opcodes.h generated successfully.\n"; // Generate zend_vm_execute.h - $f = fopen("zend_vm_execute.h", "w+") or die("ERROR: Cannot create zend_vm_execute.h\n"); - $executor_file = realpath("zend_vm_execute.h"); + $f = fopen(__DIR__ . "/zend_vm_execute.h", "w+") or die("ERROR: Cannot create zend_vm_execute.h\n"); + $executor_file = realpath(__DIR__ . "/zend_vm_execute.h"); // Insert header out($f, $GLOBALS['header_text']); @@ -1447,6 +1456,6 @@ if (!defined("ZEND_VM_LINES")) { define("ZEND_VM_LINES", 0); } -gen_vm("zend_vm_def.h", "zend_vm_execute.skl"); +gen_vm(__DIR__ . "/zend_vm_def.h", __DIR__ . "/zend_vm_execute.skl"); ?> diff --git a/Zend/zend_vm_opcodes.h b/Zend/zend_vm_opcodes.h index 680778c2a..7f9434995 100644 --- a/Zend/zend_vm_opcodes.h +++ b/Zend/zend_vm_opcodes.h @@ -159,3 +159,6 @@ #define ZEND_SEPARATE 156 #define ZEND_QM_ASSIGN_VAR 157 #define ZEND_JMP_SET_VAR 158 +#define ZEND_LEAVE 159 +#define ZEND_YIELD 160 +#define ZEND_GENERATOR_RETURN 161 |