From 78bb7e7dd10f61bc37d0bab8d0dd9c1ec38a5c65 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Thu, 3 Aug 2017 21:08:07 +0300 Subject: [PATCH 01/40] Bump dev version --- Library/Compiler.php | 2 +- appveyor.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Compiler.php b/Library/Compiler.php index 647fd26d40..7942bb914d 100644 --- a/Library/Compiler.php +++ b/Library/Compiler.php @@ -32,7 +32,7 @@ */ class Compiler { - const VERSION = '0.9.11'; + const VERSION = '0.9.12'; public $parserCompiled = false; diff --git a/appveyor.yml b/appveyor.yml index bd42e9302b..52fdd43295 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -3,7 +3,7 @@ #---------------------------------# # version format -version: 0.9.11-{build} +version: 0.9.12-{build} # branches to build branches: From 3b4f0ee024ca2ce650798342a24da902e49091f1 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Mon, 9 Oct 2017 21:52:12 +0300 Subject: [PATCH 02/40] Removed enable_dl command directive This deprecated feature will certainly be removed in the future from PHP. Actually we no longer need this directive at all. --- bin/zephir | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/zephir b/bin/zephir index 0fbcb9fc72..65e161245a 100755 --- a/bin/zephir +++ b/bin/zephir @@ -20,7 +20,7 @@ if [ -z "$ZEPHIRDIR" ]; then fi if [ ! -z $1 ] && [ ! -z $2 ] && [ ! -z $3 ] && [ "$1" = "-c" ]; then - php -d safe_mode=Off -d enable_dl=On -c $2 $ZEPHIRDIR/compiler.php ${*:3} + php -d safe_mode=Off -c $2 $ZEPHIRDIR/compiler.php ${*:3} else - php -d safe_mode=Off -d enable_dl=On $ZEPHIRDIR/compiler.php $* + php -d safe_mode=Off $ZEPHIRDIR/compiler.php $* fi From 7d6dcaf2a4454742682706cb8907a80b46474211 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Mon, 9 Oct 2017 23:05:58 +0300 Subject: [PATCH 03/40] Improved Project Config --- Library/Bootstrap.php | 2 +- Library/Config.php | 209 +++++++++++++++++--------- unit-tests/Zephir/Test/ConfigTest.php | 2 +- 3 files changed, 143 insertions(+), 70 deletions(-) diff --git a/Library/Bootstrap.php b/Library/Bootstrap.php index 1f63404ccc..d883aa424c 100644 --- a/Library/Bootstrap.php +++ b/Library/Bootstrap.php @@ -90,7 +90,7 @@ public static function boot() * Global config */ $config = new Config(); - register_shutdown_function(array($config, 'saveOnExit')); + register_shutdown_function(array($config, 'dumpToFile')); /** * Global logger diff --git a/Library/Config.php b/Library/Config.php index 82810f6fa5..e9ddf36024 100644 --- a/Library/Config.php +++ b/Library/Config.php @@ -20,37 +20,38 @@ namespace Zephir; /** - * Manages compiler global configuration + * Zephir\Config + * + * Manages compiler global configuration. * - * Class Config * @package Zephir */ -class Config +class Config implements \ArrayAccess { /** * Default configuration for project * * @var array */ - protected $config = array( - 'stubs' => array( + private $container = [ + 'stubs' => [ 'path' => 'ide/%version%/%namespace%/', 'stubs-run-after-generate' => false, - ), - 'api' => array( + ], + 'api' => [ 'path' => 'doc/%version%', - 'theme' => array( + 'theme' => [ 'name' => 'zephir', - 'options' => array( + 'options' => [ 'github' => null, 'analytics' => null, 'main_color' => '#3E6496', 'link_color' => '#3E6496', 'link_hover_color' => '#5F9AE7' - ) - ) - ), - 'warnings' => array( + ] + ] + ], + 'warnings' => [ 'unused-variable' => true, 'unused-variable-external' => false, 'possible-wrong-parameter' => true, @@ -75,8 +76,8 @@ class Config 'invalid-reference' => true, 'invalid-typeof-comparison' => true, 'conditional-initialization' => true - ), - 'optimizations' => array( + ], + 'optimizations' => [ 'static-type-inference' => true, 'static-type-inference-second-pass' => true, 'local-context-pass' => true, @@ -85,17 +86,17 @@ class Config 'call-gatherer-pass' => true, 'check-invalid-reads' => false, 'internal-call-transformation' => false - ), + ], 'namespace' => '', 'name' => '', 'description' => '', 'author' => '', 'version' => '0.0.1', 'verbose' => false, - 'requires' => array( - 'extensions' => array() - ) - ); + 'requires' => [ + 'extensions' => [] + ] + ]; /** * Is config changed? @@ -105,88 +106,160 @@ class Config protected $changed = false; /** - * Config constructor + * Config constructor. * * @throws Exception */ public function __construct() { - if (file_exists('config.json')) { - $config = json_decode(file_get_contents('config.json'), true); - if (!is_array($config)) { - throw new Exception( - "config.json is not valid or there is no Zephir extension initialized in this directory" - ); - } - - foreach ($config as $key => $configSection) { - if (!is_array($configSection)) { - $this->config[$key] = $configSection; - } else { - foreach ($configSection as $subKey => $subValue) { - $this->config[$key][$subKey] = $subValue; - } - } - } + $this->populate(); + } + + /** + * Allows to check whether an $key is defined. + * + * @param mixed $key + * @return bool + */ + public function offsetExists($key) + { + return isset($this->container[$key]) || array_key_exists($key, $this->container); + } + + /** + * Gets a $key from the internal container. + * + * @param mixed $key + * @return mixed|null + */ + public function offsetGet($key) + { + if (!is_array($key)) { + return $this->offsetExists($key) ? $this->container[$key] : null; + } + + $namespace = key($key); + $key = current($key); + + if (!$this->offsetExists($namespace) || is_array($this->container[$namespace])) { + return null; + } + + if (isset($this->container[$namespace][$key]) || array_key_exists($key, $this->container[$namespace])) { + return $this->container[$namespace][$key]; } + + return null; } /** - * Retrieves a configuration setting + * Sets a configuration value. * - * @param $key - * @param null $namespace - * @return mixed + * @param mixed $key + * @param mixed $value + */ + public function offsetSet($key, $value) + { + if (!is_array($key)) { + $this->container[$key] = $value; + $this->changed = true; + return; + } + + $namespace = key($key); + $key = current($key); + + if (!array_key_exists($namespace, $this->container)) { + $this->container[$namespace] = []; + } + + $this->container[$namespace][$key] = $value; + $this->changed = true; + } + + /** + * Unsets a $key from internal container. + * + * @param mixed $key + */ + public function offsetUnset($key) + { + unset($this->container[$key]); + + $this->changed = true; + } + + /** + * Retrieves a configuration setting. + * + * @param mixed $key + * @param mixed $namespace + * @return mixed|null */ public function get($key, $namespace = null) { if ($namespace !== null) { - if (isset($this->config[$namespace][$key])) { - return $this->config[$namespace][$key]; - } else { - //new \Exception('Option [' . $namespace . '][' . $key . '] not exists'); - } - } else { - if (isset($this->config[$key])) { - return $this->config[$key]; - } else { - //new \Exception('Option [' . $key . '] not exists'); - } + return $this->offsetGet([$namespace => $key]); } - return null; + return $this->offsetGet($key); } /** * Changes a configuration setting * - * @param $key - * @param $value - * @param null $namespace + * @param mixed $key + * @param mixed $value + * @param mixed $namespace */ public function set($key, $value, $namespace = null) { if ($namespace !== null) { - $this->config[$namespace][$key] = $value; - } else { - $this->config[$key] = $value; + $this->offsetSet([$namespace => $key], $value); + return; } - $this->changed = true; + $this->offsetSet($key, $value); } /** * Writes the configuration if it has been changed */ - public function saveOnExit() + public function dumpToFile() { if ($this->changed && !file_exists('config.json')) { - if (defined('JSON_PRETTY_PRINT')) { - $config = json_encode($this->config, JSON_PRETTY_PRINT); - } else { - $config = json_encode($this->config); - } - file_put_contents('config.json', $config); + file_put_contents('config.json', $this); } } + + /** + * Returns JSON representation of the project config. + * + * @return string + */ + public function __toString() + { + return json_encode($this->container, JSON_PRETTY_PRINT); + } + + /** + * Populate project configuration. + * + * @throws Exception + */ + protected function populate() + { + if (!file_exists('config.json')) { + return; + } + + $config = json_decode(file_get_contents('config.json'), true); + if (!is_array($config)) { + throw new Exception( + 'The config.json file is not valid or there is no Zephir extension initialized in this directory.' + ); + } + + $this->container = array_merge_recursive($this->container, $config); + } } diff --git a/unit-tests/Zephir/Test/ConfigTest.php b/unit-tests/Zephir/Test/ConfigTest.php index fce5831fdf..86d052987a 100644 --- a/unit-tests/Zephir/Test/ConfigTest.php +++ b/unit-tests/Zephir/Test/ConfigTest.php @@ -85,7 +85,7 @@ public function testSaveOnExit() chdir(sys_get_temp_dir()); $config = new Config(); $config->set('name', 'foo'); - $config->saveOnExit(); + $config->dumpToFile(); $configJson = json_decode(file_get_contents('config.json'), true); $this->assertInternalType('array', $configJson); $this->assertSame($configJson['name'], 'foo'); From 9051f7e199450ad4c45ca28fa742fe5a0ede92b0 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Mon, 9 Oct 2017 23:23:41 +0300 Subject: [PATCH 04/40] Removed enable_dl command directive See: 3b4f0ee0 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b7783811dd..1dbf427297 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,7 +54,7 @@ install: - ./install before_script: - - $(phpenv which php) -d safe_mode=Off -d enable_dl=On compiler.php generate + - $(phpenv which php) -d safe_mode=Off compiler.php generate - $(phpenv which php) compiler.php stubs - $(phpenv which php) compiler.php api - (cd ext; $(phpenv which phpize) && ./configure --silent --with-php-config=$(phpenv which php-config) --enable-test && make -j"$(getconf _NPROCESSORS_ONLN)" && make --silent install && phpenv config-add ../unit-tests/ci/test.ini) From e7ea6bcf50cf4bf24cc3c09eab74e31b1ad097c6 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Mon, 9 Oct 2017 23:30:05 +0300 Subject: [PATCH 05/40] Allow install zephir-parser on scrutinizer --- unit-tests/ci/install_zephir_parser.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/unit-tests/ci/install_zephir_parser.sh b/unit-tests/ci/install_zephir_parser.sh index 104a88a331..8bf19ca89f 100755 --- a/unit-tests/ci/install_zephir_parser.sh +++ b/unit-tests/ci/install_zephir_parser.sh @@ -28,7 +28,10 @@ if [ ! -f ${PARSER_DIR}/tests/ci/install-travis ]; then git clone --depth=1 -v https://github.com/phalcon/php-zephir-parser.git -b ${ZEPHIR_PARSER_VERSION} ${PARSER_DIR} fi - cd ${PARSER_DIR} -bash ./unit-tests/ci/install-travis +if [ -z "${TRAVIS}" ]; then + bash ./install +else + bash ./unit-tests/ci/install-travis +fi From e877cef0c353aac16f6a24c204f8675fa230509a Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Mon, 9 Oct 2017 23:35:40 +0300 Subject: [PATCH 06/40] Fixed Travis cache --- unit-tests/ci/install_zephir_parser.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unit-tests/ci/install_zephir_parser.sh b/unit-tests/ci/install_zephir_parser.sh index 8bf19ca89f..a5c9d97bd4 100755 --- a/unit-tests/ci/install_zephir_parser.sh +++ b/unit-tests/ci/install_zephir_parser.sh @@ -24,7 +24,7 @@ TRAVIS_BUILD_DIR="${TRAVIS_BUILD_DIR:-$(dirname $(dirname $CURRENT_DIR))}" PARSER_DIR=$HOME/zephir-parser-${ZEPHIR_PARSER_VERSION} # Use Travis cache -if [ ! -f ${PARSER_DIR}/tests/ci/install-travis ]; then +if [ ! -f ${PARSER_DIR}/unit-tests/ci/install-travis ]; then git clone --depth=1 -v https://github.com/phalcon/php-zephir-parser.git -b ${ZEPHIR_PARSER_VERSION} ${PARSER_DIR} fi From 667c7c9f7773584a84b0432e819715544bebcbe6 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Mon, 9 Oct 2017 23:45:14 +0300 Subject: [PATCH 07/40] Improved CI cache --- unit-tests/ci/install_zephir_parser.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/unit-tests/ci/install_zephir_parser.sh b/unit-tests/ci/install_zephir_parser.sh index a5c9d97bd4..68c181016b 100755 --- a/unit-tests/ci/install_zephir_parser.sh +++ b/unit-tests/ci/install_zephir_parser.sh @@ -24,14 +24,16 @@ TRAVIS_BUILD_DIR="${TRAVIS_BUILD_DIR:-$(dirname $(dirname $CURRENT_DIR))}" PARSER_DIR=$HOME/zephir-parser-${ZEPHIR_PARSER_VERSION} # Use Travis cache -if [ ! -f ${PARSER_DIR}/unit-tests/ci/install-travis ]; then +if [ ! -f ${PARSER_DIR}/zephir_parser.c ]; then git clone --depth=1 -v https://github.com/phalcon/php-zephir-parser.git -b ${ZEPHIR_PARSER_VERSION} ${PARSER_DIR} fi cd ${PARSER_DIR} +set +u if [ -z "${TRAVIS}" ]; then bash ./install else bash ./unit-tests/ci/install-travis fi +set -u From cf2635e66ac8825845a25396353211671c229576 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 00:06:23 +0300 Subject: [PATCH 08/40] Improved install_zephir_parser script --- unit-tests/ci/install_zephir_parser.sh | 50 +++++++++++++------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/unit-tests/ci/install_zephir_parser.sh b/unit-tests/ci/install_zephir_parser.sh index 68c181016b..0762781589 100755 --- a/unit-tests/ci/install_zephir_parser.sh +++ b/unit-tests/ci/install_zephir_parser.sh @@ -1,39 +1,37 @@ #!/usr/bin/env bash -# trace ERR through pipes -set -o pipefail - -# trace ERR through 'time command' and other functions -set -o errtrace - -# set -u : exit the script if you try to use an uninitialised variable -set -o nounset - -# set -e : exit the script if any statement returns a non-true return value -set -o errexit - # Ensure that this is being run inside a CI container if [ "${CI}" != "true" ]; then echo "This script is designed to run inside a CI container only. Exiting" exit 1 fi -CURRENT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) -TRAVIS_BUILD_DIR="${TRAVIS_BUILD_DIR:-$(dirname $(dirname $CURRENT_DIR))}" +PHP_MAJOR=`$(phpenv which php-config) --version | cut -d '.' -f 1,2` -PARSER_DIR=$HOME/zephir-parser-${ZEPHIR_PARSER_VERSION} +LOCAL_SRC_DIR=${HOME}/.cache/zephir-parser/src +LOCAL_LIB_DIR=${HOME}/.local/lib +LOCAL_LIBRARY=${LOCAL_LIB_DIR}/zephir-parser-${ZEPHIR_PARSER_VERSION}-${PHP_MAJOR}.so -# Use Travis cache -if [ ! -f ${PARSER_DIR}/zephir_parser.c ]; then - git clone --depth=1 -v https://github.com/phalcon/php-zephir-parser.git -b ${ZEPHIR_PARSER_VERSION} ${PARSER_DIR} -fi +EXTENSION_DIR=`$(phpenv which php-config) --extension-dir` -cd ${PARSER_DIR} +if [ ! -f ${LOCAL_LIBRARY} ]; then + mkdir -p ${LOCAL_SRC_DIR} + mkdir -p ${LOCAL_LIB_DIR} -set +u -if [ -z "${TRAVIS}" ]; then - bash ./install -else - bash ./unit-tests/ci/install-travis + rm -rf ${LOCAL_SRC_DIR}/* + git clone --depth=1 -v https://github.com/phalcon/php-zephir-parser.git -b ${ZEPHIR_PARSER_VERSION} ${LOCAL_SRC_DIR} + + bash ${LOCAL_SRC_DIR}/install + + if [ ! -f "${EXTENSION_DIR}/zephir_parser.so" ]; then + echo "Unable to locate installed zephir_parser.so" + exit 1 + fi + + cp "${EXTENSION_DIR}/zephir_parser.so" ${LOCAL_LIBRARY} fi -set -u + +echo "[Zephir Parser]" > ${HOME}/.phpenv/versions/$(phpenv version-name)/etc/conf.d/zephir-parser.ini +echo "extension=${LOCAL_LIBRARY}" >> ${HOME}/.phpenv/versions/$(phpenv version-name)/etc/conf.d/zephir-parser.ini + +php --ri 'Zephir Parser' From b2f5b9eb1da2981b10367354d2c0f7cb460f4e7e Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 00:40:38 +0300 Subject: [PATCH 09/40] Fixed Config --- Library/Config.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Library/Config.php b/Library/Config.php index e9ddf36024..491a15a009 100644 --- a/Library/Config.php +++ b/Library/Config.php @@ -113,6 +113,7 @@ class Config implements \ArrayAccess public function __construct() { $this->populate(); + $this->changed = false; } /** @@ -141,7 +142,7 @@ public function offsetGet($key) $namespace = key($key); $key = current($key); - if (!$this->offsetExists($namespace) || is_array($this->container[$namespace])) { + if (!$this->offsetExists($namespace) || !is_array($this->container[$namespace])) { return null; } @@ -260,6 +261,15 @@ protected function populate() ); } - $this->container = array_merge_recursive($this->container, $config); + foreach ($config as $key => $configSection) { + if (!is_array($configSection)) { + $this->offsetSet($key, $configSection); + continue; + } + + foreach ($configSection as $subKey => $subValue) { + $this->offsetSet([$key => $subKey], $subValue); + } + } } } From 1e42fd8a5a47e47ef77875e9b343d4b084b28c7d Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 00:53:43 +0300 Subject: [PATCH 10/40] Config class implements JsonSerializable --- Library/Config.php | 16 +++++++++++++--- unit-tests/Zephir/Test/ConfigTest.php | 4 ++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Library/Config.php b/Library/Config.php index 491a15a009..8d1e6c9d53 100644 --- a/Library/Config.php +++ b/Library/Config.php @@ -26,7 +26,7 @@ * * @package Zephir */ -class Config implements \ArrayAccess +class Config implements \ArrayAccess, \JsonSerializable { /** * Default configuration for project @@ -133,7 +133,7 @@ public function offsetExists($key) * @param mixed $key * @return mixed|null */ - public function offsetGet($key) + public function offsetGet($key) { if (!is_array($key)) { return $this->offsetExists($key) ? $this->container[$key] : null; @@ -240,7 +240,17 @@ public function dumpToFile() */ public function __toString() { - return json_encode($this->container, JSON_PRETTY_PRINT); + return json_encode($this, JSON_PRETTY_PRINT); + } + + /** + * Specify data which should be serialized to JSON + * + * @return array + */ + public function jsonSerialize() + { + return $this->container; } /** diff --git a/unit-tests/Zephir/Test/ConfigTest.php b/unit-tests/Zephir/Test/ConfigTest.php index 86d052987a..69b4833c9d 100644 --- a/unit-tests/Zephir/Test/ConfigTest.php +++ b/unit-tests/Zephir/Test/ConfigTest.php @@ -40,8 +40,8 @@ public function setUp() * Test when we have a bad config.json file. * * @expectedException Exception - * @expectedExceptionMessage config.json is not valid or there is - * no Zephir extension initialized in this directory + * @expectedExceptionMessage The config.json file is not valid or there is + * no Zephir extension initialized in this directory. */ public function testConstructWithBadConfigFile() { From 48ba704cc9a564906b7a9350c831dcf5fccef37f Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 01:21:39 +0300 Subject: [PATCH 11/40] Removed no longer needed Apc storage --- Library/FileSystem/Apc.php | 215 ------------------------------------- 1 file changed, 215 deletions(-) delete mode 100644 Library/FileSystem/Apc.php diff --git a/Library/FileSystem/Apc.php b/Library/FileSystem/Apc.php deleted file mode 100644 index 264938c384..0000000000 --- a/Library/FileSystem/Apc.php +++ /dev/null @@ -1,215 +0,0 @@ -basePrefix = $basePrefix; - } - - /** - * Checks if the filesystem is initialized - * - * @return boolean - */ - public function isInitialized() - { - return $this->initialized; - } - - /** - * Initialize the filesystem - */ - public function initialize() - { - $this->initialized = true; - } - - /** - * Checks whether a temporary entry does exist - * - * @param string $path - * @return boolean - */ - public function exists($path) - { - return apc_exists($this->basePrefix . $path); - } - - /** - * Creates a directory inside the temporary container - * - * @param string $path - * @return boolean - */ - public function makeDirectory($path) - { - return apc_store($this->basePrefix . $path); - } - - /** - * Returns a temporary entry as an array - * - * @param string $path - * @return array - */ - public function file($path) - { - return explode("\n", apc_fetch($this->basePrefix . $path)); - } - - /** - * Returns the modification time of a temporary entry - * - * @param string $path - * @return boolean - */ - public function modificationTime($path) - { - return apc_fetch($this->basePrefix . $path . '-mtime'); - } - - /** - * Writes data from a temporary entry - * - * @param string $path - * - * @return mixed|void - */ - public function read($path) - { - return apc_fetch($this->basePrefix . $path); - } - - /** - * Writes data into a temporary entry - * - * @param string $path - * @param string $data - * @return boolean - */ - public function write($path, $data) - { - $status = apc_store($this->basePrefix . $path, $data); - apc_store($this->basePrefix . $path . '-mtime', time()); - return $status; - } - - /** - * Executes a command and saves the result into a temporary entry - * - * @param string $command - * @param string $descriptor - * @param string $destination - */ - public function system($command, $descriptor, $destination) - { - $tempDestination = '.temp-cmd'; - switch ($descriptor) { - case 'stdout': - system($command . ' > ' . $tempDestination); - break; - case 'stderr': - system($command . ' 2> ' . $tempDestination); - break; - } - apc_store($this->basePrefix . $destination, file_get_contents($tempDestination)); - apc_store($this->basePrefix . $destination . '-mtime', time()); - @unlink('.temp-cmd'); - } - - /** - * Requires a file from the temporary directory - * - * @param string $path - * @return array - */ - public function requireFile($path) - { - $code = apc_fetch($this->basePrefix . $path); - return eval(str_replace('basePrefix . str_replace('/', '_', $path) . '.md5'; - if (!apc_exists($cacheFile)) { - $hash = hash_file($algorithm, $path); - apc_store($cacheFile, $hash); - apc_store($cacheFile . '-mtime', $hash); - $changed = true; - } else { - if (filemtime($path) > filemtime($cacheFile)) { - $hash = hash_file($algorithm, $path); - apc_store($cacheFile, $hash); - apc_store($cacheFile . '-mtime', $hash); - $changed = true; - } - } - - if (!$changed) { - return apc_fetch($cacheFile); - } - - return $hash; - } - } -} From 2e677ec8ab0dc91b2ba1e3e27ee7849ba6e6a2cf Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 01:22:16 +0300 Subject: [PATCH 12/40] Code cleanup --- Library/Config.php | 13 ++----------- prototypes/apc.php | 1 + 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/Library/Config.php b/Library/Config.php index 8d1e6c9d53..9703de8a1d 100644 --- a/Library/Config.php +++ b/Library/Config.php @@ -199,11 +199,7 @@ public function offsetUnset($key) */ public function get($key, $namespace = null) { - if ($namespace !== null) { - return $this->offsetGet([$namespace => $key]); - } - - return $this->offsetGet($key); + return $namespace !== null ? $this->offsetGet([$namespace => $key]) : $this->offsetGet($key); } /** @@ -215,12 +211,7 @@ public function get($key, $namespace = null) */ public function set($key, $value, $namespace = null) { - if ($namespace !== null) { - $this->offsetSet([$namespace => $key], $value); - return; - } - - $this->offsetSet($key, $value); + $namespace !== null ? $this->offsetSet([$namespace => $key], $value): $this->offsetSet($key, $value); } /** diff --git a/prototypes/apc.php b/prototypes/apc.php index 6b5e55b3cf..608b236085 100644 --- a/prototypes/apc.php +++ b/prototypes/apc.php @@ -88,6 +88,7 @@ function apc_store($key, $var, $ttl = 0){} * @link http://www.php.net/manual/en/function.apc-fetch.php * @param $key * @param null $success + * @return mixed */ function apc_fetch($key, &$success = null){} From a798e4e1ed6a75f4f51a4ef7b601e89119844440 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 01:26:03 +0300 Subject: [PATCH 13/40] Code cleanup --- Library/Config.php | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Library/Config.php b/Library/Config.php index 9703de8a1d..e2bebfdae4 100644 --- a/Library/Config.php +++ b/Library/Config.php @@ -263,14 +263,7 @@ protected function populate() } foreach ($config as $key => $configSection) { - if (!is_array($configSection)) { - $this->offsetSet($key, $configSection); - continue; - } - - foreach ($configSection as $subKey => $subValue) { - $this->offsetSet([$key => $subKey], $subValue); - } + $this->offsetSet($key, $configSection); } } } From f87af3285f22403d158a9e8630cf1228dae16c83 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 10:05:20 +0300 Subject: [PATCH 14/40] Introduced Config::fromServer factory method --- Library/Bootstrap.php | 90 ++++++++----------------------------------- Library/Config.php | 79 +++++++++++++++++++++++++++++++++++++ Library/Logger.php | 42 +++++++------------- 3 files changed, 108 insertions(+), 103 deletions(-) diff --git a/Library/Bootstrap.php b/Library/Bootstrap.php index d883aa424c..231c4da82e 100644 --- a/Library/Bootstrap.php +++ b/Library/Bootstrap.php @@ -1,31 +1,27 @@ = 2) { - for ($i = 2; $i < $_SERVER['argc']; $i++) { - $parameter = $_SERVER['argv'][$i]; - - if (preg_match('/^-fno-([a-z0-9\-]+)$/', $parameter, $matches)) { - $config->set($matches[1], false, 'optimizations'); - continue; - } - - if (preg_match('/^-f([a-z0-9\-]+)$/', $parameter, $matches)) { - $config->set($matches[1], true, 'optimizations'); - } - - if (preg_match('/^-W([a-z0-9\-]+)$/', $parameter, $matches)) { - $logger->set($matches[1], false, 'warnings'); - continue; - } - - if (preg_match('/^-w([a-z0-9\-]+)$/', $parameter, $matches)) { - $logger->set($matches[1], true, 'warnings'); - continue; - } - - if (preg_match('/^--([a-z0-9\-]+)$/', $parameter, $matches)) { - $config->set($matches[1], true, 'extra'); - continue; - } - - if (preg_match('/^--([a-z0-9\-]+)=(.*)$/', $parameter, $matches)) { - $config->set($matches[1], $matches[2], 'extra'); - continue; - } - - switch ($parameter) { - case '-w': - $config->set('silent', true); - break; - - case '-v': - $config->set('verbose', true); - break; - - case '-V': - $config->set('verbose', false); - break; - - default: - break; - } - } - } - /** * Register built-in commands * @var $item \DirectoryIterator diff --git a/Library/Config.php b/Library/Config.php index e2bebfdae4..97099d721b 100644 --- a/Library/Config.php +++ b/Library/Config.php @@ -114,6 +114,75 @@ public function __construct() { $this->populate(); $this->changed = false; + + $this->registerShutdownFunction(); + } + + /** + * Factory method to create a Config instence from the $_SERVER['argv']. + * + * @return Config + */ + public static function fromServer() + { + $config = new self(); + + /** + * Change configurations flags + */ + if ($_SERVER['argc'] >= 2) { + for ($i = 2; $i < $_SERVER['argc']; $i++) { + $parameter = $_SERVER['argv'][$i]; + + if (preg_match('/^-fno-([a-z0-9\-]+)$/', $parameter, $matches)) { + $config->set($matches[1], false, 'optimizations'); + continue; + } + + if (preg_match('/^-f([a-z0-9\-]+)$/', $parameter, $matches)) { + $config->set($matches[1], true, 'optimizations'); + } + + if (preg_match('/^-W([a-z0-9\-]+)$/', $parameter, $matches)) { + $config->set($matches[1], false, 'warnings'); + continue; + } + + if (preg_match('/^-w([a-z0-9\-]+)$/', $parameter, $matches)) { + $config->set($matches[1], true, 'warnings'); + continue; + } + + if (preg_match('/^--([a-z0-9\-]+)$/', $parameter, $matches)) { + $config->set($matches[1], true, 'extra'); + continue; + } + + if (preg_match('/^--([a-z0-9\-]+)=(.*)$/', $parameter, $matches)) { + $config->set($matches[1], $matches[2], 'extra'); + continue; + } + + switch ($parameter) { + case '-w': + $config->set('silent', true); + break; + + case '-v': + $config->set('verbose', true); + break; + + case '-V': + $config->set('verbose', false); + break; + + default: + break; + } + } + } + + return $config; } /** @@ -244,6 +313,16 @@ public function jsonSerialize() return $this->container; } + /** + * Registers shutdown function. + * + * @return void + */ + public function registerShutdownFunction() + { + register_shutdown_function([$this, 'dumpToFile']); + } + /** * Populate project configuration. * diff --git a/Library/Logger.php b/Library/Logger.php index 60c3b2e474..f38be24fd8 100644 --- a/Library/Logger.php +++ b/Library/Logger.php @@ -1,32 +1,29 @@ config = $config; } - /** - * Changes a warning status on/off - * - * @param string $type - * @param boolean $value - */ - public function set($type, $value) - { - $this->config->set($type, $value, 'warnings'); - } - /** * Sends a warning to the logger * From 35223068ec773452a044309af3427058af3df0dd Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 10:09:16 +0300 Subject: [PATCH 15/40] Updated Copyright --- Library/Bootstrap.php | 17 ++++++++--------- Library/Config.php | 18 ++++++------------ Library/Logger.php | 17 ++++++++--------- 3 files changed, 22 insertions(+), 30 deletions(-) diff --git a/Library/Bootstrap.php b/Library/Bootstrap.php index 231c4da82e..8965a5c509 100644 --- a/Library/Bootstrap.php +++ b/Library/Bootstrap.php @@ -1,15 +1,14 @@ Date: Tue, 10 Oct 2017 10:41:49 +0300 Subject: [PATCH 16/40] Added ability to setup Zephir base path --- Library/Bootstrap.php | 8 ++++++-- compiler.php | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Library/Bootstrap.php b/Library/Bootstrap.php index 8965a5c509..f53d6884f2 100644 --- a/Library/Bootstrap.php +++ b/Library/Bootstrap.php @@ -77,9 +77,13 @@ public static function getCommands() /** * Boots the compiler executing the specified action + * + * @param string $baseDir Base Zephir direcrory */ - public static function boot() + public static function boot($baseDir = null) { + $baseDir = realpath($baseDir?: dirname(__DIR__)); + try { /** * Global config @@ -101,7 +105,7 @@ public static function boot() * Register built-in commands * @var $item \DirectoryIterator */ - foreach (new \DirectoryIterator(ZEPHIRPATH . 'Library/Commands') as $item) { + foreach (new \DirectoryIterator($baseDir . '/Library/Commands') as $item) { if (!$item->isDir()) { $className = 'Zephir\\Commands\\' . str_replace('.php', '', $item->getBaseName()); $class = new \ReflectionClass($className); diff --git a/compiler.php b/compiler.php index 32359c4cd7..27b054a970 100755 --- a/compiler.php +++ b/compiler.php @@ -19,4 +19,4 @@ require __DIR__ . DIRECTORY_SEPARATOR . 'bootstrap.php'; -Zephir\Bootstrap::boot(); +Zephir\Bootstrap::boot(getenv('ZEPHIRDIR') ?: __DIR__); From a766651d2be485c22d08e16f4cd47e2e3e61f9d2 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 10:43:05 +0300 Subject: [PATCH 17/40] Fixed Logger' file contents cache --- Library/Logger.php | 45 +++++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/Library/Logger.php b/Library/Logger.php index e0af4bd4e8..aa759cf5d0 100644 --- a/Library/Logger.php +++ b/Library/Logger.php @@ -22,12 +22,12 @@ */ class Logger { - private static $files = []; - /** - * Stderr handler + * The contents of the files that are involved in the log message. + * + * @var array */ - protected $handler; + private $filesContent = []; /** * @var Config @@ -66,19 +66,12 @@ public function warning($message, $type, $node) } else { $warning .= ' in ' . $node['file'] . ' on ' . $node['line']; } + $warning .= ' [' . $type . ']' . PHP_EOL; $warning .= PHP_EOL; if (isset($node['file'])) { - if (!isset($_files[$node['file']])) { - if (file_exists($node['file'])) { - $lines = file($node['file']); - } else { - $lines = array(); - } - $_files[$node['file']] = $lines; - } else { - $lines = $_files[$node['file']]; - } + $lines = $this->getFileContents($node['file']); + if (isset($lines[$node['line'] - 1])) { $line = $lines[$node['line'] - 1]; $warning .= "\t" . str_replace("\t", " ", $line); @@ -86,14 +79,11 @@ public function warning($message, $type, $node) $warning .= "\t" . str_repeat("-", $node['char'] - 1) . "^" . PHP_EOL; } } - $warning .= PHP_EOL; - } - if (!$this->handler) { - $this->handler = STDERR; + $warning .= PHP_EOL; } - fprintf($this->handler, "%s", Color::warning($warning)); + fprintf(STDERR, "%s", Color::warning($warning)); return true; } @@ -110,9 +100,24 @@ public function warning($message, $type, $node) public function output($message) { if (!$this->config->get('silent')) { - echo $message . PHP_EOL; + fwrite(STDOUT, $message . PHP_EOL); return true; } return false; } + + /** + * Gets the contents of the files that are involved in the log message. + * + * @param string $file File path + * @return array + */ + protected function getFileContents($file) + { + if (!isset($this->filesContent[$file])) { + $this->filesContent[$file] = file_exists($file) ? file($file) : []; + } + + return $this->filesContent[$file]; + } } From c7fd8c5c1704a3d02a13b30d2ef5662d98d6cdfc Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 11:53:14 +0300 Subject: [PATCH 18/40] Introduced Zephir\Commands\Manager --- Library/Commands/Manager.php | 83 +++++++++++++++++++ Library/Exception/ExceptionInterface.php | 23 +++++ .../Exception/InvalidArgumentException.php | 23 +++++ 3 files changed, 129 insertions(+) create mode 100644 Library/Commands/Manager.php create mode 100644 Library/Exception/ExceptionInterface.php create mode 100644 Library/Exception/InvalidArgumentException.php diff --git a/Library/Commands/Manager.php b/Library/Commands/Manager.php new file mode 100644 index 0000000000..c778afa6c1 --- /dev/null +++ b/Library/Commands/Manager.php @@ -0,0 +1,83 @@ +rewind(); + + while($iterator->valid()) { + $fileInfo = $iterator->current(); + if ($fileInfo->isDir() || $fileInfo->getExtension() !== 'php') { + $iterator->next(); + continue; + } + + $className = __NAMESPACE__ . '\\' . $fileInfo->getBasename('.php'); + if ($className === __CLASS__) { + $iterator->next(); + continue; + } + + $command = new ReflectionClass($className); + if ($command->isAbstract() || $command->isInterface()) { + $iterator->next(); + continue; + } + + if (!$command->implementsInterface(CommandInterface::class)) { + $iterator->next(); + continue; + } + + $this->attach($command->newInstance()); + $iterator->next(); + } + } + + /** + * Calculate a unique identifier for the contained command. + * + * @param CommandInterface $object object whose identifier is to be calculated. + * @return string + * @throws InvalidArgumentException + */ + public function getHash($object) + { + if (!is_object($object) || $object instanceof CommandInterface) { + throw new InvalidArgumentException('Command must implement ' . CommandInterface::class); + } + + return $object->getCommand(); + } +} diff --git a/Library/Exception/ExceptionInterface.php b/Library/Exception/ExceptionInterface.php new file mode 100644 index 0000000000..9de06307ed --- /dev/null +++ b/Library/Exception/ExceptionInterface.php @@ -0,0 +1,23 @@ + Date: Tue, 10 Oct 2017 12:37:01 +0300 Subject: [PATCH 19/40] Introduced domain exceptions to throw more specific errors --- Library/Exception/BadMethodCallException.php | 23 ++++++++++++++++++++ Library/Exception/OutOfBoundsException.php | 23 ++++++++++++++++++++ Library/Exception/ValidationException.php | 23 ++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 Library/Exception/BadMethodCallException.php create mode 100644 Library/Exception/OutOfBoundsException.php create mode 100644 Library/Exception/ValidationException.php diff --git a/Library/Exception/BadMethodCallException.php b/Library/Exception/BadMethodCallException.php new file mode 100644 index 0000000000..a2b4870e2c --- /dev/null +++ b/Library/Exception/BadMethodCallException.php @@ -0,0 +1,23 @@ + Date: Tue, 10 Oct 2017 12:46:27 +0300 Subject: [PATCH 20/40] Amended command manager --- Library/Commands/Manager.php | 116 +++++++++++++++++++++++++++++++++-- 1 file changed, 111 insertions(+), 5 deletions(-) diff --git a/Library/Commands/Manager.php b/Library/Commands/Manager.php index c778afa6c1..22211f8a02 100644 --- a/Library/Commands/Manager.php +++ b/Library/Commands/Manager.php @@ -17,6 +17,9 @@ use SplObjectStorage; use RecursiveIteratorIterator; use RecursiveDirectoryIterator; +use Zephir\Exception\ValidationException; +use Zephir\Exception\OutOfBoundsException; +use Zephir\Exception\BadMethodCallException; use Zephir\Exception\InvalidArgumentException; /** @@ -26,6 +29,8 @@ */ class Manager extends SplObjectStorage { + private $similarSounds = []; + /** * Registers builtin commands. * @@ -66,18 +71,119 @@ public function registerBuiltinCommands() } /** - * Calculate a unique identifier for the contained command. + * {@inheritdoc} * * @param CommandInterface $object object whose identifier is to be calculated. * @return string - * @throws InvalidArgumentException + * @throws ValidationException */ public function getHash($object) { - if (!is_object($object) || $object instanceof CommandInterface) { - throw new InvalidArgumentException('Command must implement ' . CommandInterface::class); - } + $this->validate($object); return $object->getCommand(); } + + /** + * {@inheritdoc} + * + * @param CommandInterface $object The command to add. + * @param mixed $data + * @throws ValidationException + */ + public function attach($object, $data = null) + { + $this->validate($object); + + parent::attach($object, $data); + + $action = $this->getHash($object); + $this->similarSounds[metaphone($action)] = $action; + } + + /** + * {@inheritdoc} + * + * @param CommandInterface $object The command to remove. + * @return void + * @throws ValidationException + */ + public function detach($object) + { + $this->validate($object); + + parent::detach($object); + + $action = $this->getHash($object); + unset($this->similarSounds[metaphone($action)]); + } + + /** + * Resolves and returns a compiller command. + * + * @param string $action Action name + * @return CommandInterface + * @throws OutOfBoundsException + * @throws BadMethodCallException + */ + public function resolveByActionName($action) + { + if (!$this->count()) { + throw new OutOfBoundsException( + 'The command stack is not initialized yet. No one command available at this time.' + ); + } + + if (!is_string($action) || empty($action)) { + throw new BadMethodCallException( + 'A command name must be a nonempty string.' + ); + } + + // Sanitize + $action = trim($action); + + $this->rewind(); + while ($this->valid()) { + /** @var CommandInterface $command */ + $command = $this->current(); + if ($command->getCommand() === $action) { + return $command; + } + + $this->next(); + } + + $message = sprintf("Unrecognized action '%s'.", $action); + $metaphone = metaphone($action); + + foreach ($this->similarSounds as $alias => $name) { + if ($alias == $metaphone) { + $message .= sprintf(" Did you mean '%s' ?", $name); + } + } + + throw new OutOfBoundsException($message); + } + + /** + * Internal validator. + * + * @param mixed $object + * @throws ValidationException + */ + private function validate($object) + { + if (!is_object($object) || !$object instanceof CommandInterface) { + if (is_object($object)) { + $got = get_class($object); + } else { + $got = gettype($object); + } + + throw new ValidationException( + sprintf('Command must implement %s got %s.', CommandInterface::class, $got) + ); + } + } } From 44a27ee7eda6ebab3d723284297dba75ccba6320 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 13:14:37 +0300 Subject: [PATCH 21/40] Removed safe_mode php option --- .travis.yml | 3 ++- bin/zephir | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1dbf427297..ba9c6e6db3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,7 +54,8 @@ install: - ./install before_script: - - $(phpenv which php) -d safe_mode=Off compiler.php generate + - $(phpenv which php) compiler.php help + - $(phpenv which php) compiler.php generate - $(phpenv which php) compiler.php stubs - $(phpenv which php) compiler.php api - (cd ext; $(phpenv which phpize) && ./configure --silent --with-php-config=$(phpenv which php-config) --enable-test && make -j"$(getconf _NPROCESSORS_ONLN)" && make --silent install && phpenv config-add ../unit-tests/ci/test.ini) diff --git a/bin/zephir b/bin/zephir index 65e161245a..2681aad229 100755 --- a/bin/zephir +++ b/bin/zephir @@ -20,7 +20,7 @@ if [ -z "$ZEPHIRDIR" ]; then fi if [ ! -z $1 ] && [ ! -z $2 ] && [ ! -z $3 ] && [ "$1" = "-c" ]; then - php -d safe_mode=Off -c $2 $ZEPHIRDIR/compiler.php ${*:3} + php -c $2 $ZEPHIRDIR/compiler.php ${*:3} else - php -d safe_mode=Off $ZEPHIRDIR/compiler.php $* + php $ZEPHIRDIR/compiler.php $* fi From 63a8e0c4adb8383fd13e638a75788e5e9ac1a18c Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 13:17:43 +0300 Subject: [PATCH 22/40] Introduced CommandInterface::getCommandsManager --- Library/Commands/CommandAbstract.php | 45 ++++++++++++++++++++------- Library/Commands/CommandHelp.php | 21 +++++-------- Library/Commands/CommandInterface.php | 25 ++++++++------- 3 files changed, 53 insertions(+), 38 deletions(-) diff --git a/Library/Commands/CommandAbstract.php b/Library/Commands/CommandAbstract.php index c031bd09c4..8894003c94 100755 --- a/Library/Commands/CommandAbstract.php +++ b/Library/Commands/CommandAbstract.php @@ -2,20 +2,14 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | https://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; @@ -26,6 +20,7 @@ use Zephir\Compiler; use Zephir\Parser; use Zephir\Parser\Manager; +use Zephir\Commands\Manager as CommandsManager; /** * CommandAbstract @@ -36,6 +31,32 @@ abstract class CommandAbstract implements CommandInterface { private $_parameters = null; + /** + * Currently initialized Command Manager. + * @var CommandsManager + */ + private $commandsManager; + + /** + * CommandAbstract constructor. + * + * @param CommandsManager $commandsManager + */ + public function __construct(CommandsManager $commandsManager) + { + $this->commandsManager = $commandsManager; + } + + /** + * {@inheritdoc} + * + * @return Manager + */ + public function getCommandsManager() + { + return $this->commandsManager; + } + /** * Returns parameter named $name if specified * on the command line else null diff --git a/Library/Commands/CommandHelp.php b/Library/Commands/CommandHelp.php index 59b66f5965..ac21211c74 100644 --- a/Library/Commands/CommandHelp.php +++ b/Library/Commands/CommandHelp.php @@ -2,27 +2,20 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; use Zephir\Config; use Zephir\Logger; use Zephir\Compiler; -use Zephir\Bootstrap; /** * CommandHelp @@ -84,7 +77,7 @@ public function execute(Config $config, Logger $logger) echo "\tcommand [options]", PHP_EOL; echo PHP_EOL; echo "Available commands:", PHP_EOL; - foreach (Bootstrap::getCommands() as $command) { + foreach ($this->getCommandsManager() as $command) { echo sprintf("\t%-20s%s\n", $command->getUsage(), $command->getDescription()); } echo PHP_EOL; diff --git a/Library/Commands/CommandInterface.php b/Library/Commands/CommandInterface.php index fa6cae589d..b38e19d9a4 100644 --- a/Library/Commands/CommandInterface.php +++ b/Library/Commands/CommandInterface.php @@ -2,20 +2,14 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; @@ -62,4 +56,11 @@ public function getParameter($parameterName); * @param Logger $logger */ public function execute(Config $config, Logger $logger); + + /** + * Gets currently initialized Command Manager. + * + * @return Manager + */ + public function getCommandsManager(); } From f06e82a61dba5fc2ca80d7a0b6ee742afb4d173f Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 13:38:24 +0300 Subject: [PATCH 23/40] Introduced ExceptionInterface::getExtra --- Library/CompilerException.php | 54 +++++++++---------- Library/Exception/BadMethodCallException.php | 1 + .../Exception/ExceptionExtraAwareTrait.php | 39 ++++++++++++++ Library/Exception/ExceptionInterface.php | 6 +++ .../Exception/InvalidArgumentException.php | 1 + Library/Exception/OutOfBoundsException.php | 1 + Library/Exception/RuntimeException.php | 24 +++++++++ Library/Exception/ValidationException.php | 1 + Library/Parser/ParseException.php | 43 ++++++++------- 9 files changed, 118 insertions(+), 52 deletions(-) create mode 100644 Library/Exception/ExceptionExtraAwareTrait.php create mode 100644 Library/Exception/RuntimeException.php diff --git a/Library/CompilerException.php b/Library/CompilerException.php index 71e64e7f75..638c7dd585 100644 --- a/Library/CompilerException.php +++ b/Library/CompilerException.php @@ -2,50 +2,44 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ -namespace Zephir; +namespace Zephir\Parser; + +use Zephir\Exception\RuntimeException; /** - * CompilerException + * Zephir\Parser\CompilerException * * Exceptions generated by the compiler + * + * @package Zephir\Parser */ -class CompilerException extends Exception +class CompilerException extends RuntimeException { - protected $_extra; - /** + * CompilerException constructor. * - * @param string $message - * @param array $extra + * @param string $message The Exception message to throw [optional]. + * @param array|null $extra Extra info [optional]. + * @param int $code The Exception code [optional]. + * @param \Throwable|\Exception $previous The previous throwable used for the exception chaining [optional]. */ - public function __construct($message, $extra = null) + public function __construct($message = '', $extra = null, $code = 0, $previous = null) { - if (is_array($extra)) { - if (isset($extra['file'])) { - $message .= " in " . $extra['file'] . " on line " . $extra['line']; - } + if (is_array($extra) && isset($extra['file'])) { + $message .= " in " . $extra['file'] . " on line " . $extra['line']; } - $this->_extra = $extra; - parent::__construct($message); - } - public function getExtra() - { - return $this->_extra; + $this->extra = $extra; + + parent::__construct($message, $code, $previous); } } diff --git a/Library/Exception/BadMethodCallException.php b/Library/Exception/BadMethodCallException.php index a2b4870e2c..0583a082bd 100644 --- a/Library/Exception/BadMethodCallException.php +++ b/Library/Exception/BadMethodCallException.php @@ -20,4 +20,5 @@ */ class BadMethodCallException extends \BadMethodCallException implements ExceptionInterface { + use ExceptionExtraAwareTrait; } diff --git a/Library/Exception/ExceptionExtraAwareTrait.php b/Library/Exception/ExceptionExtraAwareTrait.php new file mode 100644 index 0000000000..b5de1223bb --- /dev/null +++ b/Library/Exception/ExceptionExtraAwareTrait.php @@ -0,0 +1,39 @@ +extra; + } +} diff --git a/Library/Exception/ExceptionInterface.php b/Library/Exception/ExceptionInterface.php index 9de06307ed..7b728c36e4 100644 --- a/Library/Exception/ExceptionInterface.php +++ b/Library/Exception/ExceptionInterface.php @@ -20,4 +20,10 @@ */ interface ExceptionInterface { + /** + * Gets extra info. + * + * @return array + */ + public function getExtra(); } diff --git a/Library/Exception/InvalidArgumentException.php b/Library/Exception/InvalidArgumentException.php index 54640bf401..bd626f2ea7 100644 --- a/Library/Exception/InvalidArgumentException.php +++ b/Library/Exception/InvalidArgumentException.php @@ -20,4 +20,5 @@ */ class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface { + use ExceptionExtraAwareTrait; } diff --git a/Library/Exception/OutOfBoundsException.php b/Library/Exception/OutOfBoundsException.php index 628fdb35f4..7cdd24a0f8 100644 --- a/Library/Exception/OutOfBoundsException.php +++ b/Library/Exception/OutOfBoundsException.php @@ -20,4 +20,5 @@ */ class OutOfBoundsException extends \OutOfBoundsException implements ExceptionInterface { + use ExceptionExtraAwareTrait; } diff --git a/Library/Exception/RuntimeException.php b/Library/Exception/RuntimeException.php new file mode 100644 index 0000000000..21a74a7aa0 --- /dev/null +++ b/Library/Exception/RuntimeException.php @@ -0,0 +1,24 @@ +_extra = $extra; - parent::__construct($message); - } + $this->extra = $extra; - public function getExtra() - { - return $this->extra; + parent::__construct($message, $code, $previous); } } From 4947eab9b66e51b47481e47f2fe6bfe410abf55b Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 13:40:47 +0300 Subject: [PATCH 24/40] Pass Commands Manager to the each command --- Library/Commands/Manager.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Library/Commands/Manager.php b/Library/Commands/Manager.php index 22211f8a02..5c856efeba 100644 --- a/Library/Commands/Manager.php +++ b/Library/Commands/Manager.php @@ -20,7 +20,6 @@ use Zephir\Exception\ValidationException; use Zephir\Exception\OutOfBoundsException; use Zephir\Exception\BadMethodCallException; -use Zephir\Exception\InvalidArgumentException; /** * Zephir\Commands\Manager @@ -65,7 +64,7 @@ public function registerBuiltinCommands() continue; } - $this->attach($command->newInstance()); + $this->attach($command->newInstanceArgs([$this])); $iterator->next(); } } @@ -87,7 +86,7 @@ public function getHash($object) /** * {@inheritdoc} * - * @param CommandInterface $object The command to add. + * @param CommandInterface|object $object The command to add. * @param mixed $data * @throws ValidationException */ @@ -104,7 +103,7 @@ public function attach($object, $data = null) /** * {@inheritdoc} * - * @param CommandInterface $object The command to remove. + * @param CommandInterface|object $object The command to remove. * @return void * @throws ValidationException */ From cc31d969a142234520864bf3b48a22a1d532a7ac Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 13:51:54 +0300 Subject: [PATCH 25/40] Added ExceptionInterface::getErrorRegion --- .../Exception/ExceptionExtraAwareTrait.php | 26 +++++++++++++++++++ Library/Exception/ExceptionInterface.php | 7 +++++ 2 files changed, 33 insertions(+) diff --git a/Library/Exception/ExceptionExtraAwareTrait.php b/Library/Exception/ExceptionExtraAwareTrait.php index b5de1223bb..57e2e191a5 100644 --- a/Library/Exception/ExceptionExtraAwareTrait.php +++ b/Library/Exception/ExceptionExtraAwareTrait.php @@ -36,4 +36,30 @@ public function getExtra() { return $this->extra; } + + /** + * {@inheritdoc} + * + * @return string + */ + public function getErrorRegion() + { + $region = ''; + $extra = $this->getExtra(); + + if (isset($extra['file']) && file_exists($extra['file'])) { + $lines = file($extra['file']); + + if (isset($lines[$extra['line'] - 1])) { + $line = $lines[$extra['line'] - 1]; + $region .= sprintf("\t%s", str_replace("\t", " ", $line)); + + if (($extra['char'] - 1) > 0) { + $region .= sprintf("\t%s^\n", str_repeat('-', $extra['char'] - 1)); + } + } + } + + return $region; + } } diff --git a/Library/Exception/ExceptionInterface.php b/Library/Exception/ExceptionInterface.php index 7b728c36e4..e07ac47ffe 100644 --- a/Library/Exception/ExceptionInterface.php +++ b/Library/Exception/ExceptionInterface.php @@ -26,4 +26,11 @@ interface ExceptionInterface * @return array */ public function getExtra(); + + /** + * Returns the code block in which the error occurred. + * + * @return string + */ + public function getErrorRegion(); } From cf9d0412541885c7e69a71ed547bc778b0c208f7 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 14:07:39 +0300 Subject: [PATCH 26/40] Cleaned Bootstrap --- Library/Bootstrap.php | 169 ++++++++++++++++++----------------- Library/Commands/Manager.php | 2 +- compiler.php | 23 ++--- 3 files changed, 96 insertions(+), 98 deletions(-) diff --git a/Library/Bootstrap.php b/Library/Bootstrap.php index f53d6884f2..5d57998a08 100644 --- a/Library/Bootstrap.php +++ b/Library/Bootstrap.php @@ -13,7 +13,8 @@ namespace Zephir; -use Zephir\Commands\CommandAbstract; +use Zephir\Commands\Manager; +use Zephir\Exception\ExceptionInterface; /** * Zephir\Bootstrap @@ -25,74 +26,75 @@ class Bootstrap { /** - * @var CommandAbstract[] + * The Zephir base direcrory. + * @var string */ - protected static $commands = array(); + private $baseDir; /** - * Shows an exception opening the file and highlighting the wrong part + * Commands manager. + * @var Manager + */ + private $commandsManager; + + /** + * Bootstrap constructor. * - * @param \Exception $e - * @param Config $config + * @param string $baseDir The base Zephir direcrory. */ - protected static function showException(\Exception $e, Config $config = null) + public function __construct($baseDir = null) { - echo get_class($e), ': ', $e->getMessage(), PHP_EOL; - if (method_exists($e, 'getExtra')) { - $extra = $e->getExtra(); - if (is_array($extra)) { - if (isset($extra['file'])) { - echo PHP_EOL; - $lines = file($extra['file']); - if (isset($lines[$extra['line'] - 1])) { - $line = $lines[$extra['line'] - 1]; - echo "\t", str_replace("\t", " ", $line); - if (($extra['char'] - 1) > 0) { - echo "\t", str_repeat("-", $extra['char'] - 1), "^", PHP_EOL; - } - } - } - } - } - echo PHP_EOL; + $baseDir = realpath($baseDir?: dirname(__DIR__)); - if ($config && $config->get('verbose')) { - echo 'at ', str_replace(ZEPHIRPATH, '', $e->getFile()), '(', $e->getLine(), ')', PHP_EOL; - echo str_replace(ZEPHIRPATH, '', $e->getTraceAsString()), PHP_EOL; + if (!is_string($baseDir) || !is_dir($baseDir)) { + fwrite( + STDERR, + sprintf( + "Unable to locate Zephir installation path.\n\nDouble check Zephir installation " . + "and/or try to setup ZEPHIRDIR variable to the proper Zephir installation path.\n\n" . + "Current ZEPHIRDIR value: %s\nThe base path passed to bootstrap: %s\n", + getenv('ZEPHIRDIR'), + is_string($baseDir) ? $baseDir : gettype($baseDir) + ) + ); + + exit(1); } - exit(1); + $this->baseDir = rtrim($baseDir, '\\/'); + $this->commandsManager = new Manager(); } - /** - * Returns the commands registered in the compiler + * Gets the Zephir base direcrory. * - * @return CommandAbstract[] + * @return string */ - public static function getCommands() + public function getBaseDir() { - return self::$commands; + return $this->baseDir; } /** - * Boots the compiler executing the specified action + * Gets currently initialized Command Manager. * - * @param string $baseDir Base Zephir direcrory + * @return Manager */ - public static function boot($baseDir = null) + public function getCommandsManager() { - $baseDir = realpath($baseDir?: dirname(__DIR__)); + return $this->commandsManager; + } + /** + * Boots the compiler executing the specified action + */ + public function boot() + { try { - /** - * Global config - */ + // Global Config $config = Config::fromServer(); - /** - * Global Logger - */ + // Global Logger $logger = new Logger($config); if (isset($_SERVER['argv'][1])) { @@ -101,48 +103,49 @@ public static function boot($baseDir = null) $action = 'help'; } - /** - * Register built-in commands - * @var $item \DirectoryIterator - */ - foreach (new \DirectoryIterator($baseDir . '/Library/Commands') as $item) { - if (!$item->isDir()) { - $className = 'Zephir\\Commands\\' . str_replace('.php', '', $item->getBaseName()); - $class = new \ReflectionClass($className); - - if (!$class->isAbstract() && !$class->isInterface()) { - /** - * @var $command CommandAbstract - */ - $command = new $className(); - - if (!$command instanceof CommandAbstract) { - throw new \Exception('Class ' . $class->name . ' must be instance of CommandAbstract'); - } - - self::$commands[$command->getCommand()] = $command; - } - } - } - - if (!isset(self::$commands[$action])) { - $message = 'Unrecognized action "' . $action . '"'; - $metaphone = metaphone($action); - foreach (self::$commands as $key => $command) { - if (metaphone($key) == $metaphone) { - $message .= PHP_EOL . PHP_EOL . 'Did you mean "' . $key . '"?'; - } - } + $manager = new Manager(); + $manager->registerBuiltinCommands(); - throw new \Exception($message); - } + $command = $manager->resolveByActionName($action); - /** - * Execute the command - */ - self::$commands[$action]->execute($config, $logger); + // Execute the command + $command->execute($config, $logger); } catch (\Exception $e) { - self::showException($e, isset($config) ? $config : null); + fwrite(STDERR, $this->formatErrorMessage($e, isset($config) ? $config : null)); + exit(1); } } + + /** + * Formats error message to show an exception opening the file and highlighting the wrong part. + * + * @param \Exception $e + * @param Config $config Current config object [optional]. + * @return string + */ + protected function formatErrorMessage(\Exception $e, Config $config = null) + { + $message = ''; + + if ($config && $config->get('verbose')) { + $message .= sprintf('[%s]: ', get_class($e)); + } + + $message .= $e->getMessage() . PHP_EOL; + + if ($e instanceof ExceptionInterface && $extraInfo = $e->getErrorRegion()) { + $message .= sprintf("\n%s", $extraInfo); + } + + $message .= PHP_EOL; + + if ($config && $config->get('verbose')) { + $path = is_string($this->baseDir) ? str_replace($this->baseDir, '', $e->getFile()) : $e->getFile(); + + $message .= sprintf("%s(%s)\n", $path, $e->getLine()); + $message .= sprintf("%s(%s)\n", $path, $e->getTraceAsString()); + } + + return $message; + } } diff --git a/Library/Commands/Manager.php b/Library/Commands/Manager.php index 5c856efeba..edbf965dd9 100644 --- a/Library/Commands/Manager.php +++ b/Library/Commands/Manager.php @@ -158,7 +158,7 @@ public function resolveByActionName($action) foreach ($this->similarSounds as $alias => $name) { if ($alias == $metaphone) { - $message .= sprintf(" Did you mean '%s' ?", $name); + $message .= sprintf(" Did you mean '%s'?", $name); } } diff --git a/compiler.php b/compiler.php index 27b054a970..7ed82597c3 100755 --- a/compiler.php +++ b/compiler.php @@ -2,21 +2,16 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ -require __DIR__ . DIRECTORY_SEPARATOR . 'bootstrap.php'; +require __DIR__ . '/bootstrap.php'; -Zephir\Bootstrap::boot(getenv('ZEPHIRDIR') ?: __DIR__); +$bootstrap = new Zephir\Bootstrap(getenv('ZEPHIRDIR') ?: __DIR__); +$bootstrap->boot(); From 830691a2218e7c5c5c471fa94eba8a96aede6b89 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 15:03:32 +0300 Subject: [PATCH 27/40] Cleaned commands and improved commands description --- Library/Commands/CommandAbstract.php | 24 ++++++------- Library/Commands/CommandApi.php | 46 ++++++++++++++----------- Library/Commands/CommandBuild.php | 36 +++++++++----------- Library/Commands/CommandBuildDev.php | 36 +++++++++----------- Library/Commands/CommandClean.php | 35 ++++++++----------- Library/Commands/CommandCompile.php | 35 ++++++++----------- Library/Commands/CommandFullClean.php | 35 ++++++++----------- Library/Commands/CommandGenerate.php | 39 +++++++++------------ Library/Commands/CommandHelp.php | 14 ++++---- Library/Commands/CommandInitialize.php | 47 +++++++++++++++----------- Library/Commands/CommandInstall.php | 32 ++++++++---------- Library/Commands/CommandInterface.php | 19 +++++++---- Library/Commands/CommandStubs.php | 36 +++++++++----------- Library/Commands/CommandVersion.php | 35 +++++++++---------- 14 files changed, 222 insertions(+), 247 deletions(-) diff --git a/Library/Commands/CommandAbstract.php b/Library/Commands/CommandAbstract.php index 8894003c94..d575359012 100755 --- a/Library/Commands/CommandAbstract.php +++ b/Library/Commands/CommandAbstract.php @@ -13,19 +13,19 @@ namespace Zephir\Commands; -use Zephir\BaseBackend; -use Zephir\CommandArgumentParser; use Zephir\Config; use Zephir\Logger; -use Zephir\Compiler; use Zephir\Parser; -use Zephir\Parser\Manager; -use Zephir\Commands\Manager as CommandsManager; +use Zephir\Compiler; +use Zephir\BaseBackend; +use Zephir\CommandArgumentParser; /** * CommandAbstract * - * Provides a superclass for commands + * Provides a superclass for any command. + * + * @package Zephir\Commands */ abstract class CommandAbstract implements CommandInterface { @@ -33,16 +33,16 @@ abstract class CommandAbstract implements CommandInterface /** * Currently initialized Command Manager. - * @var CommandsManager + * @var Manager */ private $commandsManager; /** * CommandAbstract constructor. * - * @param CommandsManager $commandsManager + * @param Manager $commandsManager */ - public function __construct(CommandsManager $commandsManager) + public function __construct(Manager $commandsManager) { $this->commandsManager = $commandsManager; } @@ -58,8 +58,7 @@ public function getCommandsManager() } /** - * Returns parameter named $name if specified - * on the command line else null + * Returns parameter named $name if specified on the command line else null. * * @param string $name * @param string $value @@ -70,6 +69,7 @@ protected function setParameter($name, $value) if (!isset($this->_parameters)) { $this->_parameters = array(); } + $this->_parameters[$name] = $value; } @@ -121,7 +121,7 @@ public function execute(Config $config, Logger $logger) } $backend = new $className($config); - $parserManager = new Manager(new Parser(), $logger, $params); + $parserManager = new Parser\Manager(new Parser(), $logger, $params); $compiler = new Compiler($config, $logger, $backend, $parserManager); $command = $this->getCommand(); diff --git a/Library/Commands/CommandApi.php b/Library/Commands/CommandApi.php index 484c337e05..280fa1a03a 100644 --- a/Library/Commands/CommandApi.php +++ b/Library/Commands/CommandApi.php @@ -2,20 +2,14 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; @@ -24,16 +18,18 @@ use Zephir\Logger; /** - * CommandApi + * Zephir\Commands\CommandApi * - * Generates a HTML API based on the classes exposed in the extension + * Generates a HTML API based on the classes exposed in the extension. + * + * @package Zephir\Commands */ class CommandApi extends CommandAbstract { /** - * Command provided by this command + * {@inheritdoc} * - * @return array|string + * @return string */ public function getCommand() { @@ -41,25 +37,35 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'api [--theme-path=/path][--output-directory=/path][--theme-options={json}|/path]'; + return sprintf( + '%s [--theme-path=/path][--output-directory=/path][--theme-options={json}|/path]', + $this->getCommand() + ); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ public function getDescription() { - return 'Generates a HTML API'; + return 'Generates a HTML API based on the classes exposed in the extension'; } + /** + * {@inheritdoc} + * + * @param Config $config + * @param Logger $logger + * @throws Exception + */ public function execute(Config $config, Logger $logger) { $params = $this->parseArguments(); diff --git a/Library/Commands/CommandBuild.php b/Library/Commands/CommandBuild.php index 0151200633..0e54099651 100644 --- a/Library/Commands/CommandBuild.php +++ b/Library/Commands/CommandBuild.php @@ -2,34 +2,30 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; /** - * BuildCommand + * Zephir\Commands\BuildCommand * - * Generates/Builds/Install the extension + * Generates/Builds/Installs a Zephir extension + * + * @package Zephir\Commands */ class CommandBuild extends CommandAbstract { /** - * Commands provided by this command + * {@inheritdoc} * - * @return array|string + * @return string */ public function getCommand() { @@ -37,22 +33,22 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'build'; + return $this->getCommand(); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ public function getDescription() { - return 'Generate/Compile/Install a Zephir extension'; + return 'Generates/Builds/Installs a Zephir extension'; } } diff --git a/Library/Commands/CommandBuildDev.php b/Library/Commands/CommandBuildDev.php index 0899fe14e8..1dfcd66dcd 100644 --- a/Library/Commands/CommandBuildDev.php +++ b/Library/Commands/CommandBuildDev.php @@ -2,34 +2,30 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; /** - * BuildDevCommand + * Zephir\Commands\BuildDevCommand * - * Builds the extension in development mode + * Generates/Builds/Installs a Zephir extension in development mode (development mode) + * + * @package Zephir\Commands */ class CommandBuildDev extends CommandAbstract { /** - * Commands provided by this command + * {@inheritdoc} * - * @return array|string + * @return string */ public function getCommand() { @@ -37,22 +33,22 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'builddev'; + return $this->getCommand(); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ public function getDescription() { - return 'Generate/Compile/Install a Zephir extension in development mode'; + return 'Generates/Builds/Installs a Zephir extension in development mode'; } } diff --git a/Library/Commands/CommandClean.php b/Library/Commands/CommandClean.php index 8f90a7b57a..d824e3d484 100644 --- a/Library/Commands/CommandClean.php +++ b/Library/Commands/CommandClean.php @@ -2,35 +2,28 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; -use Zephir\Config; -use Zephir\Logger; - /** - * CleanCommand + * Zephir\Command\CleanCommand * * Cleans any object files created by the extension + * + * @package Zephir\Commands */ class CommandClean extends CommandAbstract { /** - * Command provided by this command + * {@inheritdoc} * * @return string */ @@ -40,22 +33,22 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'clean'; + return $this->getCommand(); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ public function getDescription() { - return 'Cleans the generated object files in compilation'; + return 'Cleans any object files created by the extension'; } } diff --git a/Library/Commands/CommandCompile.php b/Library/Commands/CommandCompile.php index d5a0c8ea62..12fdfecd6b 100644 --- a/Library/Commands/CommandCompile.php +++ b/Library/Commands/CommandCompile.php @@ -2,37 +2,30 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; -use Zephir\Config; -use Zephir\Logger; - /** - * CompileCommand + * Zephir\Commands\CompileCommand * * Produce the extension installation + * + * @package Zephir\Commands */ class CommandCompile extends CommandAbstract { /** - * Commands provided by this command + * {@inheritdoc} * - * @return array|string + * @return string */ public function getCommand() { @@ -40,17 +33,17 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'compile'; + return $this->getCommand(); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ diff --git a/Library/Commands/CommandFullClean.php b/Library/Commands/CommandFullClean.php index 1197b8cecf..bbfaf56b95 100644 --- a/Library/Commands/CommandFullClean.php +++ b/Library/Commands/CommandFullClean.php @@ -2,35 +2,28 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; -use Zephir\Config; -use Zephir\Logger; - /** - * CommandFullClean + * Zephir\Commands\CommandFullClean * * Cleans any object files created by the extension (including files generated by phpize) + * + * @package Zephir\Commands */ class CommandFullClean extends CommandAbstract { /** - * Command provided by this command + * {@inheritdoc} * * @return string */ @@ -40,22 +33,22 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'fullclean'; + return $this->getCommand(); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ public function getDescription() { - return 'Cleans the generated object files in compilation'; + return 'Cleans any object files created by the extension (including files generated by phpize)'; } } diff --git a/Library/Commands/CommandGenerate.php b/Library/Commands/CommandGenerate.php index 8e11c47bd6..13bdfe8020 100644 --- a/Library/Commands/CommandGenerate.php +++ b/Library/Commands/CommandGenerate.php @@ -2,37 +2,30 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; -use Zephir\Config; -use Zephir\Logger; - /** - * CommandGenerate + * Zephir\Commands\CommandGenerate * - * Generate the code without compiling it + * Generates C code from the Zephir code without compiling it + * + * @package Zephir\Commands */ class CommandGenerate extends CommandAbstract { /** - * Command provided by this command + * {@inheritdoc} * - * @return array|string + * @return string */ public function getCommand() { @@ -40,22 +33,22 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'generate'; + return $this->getCommand(); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ public function getDescription() { - return 'Generates C code from the Zephir code'; + return 'Generates C code from the Zephir code without compiling it'; } } diff --git a/Library/Commands/CommandHelp.php b/Library/Commands/CommandHelp.php index ac21211c74..61ec75e8b8 100644 --- a/Library/Commands/CommandHelp.php +++ b/Library/Commands/CommandHelp.php @@ -18,9 +18,11 @@ use Zephir\Compiler; /** - * CommandHelp + * Zephir\Commands\CommandHelp * * Shows compiler help + * + * @package Zephir\Commands */ class CommandHelp extends CommandAbstract { @@ -34,7 +36,7 @@ class CommandHelp extends CommandAbstract '; /** - * Command provided by this command + * {@inheritdoc} * * @return string */ @@ -44,17 +46,17 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'help'; + return $this->getCommand(); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ @@ -64,7 +66,7 @@ public function getDescription() } /** - * Executes the command + * {@inheritdoc} * * @param Config $config * @param Logger $logger diff --git a/Library/Commands/CommandInitialize.php b/Library/Commands/CommandInitialize.php index 39cbb7e3b0..bc951695b4 100644 --- a/Library/Commands/CommandInitialize.php +++ b/Library/Commands/CommandInitialize.php @@ -2,20 +2,14 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; @@ -23,14 +17,16 @@ use Zephir\Logger; /** - * CommandInitialize + * Zephir\Commands\CommandInitialize + * + * Initializes a Zephir extension * - * Initialize a zephir extension + * @package Zephir\Commands */ class CommandInitialize extends CommandAbstract { /** - * Command provided by this command + * {@inheritdoc} * * @return string */ @@ -40,17 +36,20 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'init [namespace]'; + return sprintf( + '%s [namespace]', + $this->getCommand() + ); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ @@ -59,11 +58,21 @@ public function getDescription() return 'Initializes a Zephir extension'; } + /** + * {@inheritdoc} + * + * @param Config $config + * @param Logger $logger + */ public function execute(Config $config, Logger $logger) { if (isset($_SERVER['argv'][2])) { - $this->setParameter('namespace', strtolower(preg_replace('/[^0-9a-zA-Z]/', '', $_SERVER['argv'][2]))); + $this->setParameter( + 'namespace', + strtolower(preg_replace('/[^0-9a-zA-Z]/', '', $_SERVER['argv'][2])) + ); } + parent::execute($config, $logger); } } diff --git a/Library/Commands/CommandInstall.php b/Library/Commands/CommandInstall.php index 58b332e4d4..6986084b69 100644 --- a/Library/Commands/CommandInstall.php +++ b/Library/Commands/CommandInstall.php @@ -2,32 +2,28 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; /** - * CommandInstall + * Zephir\Commands\CommandInstall * * Installs the extension in the extension directory + * + * @package Zephir\Commands */ class CommandInstall extends CommandAbstract { /** - * Command provided by this command + * {@inheritdoc} * * @return string */ @@ -37,22 +33,22 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'install'; + return $this->getCommand(); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ public function getDescription() { - return 'Installs the extension (requires root password)'; + return 'Installs the extension in the extension directory (may require root password)'; } } diff --git a/Library/Commands/CommandInterface.php b/Library/Commands/CommandInterface.php index b38e19d9a4..2591971073 100644 --- a/Library/Commands/CommandInterface.php +++ b/Library/Commands/CommandInterface.php @@ -19,39 +19,44 @@ /** * CommandInterface * - * Provides an interface to build commands + * Provides a common interface for any buil-in command. + * + * @package Zephir\Commands */ interface CommandInterface { /** - * Command provided by this command + * Returns command provided by this command. * * @return string */ public function getCommand(); /** - * Command usage + * Returns command usage. * * @return string */ public function getUsage(); /** + * Returns the description of the command. + * * @return string */ public function getDescription(); /** - * Returns parameter named parameterName if specified - * on the command line else null + * Returns parameter named parameterName if specified on the command line else null. + * * @param string $parameterName - * @return string + * @return string|null */ public function getParameter($parameterName); /** - * Executes the command + * Executes the command. + * * @param Config $config * @param Logger $logger */ diff --git a/Library/Commands/CommandStubs.php b/Library/Commands/CommandStubs.php index 6e308bc970..8e5458c23b 100644 --- a/Library/Commands/CommandStubs.php +++ b/Library/Commands/CommandStubs.php @@ -2,34 +2,30 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; /** - * CommandGenerate + * Zephir\Commands\CommandStubs * - * Produce stubs that can be used in a PHP IDE + * Generates stubs that can be used in a PHP IDE + * + * @package Zephir\Commands */ class CommandStubs extends CommandAbstract { /** - * Command provided by this command + * {@inheritdoc} * - * @return array|string + * @return string */ public function getCommand() { @@ -37,22 +33,22 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'stubs'; + return $this->getCommand(); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ public function getDescription() { - return 'Generates extension PHP stubs'; + return 'Generates stubs that can be used in a PHP IDE'; } } diff --git a/Library/Commands/CommandVersion.php b/Library/Commands/CommandVersion.php index 188430a82e..3400e6b044 100644 --- a/Library/Commands/CommandVersion.php +++ b/Library/Commands/CommandVersion.php @@ -2,20 +2,14 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Commands; @@ -24,14 +18,16 @@ use Zephir\Compiler; /** - * CommandVersion + * Zephir\Commands\CommandVersion * - * Shows Zephir version + * Shows the Zephir version + * + * @package Zephir\Commands */ class CommandVersion extends CommandAbstract { /** - * Command provided by this command + * {@inheritdoc} * * @return string */ @@ -41,17 +37,17 @@ public function getCommand() } /** - * Command usage + * {@inheritdoc} * * @return string */ public function getUsage() { - return 'version'; + return $this->getCommand(); } /** - * Returns the description of the command + * {@inheritdoc} * * @return string */ @@ -61,7 +57,8 @@ public function getDescription() } /** - * Executes the command + * {@inheritdoc} + * * @param Config $config * @param Logger $logger */ From e09c2ae094f9b253c38ab0ad2d1450348882e8eb Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 15:59:33 +0300 Subject: [PATCH 28/40] Added --help command option to each command --- Library/Bootstrap.php | 2 +- Library/CommandArgumentParser.php | 39 +++++++++++++++----------- Library/Commands/CommandAbstract.php | 34 +++++++++++++++++----- Library/Commands/CommandApi.php | 14 +++++++-- Library/Commands/CommandHelp.php | 23 +++++++++++---- Library/Commands/CommandInitialize.php | 5 ++++ Library/Commands/CommandUsageTrait.php | 35 +++++++++++++++++++++++ Library/Commands/CommandVersion.php | 5 ++++ Library/Commands/Manager.php | 36 ++++++++++++++++++++++-- 9 files changed, 158 insertions(+), 35 deletions(-) create mode 100644 Library/Commands/CommandUsageTrait.php diff --git a/Library/Bootstrap.php b/Library/Bootstrap.php index 5d57998a08..c00003c940 100644 --- a/Library/Bootstrap.php +++ b/Library/Bootstrap.php @@ -52,7 +52,7 @@ public function __construct($baseDir = null) sprintf( "Unable to locate Zephir installation path.\n\nDouble check Zephir installation " . "and/or try to setup ZEPHIRDIR variable to the proper Zephir installation path.\n\n" . - "Current ZEPHIRDIR value: %s\nThe base path passed to bootstrap: %s\n", + "Current ZEPHIRDIR value: %s\nThe base path passed to the Bootstrap: %s\n", getenv('ZEPHIRDIR'), is_string($baseDir) ? $baseDir : gettype($baseDir) ) diff --git a/Library/CommandArgumentParser.php b/Library/CommandArgumentParser.php index b5f18762b3..653acea630 100644 --- a/Library/CommandArgumentParser.php +++ b/Library/CommandArgumentParser.php @@ -1,21 +1,15 @@ _parameters[$name])) ? $this->_parameters[$name] : null; } - /** - * Parse the input arguments for the command and returns theme as an associative array + * Parse the input arguments for the command and returns theme as an associative array. + * * @return array the list of the parameters */ public function parseArguments() { + $params = []; + if (count($_SERVER['argv']) > 2) { $commandArgs = array_slice($_SERVER['argv'], 2); - $parser = new CommandArgumentParser(); - $params = $parser->parseArgs(array_merge(array("command"), $commandArgs)); - } else { - $params = array(); + $parser = $this->getCommandsManager()->getCommandArgumentParser(); + $params = $parser->parseArgs(array_merge(['command'], $commandArgs)); } return $params; } + /** + * Whether the current command called with help option. + * + * @return bool + */ + public function hasHelpOption() + { + $params = $this->parseArguments(); + $parser = $this->getCommandsManager()->getCommandArgumentParser(); + + return $parser->hasHelpOption($params); + } + /** * Executes the command. * @@ -111,6 +125,12 @@ public function parseArguments() public function execute(Config $config, Logger $logger) { $params = $this->parseArguments(); + + if ($this->hasHelpOption()) { + $this->formatUsage(); + return; + } + $backend = null; if (!isset($params['backend'])) { $params['backend'] = BaseBackend::getActiveBackend(); diff --git a/Library/Commands/CommandApi.php b/Library/Commands/CommandApi.php index 280fa1a03a..8271877318 100644 --- a/Library/Commands/CommandApi.php +++ b/Library/Commands/CommandApi.php @@ -26,6 +26,9 @@ */ class CommandApi extends CommandAbstract { + use CommandUsageTrait; + + /** * {@inheritdoc} * @@ -68,14 +71,19 @@ public function getDescription() */ public function execute(Config $config, Logger $logger) { + if ($this->hasHelpOption()) { + $this->formatUsage(); + return; + } + $params = $this->parseArguments(); - $allowedArgs = array( + $allowedArgs = [ "theme-path" => "@.+@", "output-directory" => "@.+@", "theme-options" => "@.+@", "base-url" => "@.+@", - ); + ]; foreach ($params as $k => $p) { if (isset($allowedArgs[$k])) { @@ -84,7 +92,7 @@ public function execute(Config $config, Logger $logger) } else { throw new Exception("Invalid value for argument '$k'"); } - } else if (!in_array($k, array('parser-compiled'))) { + } elseif (!in_array($k, ['parser-compiled'])) { throw new Exception("Invalid argument '$k' for api command'"); } } diff --git a/Library/Commands/CommandHelp.php b/Library/Commands/CommandHelp.php index 61ec75e8b8..5e6e7fe44e 100644 --- a/Library/Commands/CommandHelp.php +++ b/Library/Commands/CommandHelp.php @@ -20,7 +20,7 @@ /** * Zephir\Commands\CommandHelp * - * Shows compiler help + * Shows Zephir help and exit * * @package Zephir\Commands */ @@ -62,7 +62,7 @@ public function getUsage() */ public function getDescription() { - return 'Displays this help'; + return 'Displays this help and exit'; } /** @@ -73,21 +73,34 @@ public function getDescription() */ public function execute(Config $config, Logger $logger) { + if ($this->hasHelpOption()) { + $this->formatUsage(); + return; + } + echo self::LOGO, PHP_EOL; echo "Zephir version " , Compiler::getCurrentVersion(), PHP_EOL, PHP_EOL; echo "Usage: ", PHP_EOL; echo "\tcommand [options]", PHP_EOL; echo PHP_EOL; echo "Available commands:", PHP_EOL; - foreach ($this->getCommandsManager() as $command) { - echo sprintf("\t%-20s%s\n", $command->getUsage(), $command->getDescription()); + + $commands = $this->getCommandsManager(); + $commands->rewind(); + + while ($commands->valid()) { + $command = $commands->current(); + echo sprintf("\t%-20s%s\n", $command->getCommand(), $command->getDescription()); + + $commands->next(); } + echo PHP_EOL; echo "Options:", PHP_EOL; + echo sprintf("\t%-20s%s\n", '--help|--h', "Displays command help and exit"); echo sprintf("\t%-20s%s\n", '-f([a-z0-9\-]+)', "Enables compiler optimizations"); echo sprintf("\t%-20s%s\n", '-fno-([a-z0-9\-]+)', "Disables compiler optimizations"); echo sprintf("\t%-20s%s\n", '-w([a-z0-9\-]+)', "Turns a warning on"); echo sprintf("\t%-20s%s\n", '-W([a-z0-9\-]+)', "Turns a warning off"); - echo PHP_EOL; } } diff --git a/Library/Commands/CommandInitialize.php b/Library/Commands/CommandInitialize.php index bc951695b4..fde4962747 100644 --- a/Library/Commands/CommandInitialize.php +++ b/Library/Commands/CommandInitialize.php @@ -66,6 +66,11 @@ public function getDescription() */ public function execute(Config $config, Logger $logger) { + if ($this->hasHelpOption()) { + $this->formatUsage(); + return; + } + if (isset($_SERVER['argv'][2])) { $this->setParameter( 'namespace', diff --git a/Library/Commands/CommandUsageTrait.php b/Library/Commands/CommandUsageTrait.php new file mode 100644 index 0000000000..f3bd35b2f8 --- /dev/null +++ b/Library/Commands/CommandUsageTrait.php @@ -0,0 +1,35 @@ +getUsage(), PHP_EOL, PHP_EOL; + echo 'Help: ', PHP_EOL; + echo sprintf("\t%s\n", $this->getDescription()), PHP_EOL; + } +} diff --git a/Library/Commands/CommandVersion.php b/Library/Commands/CommandVersion.php index 3400e6b044..f87da5ccb4 100644 --- a/Library/Commands/CommandVersion.php +++ b/Library/Commands/CommandVersion.php @@ -64,6 +64,11 @@ public function getDescription() */ public function execute(Config $config, Logger $logger) { + if ($this->hasHelpOption()) { + $this->formatUsage(); + return; + } + echo Compiler::getCurrentVersion(), PHP_EOL; } } diff --git a/Library/Commands/Manager.php b/Library/Commands/Manager.php index edbf965dd9..519caffd62 100644 --- a/Library/Commands/Manager.php +++ b/Library/Commands/Manager.php @@ -17,6 +17,7 @@ use SplObjectStorage; use RecursiveIteratorIterator; use RecursiveDirectoryIterator; +use Zephir\CommandArgumentParser; use Zephir\Exception\ValidationException; use Zephir\Exception\OutOfBoundsException; use Zephir\Exception\BadMethodCallException; @@ -30,6 +31,21 @@ class Manager extends SplObjectStorage { private $similarSounds = []; + /** + * Command argument parser + * + * @var CommandArgumentParser + */ + private $argumentParser; + + /** + * Manager constructor. + */ + public function __construct() + { + $this->argumentParser = new CommandArgumentParser(); + } + /** * Registers builtin commands. * @@ -40,7 +56,7 @@ public function registerBuiltinCommands() $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(dirname(__FILE__))); $iterator->rewind(); - while($iterator->valid()) { + while ($iterator->valid()) { $fileInfo = $iterator->current(); if ($fileInfo->isDir() || $fileInfo->getExtension() !== 'php') { $iterator->next(); @@ -64,7 +80,13 @@ public function registerBuiltinCommands() continue; } - $this->attach($command->newInstanceArgs([$this])); + $command = $command->newInstanceArgs([$this]); + $data = [ + 'usage' => $command->getUsage(), + 'description' => $command->getDescription(), + ]; + + $this->attach($command, (object) $data); $iterator->next(); } } @@ -83,6 +105,16 @@ public function getHash($object) return $object->getCommand(); } + /** + * Gets Command argument parser + * + * @return CommandArgumentParser + */ + public function getCommandArgumentParser() + { + return $this->argumentParser; + } + /** * {@inheritdoc} * From d5460d05d0a07e7d2d3218312ca9fa976ebef3a8 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 17:32:57 +0300 Subject: [PATCH 29/40] Added CommandInterface::getSynopsis --- Library/Bootstrap.php | 4 ++- Library/Commands/CommandAbstract.php | 27 +++++++++++++++++--- Library/Commands/CommandApi.php | 5 +--- Library/Commands/CommandHelp.php | 4 +-- Library/Commands/CommandInitialize.php | 2 +- Library/Commands/CommandInterface.php | 7 ++++++ Library/Commands/CommandUsageTrait.php | 35 -------------------------- Library/Commands/CommandVersion.php | 2 +- Library/Commands/Manager.php | 1 + 9 files changed, 40 insertions(+), 47 deletions(-) delete mode 100644 Library/Commands/CommandUsageTrait.php diff --git a/Library/Bootstrap.php b/Library/Bootstrap.php index c00003c940..bbfff090ee 100644 --- a/Library/Bootstrap.php +++ b/Library/Bootstrap.php @@ -86,7 +86,9 @@ public function getCommandsManager() } /** - * Boots the compiler executing the specified action + * Boots the compiler executing the specified action. + * + * @return void */ public function boot() { diff --git a/Library/Commands/CommandAbstract.php b/Library/Commands/CommandAbstract.php index 224c7f6228..02a6dfd74c 100755 --- a/Library/Commands/CommandAbstract.php +++ b/Library/Commands/CommandAbstract.php @@ -28,8 +28,6 @@ */ abstract class CommandAbstract implements CommandInterface { - use CommandUsageTrait; - private $_parameters = null; /** @@ -127,7 +125,7 @@ public function execute(Config $config, Logger $logger) $params = $this->parseArguments(); if ($this->hasHelpOption()) { - $this->formatUsage(); + echo $this->getSynopsis(); return; } @@ -147,4 +145,27 @@ public function execute(Config $config, Logger $logger) $command = $this->getCommand(); $compiler->$command($this); } + + /** + * {@inheritdoc} + * + * @return string + */ + public function getSynopsis() + { + $template =<<getCommand(), + rtrim($this->getDescription(), '.') . '.', + $this->getUsage() + ); + } } diff --git a/Library/Commands/CommandApi.php b/Library/Commands/CommandApi.php index 8271877318..f5c6d3816d 100644 --- a/Library/Commands/CommandApi.php +++ b/Library/Commands/CommandApi.php @@ -26,9 +26,6 @@ */ class CommandApi extends CommandAbstract { - use CommandUsageTrait; - - /** * {@inheritdoc} * @@ -72,7 +69,7 @@ public function getDescription() public function execute(Config $config, Logger $logger) { if ($this->hasHelpOption()) { - $this->formatUsage(); + echo $this->getSynopsis(); return; } diff --git a/Library/Commands/CommandHelp.php b/Library/Commands/CommandHelp.php index 5e6e7fe44e..6fb2fde7b8 100644 --- a/Library/Commands/CommandHelp.php +++ b/Library/Commands/CommandHelp.php @@ -74,7 +74,7 @@ public function getDescription() public function execute(Config $config, Logger $logger) { if ($this->hasHelpOption()) { - $this->formatUsage(); + echo $this->getSynopsis(); return; } @@ -97,7 +97,7 @@ public function execute(Config $config, Logger $logger) echo PHP_EOL; echo "Options:", PHP_EOL; - echo sprintf("\t%-20s%s\n", '--help|--h', "Displays command help and exit"); + echo sprintf("\t%-20s%s\n", '--help|-h', "Displays command help and exit"); echo sprintf("\t%-20s%s\n", '-f([a-z0-9\-]+)', "Enables compiler optimizations"); echo sprintf("\t%-20s%s\n", '-fno-([a-z0-9\-]+)', "Disables compiler optimizations"); echo sprintf("\t%-20s%s\n", '-w([a-z0-9\-]+)', "Turns a warning on"); diff --git a/Library/Commands/CommandInitialize.php b/Library/Commands/CommandInitialize.php index fde4962747..4795a16cdd 100644 --- a/Library/Commands/CommandInitialize.php +++ b/Library/Commands/CommandInitialize.php @@ -67,7 +67,7 @@ public function getDescription() public function execute(Config $config, Logger $logger) { if ($this->hasHelpOption()) { - $this->formatUsage(); + echo $this->getSynopsis(); return; } diff --git a/Library/Commands/CommandInterface.php b/Library/Commands/CommandInterface.php index 2591971073..3722dd589e 100644 --- a/Library/Commands/CommandInterface.php +++ b/Library/Commands/CommandInterface.php @@ -46,6 +46,13 @@ public function getUsage(); */ public function getDescription(); + /** + * Returns command's synopsis. + * + * @return string + */ + public function getSynopsis(); + /** * Returns parameter named parameterName if specified on the command line else null. * diff --git a/Library/Commands/CommandUsageTrait.php b/Library/Commands/CommandUsageTrait.php deleted file mode 100644 index f3bd35b2f8..0000000000 --- a/Library/Commands/CommandUsageTrait.php +++ /dev/null @@ -1,35 +0,0 @@ -getUsage(), PHP_EOL, PHP_EOL; - echo 'Help: ', PHP_EOL; - echo sprintf("\t%s\n", $this->getDescription()), PHP_EOL; - } -} diff --git a/Library/Commands/CommandVersion.php b/Library/Commands/CommandVersion.php index f87da5ccb4..7eecb8ac36 100644 --- a/Library/Commands/CommandVersion.php +++ b/Library/Commands/CommandVersion.php @@ -65,7 +65,7 @@ public function getDescription() public function execute(Config $config, Logger $logger) { if ($this->hasHelpOption()) { - $this->formatUsage(); + echo $this->getSynopsis(); return; } diff --git a/Library/Commands/Manager.php b/Library/Commands/Manager.php index 519caffd62..10c2c54364 100644 --- a/Library/Commands/Manager.php +++ b/Library/Commands/Manager.php @@ -84,6 +84,7 @@ public function registerBuiltinCommands() $data = [ 'usage' => $command->getUsage(), 'description' => $command->getDescription(), + 'synopsis' => $command->getSynopsis(), ]; $this->attach($command, (object) $data); From 72f69f88bf4bd90f94c469ebd2c91166c1a39844 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 18:06:05 +0300 Subject: [PATCH 30/40] Amended commands help --- Library/Backends/IllegalStateException.php | 31 +++++++++++++++++++ Library/BaseBackend.php | 1 + Library/Commands/CommandAbstract.php | 36 +++++++++++----------- Library/Commands/CommandApi.php | 36 ++++++++++++++-------- Library/Commands/CommandBuild.php | 17 +++++++--- Library/Commands/CommandBuildDev.php | 17 +++++++--- Library/Commands/CommandCompile.php | 17 +++++++--- Library/Commands/CommandGenerate.php | 17 +++++++--- Library/Commands/CommandInitialize.php | 32 +++++++++++-------- 9 files changed, 144 insertions(+), 60 deletions(-) create mode 100644 Library/Backends/IllegalStateException.php diff --git a/Library/Backends/IllegalStateException.php b/Library/Backends/IllegalStateException.php new file mode 100644 index 0000000000..ca644a0d10 --- /dev/null +++ b/Library/Backends/IllegalStateException.php @@ -0,0 +1,31 @@ +=')) { return 'ZendEngine3'; } + return 'ZendEngine2'; } } diff --git a/Library/Commands/CommandAbstract.php b/Library/Commands/CommandAbstract.php index 02a6dfd74c..14c049c5a8 100755 --- a/Library/Commands/CommandAbstract.php +++ b/Library/Commands/CommandAbstract.php @@ -18,6 +18,7 @@ use Zephir\Parser; use Zephir\Compiler; use Zephir\BaseBackend; +use Zephir\Backends\IllegalStateException; /** * CommandAbstract @@ -28,7 +29,7 @@ */ abstract class CommandAbstract implements CommandInterface { - private $_parameters = null; + private $parameters = []; /** * Currently initialized Command Manager. @@ -57,7 +58,7 @@ public function getCommandsManager() } /** - * Returns parameter named $name if specified on the command line else null. + * Sets named parameter. * * @param string $name * @param string $value @@ -65,22 +66,20 @@ public function getCommandsManager() */ protected function setParameter($name, $value) { - if (!isset($this->_parameters)) { - $this->_parameters = array(); - } - - $this->_parameters[$name] = $value; + $this->parameters[$name] = $value; } /** - * Returns parameter named $name if specified - * on the command line else null + * Gets named parameter. + * + * Returns parameter named $name if specified on the command line otherwise returns NULL. + * * @param string $name - * @return string + * @return string|null */ public function getParameter($name) { - return (isset($this->_parameters[$name])) ? $this->_parameters[$name] : null; + return isset($this->parameters[$name]) ? $this->parameters[$name] : null; } /** @@ -115,7 +114,7 @@ public function hasHelpOption() } /** - * Executes the command. + * {@inheritdoc} * * @param Config $config * @param Logger $logger @@ -129,14 +128,13 @@ public function execute(Config $config, Logger $logger) return; } - $backend = null; - if (!isset($params['backend'])) { - $params['backend'] = BaseBackend::getActiveBackend(); - } - $className = 'Zephir\\Backends\\'.$params['backend'].'\\Backend'; + $backend = empty($params['backend']) ? BaseBackend::getActiveBackend() : $params['backend']; + $className = "Zephir\\Backends\\{$backend}\\Backend"; + if (!class_exists($className)) { - throw new \InvalidArgumentException('Backend '.$params['backend'].' does not exist'); + throw new IllegalStateException("Backend {$backend} doesn't exist."); } + $backend = new $className($config); $parserManager = new Parser\Manager(new Parser(), $logger, $params); @@ -154,12 +152,14 @@ public function execute(Config $config, Logger $logger) public function getSynopsis() { $template =<<getCommand() - ); - } - /** * {@inheritdoc} * @@ -96,4 +83,27 @@ public function execute(Config $config, Logger $logger) parent::execute($config, $logger); } + + /** + * {@inheritdoc} + * + * @return string + */ + public function getUsage() + { + $template =<<getCommand()); + } } diff --git a/Library/Commands/CommandBuild.php b/Library/Commands/CommandBuild.php index 0e54099651..4e5cefc4d0 100644 --- a/Library/Commands/CommandBuild.php +++ b/Library/Commands/CommandBuild.php @@ -37,9 +37,9 @@ public function getCommand() * * @return string */ - public function getUsage() + public function getDescription() { - return $this->getCommand(); + return 'Generates/Builds/Installs a Zephir extension'; } /** @@ -47,8 +47,17 @@ public function getUsage() * * @return string */ - public function getDescription() + public function getUsage() { - return 'Generates/Builds/Installs a Zephir extension'; + $template =<<getCommand()); } } diff --git a/Library/Commands/CommandBuildDev.php b/Library/Commands/CommandBuildDev.php index 1dfcd66dcd..bdadf868f2 100644 --- a/Library/Commands/CommandBuildDev.php +++ b/Library/Commands/CommandBuildDev.php @@ -37,9 +37,9 @@ public function getCommand() * * @return string */ - public function getUsage() + public function getDescription() { - return $this->getCommand(); + return 'Generates/Builds/Installs a Zephir extension in development mode'; } /** @@ -47,8 +47,17 @@ public function getUsage() * * @return string */ - public function getDescription() + public function getUsage() { - return 'Generates/Builds/Installs a Zephir extension in development mode'; + $template =<<getCommand()); } } diff --git a/Library/Commands/CommandCompile.php b/Library/Commands/CommandCompile.php index 12fdfecd6b..e9e197b536 100644 --- a/Library/Commands/CommandCompile.php +++ b/Library/Commands/CommandCompile.php @@ -37,9 +37,9 @@ public function getCommand() * * @return string */ - public function getUsage() + public function getDescription() { - return $this->getCommand(); + return 'Compile a Zephir extension'; } /** @@ -47,8 +47,17 @@ public function getUsage() * * @return string */ - public function getDescription() + public function getUsage() { - return 'Compile a Zephir extension'; + $template =<<getCommand()); } } diff --git a/Library/Commands/CommandGenerate.php b/Library/Commands/CommandGenerate.php index 13bdfe8020..f246541cb6 100644 --- a/Library/Commands/CommandGenerate.php +++ b/Library/Commands/CommandGenerate.php @@ -37,9 +37,9 @@ public function getCommand() * * @return string */ - public function getUsage() + public function getDescription() { - return $this->getCommand(); + return 'Generates C code from the Zephir code without compiling it'; } /** @@ -47,8 +47,17 @@ public function getUsage() * * @return string */ - public function getDescription() + public function getUsage() { - return 'Generates C code from the Zephir code without compiling it'; + $template =<<getCommand()); } } diff --git a/Library/Commands/CommandInitialize.php b/Library/Commands/CommandInitialize.php index 4795a16cdd..0ff7482a25 100644 --- a/Library/Commands/CommandInitialize.php +++ b/Library/Commands/CommandInitialize.php @@ -35,19 +35,6 @@ public function getCommand() return 'init'; } - /** - * {@inheritdoc} - * - * @return string - */ - public function getUsage() - { - return sprintf( - '%s [namespace]', - $this->getCommand() - ); - } - /** * {@inheritdoc} * @@ -80,4 +67,23 @@ public function execute(Config $config, Logger $logger) parent::execute($config, $logger); } + + /** + * {@inheritdoc} + * + * @return string + */ + public function getUsage() + { + $template =<<getCommand()); + } } From 8b37834b9b040fac80e2419fb0450737db552152 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 18:19:09 +0300 Subject: [PATCH 31/40] Improved error reporting --- Library/Bootstrap.php | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Library/Bootstrap.php b/Library/Bootstrap.php index bbfff090ee..63ec4ece9d 100644 --- a/Library/Bootstrap.php +++ b/Library/Bootstrap.php @@ -140,13 +140,21 @@ protected function formatErrorMessage(\Exception $e, Config $config = null) } $message .= PHP_EOL; + if (!$config || !$config->get('verbose')) { + return $message; + } - if ($config && $config->get('verbose')) { - $path = is_string($this->baseDir) ? str_replace($this->baseDir, '', $e->getFile()) : $e->getFile(); + $base = $this->baseDir; + $preparePaths = function ($path) use ($base) { + if (is_string($base)) { + $path = str_replace(rtrim($base, '\\/') . DIRECTORY_SEPARATOR, '', $path); + } - $message .= sprintf("%s(%s)\n", $path, $e->getLine()); - $message .= sprintf("%s(%s)\n", $path, $e->getTraceAsString()); - } + return $path; + }; + + $message .= sprintf("at %s(%s)\n\n", $preparePaths($e->getFile()), $e->getLine()); + $message .= sprintf("Trace:\n%s\n", $preparePaths($e->getTraceAsString())); return $message; } From b17949f5447dee45b8dd9d91e80f6ce37685ce89 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 18:23:55 +0300 Subject: [PATCH 32/40] CS fixes --- Library/Bootstrap.php | 2 +- Library/Commands/CommandHelp.php | 2 +- Library/Config.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Bootstrap.php b/Library/Bootstrap.php index 63ec4ece9d..0a50c6dfc4 100644 --- a/Library/Bootstrap.php +++ b/Library/Bootstrap.php @@ -44,7 +44,7 @@ class Bootstrap */ public function __construct($baseDir = null) { - $baseDir = realpath($baseDir?: dirname(__DIR__)); + $baseDir = realpath($baseDir ?: dirname(__DIR__)); if (!is_string($baseDir) || !is_dir($baseDir)) { fwrite( diff --git a/Library/Commands/CommandHelp.php b/Library/Commands/CommandHelp.php index 6fb2fde7b8..ec8b769920 100644 --- a/Library/Commands/CommandHelp.php +++ b/Library/Commands/CommandHelp.php @@ -26,7 +26,7 @@ */ class CommandHelp extends CommandAbstract { - const LOGO =' + const LOGO = ' _____ __ _ /__ / ___ ____ / /_ (_)____ / / / _ \/ __ \/ __ \/ / ___/ diff --git a/Library/Config.php b/Library/Config.php index de2318f3d3..d4341d92e0 100644 --- a/Library/Config.php +++ b/Library/Config.php @@ -274,7 +274,7 @@ public function get($key, $namespace = null) */ public function set($key, $value, $namespace = null) { - $namespace !== null ? $this->offsetSet([$namespace => $key], $value): $this->offsetSet($key, $value); + $namespace !== null ? $this->offsetSet([$namespace => $key], $value) : $this->offsetSet($key, $value); } /** From 8436233e3ab93655ed23bd7c4a615c14d1b431ac Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 19:15:53 +0300 Subject: [PATCH 33/40] Moved CompilerException to common place --- Library/Backends/ZendEngine2/Backend.php | 2 +- Library/Backends/ZendEngine3/Backend.php | 2 +- Library/Commands/CommandAbstract.php | 2 +- Library/Compiler.php | 20 +++++-------- Library/{ => Compiler}/CompilerException.php | 6 ++-- Library/CompilerFile.php | 22 +++++--------- .../IllegalStateException.php | 8 ++--- Library/Expression/Closure.php | 2 +- Library/Expression/ClosureArrow.php | 2 +- Library/Expression/Constants.php | 4 +-- Library/Expression/NativeArray.php | 2 +- Library/Expression/NativeArrayAccess.php | 2 +- Library/Expression/PropertyAccess.php | 2 +- Library/Expression/PropertyDynamicAccess.php | 2 +- Library/Expression/Reference.php | 2 +- Library/Expression/StaticConstantAccess.php | 2 +- Library/Expression/StaticPropertyAccess.php | 2 +- .../Arithmetical/ArithmeticalBaseOperator.php | 2 +- .../Operators/Arithmetical/DivOperator.php | 2 +- .../Operators/Arithmetical/ModOperator.php | 2 +- .../Operators/Bitwise/BitwiseBaseOperator.php | 2 +- .../Operators/Bitwise/BitwiseNotOperator.php | 3 +- .../Comparison/ComparisonBaseOperator.php | 2 +- Library/Operators/Logical/AndOperator.php | 2 +- .../Operators/Logical/LogicalBaseOperator.php | 2 +- Library/Operators/Logical/OrOperator.php | 2 +- Library/Operators/Other/CastOperator.php | 2 +- Library/Operators/Other/CloneOperator.php | 2 +- Library/Operators/Other/ConcatOperator.php | 2 +- Library/Operators/Other/EmptyOperator.php | 2 +- Library/Operators/Other/FetchOperator.php | 2 +- .../Operators/Other/InstanceOfOperator.php | 2 +- Library/Operators/Other/IssetOperator.php | 2 +- Library/Operators/Other/LikelyOperator.php | 2 +- .../Operators/Other/NewInstanceOperator.php | 2 +- .../Other/NewInstanceTypeOperator.php | 2 +- .../Other/RangeExclusiveOperator.php | 2 +- .../Other/RangeInclusiveOperator.php | 2 +- Library/Operators/Other/RequireOperator.php | 2 +- .../Operators/Other/ShortTernaryOperator.php | 1 - Library/Operators/Other/TernaryOperator.php | 2 +- Library/Operators/Other/TypeOfOperator.php | 2 +- Library/Operators/Other/UnlikelyOperator.php | 2 +- Library/Operators/Unary/MinusOperator.php | 2 +- Library/Operators/Unary/NotOperator.php | 3 +- Library/Operators/Unary/PlusOperator.php | 5 ++-- Library/Optimizers/EvalExpression.php | 2 +- .../Optimizers/FunctionCall/ACosOptimizer.php | 2 +- .../Optimizers/FunctionCall/ASinOptimizer.php | 2 +- .../FunctionCall/AddslashesOptimizer.php | 2 +- .../FunctionCall/ArrayKeyExistsOptimizer.php | 2 +- .../FunctionCall/ArrayKeysOptimizer.php | 2 +- .../FunctionCall/ArrayMergeOptimizer.php | 2 +- .../FunctionCall/BasenameOptimizer.php | 2 +- .../CallUserFuncArrayOptimizer.php | 2 +- .../FunctionCall/CallUserFuncOptimizer.php | 2 +- .../FunctionCall/CamelizeOptimizer.php | 4 +-- .../Optimizers/FunctionCall/CeilOptimizer.php | 2 +- .../FunctionCall/ClassExistsOptimizer.php | 2 +- .../FunctionCall/CompareMtimeOptimizer.php | 2 +- .../Optimizers/FunctionCall/CosOptimizer.php | 2 +- .../FunctionCall/CountOptimizer.php | 2 +- .../FunctionCall/Crc32Optimizer.php | 2 +- .../FunctionCall/CreateArrayOptimizer.php | 2 +- .../FunctionCall/CreateInstanceOptimizer.php | 2 +- .../CreateInstanceParamsOptimizer.php | 2 +- .../CreateSymbolTableOptimizer.php | 2 +- .../Optimizers/FunctionCall/DieOptimizer.php | 2 +- .../FunctionCall/DoublevalOptimizer.php | 2 +- .../FunctionCall/EndsWithOptimizer.php | 2 +- .../Optimizers/FunctionCall/EvalOptimizer.php | 2 +- .../Optimizers/FunctionCall/ExitOptimizer.php | 2 +- .../FunctionCall/ExplodeOptimizer.php | 2 +- .../FunctionCall/FcloseOptimizer.php | 2 +- .../Optimizers/FunctionCall/FeofOptimizer.php | 2 +- .../FunctionCall/FileExistsOptimizer.php | 2 +- .../FunctionCall/FileGetContentsOptimizer.php | 2 +- .../FunctionCall/FilePutContentsOptimizer.php | 2 +- .../FunctionCall/FilemtimeOptimizer.php | 2 +- .../FunctionCall/FloorOptimizer.php | 2 +- .../FunctionCall/FuncGetArgOptimizer.php | 2 +- .../FunctionCall/FuncGetArgsOptimizer.php | 2 +- .../FunctionCall/FuncNumArgsOptimizer.php | 2 +- .../FunctionCall/FwriteOptimizer.php | 2 +- .../FunctionCall/GetCalledClassOptimizer.php | 2 +- .../FunctionCall/GetClassLowerOptimizer.php | 2 +- .../FunctionCall/GetClassNsOptimizer.php | 2 +- .../FunctionCall/GetClassOptimizer.php | 4 +-- .../FunctionCall/GetNsClassOptimizer.php | 2 +- .../FunctionCall/GettypeOptimizer.php | 2 +- .../FunctionCall/GlobalsGetOptimizer.php | 2 +- .../FunctionCall/GlobalsSetOptimizer.php | 2 +- .../FunctionCall/HashEqualsOptimizer.php | 2 +- .../FunctionCall/ImplodeOptimizer.php | 2 +- .../FunctionCall/InArrayOptimizer.php | 2 +- .../FunctionCall/InterfaceExistsOptimizer.php | 2 +- .../FunctionCall/IntvalOptimizer.php | 2 +- .../FunctionCall/IsCallableOptimizer.php | 1 - .../FunctionCall/IsNumericOptimizer.php | 2 +- .../FunctionCall/IsPhpVersionOptimizer.php | 2 +- .../FunctionCall/IsPrivateProperty.php | 2 +- .../FunctionCall/IsScalarOptimizer.php | 2 +- .../FunctionCall/JsonDecodeOptimizer.php | 2 +- .../FunctionCall/JsonEncodeOptimizer.php | 2 +- .../FunctionCall/LdexpOptimizer.php | 2 +- .../FunctionCall/LtrimOptimizer.php | 2 +- .../Optimizers/FunctionCall/Md5Optimizer.php | 2 +- .../FunctionCall/MemstrOptimizer.php | 2 +- .../FunctionCall/MergeAppendOptimizer.php | 2 +- .../FunctionCall/MethodExistsOptimizer.php | 2 +- .../FunctionCall/MicrotimeOptimizer.php | 2 +- .../FunctionCall/MtRandOptimizer.php | 2 +- .../Optimizers/FunctionCall/NextOptimizer.php | 2 +- Library/Optimizers/FunctionCall/ObStart.php | 2 +- .../Optimizers/FunctionCall/PowOptimizer.php | 2 +- .../FunctionCall/PregMatchAllOptimizer.php | 2 +- .../FunctionCall/PregMatchOptimizer.php | 2 +- .../PrepareVirtualPathOptimizer.php | 2 +- .../FunctionCall/RoundOptimizer.php | 2 +- .../FunctionCall/RtrimOptimizer.php | 2 +- .../Optimizers/FunctionCall/SinOptimizer.php | 2 +- .../FunctionCall/StartsWithOptimizer.php | 2 +- .../FunctionCall/StrReplaceOptimizer.php | 2 +- .../FunctionCall/StripcslashesOptimizer.php | 2 +- .../FunctionCall/StripslashesOptimizer.php | 2 +- .../FunctionCall/StrlenOptimizer.php | 2 +- .../FunctionCall/StrposOptimizer.php | 2 +- .../FunctionCall/StrtokOptimizer.php | 2 +- .../FunctionCall/StrtolowerOptimizer.php | 2 +- .../FunctionCall/StrtoupperOptimizer.php | 2 +- .../FunctionCall/SubstrOptimizer.php | 2 +- .../Optimizers/FunctionCall/TanOptimizer.php | 2 +- .../Optimizers/FunctionCall/TimeOptimizer.php | 2 +- .../Optimizers/FunctionCall/TrimOptimizer.php | 4 +-- .../FunctionCall/UcfirstOptimizer.php | 2 +- .../FunctionCall/UncamelizeOptimizer.php | 4 +-- .../FunctionCall/UniqueKeyOptimizer.php | 2 +- .../FunctionCall/UniquePathKeyOptimizer.php | 2 +- .../FunctionCall/VarDumpOptimizer.php | 2 +- .../FunctionCall/VarExportOptimizer.php | 2 +- .../ZephirStringToHexOptimizer.php | 2 +- .../Optimizers/IsTypeOptimizerAbstract.php | 2 +- Library/Optimizers/MathOptimizer.php | 2 +- Library/Parser.php | 27 +++++++---------- Library/Parser/Manager.php | 2 +- Library/Parser/ParseException.php | 1 - Library/Parser/SystemException.php | 29 ------------------- Library/Statements/BreakStatement.php | 2 +- Library/Statements/ContinueStatement.php | 2 +- Library/Statements/DeclareStatement.php | 2 +- Library/Statements/DoWhileStatement.php | 2 +- Library/Statements/EchoStatement.php | 2 +- Library/Statements/ForStatement.php | 2 +- Library/Statements/IfStatement.php | 2 +- Library/Statements/Let/ArrayIndex.php | 2 +- Library/Statements/Let/ArrayIndexAppend.php | 2 +- Library/Statements/Let/Decr.php | 2 +- Library/Statements/Let/ExportSymbol.php | 2 +- Library/Statements/Let/ExportSymbolString.php | 2 +- Library/Statements/Let/Incr.php | 2 +- .../Statements/Let/ObjectDynamicProperty.php | 2 +- .../Let/ObjectDynamicStringProperty.php | 2 +- Library/Statements/Let/ObjectProperty.php | 2 +- .../Statements/Let/ObjectPropertyAppend.php | 2 +- .../Let/ObjectPropertyArrayIndex.php | 2 +- .../Let/ObjectPropertyArrayIndexAppend.php | 2 +- Library/Statements/Let/ObjectPropertyDecr.php | 2 +- Library/Statements/Let/ObjectPropertyIncr.php | 2 +- Library/Statements/Let/StaticProperty.php | 2 +- .../Statements/Let/StaticPropertyAppend.php | 2 +- .../Let/StaticPropertyArrayIndex.php | 2 +- .../Let/StaticPropertyArrayIndexAppend.php | 2 +- Library/Statements/Let/Variable.php | 2 +- Library/Statements/Let/VariableAppend.php | 2 +- Library/Statements/LetStatement.php | 2 +- Library/Statements/LoopStatement.php | 2 +- Library/Statements/RequireStatement.php | 2 +- Library/Statements/ReturnStatement.php | 2 +- Library/Statements/StatementAbstract.php | 2 +- Library/Statements/SwitchStatement.php | 2 +- Library/Statements/ThrowStatement.php | 2 +- Library/Statements/TryCatchStatement.php | 2 +- Library/Statements/UnsetStatement.php | 2 +- Library/Statements/WhileStatement.php | 2 +- Library/Types/AbstractType.php | 2 +- Library/Types/IstringType.php | 2 +- Library/Types/StringType.php | 2 +- 187 files changed, 216 insertions(+), 270 deletions(-) rename Library/{ => Compiler}/CompilerException.php (94%) rename Library/{Backends => Exception}/IllegalStateException.php (90%) delete mode 100644 Library/Parser/SystemException.php diff --git a/Library/Backends/ZendEngine2/Backend.php b/Library/Backends/ZendEngine2/Backend.php index f0ec5be702..902bd0db98 100644 --- a/Library/Backends/ZendEngine2/Backend.php +++ b/Library/Backends/ZendEngine2/Backend.php @@ -5,7 +5,7 @@ use Zephir\CodePrinter; use Zephir\CompiledExpression; use Zephir\Compiler; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompilationContext; use Zephir\ClassMethod; use Zephir\BaseBackend; diff --git a/Library/Backends/ZendEngine3/Backend.php b/Library/Backends/ZendEngine3/Backend.php index 6b3e312835..b5622369eb 100644 --- a/Library/Backends/ZendEngine3/Backend.php +++ b/Library/Backends/ZendEngine3/Backend.php @@ -5,7 +5,7 @@ use Zephir\Variable; use Zephir\CompiledExpression; use Zephir\Compiler; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompilationContext; use Zephir\ClassMethod; use Zephir\FunctionDefinition; diff --git a/Library/Commands/CommandAbstract.php b/Library/Commands/CommandAbstract.php index 14c049c5a8..bf305c433a 100755 --- a/Library/Commands/CommandAbstract.php +++ b/Library/Commands/CommandAbstract.php @@ -18,7 +18,7 @@ use Zephir\Parser; use Zephir\Compiler; use Zephir\BaseBackend; -use Zephir\Backends\IllegalStateException; +use Zephir\Exception\IllegalStateException; /** * CommandAbstract diff --git a/Library/Compiler.php b/Library/Compiler.php index 7942bb914d..ccc9471212 100644 --- a/Library/Compiler.php +++ b/Library/Compiler.php @@ -2,27 +2,21 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | https://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir; use Zephir\Parser\Manager; -use Zephir\Parser\ParseException; use Zephir\Commands\CommandGenerate; use Zephir\Commands\CommandInterface; +use Zephir\Parser\ParseException; use Zephir\FileSystem\HardDisk as FileSystem; /** diff --git a/Library/CompilerException.php b/Library/Compiler/CompilerException.php similarity index 94% rename from Library/CompilerException.php rename to Library/Compiler/CompilerException.php index 638c7dd585..567dd397d1 100644 --- a/Library/CompilerException.php +++ b/Library/Compiler/CompilerException.php @@ -11,16 +11,16 @@ +--------------------------------------------------------------------------+ */ -namespace Zephir\Parser; +namespace Zephir\Compiler; use Zephir\Exception\RuntimeException; /** - * Zephir\Parser\CompilerException + * Zephir\Compiler\CompilerException * * Exceptions generated by the compiler * - * @package Zephir\Parser + * @package Zephir\Compiler */ class CompilerException extends RuntimeException { diff --git a/Library/CompilerFile.php b/Library/CompilerFile.php index 755a35998a..5893663f16 100644 --- a/Library/CompilerFile.php +++ b/Library/CompilerFile.php @@ -2,27 +2,21 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | https://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir; use Zephir\Parser\ParseException; -use Zephir\Parser\SystemException; use Zephir\Compiler\FileInterface; use Zephir\Documentation\DocblockParser; +use Zephir\Exception\IllegalStateException; /** * CompilerFile @@ -161,7 +155,7 @@ public function addFunction(Compiler $compiler, FunctionDefinition $func, $state * @param Compiler $compiler * @return array * - * @throws SystemException + * @throws IllegalStateException * @throws ParseException */ public function genIR(Compiler $compiler) diff --git a/Library/Backends/IllegalStateException.php b/Library/Exception/IllegalStateException.php similarity index 90% rename from Library/Backends/IllegalStateException.php rename to Library/Exception/IllegalStateException.php index ca644a0d10..811c31d2f8 100644 --- a/Library/Backends/IllegalStateException.php +++ b/Library/Exception/IllegalStateException.php @@ -17,14 +17,12 @@ +--------------------------------------------------------------------------+ */ -namespace Zephir\Backends; - -use Zephir\Exception\RuntimeException; +namespace Zephir\Exception; /** - * Zephir\Backends\IllegalStateException + * Zephir\Exception\IllegalStateException * - * @package Zephir + * @package Zephir\Exception */ class IllegalStateException extends RuntimeException { diff --git a/Library/Expression/Closure.php b/Library/Expression/Closure.php index 3a1bdf0470..39ffcd710f 100644 --- a/Library/Expression/Closure.php +++ b/Library/Expression/Closure.php @@ -86,7 +86,7 @@ public function setReadOnly($readOnly) * @param array $expression * @param CompilationContext $compilationContext * @return CompiledExpression - * @throws \Zephir\CompilerException + * @throws \Zephir\Compiler\CompilerException */ public function compile(array $expression, CompilationContext $compilationContext) { diff --git a/Library/Expression/ClosureArrow.php b/Library/Expression/ClosureArrow.php index 893bfa83f6..46b3f493aa 100644 --- a/Library/Expression/ClosureArrow.php +++ b/Library/Expression/ClosureArrow.php @@ -47,7 +47,7 @@ class ClosureArrow extends Closure * @param array $expression * @param CompilationContext $compilationContext * @return CompiledExpression - * @throws \Zephir\CompilerException + * @throws \Zephir\Compiler\CompilerException */ public function compile(array $expression, CompilationContext $compilationContext) { diff --git a/Library/Expression/Constants.php b/Library/Expression/Constants.php index ee0898dd04..2b18155580 100644 --- a/Library/Expression/Constants.php +++ b/Library/Expression/Constants.php @@ -23,7 +23,7 @@ use Zephir\Variable; use Zephir\CompilationContext; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Expression; use Zephir\LiteralCompiledExpression; use Zephir\Utils; @@ -127,7 +127,7 @@ public function setReadOnly($readOnly) * @param array $expression * @param CompilationContext $compilationContext * @return CompiledExpression - * @throws \Zephir\CompilerException + * @throws \Zephir\Compiler\CompilerException */ public function compile(array $expression, CompilationContext $compilationContext) { diff --git a/Library/Expression/NativeArray.php b/Library/Expression/NativeArray.php index fd7b891d54..055b729872 100644 --- a/Library/Expression/NativeArray.php +++ b/Library/Expression/NativeArray.php @@ -23,7 +23,7 @@ use Zephir\Variable; use Zephir\CompilationContext; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Expression; use Zephir\GlobalConstant; use Zephir\Compiler; diff --git a/Library/Expression/NativeArrayAccess.php b/Library/Expression/NativeArrayAccess.php index c008a6e911..f6fad3878b 100644 --- a/Library/Expression/NativeArrayAccess.php +++ b/Library/Expression/NativeArrayAccess.php @@ -23,7 +23,7 @@ use Zephir\Variable; use Zephir\CompilationContext; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Expression; /** diff --git a/Library/Expression/PropertyAccess.php b/Library/Expression/PropertyAccess.php index c29f77d0db..8ca348f653 100644 --- a/Library/Expression/PropertyAccess.php +++ b/Library/Expression/PropertyAccess.php @@ -22,7 +22,7 @@ use Zephir\Variable; use Zephir\CompilationContext; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Expression; /** diff --git a/Library/Expression/PropertyDynamicAccess.php b/Library/Expression/PropertyDynamicAccess.php index 7e27ecaeed..e29cbc27d5 100644 --- a/Library/Expression/PropertyDynamicAccess.php +++ b/Library/Expression/PropertyDynamicAccess.php @@ -24,7 +24,7 @@ use Zephir\Variable; use Zephir\CompilationContext; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Expression; use Zephir\Utils; diff --git a/Library/Expression/Reference.php b/Library/Expression/Reference.php index c01e91749a..8d57d26f52 100644 --- a/Library/Expression/Reference.php +++ b/Library/Expression/Reference.php @@ -23,7 +23,7 @@ use Zephir\Variable; use Zephir\CompilationContext; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Expression; use Zephir\Compiler; diff --git a/Library/Expression/StaticConstantAccess.php b/Library/Expression/StaticConstantAccess.php index e623bbd04c..c36880c20e 100644 --- a/Library/Expression/StaticConstantAccess.php +++ b/Library/Expression/StaticConstantAccess.php @@ -22,7 +22,7 @@ use Zephir\Variable; use Zephir\CompilationContext; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Expression; use Zephir\ClassConstant; diff --git a/Library/Expression/StaticPropertyAccess.php b/Library/Expression/StaticPropertyAccess.php index a383c04314..72ee73cc33 100644 --- a/Library/Expression/StaticPropertyAccess.php +++ b/Library/Expression/StaticPropertyAccess.php @@ -22,7 +22,7 @@ use Zephir\Variable; use Zephir\CompilationContext; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Expression; /** diff --git a/Library/Operators/Arithmetical/ArithmeticalBaseOperator.php b/Library/Operators/Arithmetical/ArithmeticalBaseOperator.php index 5cb8dd70ed..acc676af01 100644 --- a/Library/Operators/Arithmetical/ArithmeticalBaseOperator.php +++ b/Library/Operators/Arithmetical/ArithmeticalBaseOperator.php @@ -22,7 +22,7 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; /** diff --git a/Library/Operators/Arithmetical/DivOperator.php b/Library/Operators/Arithmetical/DivOperator.php index 402ed3c15c..cc53ec0c8f 100644 --- a/Library/Operators/Arithmetical/DivOperator.php +++ b/Library/Operators/Arithmetical/DivOperator.php @@ -22,7 +22,7 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; /** diff --git a/Library/Operators/Arithmetical/ModOperator.php b/Library/Operators/Arithmetical/ModOperator.php index 56f8619ffc..6f62adf122 100644 --- a/Library/Operators/Arithmetical/ModOperator.php +++ b/Library/Operators/Arithmetical/ModOperator.php @@ -22,7 +22,7 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; /** diff --git a/Library/Operators/Bitwise/BitwiseBaseOperator.php b/Library/Operators/Bitwise/BitwiseBaseOperator.php index 3566631886..e557d25f4c 100644 --- a/Library/Operators/Bitwise/BitwiseBaseOperator.php +++ b/Library/Operators/Bitwise/BitwiseBaseOperator.php @@ -24,7 +24,7 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; /** diff --git a/Library/Operators/Bitwise/BitwiseNotOperator.php b/Library/Operators/Bitwise/BitwiseNotOperator.php index 7df6111c8f..0d43a75bb6 100644 --- a/Library/Operators/Bitwise/BitwiseNotOperator.php +++ b/Library/Operators/Bitwise/BitwiseNotOperator.php @@ -19,7 +19,7 @@ namespace Zephir\Operators\Bitwise; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; @@ -32,7 +32,6 @@ class BitwiseNotOperator extends BaseOperator * @param CompilationContext $compilationContext * @return CompiledExpression * @throws CompilerException - * @throws Exception */ public function compile($expression, CompilationContext $compilationContext) { diff --git a/Library/Operators/Comparison/ComparisonBaseOperator.php b/Library/Operators/Comparison/ComparisonBaseOperator.php index 5f20ad7eee..5cef241e2b 100644 --- a/Library/Operators/Comparison/ComparisonBaseOperator.php +++ b/Library/Operators/Comparison/ComparisonBaseOperator.php @@ -23,7 +23,7 @@ use Zephir\CompilationContext; use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; /** * BaseOperator diff --git a/Library/Operators/Logical/AndOperator.php b/Library/Operators/Logical/AndOperator.php index 84fb80bcb3..8758f2976d 100644 --- a/Library/Operators/Logical/AndOperator.php +++ b/Library/Operators/Logical/AndOperator.php @@ -22,7 +22,7 @@ use Zephir\Expression; use Zephir\CompilationContext; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Statements\LetStatement; class AndOperator extends LogicalBaseOperator diff --git a/Library/Operators/Logical/LogicalBaseOperator.php b/Library/Operators/Logical/LogicalBaseOperator.php index d3e8e26da3..41018b4641 100644 --- a/Library/Operators/Logical/LogicalBaseOperator.php +++ b/Library/Operators/Logical/LogicalBaseOperator.php @@ -21,7 +21,7 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Expression; use Zephir\CompiledExpression; diff --git a/Library/Operators/Logical/OrOperator.php b/Library/Operators/Logical/OrOperator.php index d1c67a5f24..d3f7116be2 100644 --- a/Library/Operators/Logical/OrOperator.php +++ b/Library/Operators/Logical/OrOperator.php @@ -22,7 +22,7 @@ use Zephir\CompilationContext; use Zephir\Expression; use Zephir\Statements\LetStatement; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; class OrOperator extends LogicalBaseOperator diff --git a/Library/Operators/Other/CastOperator.php b/Library/Operators/Other/CastOperator.php index 7fb87e5e13..55b2fa02d8 100644 --- a/Library/Operators/Other/CastOperator.php +++ b/Library/Operators/Other/CastOperator.php @@ -23,7 +23,7 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Statements\Let\Variable as LetVariable; use Zephir\Builder\FunctionCallBuilder; diff --git a/Library/Operators/Other/CloneOperator.php b/Library/Operators/Other/CloneOperator.php index 8863522e31..bac73ca606 100644 --- a/Library/Operators/Other/CloneOperator.php +++ b/Library/Operators/Other/CloneOperator.php @@ -22,7 +22,7 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; /** diff --git a/Library/Operators/Other/ConcatOperator.php b/Library/Operators/Other/ConcatOperator.php index 0cd6373b02..3bd61be270 100644 --- a/Library/Operators/Other/ConcatOperator.php +++ b/Library/Operators/Other/ConcatOperator.php @@ -22,7 +22,7 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Utils; diff --git a/Library/Operators/Other/EmptyOperator.php b/Library/Operators/Other/EmptyOperator.php index da387e1eca..372db3dd67 100644 --- a/Library/Operators/Other/EmptyOperator.php +++ b/Library/Operators/Other/EmptyOperator.php @@ -22,8 +22,8 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; use Zephir\CompiledExpression; +use Zephir\Compiler\CompilerException; /** * Empty diff --git a/Library/Operators/Other/FetchOperator.php b/Library/Operators/Other/FetchOperator.php index 1000722a1d..5cba329f33 100644 --- a/Library/Operators/Other/FetchOperator.php +++ b/Library/Operators/Other/FetchOperator.php @@ -22,7 +22,7 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; /** diff --git a/Library/Operators/Other/InstanceOfOperator.php b/Library/Operators/Other/InstanceOfOperator.php index c52078d931..6036e89fde 100644 --- a/Library/Operators/Other/InstanceOfOperator.php +++ b/Library/Operators/Other/InstanceOfOperator.php @@ -22,9 +22,9 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; use Zephir\CompiledExpression; use Zephir\Utils; +use Zephir\Compiler\CompilerException; /** * InstanceOf diff --git a/Library/Operators/Other/IssetOperator.php b/Library/Operators/Other/IssetOperator.php index f8de8c5f28..dc41bf8222 100644 --- a/Library/Operators/Other/IssetOperator.php +++ b/Library/Operators/Other/IssetOperator.php @@ -22,7 +22,7 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\EvalExpression; diff --git a/Library/Operators/Other/LikelyOperator.php b/Library/Operators/Other/LikelyOperator.php index 8d53eeb0a4..5998c939c4 100644 --- a/Library/Operators/Other/LikelyOperator.php +++ b/Library/Operators/Other/LikelyOperator.php @@ -22,7 +22,7 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; /** diff --git a/Library/Operators/Other/NewInstanceOperator.php b/Library/Operators/Other/NewInstanceOperator.php index 007007426f..1343ef0be3 100644 --- a/Library/Operators/Other/NewInstanceOperator.php +++ b/Library/Operators/Other/NewInstanceOperator.php @@ -22,10 +22,10 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; use Zephir\CompiledExpression; use Zephir\MethodCall; use Zephir\Utils; +use Zephir\Compiler\CompilerException; /** * NewInstance diff --git a/Library/Operators/Other/NewInstanceTypeOperator.php b/Library/Operators/Other/NewInstanceTypeOperator.php index 028df1ee82..cae7e3e25d 100644 --- a/Library/Operators/Other/NewInstanceTypeOperator.php +++ b/Library/Operators/Other/NewInstanceTypeOperator.php @@ -23,8 +23,8 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; use Zephir\CompiledExpression; +use Zephir\Compiler\CompilerException; use Zephir\Builder\FunctionCallBuilder; use Zephir\Builder\Operators\CastOperatorBuilder; diff --git a/Library/Operators/Other/RangeExclusiveOperator.php b/Library/Operators/Other/RangeExclusiveOperator.php index 250f40219d..16223d2786 100644 --- a/Library/Operators/Other/RangeExclusiveOperator.php +++ b/Library/Operators/Other/RangeExclusiveOperator.php @@ -23,7 +23,7 @@ use Zephir\CompilationContext; use Zephir\Expression; use Zephir\Expression\Builder\BuilderFactory; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Builder\FunctionCallBuilder; use Zephir\Builder\Operators\CastOperatorBuilder; diff --git a/Library/Operators/Other/RangeInclusiveOperator.php b/Library/Operators/Other/RangeInclusiveOperator.php index 1973d3b8fc..9a046d1aec 100644 --- a/Library/Operators/Other/RangeInclusiveOperator.php +++ b/Library/Operators/Other/RangeInclusiveOperator.php @@ -23,8 +23,8 @@ use Zephir\CompilationContext; use Zephir\Expression; use Zephir\Expression\Builder\BuilderFactory; -use Zephir\CompilerException; use Zephir\CompiledExpression; +use Zephir\Compiler\CompilerException; use Zephir\Builder\FunctionCallBuilder; use Zephir\Builder\Operators\CastOperatorBuilder; use Zephir\Types; diff --git a/Library/Operators/Other/RequireOperator.php b/Library/Operators/Other/RequireOperator.php index a52f73e8dd..f7e7a02112 100644 --- a/Library/Operators/Other/RequireOperator.php +++ b/Library/Operators/Other/RequireOperator.php @@ -22,8 +22,8 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; use Zephir\CompiledExpression; +use Zephir\Compiler\CompilerException; /** * Require diff --git a/Library/Operators/Other/ShortTernaryOperator.php b/Library/Operators/Other/ShortTernaryOperator.php index dd5c1569d8..7ab1d92dcc 100644 --- a/Library/Operators/Other/ShortTernaryOperator.php +++ b/Library/Operators/Other/ShortTernaryOperator.php @@ -26,7 +26,6 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\EvalExpression; use Zephir\Statements\IfStatement; diff --git a/Library/Operators/Other/TernaryOperator.php b/Library/Operators/Other/TernaryOperator.php index 7301997ad0..2a18caf05b 100644 --- a/Library/Operators/Other/TernaryOperator.php +++ b/Library/Operators/Other/TernaryOperator.php @@ -22,10 +22,10 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\EvalExpression; use Zephir\Statements\LetStatement; +use Zephir\Compiler\CompilerException; /** * Ternary diff --git a/Library/Operators/Other/TypeOfOperator.php b/Library/Operators/Other/TypeOfOperator.php index 8411f328e6..b53e07793c 100644 --- a/Library/Operators/Other/TypeOfOperator.php +++ b/Library/Operators/Other/TypeOfOperator.php @@ -20,10 +20,10 @@ namespace Zephir\Operators\Other; use Zephir\Expression; -use Zephir\CompilerException; use Zephir\CompilationContext; use Zephir\CompiledExpression; use Zephir\Operators\BaseOperator; +use Zephir\Compiler\CompilerException; use Zephir\Builder\FunctionCallBuilder; use Zephir\Expression\Builder\BuilderFactory; diff --git a/Library/Operators/Other/UnlikelyOperator.php b/Library/Operators/Other/UnlikelyOperator.php index dfcae4bcb7..9b287a8253 100644 --- a/Library/Operators/Other/UnlikelyOperator.php +++ b/Library/Operators/Other/UnlikelyOperator.php @@ -22,8 +22,8 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\CompilerException; use Zephir\CompiledExpression; +use Zephir\Compiler\CompilerException; /** * Unlikely diff --git a/Library/Operators/Unary/MinusOperator.php b/Library/Operators/Unary/MinusOperator.php index e8339152e2..95293e0be2 100644 --- a/Library/Operators/Unary/MinusOperator.php +++ b/Library/Operators/Unary/MinusOperator.php @@ -19,7 +19,7 @@ namespace Zephir\Operators\Unary; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; diff --git a/Library/Operators/Unary/NotOperator.php b/Library/Operators/Unary/NotOperator.php index ffdc2d5727..1daf3e4662 100644 --- a/Library/Operators/Unary/NotOperator.php +++ b/Library/Operators/Unary/NotOperator.php @@ -19,11 +19,11 @@ namespace Zephir\Operators\Unary; -use Zephir\CompilerException; use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; use Zephir\CompiledExpression; +use Zephir\Compiler\CompilerException; class NotOperator extends BaseOperator { @@ -32,7 +32,6 @@ class NotOperator extends BaseOperator * @param CompilationContext $compilationContext * @return CompiledExpression * @throws CompilerException - * @throws Exception */ public function compile($expression, CompilationContext $compilationContext) { diff --git a/Library/Operators/Unary/PlusOperator.php b/Library/Operators/Unary/PlusOperator.php index f6e8f7f7d9..c56a70e3f8 100644 --- a/Library/Operators/Unary/PlusOperator.php +++ b/Library/Operators/Unary/PlusOperator.php @@ -19,11 +19,11 @@ namespace Zephir\Operators\Unary; -use Zephir\CompilerException; use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; use Zephir\CompiledExpression; +use Zephir\Compiler\CompilerException; class PlusOperator extends BaseOperator { @@ -34,12 +34,11 @@ class PlusOperator extends BaseOperator * @param CompilationContext $compilationContext * @return CompiledExpression * @throws CompilerException - * @throws Exception */ public function compile($expression, CompilationContext $compilationContext) { if (!isset($expression['left'])) { - throw new \Exception("Missing left part of the expression"); + throw new CompilerException("Missing left part of the expression"); } $leftExpr = new Expression($expression['left']); diff --git a/Library/Optimizers/EvalExpression.php b/Library/Optimizers/EvalExpression.php index b49af0a74a..89e3b3f28d 100644 --- a/Library/Optimizers/EvalExpression.php +++ b/Library/Optimizers/EvalExpression.php @@ -20,7 +20,7 @@ namespace Zephir\Optimizers; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Expression; use Zephir\LiteralCompiledExpression; use Zephir\Branch; diff --git a/Library/Optimizers/FunctionCall/ACosOptimizer.php b/Library/Optimizers/FunctionCall/ACosOptimizer.php index 80c9154fb2..7959470065 100644 --- a/Library/Optimizers/FunctionCall/ACosOptimizer.php +++ b/Library/Optimizers/FunctionCall/ACosOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; diff --git a/Library/Optimizers/FunctionCall/ASinOptimizer.php b/Library/Optimizers/FunctionCall/ASinOptimizer.php index 05a0b46bfc..5827d93fbb 100644 --- a/Library/Optimizers/FunctionCall/ASinOptimizer.php +++ b/Library/Optimizers/FunctionCall/ASinOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; diff --git a/Library/Optimizers/FunctionCall/AddslashesOptimizer.php b/Library/Optimizers/FunctionCall/AddslashesOptimizer.php index e5fb86943d..5c41538af4 100644 --- a/Library/Optimizers/FunctionCall/AddslashesOptimizer.php +++ b/Library/Optimizers/FunctionCall/AddslashesOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/ArrayKeyExistsOptimizer.php b/Library/Optimizers/FunctionCall/ArrayKeyExistsOptimizer.php index b20fcf8ee9..97e92d461f 100644 --- a/Library/Optimizers/FunctionCall/ArrayKeyExistsOptimizer.php +++ b/Library/Optimizers/FunctionCall/ArrayKeyExistsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/ArrayKeysOptimizer.php b/Library/Optimizers/FunctionCall/ArrayKeysOptimizer.php index 288be0d1d7..607fe3e9c4 100644 --- a/Library/Optimizers/FunctionCall/ArrayKeysOptimizer.php +++ b/Library/Optimizers/FunctionCall/ArrayKeysOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/ArrayMergeOptimizer.php b/Library/Optimizers/FunctionCall/ArrayMergeOptimizer.php index 8b0ab35442..0edfb5ea52 100644 --- a/Library/Optimizers/FunctionCall/ArrayMergeOptimizer.php +++ b/Library/Optimizers/FunctionCall/ArrayMergeOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/BasenameOptimizer.php b/Library/Optimizers/FunctionCall/BasenameOptimizer.php index 8924e52b2a..f06d9ec73d 100644 --- a/Library/Optimizers/FunctionCall/BasenameOptimizer.php +++ b/Library/Optimizers/FunctionCall/BasenameOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/CallUserFuncArrayOptimizer.php b/Library/Optimizers/FunctionCall/CallUserFuncArrayOptimizer.php index e97d80b82b..02bd78d905 100644 --- a/Library/Optimizers/FunctionCall/CallUserFuncArrayOptimizer.php +++ b/Library/Optimizers/FunctionCall/CallUserFuncArrayOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/CallUserFuncOptimizer.php b/Library/Optimizers/FunctionCall/CallUserFuncOptimizer.php index b4c9da0d4d..d47b4319fd 100644 --- a/Library/Optimizers/FunctionCall/CallUserFuncOptimizer.php +++ b/Library/Optimizers/FunctionCall/CallUserFuncOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/CamelizeOptimizer.php b/Library/Optimizers/FunctionCall/CamelizeOptimizer.php index 00c640e4ef..ed3df92b92 100644 --- a/Library/Optimizers/FunctionCall/CamelizeOptimizer.php +++ b/Library/Optimizers/FunctionCall/CamelizeOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; @@ -48,7 +48,7 @@ public function optimize(array $expression, Call $call, CompilationContext $cont if (count($expression['parameters']) < 1 || count($expression['parameters']) > 2) { throw new CompilerException("'camelize' only accepts one or two parameters"); } - + $delimiter = 'NULL '; if (count($expression['parameters']) == 2) { if ($expression['parameters'][1]['parameter']['type'] == 'null') { diff --git a/Library/Optimizers/FunctionCall/CeilOptimizer.php b/Library/Optimizers/FunctionCall/CeilOptimizer.php index 3fef8d52ad..b85379927f 100644 --- a/Library/Optimizers/FunctionCall/CeilOptimizer.php +++ b/Library/Optimizers/FunctionCall/CeilOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/ClassExistsOptimizer.php b/Library/Optimizers/FunctionCall/ClassExistsOptimizer.php index 9dd4f5a95a..2c6216592a 100644 --- a/Library/Optimizers/FunctionCall/ClassExistsOptimizer.php +++ b/Library/Optimizers/FunctionCall/ClassExistsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/CompareMtimeOptimizer.php b/Library/Optimizers/FunctionCall/CompareMtimeOptimizer.php index d7be3d9ef8..2f000782f2 100644 --- a/Library/Optimizers/FunctionCall/CompareMtimeOptimizer.php +++ b/Library/Optimizers/FunctionCall/CompareMtimeOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/CosOptimizer.php b/Library/Optimizers/FunctionCall/CosOptimizer.php index 016db53404..12966f9500 100644 --- a/Library/Optimizers/FunctionCall/CosOptimizer.php +++ b/Library/Optimizers/FunctionCall/CosOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; diff --git a/Library/Optimizers/FunctionCall/CountOptimizer.php b/Library/Optimizers/FunctionCall/CountOptimizer.php index c06dd3962d..de4c33fd47 100644 --- a/Library/Optimizers/FunctionCall/CountOptimizer.php +++ b/Library/Optimizers/FunctionCall/CountOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/Crc32Optimizer.php b/Library/Optimizers/FunctionCall/Crc32Optimizer.php index d240c63ccc..879e28a410 100644 --- a/Library/Optimizers/FunctionCall/Crc32Optimizer.php +++ b/Library/Optimizers/FunctionCall/Crc32Optimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/CreateArrayOptimizer.php b/Library/Optimizers/FunctionCall/CreateArrayOptimizer.php index 0cc20e64d5..a49a1296f8 100644 --- a/Library/Optimizers/FunctionCall/CreateArrayOptimizer.php +++ b/Library/Optimizers/FunctionCall/CreateArrayOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/CreateInstanceOptimizer.php b/Library/Optimizers/FunctionCall/CreateInstanceOptimizer.php index e5857b49f5..64c59abfb9 100644 --- a/Library/Optimizers/FunctionCall/CreateInstanceOptimizer.php +++ b/Library/Optimizers/FunctionCall/CreateInstanceOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/CreateInstanceParamsOptimizer.php b/Library/Optimizers/FunctionCall/CreateInstanceParamsOptimizer.php index 82bfc1ac6b..60f18d314e 100644 --- a/Library/Optimizers/FunctionCall/CreateInstanceParamsOptimizer.php +++ b/Library/Optimizers/FunctionCall/CreateInstanceParamsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/CreateSymbolTableOptimizer.php b/Library/Optimizers/FunctionCall/CreateSymbolTableOptimizer.php index 243c3311db..caebc78ae7 100644 --- a/Library/Optimizers/FunctionCall/CreateSymbolTableOptimizer.php +++ b/Library/Optimizers/FunctionCall/CreateSymbolTableOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/DieOptimizer.php b/Library/Optimizers/FunctionCall/DieOptimizer.php index 53428525a2..08c705cbc9 100644 --- a/Library/Optimizers/FunctionCall/DieOptimizer.php +++ b/Library/Optimizers/FunctionCall/DieOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/DoublevalOptimizer.php b/Library/Optimizers/FunctionCall/DoublevalOptimizer.php index 2556e236cb..a8f2b2cda3 100644 --- a/Library/Optimizers/FunctionCall/DoublevalOptimizer.php +++ b/Library/Optimizers/FunctionCall/DoublevalOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/EndsWithOptimizer.php b/Library/Optimizers/FunctionCall/EndsWithOptimizer.php index 1fb4e3dd2d..5f5df6d8db 100644 --- a/Library/Optimizers/FunctionCall/EndsWithOptimizer.php +++ b/Library/Optimizers/FunctionCall/EndsWithOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/EvalOptimizer.php b/Library/Optimizers/FunctionCall/EvalOptimizer.php index 01edc39523..d3341bff84 100644 --- a/Library/Optimizers/FunctionCall/EvalOptimizer.php +++ b/Library/Optimizers/FunctionCall/EvalOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/ExitOptimizer.php b/Library/Optimizers/FunctionCall/ExitOptimizer.php index 83d62ec30b..fb04eb3475 100644 --- a/Library/Optimizers/FunctionCall/ExitOptimizer.php +++ b/Library/Optimizers/FunctionCall/ExitOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/ExplodeOptimizer.php b/Library/Optimizers/FunctionCall/ExplodeOptimizer.php index c9b44feb1f..a35763bc0d 100644 --- a/Library/Optimizers/FunctionCall/ExplodeOptimizer.php +++ b/Library/Optimizers/FunctionCall/ExplodeOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; use Zephir\Utils; diff --git a/Library/Optimizers/FunctionCall/FcloseOptimizer.php b/Library/Optimizers/FunctionCall/FcloseOptimizer.php index 7d6336487d..f6360fa532 100644 --- a/Library/Optimizers/FunctionCall/FcloseOptimizer.php +++ b/Library/Optimizers/FunctionCall/FcloseOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FeofOptimizer.php b/Library/Optimizers/FunctionCall/FeofOptimizer.php index f84a5de4da..317c061250 100644 --- a/Library/Optimizers/FunctionCall/FeofOptimizer.php +++ b/Library/Optimizers/FunctionCall/FeofOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FileExistsOptimizer.php b/Library/Optimizers/FunctionCall/FileExistsOptimizer.php index 6e2b3f75c9..a5b2a9862e 100644 --- a/Library/Optimizers/FunctionCall/FileExistsOptimizer.php +++ b/Library/Optimizers/FunctionCall/FileExistsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FileGetContentsOptimizer.php b/Library/Optimizers/FunctionCall/FileGetContentsOptimizer.php index eed1865204..aaa9def93f 100644 --- a/Library/Optimizers/FunctionCall/FileGetContentsOptimizer.php +++ b/Library/Optimizers/FunctionCall/FileGetContentsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FilePutContentsOptimizer.php b/Library/Optimizers/FunctionCall/FilePutContentsOptimizer.php index 3456771be8..6dc1dc2649 100644 --- a/Library/Optimizers/FunctionCall/FilePutContentsOptimizer.php +++ b/Library/Optimizers/FunctionCall/FilePutContentsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FilemtimeOptimizer.php b/Library/Optimizers/FunctionCall/FilemtimeOptimizer.php index c551d7f0c0..be9e2586bf 100644 --- a/Library/Optimizers/FunctionCall/FilemtimeOptimizer.php +++ b/Library/Optimizers/FunctionCall/FilemtimeOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FloorOptimizer.php b/Library/Optimizers/FunctionCall/FloorOptimizer.php index f06adfd6fd..0331b92281 100644 --- a/Library/Optimizers/FunctionCall/FloorOptimizer.php +++ b/Library/Optimizers/FunctionCall/FloorOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FuncGetArgOptimizer.php b/Library/Optimizers/FunctionCall/FuncGetArgOptimizer.php index c8b07f1dea..01e857e6a3 100644 --- a/Library/Optimizers/FunctionCall/FuncGetArgOptimizer.php +++ b/Library/Optimizers/FunctionCall/FuncGetArgOptimizer.php @@ -20,7 +20,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FuncGetArgsOptimizer.php b/Library/Optimizers/FunctionCall/FuncGetArgsOptimizer.php index db04b47b55..1c50f238ed 100644 --- a/Library/Optimizers/FunctionCall/FuncGetArgsOptimizer.php +++ b/Library/Optimizers/FunctionCall/FuncGetArgsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FuncNumArgsOptimizer.php b/Library/Optimizers/FunctionCall/FuncNumArgsOptimizer.php index 8edc7e954a..205937da7c 100644 --- a/Library/Optimizers/FunctionCall/FuncNumArgsOptimizer.php +++ b/Library/Optimizers/FunctionCall/FuncNumArgsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FwriteOptimizer.php b/Library/Optimizers/FunctionCall/FwriteOptimizer.php index c3b6319d63..19a5ef4448 100644 --- a/Library/Optimizers/FunctionCall/FwriteOptimizer.php +++ b/Library/Optimizers/FunctionCall/FwriteOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/GetCalledClassOptimizer.php b/Library/Optimizers/FunctionCall/GetCalledClassOptimizer.php index 04551973bf..89a4ee67f2 100644 --- a/Library/Optimizers/FunctionCall/GetCalledClassOptimizer.php +++ b/Library/Optimizers/FunctionCall/GetCalledClassOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/GetClassLowerOptimizer.php b/Library/Optimizers/FunctionCall/GetClassLowerOptimizer.php index ec20c735c2..5d4ecc8250 100644 --- a/Library/Optimizers/FunctionCall/GetClassLowerOptimizer.php +++ b/Library/Optimizers/FunctionCall/GetClassLowerOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/GetClassNsOptimizer.php b/Library/Optimizers/FunctionCall/GetClassNsOptimizer.php index b7591788d8..e58a46135e 100644 --- a/Library/Optimizers/FunctionCall/GetClassNsOptimizer.php +++ b/Library/Optimizers/FunctionCall/GetClassNsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/GetClassOptimizer.php b/Library/Optimizers/FunctionCall/GetClassOptimizer.php index 12dabf5edb..4782270e54 100644 --- a/Library/Optimizers/FunctionCall/GetClassOptimizer.php +++ b/Library/Optimizers/FunctionCall/GetClassOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; @@ -69,7 +69,7 @@ public function optimize(array $expression, Call $call, CompilationContext $cont } $symbol = $context->backend->getVariableCode($symbolVariable); - + $context->codePrinter->output('zephir_get_class(' . $symbol . ', ' . $resolvedParams[0] . ', 0 TSRMLS_CC);'); return new CompiledExpression('variable', $symbolVariable->getRealName(), $expression); diff --git a/Library/Optimizers/FunctionCall/GetNsClassOptimizer.php b/Library/Optimizers/FunctionCall/GetNsClassOptimizer.php index 895f466cca..c1dbda92c5 100644 --- a/Library/Optimizers/FunctionCall/GetNsClassOptimizer.php +++ b/Library/Optimizers/FunctionCall/GetNsClassOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/GettypeOptimizer.php b/Library/Optimizers/FunctionCall/GettypeOptimizer.php index a552b74454..b731d6fb8f 100644 --- a/Library/Optimizers/FunctionCall/GettypeOptimizer.php +++ b/Library/Optimizers/FunctionCall/GettypeOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/GlobalsGetOptimizer.php b/Library/Optimizers/FunctionCall/GlobalsGetOptimizer.php index 130399d4fd..0fb66395d9 100644 --- a/Library/Optimizers/FunctionCall/GlobalsGetOptimizer.php +++ b/Library/Optimizers/FunctionCall/GlobalsGetOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/GlobalsSetOptimizer.php b/Library/Optimizers/FunctionCall/GlobalsSetOptimizer.php index 12fe453755..033602f555 100644 --- a/Library/Optimizers/FunctionCall/GlobalsSetOptimizer.php +++ b/Library/Optimizers/FunctionCall/GlobalsSetOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/HashEqualsOptimizer.php b/Library/Optimizers/FunctionCall/HashEqualsOptimizer.php index 63c9a05ecd..11877268cd 100644 --- a/Library/Optimizers/FunctionCall/HashEqualsOptimizer.php +++ b/Library/Optimizers/FunctionCall/HashEqualsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/ImplodeOptimizer.php b/Library/Optimizers/FunctionCall/ImplodeOptimizer.php index cc9c65cc38..ff109d5362 100644 --- a/Library/Optimizers/FunctionCall/ImplodeOptimizer.php +++ b/Library/Optimizers/FunctionCall/ImplodeOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; use Zephir\Utils; diff --git a/Library/Optimizers/FunctionCall/InArrayOptimizer.php b/Library/Optimizers/FunctionCall/InArrayOptimizer.php index 44cd5d93fd..55c581f8be 100644 --- a/Library/Optimizers/FunctionCall/InArrayOptimizer.php +++ b/Library/Optimizers/FunctionCall/InArrayOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/InterfaceExistsOptimizer.php b/Library/Optimizers/FunctionCall/InterfaceExistsOptimizer.php index fdc6a262b0..e817c4711a 100644 --- a/Library/Optimizers/FunctionCall/InterfaceExistsOptimizer.php +++ b/Library/Optimizers/FunctionCall/InterfaceExistsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/IntvalOptimizer.php b/Library/Optimizers/FunctionCall/IntvalOptimizer.php index 091dd89e80..4d65c26d01 100644 --- a/Library/Optimizers/FunctionCall/IntvalOptimizer.php +++ b/Library/Optimizers/FunctionCall/IntvalOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/IsCallableOptimizer.php b/Library/Optimizers/FunctionCall/IsCallableOptimizer.php index 20ffe36a3f..d600af5ce1 100644 --- a/Library/Optimizers/FunctionCall/IsCallableOptimizer.php +++ b/Library/Optimizers/FunctionCall/IsCallableOptimizer.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/IsNumericOptimizer.php b/Library/Optimizers/FunctionCall/IsNumericOptimizer.php index 5d07eeb784..fb0a2fe9d6 100644 --- a/Library/Optimizers/FunctionCall/IsNumericOptimizer.php +++ b/Library/Optimizers/FunctionCall/IsNumericOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/IsPhpVersionOptimizer.php b/Library/Optimizers/FunctionCall/IsPhpVersionOptimizer.php index 4d6ba8f0c0..0d2b8c5b63 100644 --- a/Library/Optimizers/FunctionCall/IsPhpVersionOptimizer.php +++ b/Library/Optimizers/FunctionCall/IsPhpVersionOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/IsPrivateProperty.php b/Library/Optimizers/FunctionCall/IsPrivateProperty.php index e83b5b122a..13ee20b2c3 100644 --- a/Library/Optimizers/FunctionCall/IsPrivateProperty.php +++ b/Library/Optimizers/FunctionCall/IsPrivateProperty.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/IsScalarOptimizer.php b/Library/Optimizers/FunctionCall/IsScalarOptimizer.php index cefd7c22e0..2de5a7f488 100644 --- a/Library/Optimizers/FunctionCall/IsScalarOptimizer.php +++ b/Library/Optimizers/FunctionCall/IsScalarOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/JsonDecodeOptimizer.php b/Library/Optimizers/FunctionCall/JsonDecodeOptimizer.php index 95ce7901bd..eebc14cd36 100644 --- a/Library/Optimizers/FunctionCall/JsonDecodeOptimizer.php +++ b/Library/Optimizers/FunctionCall/JsonDecodeOptimizer.php @@ -23,7 +23,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/JsonEncodeOptimizer.php b/Library/Optimizers/FunctionCall/JsonEncodeOptimizer.php index b1ea94e73b..7bb387d8ce 100644 --- a/Library/Optimizers/FunctionCall/JsonEncodeOptimizer.php +++ b/Library/Optimizers/FunctionCall/JsonEncodeOptimizer.php @@ -23,7 +23,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/LdexpOptimizer.php b/Library/Optimizers/FunctionCall/LdexpOptimizer.php index 2b1729fd2b..dfdbd91c14 100644 --- a/Library/Optimizers/FunctionCall/LdexpOptimizer.php +++ b/Library/Optimizers/FunctionCall/LdexpOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; diff --git a/Library/Optimizers/FunctionCall/LtrimOptimizer.php b/Library/Optimizers/FunctionCall/LtrimOptimizer.php index bfdcff2785..e1e7b55e47 100644 --- a/Library/Optimizers/FunctionCall/LtrimOptimizer.php +++ b/Library/Optimizers/FunctionCall/LtrimOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/Md5Optimizer.php b/Library/Optimizers/FunctionCall/Md5Optimizer.php index b3e9aa4a14..73dcff0b1a 100644 --- a/Library/Optimizers/FunctionCall/Md5Optimizer.php +++ b/Library/Optimizers/FunctionCall/Md5Optimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/MemstrOptimizer.php b/Library/Optimizers/FunctionCall/MemstrOptimizer.php index 813ae7c31b..eee02d7401 100644 --- a/Library/Optimizers/FunctionCall/MemstrOptimizer.php +++ b/Library/Optimizers/FunctionCall/MemstrOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; use Zephir\Utils; diff --git a/Library/Optimizers/FunctionCall/MergeAppendOptimizer.php b/Library/Optimizers/FunctionCall/MergeAppendOptimizer.php index 042a2285af..5c0b48584e 100644 --- a/Library/Optimizers/FunctionCall/MergeAppendOptimizer.php +++ b/Library/Optimizers/FunctionCall/MergeAppendOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/MethodExistsOptimizer.php b/Library/Optimizers/FunctionCall/MethodExistsOptimizer.php index 1754c6525e..d7a71ca749 100644 --- a/Library/Optimizers/FunctionCall/MethodExistsOptimizer.php +++ b/Library/Optimizers/FunctionCall/MethodExistsOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; use Zephir\Utils; diff --git a/Library/Optimizers/FunctionCall/MicrotimeOptimizer.php b/Library/Optimizers/FunctionCall/MicrotimeOptimizer.php index 1f8c543e99..5046fbba15 100644 --- a/Library/Optimizers/FunctionCall/MicrotimeOptimizer.php +++ b/Library/Optimizers/FunctionCall/MicrotimeOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/MtRandOptimizer.php b/Library/Optimizers/FunctionCall/MtRandOptimizer.php index 01876ca8d6..d504e3c4b9 100644 --- a/Library/Optimizers/FunctionCall/MtRandOptimizer.php +++ b/Library/Optimizers/FunctionCall/MtRandOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/NextOptimizer.php b/Library/Optimizers/FunctionCall/NextOptimizer.php index 97e432c31a..e6287dee85 100644 --- a/Library/Optimizers/FunctionCall/NextOptimizer.php +++ b/Library/Optimizers/FunctionCall/NextOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/ObStart.php b/Library/Optimizers/FunctionCall/ObStart.php index 31bf5d4d26..bd9f73b573 100644 --- a/Library/Optimizers/FunctionCall/ObStart.php +++ b/Library/Optimizers/FunctionCall/ObStart.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/PowOptimizer.php b/Library/Optimizers/FunctionCall/PowOptimizer.php index d9c2e5d454..16fe3a1d0e 100644 --- a/Library/Optimizers/FunctionCall/PowOptimizer.php +++ b/Library/Optimizers/FunctionCall/PowOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/PregMatchAllOptimizer.php b/Library/Optimizers/FunctionCall/PregMatchAllOptimizer.php index 7490a915af..a06f144049 100644 --- a/Library/Optimizers/FunctionCall/PregMatchAllOptimizer.php +++ b/Library/Optimizers/FunctionCall/PregMatchAllOptimizer.php @@ -23,7 +23,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/PregMatchOptimizer.php b/Library/Optimizers/FunctionCall/PregMatchOptimizer.php index 383195ae92..5b830e94cb 100644 --- a/Library/Optimizers/FunctionCall/PregMatchOptimizer.php +++ b/Library/Optimizers/FunctionCall/PregMatchOptimizer.php @@ -23,7 +23,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/PrepareVirtualPathOptimizer.php b/Library/Optimizers/FunctionCall/PrepareVirtualPathOptimizer.php index 37eb0e9fa4..f80213428e 100644 --- a/Library/Optimizers/FunctionCall/PrepareVirtualPathOptimizer.php +++ b/Library/Optimizers/FunctionCall/PrepareVirtualPathOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/RoundOptimizer.php b/Library/Optimizers/FunctionCall/RoundOptimizer.php index 5c988c52e6..d72bc97c29 100644 --- a/Library/Optimizers/FunctionCall/RoundOptimizer.php +++ b/Library/Optimizers/FunctionCall/RoundOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/RtrimOptimizer.php b/Library/Optimizers/FunctionCall/RtrimOptimizer.php index a3c96e7c8a..5ed9ca8f9a 100644 --- a/Library/Optimizers/FunctionCall/RtrimOptimizer.php +++ b/Library/Optimizers/FunctionCall/RtrimOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/SinOptimizer.php b/Library/Optimizers/FunctionCall/SinOptimizer.php index b2a96fd3a1..17a70f1aa1 100644 --- a/Library/Optimizers/FunctionCall/SinOptimizer.php +++ b/Library/Optimizers/FunctionCall/SinOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; diff --git a/Library/Optimizers/FunctionCall/StartsWithOptimizer.php b/Library/Optimizers/FunctionCall/StartsWithOptimizer.php index 719998c72e..c6b51224e7 100644 --- a/Library/Optimizers/FunctionCall/StartsWithOptimizer.php +++ b/Library/Optimizers/FunctionCall/StartsWithOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/StrReplaceOptimizer.php b/Library/Optimizers/FunctionCall/StrReplaceOptimizer.php index a6f83a9bb4..5af723360e 100644 --- a/Library/Optimizers/FunctionCall/StrReplaceOptimizer.php +++ b/Library/Optimizers/FunctionCall/StrReplaceOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/StripcslashesOptimizer.php b/Library/Optimizers/FunctionCall/StripcslashesOptimizer.php index d2ae184797..5858869e11 100644 --- a/Library/Optimizers/FunctionCall/StripcslashesOptimizer.php +++ b/Library/Optimizers/FunctionCall/StripcslashesOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/StripslashesOptimizer.php b/Library/Optimizers/FunctionCall/StripslashesOptimizer.php index 42e54d49fe..bb59969d5e 100644 --- a/Library/Optimizers/FunctionCall/StripslashesOptimizer.php +++ b/Library/Optimizers/FunctionCall/StripslashesOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/StrlenOptimizer.php b/Library/Optimizers/FunctionCall/StrlenOptimizer.php index 501f57750d..f43d5b790e 100644 --- a/Library/Optimizers/FunctionCall/StrlenOptimizer.php +++ b/Library/Optimizers/FunctionCall/StrlenOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/StrposOptimizer.php b/Library/Optimizers/FunctionCall/StrposOptimizer.php index 59eb410797..a6a5b05d4c 100644 --- a/Library/Optimizers/FunctionCall/StrposOptimizer.php +++ b/Library/Optimizers/FunctionCall/StrposOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/StrtokOptimizer.php b/Library/Optimizers/FunctionCall/StrtokOptimizer.php index fd1a3123d1..d14442bad5 100644 --- a/Library/Optimizers/FunctionCall/StrtokOptimizer.php +++ b/Library/Optimizers/FunctionCall/StrtokOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/StrtolowerOptimizer.php b/Library/Optimizers/FunctionCall/StrtolowerOptimizer.php index a67e13f0fe..db00db8787 100644 --- a/Library/Optimizers/FunctionCall/StrtolowerOptimizer.php +++ b/Library/Optimizers/FunctionCall/StrtolowerOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/StrtoupperOptimizer.php b/Library/Optimizers/FunctionCall/StrtoupperOptimizer.php index 5c262d1927..24e41d3beb 100644 --- a/Library/Optimizers/FunctionCall/StrtoupperOptimizer.php +++ b/Library/Optimizers/FunctionCall/StrtoupperOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/SubstrOptimizer.php b/Library/Optimizers/FunctionCall/SubstrOptimizer.php index ddf786f711..80edaaf2bb 100644 --- a/Library/Optimizers/FunctionCall/SubstrOptimizer.php +++ b/Library/Optimizers/FunctionCall/SubstrOptimizer.php @@ -23,7 +23,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/TanOptimizer.php b/Library/Optimizers/FunctionCall/TanOptimizer.php index 924d37b747..4061e6febb 100644 --- a/Library/Optimizers/FunctionCall/TanOptimizer.php +++ b/Library/Optimizers/FunctionCall/TanOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; diff --git a/Library/Optimizers/FunctionCall/TimeOptimizer.php b/Library/Optimizers/FunctionCall/TimeOptimizer.php index ceb2d7d6d9..91edf3afd3 100644 --- a/Library/Optimizers/FunctionCall/TimeOptimizer.php +++ b/Library/Optimizers/FunctionCall/TimeOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/TrimOptimizer.php b/Library/Optimizers/FunctionCall/TrimOptimizer.php index 6bb1b2ac09..9bf7f645aa 100644 --- a/Library/Optimizers/FunctionCall/TrimOptimizer.php +++ b/Library/Optimizers/FunctionCall/TrimOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; @@ -78,7 +78,7 @@ public function optimize(array $expression, Call $call, CompilationContext $cont if ($call->mustInitSymbolVariable()) { $symbolVariable->initVariant($context); } - + $symbol = $context->backend->getVariableCode($symbolVariable); $context->codePrinter->output('zephir_fast_trim(' . $symbol . ', ' . $resolvedParams[0] . ', ' . $charlist . ', ' . static::$TRIM_WHERE . ' TSRMLS_CC);'); return new CompiledExpression('variable', $symbolVariable->getRealName(), $expression); diff --git a/Library/Optimizers/FunctionCall/UcfirstOptimizer.php b/Library/Optimizers/FunctionCall/UcfirstOptimizer.php index 8c146cb4cb..b7738aef9e 100644 --- a/Library/Optimizers/FunctionCall/UcfirstOptimizer.php +++ b/Library/Optimizers/FunctionCall/UcfirstOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/UncamelizeOptimizer.php b/Library/Optimizers/FunctionCall/UncamelizeOptimizer.php index 86ca7afeae..ee407c64d6 100644 --- a/Library/Optimizers/FunctionCall/UncamelizeOptimizer.php +++ b/Library/Optimizers/FunctionCall/UncamelizeOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; @@ -71,7 +71,7 @@ public function optimize(array $expression, Call $call, CompilationContext $cont $symbolVariable->setDynamicTypes('string'); $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression); - + if (isset($resolvedParams[1])) { $delimiter = $resolvedParams[1]; } diff --git a/Library/Optimizers/FunctionCall/UniqueKeyOptimizer.php b/Library/Optimizers/FunctionCall/UniqueKeyOptimizer.php index 180b43efcf..980d722f74 100644 --- a/Library/Optimizers/FunctionCall/UniqueKeyOptimizer.php +++ b/Library/Optimizers/FunctionCall/UniqueKeyOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/UniquePathKeyOptimizer.php b/Library/Optimizers/FunctionCall/UniquePathKeyOptimizer.php index 3def33297b..480ec4ff75 100644 --- a/Library/Optimizers/FunctionCall/UniquePathKeyOptimizer.php +++ b/Library/Optimizers/FunctionCall/UniquePathKeyOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/VarDumpOptimizer.php b/Library/Optimizers/FunctionCall/VarDumpOptimizer.php index 74e3bffcc3..6251704e17 100644 --- a/Library/Optimizers/FunctionCall/VarDumpOptimizer.php +++ b/Library/Optimizers/FunctionCall/VarDumpOptimizer.php @@ -23,7 +23,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; use Zephir\Statements\LetStatement; diff --git a/Library/Optimizers/FunctionCall/VarExportOptimizer.php b/Library/Optimizers/FunctionCall/VarExportOptimizer.php index c12c80351c..1a7145265d 100644 --- a/Library/Optimizers/FunctionCall/VarExportOptimizer.php +++ b/Library/Optimizers/FunctionCall/VarExportOptimizer.php @@ -23,7 +23,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; use Zephir\Statements\LetStatement; diff --git a/Library/Optimizers/FunctionCall/ZephirStringToHexOptimizer.php b/Library/Optimizers/FunctionCall/ZephirStringToHexOptimizer.php index ecb910eb4a..15d82941df 100644 --- a/Library/Optimizers/FunctionCall/ZephirStringToHexOptimizer.php +++ b/Library/Optimizers/FunctionCall/ZephirStringToHexOptimizer.php @@ -21,7 +21,7 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/IsTypeOptimizerAbstract.php b/Library/Optimizers/IsTypeOptimizerAbstract.php index 23ea9b1fed..b5efedb7bf 100644 --- a/Library/Optimizers/IsTypeOptimizerAbstract.php +++ b/Library/Optimizers/IsTypeOptimizerAbstract.php @@ -22,7 +22,7 @@ use Zephir\Call; use Zephir\CompilationContext; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; abstract class IsTypeOptimizerAbstract extends OptimizerAbstract { diff --git a/Library/Optimizers/MathOptimizer.php b/Library/Optimizers/MathOptimizer.php index c3be768a5e..dc34369b10 100755 --- a/Library/Optimizers/MathOptimizer.php +++ b/Library/Optimizers/MathOptimizer.php @@ -22,7 +22,7 @@ use Zephir\Call; use Zephir\CompilationContext; use Zephir\CompiledExpression; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; use Zephir\Expression; /** diff --git a/Library/Parser.php b/Library/Parser.php index 9f4ca81474..bbfc60af66 100644 --- a/Library/Parser.php +++ b/Library/Parser.php @@ -2,25 +2,20 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | https://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ + namespace Zephir; use Zephir\Parser\ParseException; -use Zephir\Parser\SystemException; +use Zephir\Exception\IllegalStateException; /** * Zephir\Parser @@ -40,17 +35,17 @@ public function isAvailable() } /** - * Parses a file and returning an intermediate array representation. + * Parses a file and returning an intermediate representation (IR). * * @param string $filepath Absolute path to the *.zep file * @return array - * @throws SystemException + * @throws IllegalStateException * @throws ParseException */ public function parse($filepath) { if (!$this->isAvailable()) { - throw new SystemException("Zephir Parser extension couldn't be loaded."); + throw new IllegalStateException("Zephir Parser extension couldn't be loaded."); } if (!is_file($filepath) || !is_readable($filepath)) { diff --git a/Library/Parser/Manager.php b/Library/Parser/Manager.php index d2406d8c04..227ea8d922 100644 --- a/Library/Parser/Manager.php +++ b/Library/Parser/Manager.php @@ -22,7 +22,7 @@ use Zephir\Utils; use Zephir\Logger; use Zephir\Parser; -use Zephir\CompilerException; +use Zephir\Compiler\CompilerException; /** * Zephir\Parser\Manager diff --git a/Library/Parser/ParseException.php b/Library/Parser/ParseException.php index 4a8b7f4a0a..56a09b061b 100644 --- a/Library/Parser/ParseException.php +++ b/Library/Parser/ParseException.php @@ -32,7 +32,6 @@ class ParseException extends RuntimeException */ public function __construct($message = '', $extra = null, $code = 0, $previous = null) { - // $message = "", $code = 0, Throwable $previous = null if (is_array($extra) && isset($extra['file'])) { $message .= " in " . $extra['file'] . " on line " . $extra['line']; } diff --git a/Library/Parser/SystemException.php b/Library/Parser/SystemException.php deleted file mode 100644 index 5268721a33..0000000000 --- a/Library/Parser/SystemException.php +++ /dev/null @@ -1,29 +0,0 @@ - Date: Tue, 10 Oct 2017 19:27:34 +0300 Subject: [PATCH 34/40] Removed unused imports --- Library/BaseBackend.php | 2 -- .../Builder/Operators/BinaryOperatorBuilder.php | 2 -- .../Builder/Operators/CastOperatorBuilder.php | 2 -- .../Operators/NewInstanceOperatorBuilder.php | 2 -- .../Builder/Operators/TypeOfOperatorBuilder.php | 2 -- .../Builder/Operators/UnaryOperatorBuilder.php | 2 -- .../Builder/Statements/LetStatementBuilder.php | 2 -- Library/Cache/ClassEntryCache.php | 1 - Library/Cache/MethodCache.php | 1 - Library/Cache/SlotsCache.php | 4 ---- Library/Cache/StaticMethodCache.php | 1 - Library/ClassDefinitionRuntime.php | 2 -- Library/ClassProperty.php | 8 -------- Library/CompilerFileAnonymous.php | 2 -- Library/Detectors/ForValueUseDetector.php | 2 -- Library/Documentation.php | 1 - Library/Documentation/AbstractFile.php | 2 -- Library/Documentation/Annotation/Link.php | 11 +++++------ .../Annotation/ReturnAnnotation.php | 11 +++++------ Library/Documentation/Annotation/See.php | 13 ++++++------- Library/Documentation/DocblockParser.php | 3 --- Library/Documentation/File/NamespaceFile.php | 1 - Library/Documentation/File/Sitemap.php | 1 - Library/Documentation/NamespaceAccessor.php | 4 +--- Library/Documentation/Theme.php | 1 - .../Builder/Factory/OperatorsFactory.php | 1 - .../Builder/Statements/CallStaticStatement.php | 3 --- Library/Expression/Closure.php | 2 -- Library/Expression/ClosureArrow.php | 6 ------ Library/Expression/Constants.php | 1 - Library/Expression/NativeArray.php | 2 -- Library/Expression/NativeArrayAccess.php | 1 - Library/Expression/PropertyDynamicAccess.php | 1 - Library/Expression/Reference.php | 1 - Library/Expression/StaticConstantAccess.php | 1 - Library/Expression/StaticPropertyAccess.php | 1 - Library/FunctionCall.php | 1 - Library/FunctionDefinition.php | 17 ----------------- Library/Operators/Arithmetical/DivOperator.php | 1 - Library/Operators/Arithmetical/ModOperator.php | 1 - Library/Operators/Other/CastOperator.php | 1 - Library/Operators/Other/IssetOperator.php | 1 - .../Operators/Other/NewInstanceTypeOperator.php | 1 - .../Operators/Other/RangeExclusiveOperator.php | 2 -- .../Operators/Other/RangeInclusiveOperator.php | 3 --- .../Operators/Other/ShortTernaryOperator.php | 3 --- Library/Operators/Other/TernaryOperator.php | 2 -- Library/Operators/Other/TypeOfOperator.php | 1 - .../Optimizers/FunctionCall/ACosOptimizer.php | 5 ----- .../Optimizers/FunctionCall/ASinOptimizer.php | 5 ----- .../Optimizers/FunctionCall/CosOptimizer.php | 5 ----- .../Optimizers/FunctionCall/CountOptimizer.php | 1 - .../Optimizers/FunctionCall/DieOptimizer.php | 6 ------ .../FunctionCall/EndsWithOptimizer.php | 1 - .../Optimizers/FunctionCall/FeofOptimizer.php | 1 - .../FunctionCall/FuncNumArgsOptimizer.php | 1 - .../FunctionCall/IsNumericOptimizer.php | 1 - .../FunctionCall/IsPrivateProperty.php | 1 - .../FunctionCall/IsScalarOptimizer.php | 1 - .../Optimizers/FunctionCall/LdexpOptimizer.php | 1 - .../Optimizers/FunctionCall/LtrimOptimizer.php | 6 ------ .../Optimizers/FunctionCall/MemstrOptimizer.php | 1 - .../FunctionCall/MethodExistsOptimizer.php | 1 - .../FunctionCall/PregMatchAllOptimizer.php | 6 ------ .../Optimizers/FunctionCall/RtrimOptimizer.php | 6 ------ .../Optimizers/FunctionCall/SinOptimizer.php | 5 ----- .../Optimizers/FunctionCall/SqrtOptimizer.php | 1 - .../FunctionCall/StartsWithOptimizer.php | 1 - .../Optimizers/FunctionCall/StrlenOptimizer.php | 1 - .../Optimizers/FunctionCall/TanOptimizer.php | 5 ----- .../FunctionCall/VarDumpOptimizer.php | 1 - Library/Optimizers/MathOptimizer.php | 1 - Library/Statements/DeclareStatement.php | 2 -- Library/Statements/DoWhileStatement.php | 1 - Library/Statements/ForStatement.php | 1 - Library/Statements/IfStatement.php | 1 - Library/Statements/Let/ArrayIndex.php | 3 --- Library/Statements/Let/ArrayIndexAppend.php | 4 ---- Library/Statements/Let/Decr.php | 6 ------ Library/Statements/Let/ExportSymbol.php | 5 ----- Library/Statements/Let/ExportSymbolString.php | 5 ----- Library/Statements/Let/Incr.php | 6 ------ .../Statements/Let/ObjectDynamicProperty.php | 5 ----- .../Let/ObjectDynamicStringProperty.php | 5 ----- Library/Statements/Let/ObjectProperty.php | 5 ----- Library/Statements/Let/ObjectPropertyAppend.php | 5 ----- .../Statements/Let/ObjectPropertyArrayIndex.php | 4 ---- .../Let/ObjectPropertyArrayIndexAppend.php | 4 ---- Library/Statements/Let/ObjectPropertyDecr.php | 6 ------ Library/Statements/Let/ObjectPropertyIncr.php | 6 ------ Library/Statements/Let/StaticProperty.php | 5 ----- Library/Statements/Let/StaticPropertyAppend.php | 6 ------ .../Statements/Let/StaticPropertyArrayIndex.php | 5 ----- .../Let/StaticPropertyArrayIndexAppend.php | 5 ----- Library/Statements/Let/Variable.php | 4 ---- Library/Statements/Let/VariableAppend.php | 5 ----- Library/Statements/LetStatement.php | 5 ----- Library/Statements/ReturnStatement.php | 1 - Library/Statements/StatementAbstract.php | 2 -- Library/Statements/SwitchStatement.php | 1 - Library/Statements/ThrowStatement.php | 1 - Library/Statements/TryCatchStatement.php | 5 ----- Library/Statements/WhileStatement.php | 1 - Library/StatementsBlock.php | 1 - Library/Types/AbstractType.php | 2 -- Library/Types/ArrayType.php | 2 -- Library/Types/CharType.php | 3 --- Library/Types/IstringType.php | 6 ------ Library/Types/StringType.php | 6 ------ 109 files changed, 17 insertions(+), 324 deletions(-) diff --git a/Library/BaseBackend.php b/Library/BaseBackend.php index 2d84409ca2..faceefd4f5 100644 --- a/Library/BaseBackend.php +++ b/Library/BaseBackend.php @@ -19,8 +19,6 @@ namespace Zephir; -use Zephir\StringsManager; - abstract class BaseBackend { /** diff --git a/Library/Builder/Operators/BinaryOperatorBuilder.php b/Library/Builder/Operators/BinaryOperatorBuilder.php index 1e8285bdd4..cef91c6e0e 100644 --- a/Library/Builder/Operators/BinaryOperatorBuilder.php +++ b/Library/Builder/Operators/BinaryOperatorBuilder.php @@ -19,8 +19,6 @@ namespace Zephir\Builder\Operators; -use Zephir\Builder\Operators\AbstractOperatorBuilder; - /** * BinaryOperatorBuilder * diff --git a/Library/Builder/Operators/CastOperatorBuilder.php b/Library/Builder/Operators/CastOperatorBuilder.php index 3b2819790b..e7970ac6b4 100644 --- a/Library/Builder/Operators/CastOperatorBuilder.php +++ b/Library/Builder/Operators/CastOperatorBuilder.php @@ -19,8 +19,6 @@ namespace Zephir\Builder\Operators; -use Zephir\Builder\Operators\AbstractOperatorBuilder; - /** * CastOperatorBuilder * diff --git a/Library/Builder/Operators/NewInstanceOperatorBuilder.php b/Library/Builder/Operators/NewInstanceOperatorBuilder.php index e4e5a60de8..83a94823cc 100644 --- a/Library/Builder/Operators/NewInstanceOperatorBuilder.php +++ b/Library/Builder/Operators/NewInstanceOperatorBuilder.php @@ -19,8 +19,6 @@ namespace Zephir\Builder\Operators; -use Zephir\Builder\Operators\AbstractOperatorBuilder; - /** * NewInstanceOperatorBuilder * diff --git a/Library/Builder/Operators/TypeOfOperatorBuilder.php b/Library/Builder/Operators/TypeOfOperatorBuilder.php index 3e54eceab2..9226ca2193 100644 --- a/Library/Builder/Operators/TypeOfOperatorBuilder.php +++ b/Library/Builder/Operators/TypeOfOperatorBuilder.php @@ -19,8 +19,6 @@ namespace Zephir\Builder\Operators; -use Zephir\Builder\Operators\AbstractOperatorBuilder; - /** * TypeOfOperatorBuilder * diff --git a/Library/Builder/Operators/UnaryOperatorBuilder.php b/Library/Builder/Operators/UnaryOperatorBuilder.php index f28c7f8cbf..54cafeb1a8 100644 --- a/Library/Builder/Operators/UnaryOperatorBuilder.php +++ b/Library/Builder/Operators/UnaryOperatorBuilder.php @@ -19,8 +19,6 @@ namespace Zephir\Builder\Operators; -use Zephir\Builder\Operators\AbstractOperatorBuilder; - /** * UnaryOperatorBuilder * diff --git a/Library/Builder/Statements/LetStatementBuilder.php b/Library/Builder/Statements/LetStatementBuilder.php index 6602b1ba63..af48f026c0 100644 --- a/Library/Builder/Statements/LetStatementBuilder.php +++ b/Library/Builder/Statements/LetStatementBuilder.php @@ -19,8 +19,6 @@ namespace Zephir\Builder\Statements; -use Zephir\Builder\Operators\AbstractOperatorBuilder; - /** * IfStatementBuilder * diff --git a/Library/Cache/ClassEntryCache.php b/Library/Cache/ClassEntryCache.php index 90dcea0d13..e2b0d49eee 100644 --- a/Library/Cache/ClassEntryCache.php +++ b/Library/Cache/ClassEntryCache.php @@ -19,7 +19,6 @@ namespace Zephir\Cache; -use Zephir\Call; use Zephir\CompilationContext; /** diff --git a/Library/Cache/MethodCache.php b/Library/Cache/MethodCache.php index 26170e3fbb..e8cbffc8c5 100644 --- a/Library/Cache/MethodCache.php +++ b/Library/Cache/MethodCache.php @@ -19,7 +19,6 @@ namespace Zephir\Cache; -use Zephir\Call; use Zephir\ClassMethod; use Zephir\Variable; use Zephir\ClassDefinition; diff --git a/Library/Cache/SlotsCache.php b/Library/Cache/SlotsCache.php index 654feba23f..dd8ea1ba01 100644 --- a/Library/Cache/SlotsCache.php +++ b/Library/Cache/SlotsCache.php @@ -19,10 +19,6 @@ namespace Zephir\Cache; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Passes\CallGathererPass; - /** * SlotsCache * diff --git a/Library/Cache/StaticMethodCache.php b/Library/Cache/StaticMethodCache.php index f8b4b34f0f..31b8b986d4 100644 --- a/Library/Cache/StaticMethodCache.php +++ b/Library/Cache/StaticMethodCache.php @@ -21,7 +21,6 @@ use Zephir\CompilationContext; use Zephir\ClassMethod; -use Zephir\Call; /** * StaticMethodCache diff --git a/Library/ClassDefinitionRuntime.php b/Library/ClassDefinitionRuntime.php index aa4971c489..88f4918a63 100644 --- a/Library/ClassDefinitionRuntime.php +++ b/Library/ClassDefinitionRuntime.php @@ -19,8 +19,6 @@ namespace Zephir; -use Zephir\HeadersManager; - /** * ClassDefinitionRuntime * diff --git a/Library/ClassProperty.php b/Library/ClassProperty.php index 9b4e35eea7..0644f85223 100644 --- a/Library/ClassProperty.php +++ b/Library/ClassProperty.php @@ -22,14 +22,6 @@ use Zephir\Expression\Builder\Statements\LetStatement as ExpressionLetStatement; use Zephir\Expression\Builder\BuilderFactory; use Zephir\Expression\Builder\Operators\BinaryOperator; -use Zephir\Builder\LiteralBuilder; -use Zephir\Builder\VariableBuilder; -use Zephir\Builder\StatementsBlockBuilder; -use Zephir\Builder\Statements\LetStatementBuilder; -use Zephir\Builder\Statements\IfStatementBuilder; -use Zephir\Builder\Operators\UnaryOperatorBuilder; -use Zephir\Builder\Operators\BinaryOperatorBuilder; -use Zephir\Statements\LetStatement; /** * ClassProperty diff --git a/Library/CompilerFileAnonymous.php b/Library/CompilerFileAnonymous.php index 7ddd1404e4..198448c403 100644 --- a/Library/CompilerFileAnonymous.php +++ b/Library/CompilerFileAnonymous.php @@ -19,8 +19,6 @@ namespace Zephir; -use Zephir\Config; -use Zephir\Logger; use Zephir\Compiler\FileInterface; /** diff --git a/Library/Detectors/ForValueUseDetector.php b/Library/Detectors/ForValueUseDetector.php index 1a601ff1a5..ec22a9c71a 100644 --- a/Library/Detectors/ForValueUseDetector.php +++ b/Library/Detectors/ForValueUseDetector.php @@ -19,8 +19,6 @@ namespace Zephir\Detectors; -use Zephir\StatementsBlock; - /** * ForValueUseDetector * diff --git a/Library/Documentation.php b/Library/Documentation.php index 0245aa491f..078a81288b 100644 --- a/Library/Documentation.php +++ b/Library/Documentation.php @@ -23,7 +23,6 @@ use Zephir\Documentation\File; use Zephir\Documentation\Theme; use Zephir\Documentation\NamespaceAccessor; -use Zephir\Logger; /** * Documentation Generator diff --git a/Library/Documentation/AbstractFile.php b/Library/Documentation/AbstractFile.php index a3cbb6eff1..6a482c1209 100644 --- a/Library/Documentation/AbstractFile.php +++ b/Library/Documentation/AbstractFile.php @@ -19,8 +19,6 @@ namespace Zephir\Documentation; -use Zephir\Config; - abstract class AbstractFile { abstract public function getTemplateName(); diff --git a/Library/Documentation/Annotation/Link.php b/Library/Documentation/Annotation/Link.php index 829529654b..74357e3d52 100644 --- a/Library/Documentation/Annotation/Link.php +++ b/Library/Documentation/Annotation/Link.php @@ -20,7 +20,6 @@ namespace Zephir\Documentation\Annotation; use Zephir\Documentation\Annotation; -use Zephir\Documentation\Docblock; /** * A link annotation that looks like `(@)link uri text` @@ -35,23 +34,23 @@ class Link extends Annotation protected function parseContent() { $spaceIndex = strpos($this->string, " "); - + if (false !== $spaceIndex) { $this->uri = substr($this->string, 0, $spaceIndex); $this->linkText = substr($this->string, $spaceIndex + 1); } else { $this->uri = $this->string; } - + $this->contentParsed = true; } - + public function getUri() { if (!$this->contentParsed) { $this->parseContent(); } - + return $this->uri; } @@ -60,7 +59,7 @@ public function getLinkText() if (!$this->contentParsed) { $this->parseContent(); } - + return $this->linkText; } } diff --git a/Library/Documentation/Annotation/ReturnAnnotation.php b/Library/Documentation/Annotation/ReturnAnnotation.php index f3705508c2..607b9c0ada 100644 --- a/Library/Documentation/Annotation/ReturnAnnotation.php +++ b/Library/Documentation/Annotation/ReturnAnnotation.php @@ -20,7 +20,6 @@ namespace Zephir\Documentation\Annotation; use Zephir\Documentation\Annotation; -use Zephir\Documentation\Docblock; /** * A return annotation that looks like `(@)return type description` @@ -34,23 +33,23 @@ class ReturnAnnotation extends Annotation protected function parseContent() { $spaceIndex = strpos($this->string, " "); - + if (false !== $spaceIndex) { $this->returnType = substr($this->string, 0, $spaceIndex); $this->description = substr($this->string, $spaceIndex + 1); } else { $this->returnType = $this->string; } - + $this->contentParsed = true; } - + public function getReturnType() { if (!$this->contentParsed) { $this->parseContent(); } - + return $this->returnType; } @@ -59,7 +58,7 @@ public function getDescription() if (!$this->contentParsed) { $this->parseContent(); } - + return $this->description; } } diff --git a/Library/Documentation/Annotation/See.php b/Library/Documentation/Annotation/See.php index a925dd43ff..5aba220895 100644 --- a/Library/Documentation/Annotation/See.php +++ b/Library/Documentation/Annotation/See.php @@ -20,7 +20,6 @@ namespace Zephir\Documentation\Annotation; use Zephir\Documentation\Annotation; -use Zephir\Documentation\Docblock; /** * A link annotation that looks like `(@)link uri text` @@ -35,24 +34,24 @@ class See extends Annotation protected function parseContent() { $spaceIndex = strpos($this->string, " "); - + if (false !== $spaceIndex) { $this->resource = substr($this->string, 0, $spaceIndex); $this->text = substr($this->string, $spaceIndex + 1); } else { $this->resource = $this->string; } - + $this->contentParsed = true; } - - + + public function getResource() { if (!$this->contentParsed) { $this->parseContent(); } - + return $this->resource; } @@ -61,7 +60,7 @@ public function getText() if (!$this->contentParsed) { $this->parseContent(); } - + return $this->text; } } diff --git a/Library/Documentation/DocblockParser.php b/Library/Documentation/DocblockParser.php index 61b5668a07..d85c3b1ad1 100644 --- a/Library/Documentation/DocblockParser.php +++ b/Library/Documentation/DocblockParser.php @@ -19,9 +19,6 @@ namespace Zephir\Documentation; -use Zephir\Documentation\Annotation; -use Zephir\Documentation\Docblock; - /** * Helper to parse raw docblocks to structured object */ diff --git a/Library/Documentation/File/NamespaceFile.php b/Library/Documentation/File/NamespaceFile.php index 64df53555d..ab9dae7d27 100644 --- a/Library/Documentation/File/NamespaceFile.php +++ b/Library/Documentation/File/NamespaceFile.php @@ -19,7 +19,6 @@ namespace Zephir\Documentation\File; -use Zephir\ClassDefinition; use Zephir\Documentation\AbstractFile; use Zephir\CompilerFile; use Zephir\Documentation\NamespaceHelper; diff --git a/Library/Documentation/File/Sitemap.php b/Library/Documentation/File/Sitemap.php index 5a356846a6..87bde90cb1 100644 --- a/Library/Documentation/File/Sitemap.php +++ b/Library/Documentation/File/Sitemap.php @@ -19,7 +19,6 @@ namespace Zephir\Documentation\File; -use Zephir\ClassDefinition; use Zephir\Documentation\AbstractFile; class Sitemap extends AbstractFile diff --git a/Library/Documentation/NamespaceAccessor.php b/Library/Documentation/NamespaceAccessor.php index ab72d2583a..b81449fdb4 100644 --- a/Library/Documentation/NamespaceAccessor.php +++ b/Library/Documentation/NamespaceAccessor.php @@ -19,8 +19,6 @@ namespace Zephir\Documentation; -use Zephir\Documentation\NamespaceHelper; - class NamespaceAccessor { /** @@ -30,7 +28,7 @@ class NamespaceAccessor protected $classes; protected $namespaceTree; - + protected $byNamespace; /** diff --git a/Library/Documentation/Theme.php b/Library/Documentation/Theme.php index f9e0195b17..fa3d3e83e6 100644 --- a/Library/Documentation/Theme.php +++ b/Library/Documentation/Theme.php @@ -19,7 +19,6 @@ namespace Zephir\Documentation; -use Zephir\ClassDefinition; use Zephir\Documentation; use Zephir\Exception; diff --git a/Library/Expression/Builder/Factory/OperatorsFactory.php b/Library/Expression/Builder/Factory/OperatorsFactory.php index 5619ae3da6..bbf050329a 100644 --- a/Library/Expression/Builder/Factory/OperatorsFactory.php +++ b/Library/Expression/Builder/Factory/OperatorsFactory.php @@ -24,7 +24,6 @@ use Zephir\Expression\Builder\Operators\BinaryOperator; use Zephir\Expression\Builder\Operators\RawOperator; use Zephir\Expression\Builder\Operators\UnaryOperator; -use Zephir\Types; /** * Class OperatorsFactory diff --git a/Library/Expression/Builder/Statements/CallStaticStatement.php b/Library/Expression/Builder/Statements/CallStaticStatement.php index 9c3149d847..3be4d1605e 100644 --- a/Library/Expression/Builder/Statements/CallStaticStatement.php +++ b/Library/Expression/Builder/Statements/CallStaticStatement.php @@ -17,9 +17,6 @@ */ namespace Zephir\Expression\Builder\Statements; -use Zephir\Expression\Builder\AbstractBuilder; -use Zephir\FunctionCall; - /** * CallStaticStatement * diff --git a/Library/Expression/Closure.php b/Library/Expression/Closure.php index 39ffcd710f..cfae44b218 100644 --- a/Library/Expression/Closure.php +++ b/Library/Expression/Closure.php @@ -20,7 +20,6 @@ namespace Zephir\Expression; use Zephir\ClassMethod; -use Zephir\Exception; use Zephir\Variable; use Zephir\ClassMethodParameters; use Zephir\CompiledExpression; @@ -28,7 +27,6 @@ use Zephir\ClassDefinition; use Zephir\CompilationContext; use Zephir\CompilerFileAnonymous; -use Zephir\LiteralCompiledExpression; /** * Closure diff --git a/Library/Expression/ClosureArrow.php b/Library/Expression/ClosureArrow.php index 46b3f493aa..b81268bc68 100644 --- a/Library/Expression/ClosureArrow.php +++ b/Library/Expression/ClosureArrow.php @@ -20,19 +20,13 @@ namespace Zephir\Expression; use Zephir\ClassMethod; -use Zephir\Exception; use Zephir\Expression\Builder\BuilderFactory; -use Zephir\Variable; use Zephir\ClassMethodParameters; use Zephir\CompiledExpression; use Zephir\StatementsBlock; use Zephir\ClassDefinition; use Zephir\CompilationContext; use Zephir\CompilerFileAnonymous; -use Zephir\LiteralCompiledExpression; -use Zephir\Builder\StatementsBlockBuilder; -use Zephir\Builder\Statements\ReturnStatementBuilder; -use Zephir\Builder\RawExpressionBuilder; /** * ClosureArrow diff --git a/Library/Expression/Constants.php b/Library/Expression/Constants.php index 2b18155580..881c2ec401 100644 --- a/Library/Expression/Constants.php +++ b/Library/Expression/Constants.php @@ -24,7 +24,6 @@ use Zephir\CompilationContext; use Zephir\CompiledExpression; use Zephir\Compiler\CompilerException; -use Zephir\Expression; use Zephir\LiteralCompiledExpression; use Zephir\Utils; diff --git a/Library/Expression/NativeArray.php b/Library/Expression/NativeArray.php index 055b729872..23b2b48173 100644 --- a/Library/Expression/NativeArray.php +++ b/Library/Expression/NativeArray.php @@ -19,14 +19,12 @@ namespace Zephir\Expression; -use Zephir\Exception; use Zephir\Variable; use Zephir\CompilationContext; use Zephir\CompiledExpression; use Zephir\Compiler\CompilerException; use Zephir\Expression; use Zephir\GlobalConstant; -use Zephir\Compiler; /** * NativeArray diff --git a/Library/Expression/NativeArrayAccess.php b/Library/Expression/NativeArrayAccess.php index f6fad3878b..d9514e580e 100644 --- a/Library/Expression/NativeArrayAccess.php +++ b/Library/Expression/NativeArrayAccess.php @@ -19,7 +19,6 @@ namespace Zephir\Expression; -use Zephir\Compiler; use Zephir\Variable; use Zephir\CompilationContext; use Zephir\CompiledExpression; diff --git a/Library/Expression/PropertyDynamicAccess.php b/Library/Expression/PropertyDynamicAccess.php index e29cbc27d5..4c0b5b06fb 100644 --- a/Library/Expression/PropertyDynamicAccess.php +++ b/Library/Expression/PropertyDynamicAccess.php @@ -20,7 +20,6 @@ namespace Zephir\Expression; -use Zephir\Statements\LetStatement; use Zephir\Variable; use Zephir\CompilationContext; use Zephir\CompiledExpression; diff --git a/Library/Expression/Reference.php b/Library/Expression/Reference.php index 8d57d26f52..5a16c74205 100644 --- a/Library/Expression/Reference.php +++ b/Library/Expression/Reference.php @@ -25,7 +25,6 @@ use Zephir\CompiledExpression; use Zephir\Compiler\CompilerException; use Zephir\Expression; -use Zephir\Compiler; /** * Reference diff --git a/Library/Expression/StaticConstantAccess.php b/Library/Expression/StaticConstantAccess.php index c36880c20e..c8f78a011e 100644 --- a/Library/Expression/StaticConstantAccess.php +++ b/Library/Expression/StaticConstantAccess.php @@ -23,7 +23,6 @@ use Zephir\CompilationContext; use Zephir\CompiledExpression; use Zephir\Compiler\CompilerException; -use Zephir\Expression; use Zephir\ClassConstant; /** diff --git a/Library/Expression/StaticPropertyAccess.php b/Library/Expression/StaticPropertyAccess.php index 72ee73cc33..10a85fa0de 100644 --- a/Library/Expression/StaticPropertyAccess.php +++ b/Library/Expression/StaticPropertyAccess.php @@ -23,7 +23,6 @@ use Zephir\CompilationContext; use Zephir\CompiledExpression; use Zephir\Compiler\CompilerException; -use Zephir\Expression; /** * StaticPropertyAccess diff --git a/Library/FunctionCall.php b/Library/FunctionCall.php index 14caa871fd..3a642348a6 100644 --- a/Library/FunctionCall.php +++ b/Library/FunctionCall.php @@ -19,7 +19,6 @@ namespace Zephir; -use Zephir\Utils; use Zephir\Optimizers\OptimizerAbstract; /** diff --git a/Library/FunctionDefinition.php b/Library/FunctionDefinition.php index 01eefb3d68..1836104aff 100644 --- a/Library/FunctionDefinition.php +++ b/Library/FunctionDefinition.php @@ -19,23 +19,6 @@ namespace Zephir; -use Zephir\Passes\LocalContextPass; -use Zephir\Passes\StaticTypeInference; -use Zephir\Passes\CallGathererPass; -use Zephir\Builder\VariableBuilder; -use Zephir\Builder\LiteralBuilder; -use Zephir\Builder\ParameterBuilder; -use Zephir\Builder\StatementsBlockBuilder; -use Zephir\Builder\Statements\LetStatementBuilder; -use Zephir\Builder\Operators\UnaryOperatorBuilder; -use Zephir\Builder\Operators\BinaryOperatorBuilder; -use Zephir\Builder\Operators\TypeOfOperatorBuilder; -use Zephir\Builder\Operators\NewInstanceOperatorBuilder; -use Zephir\Builder\Statements\IfStatementBuilder; -use Zephir\Builder\Statements\ThrowStatementBuilder; -use Zephir\Statements\IfStatement; -use Zephir\Detectors\WriteDetector; - /** * FunctionDefinition * diff --git a/Library/Operators/Arithmetical/DivOperator.php b/Library/Operators/Arithmetical/DivOperator.php index cc53ec0c8f..61efbd2740 100644 --- a/Library/Operators/Arithmetical/DivOperator.php +++ b/Library/Operators/Arithmetical/DivOperator.php @@ -19,7 +19,6 @@ namespace Zephir\Operators\Arithmetical; -use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; use Zephir\Compiler\CompilerException; diff --git a/Library/Operators/Arithmetical/ModOperator.php b/Library/Operators/Arithmetical/ModOperator.php index 6f62adf122..d5d848e7ec 100644 --- a/Library/Operators/Arithmetical/ModOperator.php +++ b/Library/Operators/Arithmetical/ModOperator.php @@ -19,7 +19,6 @@ namespace Zephir\Operators\Arithmetical; -use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; use Zephir\Compiler\CompilerException; diff --git a/Library/Operators/Other/CastOperator.php b/Library/Operators/Other/CastOperator.php index 55b2fa02d8..c6de23879d 100644 --- a/Library/Operators/Other/CastOperator.php +++ b/Library/Operators/Other/CastOperator.php @@ -26,7 +26,6 @@ use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Statements\Let\Variable as LetVariable; -use Zephir\Builder\FunctionCallBuilder; /** * Cast diff --git a/Library/Operators/Other/IssetOperator.php b/Library/Operators/Other/IssetOperator.php index dc41bf8222..f0615b20df 100644 --- a/Library/Operators/Other/IssetOperator.php +++ b/Library/Operators/Other/IssetOperator.php @@ -24,7 +24,6 @@ use Zephir\Expression; use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; -use Zephir\Optimizers\EvalExpression; /** * IssetOperator diff --git a/Library/Operators/Other/NewInstanceTypeOperator.php b/Library/Operators/Other/NewInstanceTypeOperator.php index cae7e3e25d..6c1c0a2441 100644 --- a/Library/Operators/Other/NewInstanceTypeOperator.php +++ b/Library/Operators/Other/NewInstanceTypeOperator.php @@ -19,7 +19,6 @@ namespace Zephir\Operators\Other; -use Zephir\Utils; use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; diff --git a/Library/Operators/Other/RangeExclusiveOperator.php b/Library/Operators/Other/RangeExclusiveOperator.php index 16223d2786..9adba61279 100644 --- a/Library/Operators/Other/RangeExclusiveOperator.php +++ b/Library/Operators/Other/RangeExclusiveOperator.php @@ -25,8 +25,6 @@ use Zephir\Expression\Builder\BuilderFactory; use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; -use Zephir\Builder\FunctionCallBuilder; -use Zephir\Builder\Operators\CastOperatorBuilder; /** * RangeExclusive diff --git a/Library/Operators/Other/RangeInclusiveOperator.php b/Library/Operators/Other/RangeInclusiveOperator.php index 9a046d1aec..40ece1dad8 100644 --- a/Library/Operators/Other/RangeInclusiveOperator.php +++ b/Library/Operators/Other/RangeInclusiveOperator.php @@ -22,11 +22,8 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; use Zephir\Expression; -use Zephir\Expression\Builder\BuilderFactory; use Zephir\CompiledExpression; use Zephir\Compiler\CompilerException; -use Zephir\Builder\FunctionCallBuilder; -use Zephir\Builder\Operators\CastOperatorBuilder; use Zephir\Types; /** diff --git a/Library/Operators/Other/ShortTernaryOperator.php b/Library/Operators/Other/ShortTernaryOperator.php index 7ab1d92dcc..11201b1a2b 100644 --- a/Library/Operators/Other/ShortTernaryOperator.php +++ b/Library/Operators/Other/ShortTernaryOperator.php @@ -25,11 +25,8 @@ use Zephir\Builder\StatementsBlockBuilder; use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; -use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Optimizers\EvalExpression; use Zephir\Statements\IfStatement; -use Zephir\Statements\LetStatement; /** * ShortTernary diff --git a/Library/Operators/Other/TernaryOperator.php b/Library/Operators/Other/TernaryOperator.php index 2a18caf05b..b399d632d5 100644 --- a/Library/Operators/Other/TernaryOperator.php +++ b/Library/Operators/Other/TernaryOperator.php @@ -21,11 +21,9 @@ use Zephir\Operators\BaseOperator; use Zephir\CompilationContext; -use Zephir\Expression; use Zephir\CompiledExpression; use Zephir\Optimizers\EvalExpression; use Zephir\Statements\LetStatement; -use Zephir\Compiler\CompilerException; /** * Ternary diff --git a/Library/Operators/Other/TypeOfOperator.php b/Library/Operators/Other/TypeOfOperator.php index b53e07793c..2a15de602e 100644 --- a/Library/Operators/Other/TypeOfOperator.php +++ b/Library/Operators/Other/TypeOfOperator.php @@ -24,7 +24,6 @@ use Zephir\CompiledExpression; use Zephir\Operators\BaseOperator; use Zephir\Compiler\CompilerException; -use Zephir\Builder\FunctionCallBuilder; use Zephir\Expression\Builder\BuilderFactory; /** diff --git a/Library/Optimizers/FunctionCall/ACosOptimizer.php b/Library/Optimizers/FunctionCall/ACosOptimizer.php index 7959470065..ca3d611dde 100644 --- a/Library/Optimizers/FunctionCall/ACosOptimizer.php +++ b/Library/Optimizers/FunctionCall/ACosOptimizer.php @@ -19,11 +19,6 @@ namespace Zephir\Optimizers\FunctionCall; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; -use Zephir\CompiledExpression; -use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; /** diff --git a/Library/Optimizers/FunctionCall/ASinOptimizer.php b/Library/Optimizers/FunctionCall/ASinOptimizer.php index 5827d93fbb..9440d9da8d 100644 --- a/Library/Optimizers/FunctionCall/ASinOptimizer.php +++ b/Library/Optimizers/FunctionCall/ASinOptimizer.php @@ -19,11 +19,6 @@ namespace Zephir\Optimizers\FunctionCall; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; -use Zephir\CompiledExpression; -use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; /** diff --git a/Library/Optimizers/FunctionCall/CosOptimizer.php b/Library/Optimizers/FunctionCall/CosOptimizer.php index 12966f9500..75a467b906 100644 --- a/Library/Optimizers/FunctionCall/CosOptimizer.php +++ b/Library/Optimizers/FunctionCall/CosOptimizer.php @@ -19,11 +19,6 @@ namespace Zephir\Optimizers\FunctionCall; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; -use Zephir\CompiledExpression; -use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; /** diff --git a/Library/Optimizers/FunctionCall/CountOptimizer.php b/Library/Optimizers/FunctionCall/CountOptimizer.php index de4c33fd47..c0c49cc0f2 100644 --- a/Library/Optimizers/FunctionCall/CountOptimizer.php +++ b/Library/Optimizers/FunctionCall/CountOptimizer.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/DieOptimizer.php b/Library/Optimizers/FunctionCall/DieOptimizer.php index 08c705cbc9..686c94bf50 100644 --- a/Library/Optimizers/FunctionCall/DieOptimizer.php +++ b/Library/Optimizers/FunctionCall/DieOptimizer.php @@ -19,12 +19,6 @@ namespace Zephir\Optimizers\FunctionCall; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; -use Zephir\CompiledExpression; -use Zephir\Optimizers\OptimizerAbstract; - /** * DieOptimizer * diff --git a/Library/Optimizers/FunctionCall/EndsWithOptimizer.php b/Library/Optimizers/FunctionCall/EndsWithOptimizer.php index 5f5df6d8db..5f5bbe0451 100644 --- a/Library/Optimizers/FunctionCall/EndsWithOptimizer.php +++ b/Library/Optimizers/FunctionCall/EndsWithOptimizer.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FeofOptimizer.php b/Library/Optimizers/FunctionCall/FeofOptimizer.php index 317c061250..1548952ced 100644 --- a/Library/Optimizers/FunctionCall/FeofOptimizer.php +++ b/Library/Optimizers/FunctionCall/FeofOptimizer.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/FuncNumArgsOptimizer.php b/Library/Optimizers/FunctionCall/FuncNumArgsOptimizer.php index 205937da7c..94c9ff0549 100644 --- a/Library/Optimizers/FunctionCall/FuncNumArgsOptimizer.php +++ b/Library/Optimizers/FunctionCall/FuncNumArgsOptimizer.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/IsNumericOptimizer.php b/Library/Optimizers/FunctionCall/IsNumericOptimizer.php index fb0a2fe9d6..9dfb5e9ea4 100644 --- a/Library/Optimizers/FunctionCall/IsNumericOptimizer.php +++ b/Library/Optimizers/FunctionCall/IsNumericOptimizer.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/IsPrivateProperty.php b/Library/Optimizers/FunctionCall/IsPrivateProperty.php index 13ee20b2c3..c24fc78e8b 100644 --- a/Library/Optimizers/FunctionCall/IsPrivateProperty.php +++ b/Library/Optimizers/FunctionCall/IsPrivateProperty.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/IsScalarOptimizer.php b/Library/Optimizers/FunctionCall/IsScalarOptimizer.php index 2de5a7f488..3978716659 100644 --- a/Library/Optimizers/FunctionCall/IsScalarOptimizer.php +++ b/Library/Optimizers/FunctionCall/IsScalarOptimizer.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/LdexpOptimizer.php b/Library/Optimizers/FunctionCall/LdexpOptimizer.php index dfdbd91c14..7fc2dff61f 100644 --- a/Library/Optimizers/FunctionCall/LdexpOptimizer.php +++ b/Library/Optimizers/FunctionCall/LdexpOptimizer.php @@ -23,7 +23,6 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; -use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; /** diff --git a/Library/Optimizers/FunctionCall/LtrimOptimizer.php b/Library/Optimizers/FunctionCall/LtrimOptimizer.php index e1e7b55e47..e55f9a5470 100644 --- a/Library/Optimizers/FunctionCall/LtrimOptimizer.php +++ b/Library/Optimizers/FunctionCall/LtrimOptimizer.php @@ -19,12 +19,6 @@ namespace Zephir\Optimizers\FunctionCall; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; -use Zephir\CompiledExpression; -use Zephir\Optimizers\OptimizerAbstract; - /** * LtrimOptimizer * diff --git a/Library/Optimizers/FunctionCall/MemstrOptimizer.php b/Library/Optimizers/FunctionCall/MemstrOptimizer.php index eee02d7401..1fcd776976 100644 --- a/Library/Optimizers/FunctionCall/MemstrOptimizer.php +++ b/Library/Optimizers/FunctionCall/MemstrOptimizer.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; use Zephir\Utils; diff --git a/Library/Optimizers/FunctionCall/MethodExistsOptimizer.php b/Library/Optimizers/FunctionCall/MethodExistsOptimizer.php index d7a71ca749..8d6b7f69d4 100644 --- a/Library/Optimizers/FunctionCall/MethodExistsOptimizer.php +++ b/Library/Optimizers/FunctionCall/MethodExistsOptimizer.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; use Zephir\Utils; diff --git a/Library/Optimizers/FunctionCall/PregMatchAllOptimizer.php b/Library/Optimizers/FunctionCall/PregMatchAllOptimizer.php index a06f144049..9a43fb4383 100644 --- a/Library/Optimizers/FunctionCall/PregMatchAllOptimizer.php +++ b/Library/Optimizers/FunctionCall/PregMatchAllOptimizer.php @@ -21,12 +21,6 @@ namespace Zephir\Optimizers\FunctionCall; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; -use Zephir\CompiledExpression; -use Zephir\Optimizers\OptimizerAbstract; - /** * PregMatchAllOptimizer * diff --git a/Library/Optimizers/FunctionCall/RtrimOptimizer.php b/Library/Optimizers/FunctionCall/RtrimOptimizer.php index 5ed9ca8f9a..61eb136f00 100644 --- a/Library/Optimizers/FunctionCall/RtrimOptimizer.php +++ b/Library/Optimizers/FunctionCall/RtrimOptimizer.php @@ -19,12 +19,6 @@ namespace Zephir\Optimizers\FunctionCall; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; -use Zephir\CompiledExpression; -use Zephir\Optimizers\OptimizerAbstract; - /** * RtrimOptimizer * diff --git a/Library/Optimizers/FunctionCall/SinOptimizer.php b/Library/Optimizers/FunctionCall/SinOptimizer.php index 17a70f1aa1..73b6324f37 100644 --- a/Library/Optimizers/FunctionCall/SinOptimizer.php +++ b/Library/Optimizers/FunctionCall/SinOptimizer.php @@ -19,11 +19,6 @@ namespace Zephir\Optimizers\FunctionCall; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; -use Zephir\CompiledExpression; -use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; /** diff --git a/Library/Optimizers/FunctionCall/SqrtOptimizer.php b/Library/Optimizers/FunctionCall/SqrtOptimizer.php index 469f479aad..df200b980e 100644 --- a/Library/Optimizers/FunctionCall/SqrtOptimizer.php +++ b/Library/Optimizers/FunctionCall/SqrtOptimizer.php @@ -19,7 +19,6 @@ namespace Zephir\Optimizers\FunctionCall; -use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; /** diff --git a/Library/Optimizers/FunctionCall/StartsWithOptimizer.php b/Library/Optimizers/FunctionCall/StartsWithOptimizer.php index c6b51224e7..b9f5ba6a72 100644 --- a/Library/Optimizers/FunctionCall/StartsWithOptimizer.php +++ b/Library/Optimizers/FunctionCall/StartsWithOptimizer.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/StrlenOptimizer.php b/Library/Optimizers/FunctionCall/StrlenOptimizer.php index f43d5b790e..a6174eaf89 100644 --- a/Library/Optimizers/FunctionCall/StrlenOptimizer.php +++ b/Library/Optimizers/FunctionCall/StrlenOptimizer.php @@ -21,7 +21,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; diff --git a/Library/Optimizers/FunctionCall/TanOptimizer.php b/Library/Optimizers/FunctionCall/TanOptimizer.php index 4061e6febb..24cca2f681 100644 --- a/Library/Optimizers/FunctionCall/TanOptimizer.php +++ b/Library/Optimizers/FunctionCall/TanOptimizer.php @@ -19,11 +19,6 @@ namespace Zephir\Optimizers\FunctionCall; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; -use Zephir\CompiledExpression; -use Zephir\Expression; use Zephir\Optimizers\MathOptimizer; /** diff --git a/Library/Optimizers/FunctionCall/VarDumpOptimizer.php b/Library/Optimizers/FunctionCall/VarDumpOptimizer.php index 6251704e17..d389821b66 100644 --- a/Library/Optimizers/FunctionCall/VarDumpOptimizer.php +++ b/Library/Optimizers/FunctionCall/VarDumpOptimizer.php @@ -23,7 +23,6 @@ use Zephir\Call; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\CompiledExpression; use Zephir\Optimizers\OptimizerAbstract; use Zephir\Statements\LetStatement; diff --git a/Library/Optimizers/MathOptimizer.php b/Library/Optimizers/MathOptimizer.php index dc34369b10..0b9db1d9b3 100755 --- a/Library/Optimizers/MathOptimizer.php +++ b/Library/Optimizers/MathOptimizer.php @@ -23,7 +23,6 @@ use Zephir\CompilationContext; use Zephir\CompiledExpression; use Zephir\Compiler\CompilerException; -use Zephir\Expression; /** * Class OptimizerAbstract diff --git a/Library/Statements/DeclareStatement.php b/Library/Statements/DeclareStatement.php index 5a3f23cffb..5554c7c6e8 100644 --- a/Library/Statements/DeclareStatement.php +++ b/Library/Statements/DeclareStatement.php @@ -21,9 +21,7 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; -use Zephir\Expression; use Zephir\Expression\Builder\BuilderFactory; -use Zephir\LiteralCompiledExpression; /** * DeclareStatement diff --git a/Library/Statements/DoWhileStatement.php b/Library/Statements/DoWhileStatement.php index 65cf6f0d59..56b75a74a8 100644 --- a/Library/Statements/DoWhileStatement.php +++ b/Library/Statements/DoWhileStatement.php @@ -20,7 +20,6 @@ namespace Zephir\Statements; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\Optimizers\EvalExpression; use Zephir\StatementsBlock; diff --git a/Library/Statements/ForStatement.php b/Library/Statements/ForStatement.php index cfea40d642..e46bd6116f 100644 --- a/Library/Statements/ForStatement.php +++ b/Library/Statements/ForStatement.php @@ -19,7 +19,6 @@ namespace Zephir\Statements; -use Zephir\Compiler; use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\FunctionCall; diff --git a/Library/Statements/IfStatement.php b/Library/Statements/IfStatement.php index 327d875ba1..cc94f9abde 100644 --- a/Library/Statements/IfStatement.php +++ b/Library/Statements/IfStatement.php @@ -20,7 +20,6 @@ namespace Zephir\Statements; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\Passes\SkipVariantInit; use Zephir\StatementsBlock; use Zephir\Optimizers\EvalExpression; diff --git a/Library/Statements/Let/ArrayIndex.php b/Library/Statements/Let/ArrayIndex.php index 42d22a0542..170a6a73f0 100644 --- a/Library/Statements/Let/ArrayIndex.php +++ b/Library/Statements/Let/ArrayIndex.php @@ -22,11 +22,8 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; use Zephir\GlobalConstant; /** diff --git a/Library/Statements/Let/ArrayIndexAppend.php b/Library/Statements/Let/ArrayIndexAppend.php index 639813a4e5..9515234fb7 100644 --- a/Library/Statements/Let/ArrayIndexAppend.php +++ b/Library/Statements/Let/ArrayIndexAppend.php @@ -22,12 +22,8 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * ArrayIndexAppend diff --git a/Library/Statements/Let/Decr.php b/Library/Statements/Let/Decr.php index ef5ccbb3c6..91ae1763e3 100644 --- a/Library/Statements/Let/Decr.php +++ b/Library/Statements/Let/Decr.php @@ -22,12 +22,6 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; -use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * Decr diff --git a/Library/Statements/Let/ExportSymbol.php b/Library/Statements/Let/ExportSymbol.php index 6aa0047db4..b200b00ebe 100644 --- a/Library/Statements/Let/ExportSymbol.php +++ b/Library/Statements/Let/ExportSymbol.php @@ -20,13 +20,8 @@ namespace Zephir\Statements\Let; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; use Zephir\Statements\LetStatement; /** diff --git a/Library/Statements/Let/ExportSymbolString.php b/Library/Statements/Let/ExportSymbolString.php index 31235b3123..d60600fbbc 100644 --- a/Library/Statements/Let/ExportSymbolString.php +++ b/Library/Statements/Let/ExportSymbolString.php @@ -20,13 +20,8 @@ namespace Zephir\Statements\Let; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; use Zephir\Statements\LetStatement; /** diff --git a/Library/Statements/Let/Incr.php b/Library/Statements/Let/Incr.php index 62c156a470..126eb0f93f 100644 --- a/Library/Statements/Let/Incr.php +++ b/Library/Statements/Let/Incr.php @@ -22,12 +22,6 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; -use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * Incr diff --git a/Library/Statements/Let/ObjectDynamicProperty.php b/Library/Statements/Let/ObjectDynamicProperty.php index 2f80ff90f4..2f1eef3e32 100644 --- a/Library/Statements/Let/ObjectDynamicProperty.php +++ b/Library/Statements/Let/ObjectDynamicProperty.php @@ -22,12 +22,7 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * ObjectDynamicProperty diff --git a/Library/Statements/Let/ObjectDynamicStringProperty.php b/Library/Statements/Let/ObjectDynamicStringProperty.php index 0eca7cc426..1e7f05d2ac 100644 --- a/Library/Statements/Let/ObjectDynamicStringProperty.php +++ b/Library/Statements/Let/ObjectDynamicStringProperty.php @@ -22,12 +22,7 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * ObjectDynamicProperty diff --git a/Library/Statements/Let/ObjectProperty.php b/Library/Statements/Let/ObjectProperty.php index 8df69bd830..f2d3767569 100644 --- a/Library/Statements/Let/ObjectProperty.php +++ b/Library/Statements/Let/ObjectProperty.php @@ -22,12 +22,7 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * ObjectProperty diff --git a/Library/Statements/Let/ObjectPropertyAppend.php b/Library/Statements/Let/ObjectPropertyAppend.php index e5df72b58e..a3357eaa96 100644 --- a/Library/Statements/Let/ObjectPropertyAppend.php +++ b/Library/Statements/Let/ObjectPropertyAppend.php @@ -22,12 +22,7 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * ObjectPropertyAppend diff --git a/Library/Statements/Let/ObjectPropertyArrayIndex.php b/Library/Statements/Let/ObjectPropertyArrayIndex.php index b12e7dc92f..2e0ad9c68d 100644 --- a/Library/Statements/Let/ObjectPropertyArrayIndex.php +++ b/Library/Statements/Let/ObjectPropertyArrayIndex.php @@ -22,12 +22,8 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * ObjectPropertyArrayIndex diff --git a/Library/Statements/Let/ObjectPropertyArrayIndexAppend.php b/Library/Statements/Let/ObjectPropertyArrayIndexAppend.php index 44f64c5a40..cfc1549329 100644 --- a/Library/Statements/Let/ObjectPropertyArrayIndexAppend.php +++ b/Library/Statements/Let/ObjectPropertyArrayIndexAppend.php @@ -22,12 +22,8 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * ObjectPropertyArrayIndexAppend diff --git a/Library/Statements/Let/ObjectPropertyDecr.php b/Library/Statements/Let/ObjectPropertyDecr.php index 1ee31e441b..398e8a4551 100644 --- a/Library/Statements/Let/ObjectPropertyDecr.php +++ b/Library/Statements/Let/ObjectPropertyDecr.php @@ -22,12 +22,6 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; -use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * ObjectPropertyDecr diff --git a/Library/Statements/Let/ObjectPropertyIncr.php b/Library/Statements/Let/ObjectPropertyIncr.php index f2131e4610..718bb0ce81 100644 --- a/Library/Statements/Let/ObjectPropertyIncr.php +++ b/Library/Statements/Let/ObjectPropertyIncr.php @@ -22,12 +22,6 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; -use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * ObjectPropertyIncr diff --git a/Library/Statements/Let/StaticProperty.php b/Library/Statements/Let/StaticProperty.php index 9a78fd3c6a..1e502da086 100644 --- a/Library/Statements/Let/StaticProperty.php +++ b/Library/Statements/Let/StaticProperty.php @@ -21,13 +21,8 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; -use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * StaticProperty diff --git a/Library/Statements/Let/StaticPropertyAppend.php b/Library/Statements/Let/StaticPropertyAppend.php index 9e1afadb7a..c946f02ff9 100644 --- a/Library/Statements/Let/StaticPropertyAppend.php +++ b/Library/Statements/Let/StaticPropertyAppend.php @@ -21,13 +21,7 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; -use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * StaticPropertyAppend diff --git a/Library/Statements/Let/StaticPropertyArrayIndex.php b/Library/Statements/Let/StaticPropertyArrayIndex.php index 8eb4775eeb..21ac120503 100644 --- a/Library/Statements/Let/StaticPropertyArrayIndex.php +++ b/Library/Statements/Let/StaticPropertyArrayIndex.php @@ -21,13 +21,8 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; -use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * StaticPropertyArrayIndex diff --git a/Library/Statements/Let/StaticPropertyArrayIndexAppend.php b/Library/Statements/Let/StaticPropertyArrayIndexAppend.php index ced946cdfa..8b37899bba 100644 --- a/Library/Statements/Let/StaticPropertyArrayIndexAppend.php +++ b/Library/Statements/Let/StaticPropertyArrayIndexAppend.php @@ -21,13 +21,8 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; -use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * StaticPropertyArrayIndexAppend diff --git a/Library/Statements/Let/Variable.php b/Library/Statements/Let/Variable.php index 1e212b22c9..46b1745c86 100644 --- a/Library/Statements/Let/Variable.php +++ b/Library/Statements/Let/Variable.php @@ -23,11 +23,7 @@ use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; use Zephir\Detectors\ReadDetector; -use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * Variable diff --git a/Library/Statements/Let/VariableAppend.php b/Library/Statements/Let/VariableAppend.php index 5631ced3ac..649a662dfa 100644 --- a/Library/Statements/Let/VariableAppend.php +++ b/Library/Statements/Let/VariableAppend.php @@ -22,12 +22,7 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; use Zephir\Variable as ZephirVariable; -use Zephir\Detectors\ReadDetector; -use Zephir\Expression; use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; /** * VariableAppend diff --git a/Library/Statements/LetStatement.php b/Library/Statements/LetStatement.php index cd2ed573b4..8f7d662fb6 100644 --- a/Library/Statements/LetStatement.php +++ b/Library/Statements/LetStatement.php @@ -21,13 +21,8 @@ use Zephir\CompilationContext; use Zephir\Compiler\CompilerException; -use Zephir\Variable; use Zephir\Detectors\ReadDetector; use Zephir\Expression; -use Zephir\CompiledExpression; -use Zephir\Compiler; -use Zephir\Utils; -use Zephir\GlobalConstant; use Zephir\Statements\Let\Variable as LetVariable; use Zephir\Statements\Let\VariableAppend as LetVariableAppend; use Zephir\Statements\Let\ArrayIndex as LetArrayIndex; diff --git a/Library/Statements/ReturnStatement.php b/Library/Statements/ReturnStatement.php index fa3a56dcc3..39b07932a5 100644 --- a/Library/Statements/ReturnStatement.php +++ b/Library/Statements/ReturnStatement.php @@ -23,7 +23,6 @@ use Zephir\Compiler\CompilerException; use Zephir\Expression; use Zephir\Utils; -use Zephir\Types; /** * ReturnStatement diff --git a/Library/Statements/StatementAbstract.php b/Library/Statements/StatementAbstract.php index 8c3531f329..c990e0eed0 100644 --- a/Library/Statements/StatementAbstract.php +++ b/Library/Statements/StatementAbstract.php @@ -20,8 +20,6 @@ namespace Zephir\Statements; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; -use Zephir\Expression\Builder\BuilderFactory; /** * Class StatementAbstract diff --git a/Library/Statements/SwitchStatement.php b/Library/Statements/SwitchStatement.php index 358d888cfe..ab79f43b1b 100644 --- a/Library/Statements/SwitchStatement.php +++ b/Library/Statements/SwitchStatement.php @@ -20,7 +20,6 @@ namespace Zephir\Statements; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\Expression; use Zephir\StatementsBlock; use Zephir\Optimizers\EvalExpression; diff --git a/Library/Statements/ThrowStatement.php b/Library/Statements/ThrowStatement.php index 6b5fdc8a22..5ace1a42f8 100644 --- a/Library/Statements/ThrowStatement.php +++ b/Library/Statements/ThrowStatement.php @@ -24,7 +24,6 @@ use Zephir\Compiler; use Zephir\Compiler\CompilerException; use Zephir\Expression; -use Zephir\Types; use Zephir\Utils; /** diff --git a/Library/Statements/TryCatchStatement.php b/Library/Statements/TryCatchStatement.php index 30bc2c1293..9b9777f6d3 100644 --- a/Library/Statements/TryCatchStatement.php +++ b/Library/Statements/TryCatchStatement.php @@ -24,11 +24,6 @@ use Zephir\Expression\Builder\BuilderFactory; use Zephir\Expression\Builder\Operators\BinaryOperator; use Zephir\StatementsBlock; -use Zephir\Builder\StatementsBlockBuilder; -use Zephir\Builder\Operators\BinaryOperatorBuilder; -use Zephir\Builder\Statements\IfStatementBuilder; -use Zephir\Builder\VariableBuilder; -use Zephir\Statements\IfStatement; /** * TryCatchStatement diff --git a/Library/Statements/WhileStatement.php b/Library/Statements/WhileStatement.php index 60583aae8e..87fb4ddd0e 100644 --- a/Library/Statements/WhileStatement.php +++ b/Library/Statements/WhileStatement.php @@ -20,7 +20,6 @@ namespace Zephir\Statements; use Zephir\CompilationContext; -use Zephir\Compiler\CompilerException; use Zephir\Optimizers\EvalExpression; use Zephir\StatementsBlock; diff --git a/Library/StatementsBlock.php b/Library/StatementsBlock.php index 3cf1a15daa..e3709095f3 100644 --- a/Library/StatementsBlock.php +++ b/Library/StatementsBlock.php @@ -19,7 +19,6 @@ namespace Zephir; -use Zephir\Exception; use Zephir\Statements\DeclareStatement; use Zephir\Statements\IfStatement; use Zephir\Statements\ForStatement; diff --git a/Library/Types/AbstractType.php b/Library/Types/AbstractType.php index fa4cf7e604..7e9802dd04 100644 --- a/Library/Types/AbstractType.php +++ b/Library/Types/AbstractType.php @@ -24,8 +24,6 @@ use Zephir\Expression; use Zephir\Expression\Builder\BuilderFactory; use Zephir\Compiler\CompilerException; -use Zephir\Builder\FunctionCallBuilder; -use Zephir\FunctionCall; abstract class AbstractType { diff --git a/Library/Types/ArrayType.php b/Library/Types/ArrayType.php index 8912425d9f..9b7c388051 100644 --- a/Library/Types/ArrayType.php +++ b/Library/Types/ArrayType.php @@ -23,8 +23,6 @@ use Zephir\CompilationContext; use Zephir\Expression; use Zephir\Expression\Builder\BuilderFactory; -use Zephir\Builder\FunctionCallBuilder; -use Zephir\FunctionCall; /** * ArrayType diff --git a/Library/Types/CharType.php b/Library/Types/CharType.php index e1cf973ea8..8cc7ff3819 100644 --- a/Library/Types/CharType.php +++ b/Library/Types/CharType.php @@ -23,9 +23,6 @@ use Zephir\CompilationContext; use Zephir\Expression; use Zephir\Expression\Builder\BuilderFactory; -use Zephir\FunctionCall; -use Zephir\Builder\FunctionCallBuilder; -use Zephir\Types; class CharType extends AbstractType { diff --git a/Library/Types/IstringType.php b/Library/Types/IstringType.php index 86b1b2d67d..c9c1d6724f 100644 --- a/Library/Types/IstringType.php +++ b/Library/Types/IstringType.php @@ -19,12 +19,6 @@ namespace Zephir\Types; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Expression; -use Zephir\Compiler\CompilerException; -use Zephir\Builder\FunctionCallBuilder; - /** * IstringType * diff --git a/Library/Types/StringType.php b/Library/Types/StringType.php index d75f6e8dc1..2b9fe6f843 100644 --- a/Library/Types/StringType.php +++ b/Library/Types/StringType.php @@ -19,12 +19,6 @@ namespace Zephir\Types; -use Zephir\Call; -use Zephir\CompilationContext; -use Zephir\Expression; -use Zephir\Compiler\CompilerException; -use Zephir\Builder\FunctionCallBuilder; - /** * StringType * From cd2030af46b1b9584131ccbc6176378bce86ebd5 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 19:44:08 +0300 Subject: [PATCH 35/40] Removed no longer used bundled parser --- .gitignore | 40 - Library/Commands/CommandApi.php | 20 +- Library/Compiler.php | 48 +- Library/Parser/Manager.php | 187 +- parser/config.m4 | 13 - parser/config.w32 | 6 - parser/parser/base.c | 610 --- parser/parser/build_linux.sh | 52 - parser/parser/build_win32.bat | 7 - parser/parser/lemon.c | 4564 ------------------ parser/parser/lempar.c | 686 --- parser/parser/parser.h | 126 - parser/parser/parser.php5.c | 7976 ------------------------------ parser/parser/parser.php5.h | 126 - parser/parser/parser.php5.inc.h | 1278 ----- parser/parser/parser.php5.lemon | 2139 --------- parser/parser/parser.php7.c | 8021 ------------------------------- parser/parser/parser.php7.h | 126 - parser/parser/parser.php7.inc.h | 1171 ----- parser/parser/parser.php7.lemon | 2201 --------- parser/parser/scanner.h | 164 - parser/parser/scanner.re | 982 ---- parser/parser/xx.h | 85 - parser/php_zephir_parser.h | 71 - parser/zephir_parser.c | 136 - 25 files changed, 22 insertions(+), 30813 deletions(-) delete mode 100644 parser/config.m4 delete mode 100644 parser/config.w32 delete mode 100644 parser/parser/base.c delete mode 100755 parser/parser/build_linux.sh delete mode 100644 parser/parser/build_win32.bat delete mode 100644 parser/parser/lemon.c delete mode 100644 parser/parser/lempar.c delete mode 100644 parser/parser/parser.h delete mode 100644 parser/parser/parser.php5.c delete mode 100644 parser/parser/parser.php5.h delete mode 100644 parser/parser/parser.php5.inc.h delete mode 100644 parser/parser/parser.php5.lemon delete mode 100644 parser/parser/parser.php7.c delete mode 100644 parser/parser/parser.php7.h delete mode 100644 parser/parser/parser.php7.inc.h delete mode 100644 parser/parser/parser.php7.lemon delete mode 100644 parser/parser/scanner.h delete mode 100644 parser/parser/scanner.re delete mode 100644 parser/parser/xx.h delete mode 100644 parser/php_zephir_parser.h delete mode 100644 parser/zephir_parser.c diff --git a/.gitignore b/.gitignore index 4f704cea2d..10dd5ebb4b 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,6 @@ compile.log compile-errors.log # Runtime - runtime/.deps runtime/Makefile runtime/Makefile.fragments @@ -53,42 +52,3 @@ runtime/run-tests.php runtime/a.zep runtime/index.php runtime/parser.out - -# New Parser -parser/.deps -parser/Makefile -parser/Makefile.fragments -parser/Makefile.global -parser/Makefile.objects -parser/acinclude.m4 -parser/aclocal.m4 -parser/autom4te.cache/ -parser/config.guess -parser/config.h -parser/config.h.in -parser/config.log -parser/config.nice -parser/config.status -parser/config.sub -parser/configure -parser/configure.in -parser/install-sh -parser/libtool -parser/ltmain.sh -parser/missing -parser/mkinstalldirs -parser/modules/ -parser/parser/lemon -parser/parser/parser.c -parser/parser/parser.out -parser/parser/scanner.c -parser/parser/parser.php5.out -parser/parser/parser.php7.out -parser/run-tests.php -parser/zephir_parser.so -parser/parser.c -parser/scanner.c -parser/parser.out -parser/Release -parser/lemon -parser/lemon.exe diff --git a/Library/Commands/CommandApi.php b/Library/Commands/CommandApi.php index d97b5aa41b..2175b21233 100644 --- a/Library/Commands/CommandApi.php +++ b/Library/Commands/CommandApi.php @@ -14,8 +14,8 @@ namespace Zephir\Commands; use Zephir\Config; -use Zephir\Exception; use Zephir\Logger; +use Zephir\Exception\InvalidArgumentException; /** * Zephir\Commands\CommandApi @@ -51,7 +51,7 @@ public function getDescription() * * @param Config $config * @param Logger $logger - * @throws Exception + * @throws InvalidArgumentException */ public function execute(Config $config, Logger $logger) { @@ -70,15 +70,15 @@ public function execute(Config $config, Logger $logger) ]; foreach ($params as $k => $p) { - if (isset($allowedArgs[$k])) { - if (preg_match($allowedArgs[$k], $p)) { - $this->setParameter($k, $p); - } else { - throw new Exception("Invalid value for argument '$k'"); - } - } elseif (!in_array($k, ['parser-compiled'])) { - throw new Exception("Invalid argument '$k' for api command'"); + if (!isset($allowedArgs[$k])) { + throw new InvalidArgumentException("Invalid argument '$k' for api command'"); } + + if (!preg_match($allowedArgs[$k], $p)) { + throw new InvalidArgumentException("Invalid value for argument '$k'"); + } + + $this->setParameter($k, $p); } parent::execute($config, $logger); diff --git a/Library/Compiler.php b/Library/Compiler.php index ccc9471212..2ba302b61e 100644 --- a/Library/Compiler.php +++ b/Library/Compiler.php @@ -14,15 +14,18 @@ namespace Zephir; use Zephir\Parser\Manager; +use Zephir\Parser\ParseException; use Zephir\Commands\CommandGenerate; use Zephir\Commands\CommandInterface; -use Zephir\Parser\ParseException; +use Zephir\Compiler\CompilerException; use Zephir\FileSystem\HardDisk as FileSystem; /** * Zephir\Compiler * * The main compiler. + * + * @package Zephir */ class Compiler { @@ -185,33 +188,6 @@ public function addFunction(FunctionDefinition $func, $statement = null) $this->functionDefinitions[$funcName] = $func; } - /** - * Compile the parser PHP extension. - * - * Returns TRUE if parser is available or compiled extions file (string). - * - * @return bool|string - */ - public function compileParser() - { - if ($this->parserManager->hasToRecompileParser()) { - $this->logger->output('The Zephir Parser is loaded but will be recompiled'); - return $this->parserManager->compileParser(); - } - - if ($this->parserManager->isAvailable()) { - return true; - } - - if ($this->parserManager->isAlreadyCompiled()) { - return $this->parserManager->getParserFilePath(); - } - - $this->logger->output('The Zephir Parser is loaded but will be recompiled'); - - return $this->parserManager->compileParser(); - } - /** * Pre-compiles classes creating a CompilerFile definition * @@ -222,21 +198,7 @@ public function compileParser() */ protected function preCompile($filePath) { - $parserExt = $this->compileParser(); - - // Check if we need to load the parser extension and also allow users to manage the Zephir Parser extension - // on their own (Zephir won't handle updating) - if ($parserExt && $parserExt !== true) { - // exclude --parser-compiled argument, we'll specify it additionally - $args = array_filter($_SERVER['argv'], function ($arg) { - return 0 !== strpos($arg, "--parser-compiled"); - }); - $cmd = PHP_BINARY . ' -dextension="' . $parserExt . '" ' . implode(' ', $args) . ' --parser-compiled'; - passthru($cmd, $exitCode); - exit($exitCode); - } - - if (!$parserExt) { + if (!$this->parserManager->isAvailable()) { throw new Exception('The zephir parser extension is not loaded!'); } diff --git a/Library/Parser/Manager.php b/Library/Parser/Manager.php index 227ea8d922..1d84ae0100 100644 --- a/Library/Parser/Manager.php +++ b/Library/Parser/Manager.php @@ -2,27 +2,19 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | https://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Parser; -use Zephir\Utils; use Zephir\Logger; use Zephir\Parser; -use Zephir\Compiler\CompilerException; /** * Zephir\Parser\Manager @@ -64,16 +56,6 @@ public function __construct(Parser $parser, Logger $logger, array $parameters = { $this->parser = $parser; $this->logger = $logger; - - if (isset($parameters['parser-compiled'])) { - if ($parameters['parser-compiled'] === 'force') { - $this->forceCompileParser = true; - } else { - $this->parserEnabled = true; - } - } else { - $this->parserEnabled = $parser->isAvailable(); - } } /** @@ -93,161 +75,6 @@ public function getParser() */ public function isAvailable() { - return $this->parserEnabled; - } - - /** - * Should we recompile the Zephir Parser or not? - * - * @return bool - */ - public function hasToRecompileParser() - { - return $this->forceCompileParser; - } - - /** - * Checks if the Zephir parser already compiled and stored in the local path. - * - * @return bool - */ - public function isAlreadyCompiled() - { - $parserPath = $this->getParserFilePath(); - - return file_exists($parserPath); - } - - /** - * Gets real path to the parser extension. - * - * @return string - */ - public function getParserFilePath() - { - $modulesPath = $this->getLocalParserPath() . 'modules' . DIRECTORY_SEPARATOR; - - if (Utils::isWindows()) { - return $modulesPath . 'zephir_parser.dll'; - } - - return $modulesPath . 'zephir_parser.so'; - } - - protected function compileLinuxParser($destination) - { - $oldCwd = getcwd(); - chdir($destination); - - echo shell_exec('cd parser && /bin/sh ./build_linux.sh'); - - exec('make clean && phpize --clean', $output, $exit); - exec('phpize', $output, $exit); - exec('export CC="gcc" && ./configure --enable-zephir_parser'); - - $this->logger->output('Compiling the parser...'); - - exec( - '(make -s -j2 2> ./compile-errors.log 1> ./compile.log)', - $output, - $exit - ); - - echo file_get_contents('compile-errors.log') . PHP_EOL; - echo file_get_contents('compile.log') . PHP_EOL; - - copy('modules/zephir_parser.so', 'zephir_parser.so'); - chdir($oldCwd); - - return $destination . 'zephir_parser.so'; - } - - protected function compileWin32Parser($destination) - { - $oldCwd = getcwd(); - chdir($destination); - - echo shell_exec('cd parser && cmd /c build_win32.bat'); - - exec('%PHP_DEVPACK%\\phpize --clean', $output, $exit); - if (file_exists('Release')) { - exec('rd /s /q "' . $destination . '"Release', $output, $exit); - } - - exec('%PHP_DEVPACK%\\phpize', $output, $exit); - - // fix until https://github.com/php/php-src/commit/9a3af83ee2aecff25fd4922ef67c1fb4d2af6201 - // hits all supported PHP builds - $fixMarker = "/* zephir_phpize_fix */"; - $configureFile = file_get_contents("configure.js"); - $configureFix = ["var PHP_ANALYZER = 'disabled';", "var PHP_PGO = 'no';", "var PHP_PGI = 'no';"]; - - if (strpos($configureFile, $fixMarker) === false) { - file_put_contents( - "configure.js", - $fixMarker . PHP_EOL . implode($configureFix, PHP_EOL) . PHP_EOL . $configureFile - ); - } - - exec('configure --enable-zephir_parser'); - - $this->logger->output('Compiling the parser...'); - - exec('nmake 2> compile-errors.log 1> compile.log', $output, $exit); - - echo file_get_contents('compile-errors.log') . PHP_EOL; - $buildLog = file_get_contents('compile.log'); - echo $buildLog . PHP_EOL; - - $buildType = 'Release'; - if (strpos($buildLog, 'Debug_TS\\') !== false) { - $buildType = 'Debug_TS'; - } else { - if (strpos($buildLog, 'Release_TS\\') !== false) { - $buildType = 'Release_TS'; - } else { - if (strpos($buildLog, 'Debug\\') !== false) { - $buildType = 'Debug'; - } - } - } - - if (strpos($buildLog, 'x64\\'.$buildType) !== false) { - $buildType = 'x64/' . $buildType; - } - - copy($buildType . '/php_zephir_parser.dll', 'php_zephir_parser.dll'); - chdir($oldCwd); - - return $destination . 'php_zephir_parser.dll'; - } - - /** - * Compile the parser PHP extension - */ - public function compileParser() - { - $extFile = null; - - $parserDir = $this->getLocalParserPath(); - - $this->logger->output('Preparing for parser compilation...'); - - if (Utils::isWindows()) { - $extFile = $this->compileWin32Parser($parserDir); - } else { - $extFile = $this->compileLinuxParser($parserDir); - } - - if (!$extFile || !file_exists($extFile)) { - throw new CompilerException('The Zephir Parser extension could not be found or compiled!'); - } - - return $extFile; - } - - protected function getLocalParserPath() - { - return realpath(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . 'parser' . DIRECTORY_SEPARATOR; + return $this->parser->isAvailable(); } } diff --git a/parser/config.m4 b/parser/config.m4 deleted file mode 100644 index 357541976d..0000000000 --- a/parser/config.m4 +++ /dev/null @@ -1,13 +0,0 @@ -PHP_ARG_ENABLE(zephir_parser, whether to enable zephir_parser, [ --enable-zephir_parser Enable %PROJECT_CAMELIZE%]) - -if test "$PHP_ZEPHIR_PARSER" = "yes"; then - AC_DEFINE(HAVE_ZEPHIR_PARSER, 1, [Whether you have zephir_parser]) - zephir_parser_sources="zephir_parser.c parser/parser.c parser/scanner.c" - PHP_NEW_EXTENSION(zephir_parser, $zephir_parser_sources, $ext_shared,, "") - PHP_SUBST(ZEPHIR_PARSER_SHARED_LIBADD) - - old_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $INCLUDES" - - CPPFLAGS=$old_CPPFLAGS -fi diff --git a/parser/config.w32 b/parser/config.w32 deleted file mode 100644 index 21685f0471..0000000000 --- a/parser/config.w32 +++ /dev/null @@ -1,6 +0,0 @@ -ARG_ENABLE("zephir_parser", "enable zephir_parser", "no"); - -if (PHP_ZEPHIR_PARSER != "no") { - EXTENSION("zephir_parser", "zephir_parser.c", null, "-I"+configure_module_dirname); - ADD_SOURCES(configure_module_dirname + "/parser", "parser.c scanner.c", "zephir_parser"); -} diff --git a/parser/parser/base.c b/parser/parser/base.c deleted file mode 100644 index 1ba91b482a..0000000000 --- a/parser/parser/base.c +++ /dev/null @@ -1,610 +0,0 @@ - -/* - +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | - | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | - +--------------------------------------------------------------------------+ -*/ - -const xx_token_names xx_tokens[] = -{ - { XX_T_INTEGER, "INTEGER" }, - { XX_T_DOUBLE, "DOUBLE" }, - { XX_T_STRING, "STRING" }, - { XX_T_IDENTIFIER, "IDENTIFIER" }, - { XX_T_AT, "@" }, - { XX_T_COMMA, "," }, - { XX_T_ASSIGN, "=" }, - { XX_T_COLON, ":" }, - { XX_T_PARENTHESES_OPEN, "(" }, - { XX_T_PARENTHESES_CLOSE, ")" }, - { XX_T_BRACKET_OPEN, "{" }, - { XX_T_BRACKET_CLOSE, "}" }, - { XX_T_SBRACKET_OPEN, "[" }, - { XX_T_SBRACKET_CLOSE, "]" }, - { 0, NULL } -}; - -/** - * Wrapper to alloc memory within the parser - */ -static void *xx_wrapper_alloc(size_t bytes) -{ - return emalloc(bytes); -} - -/** - * Wrapper to free memory within the parser - */ -static void xx_wrapper_free(void *pointer) -{ - efree(pointer); -} - -/** - * Creates a parser_token to be passed to the parser - */ -static void xx_parse_with_token(void* xx_parser, int opcode, int parsercode, xx_scanner_token *token, xx_parser_status *parser_status){ - - xx_parser_token *pToken; - - pToken = emalloc(sizeof(xx_parser_token)); - pToken->opcode = opcode; - pToken->token = token->value; - pToken->token_len = token->len; - pToken->free_flag = 1; - - xx_(xx_parser, parsercode, pToken, parser_status); - - token->value = NULL; - token->len = 0; -} - -/** - * Parses a comment returning an intermediate array representation - */ -void xx_parse_program(zval *return_value, char *program, size_t program_length, char *file_path, zval **error_msg) { - - char *error; - xx_scanner_state *state; - xx_scanner_token token; - int scanner_status, status = SUCCESS, start_lines; - xx_parser_status *parser_status = NULL; - void* xx_parser; - - /** - * Check if the program has any length - */ - if (program_length < 2) { - return; - } - - /** - * Start the reentrant parser - */ - xx_parser = xx_Alloc(xx_wrapper_alloc); - - parser_status = emalloc(sizeof(xx_parser_status)); - state = emalloc(sizeof(xx_scanner_state)); - - parser_status->status = XX_PARSING_OK; - parser_status->scanner_state = state; -#if PHP_VERSION_ID < 70000 - parser_status->ret = NULL; -#else - ZVAL_UNDEF(&parser_status->ret); -#endif - parser_status->token = &token; - parser_status->syntax_error = NULL; - parser_status->number_brackets = 0; - - /** - * Initialize the scanner state - */ - state->active_token = 0; - state->start = program; - state->start_length = 0; - state->active_file = file_path; - state->active_line = 1; - state->active_char = 1; - state->class_line = 0; - state->class_char = 0; - state->method_line = 0; - state->method_char = 0; - - state->end = state->start; - - token.value = NULL; - - while (0 <= (scanner_status = xx_get_token(state, &token))) { - - state->active_token = token.opcode; - - state->start_length = (program + program_length - state->start); - - switch (token.opcode) { - - case XX_T_IGNORE: - break; - - case XX_T_NAMESPACE: - xx_(xx_parser, XX_NAMESPACE, NULL, parser_status); - break; - case XX_T_ABSTRACT: - xx_(xx_parser, XX_ABSTRACT, NULL, parser_status); - break; - case XX_T_CLASS: - xx_(xx_parser, XX_CLASS, NULL, parser_status); - break; - case XX_T_INTERFACE: - xx_(xx_parser, XX_INTERFACE, NULL, parser_status); - break; - case XX_T_EXTENDS: - xx_(xx_parser, XX_EXTENDS, NULL, parser_status); - break; - case XX_T_IMPLEMENTS: - xx_(xx_parser, XX_IMPLEMENTS, NULL, parser_status); - break; - case XX_T_PUBLIC: - xx_(xx_parser, XX_PUBLIC, NULL, parser_status); - break; - case XX_T_PROTECTED: - xx_(xx_parser, XX_PROTECTED, NULL, parser_status); - break; - case XX_T_PRIVATE: - xx_(xx_parser, XX_PRIVATE, NULL, parser_status); - break; - case XX_T_STATIC: - xx_(xx_parser, XX_STATIC, NULL, parser_status); - break; - case XX_T_INLINE: - xx_(xx_parser, XX_INLINE, NULL, parser_status); - break; - case XX_T_DEPRECATED: - xx_(xx_parser, XX_DEPRECATED, NULL, parser_status); - break; - case XX_T_FINAL: - xx_(xx_parser, XX_FINAL, NULL, parser_status); - break; - case XX_T_INTERNAL: - xx_(xx_parser, XX_INTERNAL, NULL, parser_status); - break; - case XX_T_FUNCTION: - xx_(xx_parser, XX_FUNCTION, NULL, parser_status); - break; - case XX_T_LET: - xx_(xx_parser, XX_LET, NULL, parser_status); - break; - case XX_T_ECHO: - xx_(xx_parser, XX_ECHO, NULL, parser_status); - break; - case XX_T_RETURN: - xx_(xx_parser, XX_RETURN, NULL, parser_status); - break; - case XX_T_REQUIRE: - xx_(xx_parser, XX_REQUIRE, NULL, parser_status); - break; - case XX_T_CLONE: - xx_(xx_parser, XX_CLONE, NULL, parser_status); - break; - case XX_T_EMPTY: - xx_(xx_parser, XX_EMPTY, NULL, parser_status); - break; - case XX_T_IF: - xx_(xx_parser, XX_IF, NULL, parser_status); - break; - case XX_T_ELSE: - xx_(xx_parser, XX_ELSE, NULL, parser_status); - break; - case XX_T_ELSEIF: - xx_(xx_parser, XX_ELSEIF, NULL, parser_status); - break; - case XX_T_LOOP: - xx_(xx_parser, XX_LOOP, NULL, parser_status); - break; - case XX_T_CONTINUE: - xx_(xx_parser, XX_CONTINUE, NULL, parser_status); - break; - case XX_T_BREAK: - xx_(xx_parser, XX_BREAK, NULL, parser_status); - break; - case XX_T_WHILE: - xx_(xx_parser, XX_WHILE, NULL, parser_status); - break; - case XX_T_DO: - xx_(xx_parser, XX_DO, NULL, parser_status); - break; - case XX_T_NEW: - xx_(xx_parser, XX_NEW, NULL, parser_status); - break; - case XX_T_CONST: - xx_(xx_parser, XX_CONST, NULL, parser_status); - break; - case XX_T_TYPEOF: - xx_(xx_parser, XX_TYPEOF, NULL, parser_status); - break; - case XX_T_INSTANCEOF: - xx_(xx_parser, XX_INSTANCEOF, NULL, parser_status); - break; - case XX_T_ISSET: - xx_(xx_parser, XX_ISSET, NULL, parser_status); - break; - case XX_T_UNSET: - xx_(xx_parser, XX_UNSET, NULL, parser_status); - break; - case XX_T_THROW: - xx_(xx_parser, XX_THROW, NULL, parser_status); - break; - case XX_T_FOR: - xx_(xx_parser, XX_FOR, NULL, parser_status); - break; - case XX_T_IN: - xx_(xx_parser, XX_IN, NULL, parser_status); - break; - case XX_T_REVERSE: - xx_(xx_parser, XX_REVERSE, NULL, parser_status); - break; - case XX_T_USE: - xx_(xx_parser, XX_USE, NULL, parser_status); - break; - case XX_T_AS: - xx_(xx_parser, XX_AS, NULL, parser_status); - break; - case XX_T_TRY: - xx_(xx_parser, XX_TRY, NULL, parser_status); - break; - case XX_T_CATCH: - xx_(xx_parser, XX_CATCH, NULL, parser_status); - break; - - case XX_T_DOTCOMMA: - xx_(xx_parser, XX_DOTCOMMA, NULL, parser_status); - break; - case XX_T_COMMA: - xx_(xx_parser, XX_COMMA, NULL, parser_status); - break; - case XX_T_ASSIGN: - xx_(xx_parser, XX_ASSIGN, NULL, parser_status); - break; - case XX_T_ADDASSIGN: - xx_(xx_parser, XX_ADDASSIGN, NULL, parser_status); - break; - case XX_T_SUBASSIGN: - xx_(xx_parser, XX_SUBASSIGN, NULL, parser_status); - break; - case XX_T_DIVASSIGN: - xx_(xx_parser, XX_DIVASSIGN, NULL, parser_status); - break; - case XX_T_MULASSIGN: - xx_(xx_parser, XX_MULASSIGN, NULL, parser_status); - break; - case XX_T_CONCATASSIGN: - xx_(xx_parser, XX_CONCATASSIGN, NULL, parser_status); - break; - case XX_T_MODASSIGN: - xx_(xx_parser, XX_MODASSIGN, NULL, parser_status); - break; - case XX_T_EQUALS: - xx_(xx_parser, XX_EQUALS, NULL, parser_status); - break; - case XX_T_NOTEQUALS: - xx_(xx_parser, XX_NOTEQUALS, NULL, parser_status); - break; - case XX_T_IDENTICAL: - xx_(xx_parser, XX_IDENTICAL, NULL, parser_status); - break; - case XX_T_NOTIDENTICAL: - xx_(xx_parser, XX_NOTIDENTICAL, NULL, parser_status); - break; - case XX_T_LESS: - xx_(xx_parser, XX_LESS, NULL, parser_status); - break; - case XX_T_GREATER: - xx_(xx_parser, XX_GREATER, NULL, parser_status); - break; - case XX_T_LESSEQUAL: - xx_(xx_parser, XX_LESSEQUAL, NULL, parser_status); - break; - case XX_T_GREATEREQUAL: - xx_(xx_parser, XX_GREATEREQUAL, NULL, parser_status); - break; - case XX_T_QUESTION: - xx_(xx_parser, XX_QUESTION, NULL, parser_status); - break; - case XX_T_COLON: - xx_(xx_parser, XX_COLON, NULL, parser_status); - break; - case XX_T_ARROW: - xx_(xx_parser, XX_ARROW, NULL, parser_status); - break; - case XX_T_DOUBLEARROW: - xx_(xx_parser, XX_DOUBLEARROW, NULL, parser_status); - break; - case XX_T_DOUBLECOLON: - xx_(xx_parser, XX_DOUBLECOLON, NULL, parser_status); - break; - case XX_T_INCLUSIVE_RANGE: - xx_(xx_parser, XX_INCLUSIVE_RANGE, NULL, parser_status); - break; - case XX_T_EXCLUSIVE_RANGE: - xx_(xx_parser, XX_EXCLUSIVE_RANGE, NULL, parser_status); - break; - case XX_T_NOT: - xx_(xx_parser, XX_NOT, NULL, parser_status); - break; - case XX_T_BITWISE_NOT: - xx_(xx_parser, XX_BITWISE_NOT, NULL, parser_status); - break; - case XX_T_FETCH: - xx_(xx_parser, XX_FETCH, NULL, parser_status); - break; - case XX_T_SWITCH: - xx_(xx_parser, XX_SWITCH, NULL, parser_status); - break; - case XX_T_CASE: - xx_(xx_parser, XX_CASE, NULL, parser_status); - break; - case XX_T_DEFAULT: - xx_(xx_parser, XX_DEFAULT, NULL, parser_status); - break; - - case XX_T_PARENTHESES_OPEN: - xx_(xx_parser, XX_PARENTHESES_OPEN, NULL, parser_status); - break; - case XX_T_PARENTHESES_CLOSE: - xx_(xx_parser, XX_PARENTHESES_CLOSE, NULL, parser_status); - break; - - case XX_T_BRACKET_OPEN: - parser_status->number_brackets++; - xx_(xx_parser, XX_BRACKET_OPEN, NULL, parser_status); - break; - case XX_T_BRACKET_CLOSE: - parser_status->number_brackets--; - xx_(xx_parser, XX_BRACKET_CLOSE, NULL, parser_status); - break; - - case XX_T_SBRACKET_OPEN: - xx_(xx_parser, XX_SBRACKET_OPEN, NULL, parser_status); - break; - case XX_T_SBRACKET_CLOSE: - xx_(xx_parser, XX_SBRACKET_CLOSE, NULL, parser_status); - break; - - case XX_T_NULL: - xx_(xx_parser, XX_NULL, NULL, parser_status); - break; - case XX_T_TRUE: - xx_(xx_parser, XX_TRUE, NULL, parser_status); - break; - case XX_T_FALSE: - xx_(xx_parser, XX_FALSE, NULL, parser_status); - break; - case XX_T_COMMENT: - if (parser_status->number_brackets <= 1) { - xx_parse_with_token(xx_parser, XX_T_COMMENT, XX_COMMENT, &token, parser_status); - } else { - efree(token.value); - token.value = NULL; - } - break; - case XX_T_CBLOCK: - xx_parse_with_token(xx_parser, XX_T_CBLOCK, XX_CBLOCK, &token, parser_status); - break; - case XX_T_TYPE_INTEGER: - xx_(xx_parser, XX_TYPE_INTEGER, NULL, parser_status); - break; - case XX_T_TYPE_UINTEGER: - xx_(xx_parser, XX_TYPE_UINTEGER, NULL, parser_status); - break; - case XX_T_TYPE_CHAR: - xx_(xx_parser, XX_TYPE_CHAR, NULL, parser_status); - break; - case XX_T_TYPE_UCHAR: - xx_(xx_parser, XX_TYPE_UCHAR, NULL, parser_status); - break; - case XX_T_TYPE_LONG: - xx_(xx_parser, XX_TYPE_LONG, NULL, parser_status); - break; - case XX_T_TYPE_ULONG: - xx_(xx_parser, XX_TYPE_ULONG, NULL, parser_status); - break; - case XX_T_TYPE_DOUBLE: - xx_(xx_parser, XX_TYPE_DOUBLE, NULL, parser_status); - break; - case XX_T_TYPE_STRING: - xx_(xx_parser, XX_TYPE_STRING, NULL, parser_status); - break; - case XX_T_TYPE_BOOL: - xx_(xx_parser, XX_TYPE_BOOL, NULL, parser_status); - break; - case XX_T_TYPE_ARRAY: - xx_(xx_parser, XX_TYPE_ARRAY, NULL, parser_status); - break; - case XX_T_TYPE_VAR: - xx_(xx_parser, XX_TYPE_VAR, NULL, parser_status); - break; - case XX_T_TYPE_OBJECT: - xx_(xx_parser, XX_TYPE_OBJECT, NULL, parser_status); - break; - case XX_T_TYPE_RESOURCE: - xx_(xx_parser, XX_TYPE_RESOURCE, NULL, parser_status); - break; - case XX_T_TYPE_CALLABLE: - xx_(xx_parser, XX_TYPE_CALLABLE, NULL, parser_status); - break; - - case XX_T_ADD: - xx_(xx_parser, XX_ADD, NULL, parser_status); - break; - case XX_T_SUB: - xx_(xx_parser, XX_SUB, NULL, parser_status); - break; - case XX_T_MUL: - xx_(xx_parser, XX_MUL, NULL, parser_status); - break; - case XX_T_DIV: - xx_(xx_parser, XX_DIV, NULL, parser_status); - break; - case XX_T_MOD: - xx_(xx_parser, XX_MOD, NULL, parser_status); - break; - case XX_T_DOT: - xx_(xx_parser, XX_CONCAT, NULL, parser_status); - break; - case XX_T_INCR: - xx_(xx_parser, XX_INCR, NULL, parser_status); - break; - case XX_T_DECR: - xx_(xx_parser, XX_DECR, NULL, parser_status); - break; - case XX_T_AND: - xx_(xx_parser, XX_AND, NULL, parser_status); - break; - case XX_T_OR: - xx_(xx_parser, XX_OR, NULL, parser_status); - break; - case XX_T_BITWISE_AND: - xx_(xx_parser, XX_BITWISE_AND, NULL, parser_status); - break; - case XX_T_BITWISE_OR: - xx_(xx_parser, XX_BITWISE_OR, NULL, parser_status); - break; - case XX_T_BITWISE_XOR: - xx_(xx_parser, XX_BITWISE_XOR, NULL, parser_status); - break; - case XX_T_BITWISE_SHIFTLEFT: - xx_(xx_parser, XX_BITWISE_SHIFTLEFT, NULL, parser_status); - break; - case XX_T_BITWISE_SHIFTRIGHT: - xx_(xx_parser, XX_BITWISE_SHIFTRIGHT, NULL, parser_status); - break; - case XX_T_INTEGER: - xx_parse_with_token(xx_parser, XX_T_INTEGER, XX_INTEGER, &token, parser_status); - break; - case XX_T_DOUBLE: - xx_parse_with_token(xx_parser, XX_T_DOUBLE, XX_DOUBLE, &token, parser_status); - break; - case XX_T_STRING: - xx_parse_with_token(xx_parser, XX_T_STRING, XX_STRING, &token, parser_status); - break; - case XX_T_ISTRING: - xx_parse_with_token(xx_parser, XX_T_ISTRING, XX_ISTRING, &token, parser_status); - break; - case XX_T_CHAR: - xx_parse_with_token(xx_parser, XX_T_CHAR, XX_CHAR, &token, parser_status); - break; - case XX_T_IDENTIFIER: - xx_parse_with_token(xx_parser, XX_T_IDENTIFIER, XX_IDENTIFIER, &token, parser_status); - break; - case XX_T_CONSTANT: - xx_parse_with_token(xx_parser, XX_T_CONSTANT, XX_CONSTANT, &token, parser_status); - break; - - case XX_T_VOID: - xx_(xx_parser, XX_VOID, NULL, parser_status); - break; - case XX_T_LIKELY: - xx_(xx_parser, XX_LIKELY, NULL, parser_status); - break; - case XX_T_UNLIKELY: - xx_(xx_parser, XX_UNLIKELY, NULL, parser_status); - break; - - default: - parser_status->status = XX_PARSING_FAILED; - if (!*error_msg) { - int length = (48 + strlen(file_path)); - error = emalloc(sizeof(char) * length); - snprintf(error, length, "Scanner: unknown opcode %d on in %s line %d", token.opcode, file_path, state->active_line); - //ZVAL_STRING(*error_msg, error, 1); - efree(error); - } - break; - } - - if (parser_status->status != XX_PARSING_OK) { - status = FAILURE; - break; - } - - state->end = state->start; - } - - if (status != FAILURE) { - switch (scanner_status) { - case XX_SCANNER_RETCODE_ERR: - case XX_SCANNER_RETCODE_IMPOSSIBLE: - { - error = emalloc(sizeof(char) * 1024); - if (state->start) { - snprintf(error, 1024, "Scanner error: %d %s", scanner_status, state->start); - } else { - snprintf(error, 1024, "Scanner error: %d", scanner_status); - } -#if PHP_VERSION_ID < 70000 - ALLOC_INIT_ZVAL(*error_msg); - ZVAL_STRING(*error_msg, error, 1); -#else - ZVAL_STRING(*error_msg, error); -#endif - efree(error); - status = FAILURE; - } - break; - default: - xx_(xx_parser, 0, NULL, parser_status); - } - } - - state->active_token = 0; - state->start = NULL; - - if (parser_status->status != XX_PARSING_OK) { - status = FAILURE; - if (parser_status->syntax_error) { -#if PHP_VERSION_ID < 70000 - if (!*error_msg) { - ALLOC_INIT_ZVAL(*error_msg); - ZVAL_STRING(*error_msg, parser_status->syntax_error, 1); - } -#else - if (Z_TYPE_P(*error_msg) == IS_UNDEF) { - ZVAL_STRING(*error_msg, parser_status->syntax_error); - } -#endif - efree(parser_status->syntax_error); - } - } - - if (status != FAILURE) { - if (parser_status->status == XX_PARSING_OK) { -#if PHP_VERSION_ID >= 70000 - ZVAL_ZVAL(return_value, &parser_status->ret, 1, 1); -#else - if (parser_status->ret) { - ZVAL_ZVAL(return_value, parser_status->ret, 0, 0); - ZVAL_NULL(parser_status->ret); - zval_ptr_dtor(&parser_status->ret); - } else { - array_init(return_value); - } -#endif - } - } - - xx_Free(xx_parser, xx_wrapper_free); - - efree(parser_status); - efree(state); -} diff --git a/parser/parser/build_linux.sh b/parser/parser/build_linux.sh deleted file mode 100755 index 914f6356c9..0000000000 --- a/parser/parser/build_linux.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -rm -f *.o *.lo - -#Compile lemon -if [ ! -f lemon ]; then - gcc -w lemon.c -o lemon -fi - -if ! command -v re2c > /dev/null; then - echo "error: re2c is not installed" - exit 2 -fi - -re2c -o scanner.c scanner.re -if [ ! -f scanner.c ]; then - echo "error: re2c is not installed" - exit 2 -fi - -rm -f parser.o -rm -f parser.lo -rm -f scanner.o -rm -f scanner.lo - -if [ ! -f lemon ]; then - gcc -g lemon.c -o lemon -fi - -re2c -o scanner.c scanner.re - -./lemon -s parser.php5.lemon -if [ ! -f parser.php5.c ]; then - echo "error: couldn't generate parser" - exit 2 -fi - -./lemon -s parser.php7.lemon -if [ ! -f parser.php7.c ]; then - echo "error: couldn't generate parser" - exit 2 -fi - -echo "#include " > parser.c -echo "#if PHP_VERSION_ID < 70000" >> parser.c -cat parser.php5.c >> parser.c -echo "#else" >> parser.c -cat parser.php7.c >> parser.c -echo "#endif" >> parser.c -cat base.c >> parser.c - -sed s/"\#line"/"\/\/"/g scanner.c > xx && mv -f xx scanner.c -sed s/"#line"/"\/\/"/g parser.c > xx && mv -f xx parser.c diff --git a/parser/parser/build_win32.bat b/parser/parser/build_win32.bat deleted file mode 100644 index 142a7008c7..0000000000 --- a/parser/parser/build_win32.bat +++ /dev/null @@ -1,7 +0,0 @@ -REM Build Lemon -cl lemon.c -del parser.c parser.h scanner.c -re2c -o scanner.c scanner.re -lemon -s parser.php5.lemon -type parser.php5.c > parser.c -type base.c >> parser.c diff --git a/parser/parser/lemon.c b/parser/parser/lemon.c deleted file mode 100644 index 6a97ef9fff..0000000000 --- a/parser/parser/lemon.c +++ /dev/null @@ -1,4564 +0,0 @@ -/* -** This file contains all sources (including headers) to the LEMON -** LALR(1) parser generator. The sources have been combined into a -** single file to make it easy to include LEMON in the source tree -** and Makefile of another program. -** -** The author of this program disclaims copyright. -*/ -#include -#include -#include -#include -#include - -#ifndef __WIN32__ -# if defined(_WIN32) || defined(WIN32) -# define __WIN32__ -# endif -#endif - -/* #define PRIVATE static */ -#define PRIVATE - -#ifdef TEST -#define MAXRHS 5 /* Set low to exercise exception code */ -#else -#define MAXRHS 1000 -#endif - -char *msort(); -extern void *malloc(); - -/******** From the file "action.h" *************************************/ -struct action *Action_new(); -struct action *Action_sort(); - -/********* From the file "assert.h" ************************************/ -void myassert(); -#ifndef NDEBUG -# define assert(X) if(!(X))myassert(__FILE__,__LINE__) -#else -# define assert(X) -#endif - -/********** From the file "build.h" ************************************/ -void FindRulePrecedences(); -void FindFirstSets(); -void FindStates(); -void FindLinks(); -void FindFollowSets(); -void FindActions(); - -/********* From the file "configlist.h" *********************************/ -void Configlist_init(/* void */); -struct config *Configlist_add(/* struct rule *, int */); -struct config *Configlist_addbasis(/* struct rule *, int */); -void Configlist_closure(/* void */); -void Configlist_sort(/* void */); -void Configlist_sortbasis(/* void */); -struct config *Configlist_return(/* void */); -struct config *Configlist_basis(/* void */); -void Configlist_eat(/* struct config * */); -void Configlist_reset(/* void */); - -/********* From the file "error.h" ***************************************/ -void ErrorMsg(const char *, int,const char *, ...); - -/****** From the file "option.h" ******************************************/ -struct s_options { - enum { OPT_FLAG=1, OPT_INT, OPT_DBL, OPT_STR, - OPT_FFLAG, OPT_FINT, OPT_FDBL, OPT_FSTR} type; - char *label; - char *arg; - char *message; -}; -int OptInit(/* char**,struct s_options*,FILE* */); -int OptNArgs(/* void */); -char *OptArg(/* int */); -void OptErr(/* int */); -void OptPrint(/* void */); - -/******** From the file "parse.h" *****************************************/ -void Parse(/* struct lemon *lemp */); - -/********* From the file "plink.h" ***************************************/ -struct plink *Plink_new(/* void */); -void Plink_add(/* struct plink **, struct config * */); -void Plink_copy(/* struct plink **, struct plink * */); -void Plink_delete(/* struct plink * */); - -/********** From the file "report.h" *************************************/ -void Reprint(/* struct lemon * */); -void ReportOutput(/* struct lemon * */); -void ReportTable(/* struct lemon * */); -void ReportHeader(/* struct lemon * */); -void CompressTables(/* struct lemon * */); - -/********** From the file "set.h" ****************************************/ -void SetSize(/* int N */); /* All sets will be of size N */ -char *SetNew(/* void */); /* A new set for element 0..N */ -void SetFree(/* char* */); /* Deallocate a set */ - -int SetAdd(/* char*,int */); /* Add element to a set */ -int SetUnion(/* char *A,char *B */); /* A <- A U B, thru element N */ - -#define SetFind(X,Y) (X[Y]) /* True if Y is in set X */ - -/********** From the file "struct.h" *************************************/ -/* -** Principal data structures for the LEMON parser generator. -*/ - -typedef enum {B_FALSE=0, B_TRUE} Boolean; - -/* Symbols (terminals and nonterminals) of the grammar are stored -** in the following: */ -struct symbol { - char *name; /* Name of the symbol */ - int index; /* Index number for this symbol */ - enum { - TERMINAL, - NONTERMINAL - } type; /* Symbols are all either TERMINALS or NTs */ - struct rule *rule; /* Linked list of rules of this (if an NT) */ - struct symbol *fallback; /* fallback token in case this token doesn't parse */ - int prec; /* Precedence if defined (-1 otherwise) */ - enum e_assoc { - LEFT, - RIGHT, - NONE, - UNK - } assoc; /* Associativity if predecence is defined */ - char *firstset; /* First-set for all rules of this symbol */ - Boolean lambda; /* True if NT and can generate an empty string */ - char *destructor; /* Code which executes whenever this symbol is - ** popped from the stack during error processing */ - int destructorln; /* Line number of destructor code */ - char *datatype; /* The data type of information held by this - ** object. Only used if type==NONTERMINAL */ - int dtnum; /* The data type number. In the parser, the value - ** stack is a union. The .yy%d element of this - ** union is the correct data type for this object */ -}; - -/* Each production rule in the grammar is stored in the following -** structure. */ -struct rule { - struct symbol *lhs; /* Left-hand side of the rule */ - char *lhsalias; /* Alias for the LHS (NULL if none) */ - int ruleline; /* Line number for the rule */ - int nrhs; /* Number of RHS symbols */ - struct symbol **rhs; /* The RHS symbols */ - char **rhsalias; /* An alias for each RHS symbol (NULL if none) */ - int line; /* Line number at which code begins */ - char *code; /* The code executed when this rule is reduced */ - struct symbol *precsym; /* Precedence symbol for this rule */ - int index; /* An index number for this rule */ - Boolean canReduce; /* True if this rule is ever reduced */ - struct rule *nextlhs; /* Next rule with the same LHS */ - struct rule *next; /* Next rule in the global list */ -}; - -/* A configuration is a production rule of the grammar together with -** a mark (dot) showing how much of that rule has been processed so far. -** Configurations also contain a follow-set which is a list of terminal -** symbols which are allowed to immediately follow the end of the rule. -** Every configuration is recorded as an instance of the following: */ -struct config { - struct rule *rp; /* The rule upon which the configuration is based */ - int dot; /* The parse point */ - char *fws; /* Follow-set for this configuration only */ - struct plink *fplp; /* Follow-set forward propagation links */ - struct plink *bplp; /* Follow-set backwards propagation links */ - struct state *stp; /* Pointer to state which contains this */ - enum { - COMPLETE, /* The status is used during followset and */ - INCOMPLETE /* shift computations */ - } status; - struct config *next; /* Next configuration in the state */ - struct config *bp; /* The next basis configuration */ -}; - -/* Every shift or reduce operation is stored as one of the following */ -struct action { - struct symbol *sp; /* The look-ahead symbol */ - enum e_action { - SHIFT, - ACCEPT, - REDUCE, - ERROR, - CONFLICT, /* Was a reduce, but part of a conflict */ - SH_RESOLVED, /* Was a shift. Precedence resolved conflict */ - RD_RESOLVED, /* Was reduce. Precedence resolved conflict */ - NOT_USED /* Deleted by compression */ - } type; - union { - struct state *stp; /* The new state, if a shift */ - struct rule *rp; /* The rule, if a reduce */ - } x; - struct action *next; /* Next action for this state */ - struct action *collide; /* Next action with the same hash */ -}; - -/* Each state of the generated parser's finite state machine -** is encoded as an instance of the following structure. */ -struct state { - struct config *bp; /* The basis configurations for this state */ - struct config *cfp; /* All configurations in this set */ - int index; /* Sequencial number for this state */ - struct action *ap; /* Array of actions for this state */ - int nTknAct, nNtAct; /* Number of actions on terminals and nonterminals */ - int iTknOfst, iNtOfst; /* yy_action[] offset for terminals and nonterms */ - int iDflt; /* Default action */ -}; -#define NO_OFFSET (-2147483647) - -/* A followset propagation link indicates that the contents of one -** configuration followset should be propagated to another whenever -** the first changes. */ -struct plink { - struct config *cfp; /* The configuration to which linked */ - struct plink *next; /* The next propagate link */ -}; - -/* The state vector for the entire parser generator is recorded as -** follows. (LEMON uses no global variables and makes little use of -** static variables. Fields in the following structure can be thought -** of as begin global variables in the program.) */ -struct lemon { - struct state **sorted; /* Table of states sorted by state number */ - struct rule *rule; /* List of all rules */ - int nstate; /* Number of states */ - int nrule; /* Number of rules */ - int nsymbol; /* Number of terminal and nonterminal symbols */ - int nterminal; /* Number of terminal symbols */ - struct symbol **symbols; /* Sorted array of pointers to symbols */ - int errorcnt; /* Number of errors */ - struct symbol *errsym; /* The error symbol */ - char *name; /* Name of the generated parser */ - char *arg; /* Declaration of the 3th argument to parser */ - char *tokentype; /* Type of terminal symbols in the parser stack */ - char *vartype; /* The default type of non-terminal symbols */ - char *start; /* Name of the start symbol for the grammar */ - char *stacksize; /* Size of the parser stack */ - char *include; /* Code to put at the start of the C file */ - int includeln; /* Line number for start of include code */ - char *error; /* Code to execute when an error is seen */ - int errorln; /* Line number for start of error code */ - char *overflow; /* Code to execute on a stack overflow */ - int overflowln; /* Line number for start of overflow code */ - char *failure; /* Code to execute on parser failure */ - int failureln; /* Line number for start of failure code */ - char *accept; /* Code to execute when the parser excepts */ - int acceptln; /* Line number for the start of accept code */ - char *extracode; /* Code appended to the generated file */ - int extracodeln; /* Line number for the start of the extra code */ - char *tokendest; /* Code to execute to destroy token data */ - int tokendestln; /* Line number for token destroyer code */ - char *vardest; /* Code for the default non-terminal destructor */ - int vardestln; /* Line number for default non-term destructor code*/ - char *filename; /* Name of the input file */ - char *outname; /* Name of the current output file */ - char *tokenprefix; /* A prefix added to token names in the .h file */ - int nconflict; /* Number of parsing conflicts */ - int tablesize; /* Size of the parse tables */ - int basisflag; /* Print only basis configurations */ - int has_fallback; /* True if any %fallback is seen in the grammer */ - char *argv0; /* Name of the program */ -}; - -#define MemoryCheck(X) if((X)==0){ \ - extern void memory_error(); \ - memory_error(); \ -} - -/**************** From the file "table.h" *********************************/ -/* -** All code in this file has been automatically generated -** from a specification in the file -** "table.q" -** by the associative array code building program "aagen". -** Do not edit this file! Instead, edit the specification -** file, then rerun aagen. -*/ -/* -** Code for processing tables in the LEMON parser generator. -*/ - -/* Routines for handling a strings */ - -char *Strsafe(); - -void Strsafe_init(/* void */); -int Strsafe_insert(/* char * */); -char *Strsafe_find(/* char * */); - -/* Routines for handling symbols of the grammar */ - -struct symbol *Symbol_new(); -int Symbolcmpp(/* struct symbol **, struct symbol ** */); -void Symbol_init(/* void */); -int Symbol_insert(/* struct symbol *, char * */); -struct symbol *Symbol_find(/* char * */); -struct symbol *Symbol_Nth(/* int */); -int Symbol_count(/* */); -struct symbol **Symbol_arrayof(/* */); - -/* Routines to manage the state table */ - -int Configcmp(/* struct config *, struct config * */); -struct state *State_new(); -void State_init(/* void */); -int State_insert(/* struct state *, struct config * */); -struct state *State_find(/* struct config * */); -struct state **State_arrayof(/* */); - -/* Routines used for efficiency in Configlist_add */ - -void Configtable_init(/* void */); -int Configtable_insert(/* struct config * */); -struct config *Configtable_find(/* struct config * */); -void Configtable_clear(/* int(*)(struct config *) */); -/****************** From the file "action.c" *******************************/ -/* -** Routines processing parser actions in the LEMON parser generator. -*/ - -/* Allocate a new parser action */ -struct action *Action_new(){ - static struct action *freelist = 0; - struct action *new; - - if( freelist==0 ){ - int i; - int amt = 100; - freelist = (struct action *)malloc( sizeof(struct action)*amt ); - if( freelist==0 ){ - fprintf(stderr,"Unable to allocate memory for a new parser action."); - exit(1); - } - for(i=0; inext; - return new; -} - -/* Compare two actions */ -static int actioncmp(ap1,ap2) -struct action *ap1; -struct action *ap2; -{ - int rc; - rc = ap1->sp->index - ap2->sp->index; - if( rc==0 ) rc = (int)ap1->type - (int)ap2->type; - if( rc==0 ){ - assert( ap1->type==REDUCE || ap1->type==RD_RESOLVED || ap1->type==CONFLICT); - assert( ap2->type==REDUCE || ap2->type==RD_RESOLVED || ap2->type==CONFLICT); - rc = ap1->x.rp->index - ap2->x.rp->index; - } - return rc; -} - -/* Sort parser actions */ -struct action *Action_sort(ap) -struct action *ap; -{ - ap = (struct action *)msort((char *)ap,(char **)&ap->next,actioncmp); - return ap; -} - -void Action_add(app,type,sp,arg) -struct action **app; -enum e_action type; -struct symbol *sp; -char *arg; -{ - struct action *new; - new = Action_new(); - new->next = *app; - *app = new; - new->type = type; - new->sp = sp; - if( type==SHIFT ){ - new->x.stp = (struct state *)arg; - }else{ - new->x.rp = (struct rule *)arg; - } -} -/********************** New code to implement the "acttab" module ***********/ -/* -** This module implements routines use to construct the yy_action[] table. -*/ - -/* -** The state of the yy_action table under construction is an instance of -** the following structure -*/ -typedef struct acttab acttab; -struct acttab { - int nAction; /* Number of used slots in aAction[] */ - int nActionAlloc; /* Slots allocated for aAction[] */ - struct { - int lookahead; /* Value of the lookahead token */ - int action; /* Action to take on the given lookahead */ - } *aAction, /* The yy_action[] table under construction */ - *aLookahead; /* A single new transaction set */ - int mnLookahead; /* Minimum aLookahead[].lookahead */ - int mnAction; /* Action associated with mnLookahead */ - int mxLookahead; /* Maximum aLookahead[].lookahead */ - int nLookahead; /* Used slots in aLookahead[] */ - int nLookaheadAlloc; /* Slots allocated in aLookahead[] */ -}; - -/* Return the number of entries in the yy_action table */ -#define acttab_size(X) ((X)->nAction) - -/* The value for the N-th entry in yy_action */ -#define acttab_yyaction(X,N) ((X)->aAction[N].action) - -/* The value for the N-th entry in yy_lookahead */ -#define acttab_yylookahead(X,N) ((X)->aAction[N].lookahead) - -/* Free all memory associated with the given acttab */ -void acttab_free(acttab *p){ - free( p->aAction ); - free( p->aLookahead ); - free( p ); -} - -/* Allocate a new acttab structure */ -acttab *acttab_alloc(void){ - acttab *p = malloc( sizeof(*p) ); - if( p==0 ){ - fprintf(stderr,"Unable to allocate memory for a new acttab."); - exit(1); - } - memset(p, 0, sizeof(*p)); - return p; -} - -/* Add a new action to the current transaction set -*/ -void acttab_action(acttab *p, int lookahead, int action){ - if( p->nLookahead>=p->nLookaheadAlloc ){ - p->nLookaheadAlloc += 25; - p->aLookahead = realloc( p->aLookahead, - sizeof(p->aLookahead[0])*p->nLookaheadAlloc ); - if( p->aLookahead==0 ){ - fprintf(stderr,"malloc failed\n"); - exit(1); - } - } - if( p->nLookahead==0 ){ - p->mxLookahead = lookahead; - p->mnLookahead = lookahead; - p->mnAction = action; - }else{ - if( p->mxLookaheadmxLookahead = lookahead; - if( p->mnLookahead>lookahead ){ - p->mnLookahead = lookahead; - p->mnAction = action; - } - } - p->aLookahead[p->nLookahead].lookahead = lookahead; - p->aLookahead[p->nLookahead].action = action; - p->nLookahead++; -} - -/* -** Add the transaction set built up with prior calls to acttab_action() -** into the current action table. Then reset the transaction set back -** to an empty set in preparation for a new round of acttab_action() calls. -** -** Return the offset into the action table of the new transaction. -*/ -int acttab_insert(acttab *p){ - int i, j, k, n; - assert( p->nLookahead>0 ); - - /* Make sure we have enough space to hold the expanded action table - ** in the worst case. The worst case occurs if the transaction set - ** must be appended to the current action table - */ - n = p->mxLookahead + 1; - if( p->nAction + n >= p->nActionAlloc ){ - int oldAlloc = p->nActionAlloc; - p->nActionAlloc = p->nAction + n + p->nActionAlloc + 20; - p->aAction = realloc( p->aAction, - sizeof(p->aAction[0])*p->nActionAlloc); - if( p->aAction==0 ){ - fprintf(stderr,"malloc failed\n"); - exit(1); - } - for(i=oldAlloc; inActionAlloc; i++){ - p->aAction[i].lookahead = -1; - p->aAction[i].action = -1; - } - } - - /* Scan the existing action table looking for an offset where we can - ** insert the current transaction set. Fall out of the loop when that - ** offset is found. In the worst case, we fall out of the loop when - ** i reaches p->nAction, which means we append the new transaction set. - ** - ** i is the index in p->aAction[] where p->mnLookahead is inserted. - */ - for(i=0; inAction+p->mnLookahead; i++){ - if( p->aAction[i].lookahead<0 ){ - for(j=0; jnLookahead; j++){ - k = p->aLookahead[j].lookahead - p->mnLookahead + i; - if( k<0 ) break; - if( p->aAction[k].lookahead>=0 ) break; - } - if( jnLookahead ) continue; - for(j=0; jnAction; j++){ - if( p->aAction[j].lookahead==j+p->mnLookahead-i ) break; - } - if( j==p->nAction ){ - break; /* Fits in empty slots */ - } - }else if( p->aAction[i].lookahead==p->mnLookahead ){ - if( p->aAction[i].action!=p->mnAction ) continue; - for(j=0; jnLookahead; j++){ - k = p->aLookahead[j].lookahead - p->mnLookahead + i; - if( k<0 || k>=p->nAction ) break; - if( p->aLookahead[j].lookahead!=p->aAction[k].lookahead ) break; - if( p->aLookahead[j].action!=p->aAction[k].action ) break; - } - if( jnLookahead ) continue; - n = 0; - for(j=0; jnAction; j++){ - if( p->aAction[j].lookahead<0 ) continue; - if( p->aAction[j].lookahead==j+p->mnLookahead-i ) n++; - } - if( n==p->nLookahead ){ - break; /* Same as a prior transaction set */ - } - } - } - /* Insert transaction set at index i. */ - for(j=0; jnLookahead; j++){ - k = p->aLookahead[j].lookahead - p->mnLookahead + i; - p->aAction[k] = p->aLookahead[j]; - if( k>=p->nAction ) p->nAction = k+1; - } - p->nLookahead = 0; - - /* Return the offset that is added to the lookahead in order to get the - ** index into yy_action of the action */ - return i - p->mnLookahead; -} - -/********************** From the file "assert.c" ****************************/ -/* -** A more efficient way of handling assertions. -*/ -void myassert(file,line) -char *file; -int line; -{ - fprintf(stderr,"Assertion failed on line %d of file \"%s\"\n",line,file); - exit(1); -} -/********************** From the file "build.c" *****************************/ -/* -** Routines to construction the finite state machine for the LEMON -** parser generator. -*/ - -/* Find a precedence symbol of every rule in the grammar. -** -** Those rules which have a precedence symbol coded in the input -** grammar using the "[symbol]" construct will already have the -** rp->precsym field filled. Other rules take as their precedence -** symbol the first RHS symbol with a defined precedence. If there -** are not RHS symbols with a defined precedence, the precedence -** symbol field is left blank. -*/ -void FindRulePrecedences(xp) -struct lemon *xp; -{ - struct rule *rp; - for(rp=xp->rule; rp; rp=rp->next){ - if( rp->precsym==0 ){ - int i; - for(i=0; inrhs; i++){ - if( rp->rhs[i]->prec>=0 ){ - rp->precsym = rp->rhs[i]; - break; - } - } - } - } - return; -} - -/* Find all nonterminals which will generate the empty string. -** Then go back and compute the first sets of every nonterminal. -** The first set is the set of all terminal symbols which can begin -** a string generated by that nonterminal. -*/ -void FindFirstSets(lemp) -struct lemon *lemp; -{ - int i; - struct rule *rp; - int progress; - - for(i=0; insymbol; i++){ - lemp->symbols[i]->lambda = B_FALSE; - } - for(i=lemp->nterminal; insymbol; i++){ - lemp->symbols[i]->firstset = SetNew(); - } - - /* First compute all lambdas */ - do{ - progress = 0; - for(rp=lemp->rule; rp; rp=rp->next){ - if( rp->lhs->lambda ) continue; - for(i=0; inrhs; i++){ - if( rp->rhs[i]->lambda==B_FALSE ) break; - } - if( i==rp->nrhs ){ - rp->lhs->lambda = B_TRUE; - progress = 1; - } - } - }while( progress ); - - /* Now compute all first sets */ - do{ - struct symbol *s1, *s2; - progress = 0; - for(rp=lemp->rule; rp; rp=rp->next){ - s1 = rp->lhs; - for(i=0; inrhs; i++){ - s2 = rp->rhs[i]; - if( s2->type==TERMINAL ){ - progress += SetAdd(s1->firstset,s2->index); - break; - }else if( s1==s2 ){ - if( s1->lambda==B_FALSE ) break; - }else{ - progress += SetUnion(s1->firstset,s2->firstset); - if( s2->lambda==B_FALSE ) break; - } - } - } - }while( progress ); - return; -} - -/* Compute all LR(0) states for the grammar. Links -** are added to between some states so that the LR(1) follow sets -** can be computed later. -*/ -PRIVATE struct state *getstate(/* struct lemon * */); /* forward reference */ -void FindStates(lemp) -struct lemon *lemp; -{ - struct symbol *sp; - struct rule *rp; - - Configlist_init(); - - /* Find the start symbol */ - if( lemp->start ){ - sp = Symbol_find(lemp->start); - if( sp==0 ){ - ErrorMsg(lemp->filename,0, -"The specified start symbol \"%s\" is not \ -in a nonterminal of the grammar. \"%s\" will be used as the start \ -symbol instead.",lemp->start,lemp->rule->lhs->name); - lemp->errorcnt++; - sp = lemp->rule->lhs; - } - }else{ - sp = lemp->rule->lhs; - } - - /* Make sure the start symbol doesn't occur on the right-hand side of - ** any rule. Report an error if it does. (YACC would generate a new - ** start symbol in this case.) */ - for(rp=lemp->rule; rp; rp=rp->next){ - int i; - for(i=0; inrhs; i++){ - if( rp->rhs[i]==sp ){ - ErrorMsg(lemp->filename,0, -"The start symbol \"%s\" occurs on the \ -right-hand side of a rule. This will result in a parser which \ -does not work properly.",sp->name); - lemp->errorcnt++; - } - } - } - - /* The basis configuration set for the first state - ** is all rules which have the start symbol as their - ** left-hand side */ - for(rp=sp->rule; rp; rp=rp->nextlhs){ - struct config *newcfp; - newcfp = Configlist_addbasis(rp,0); - SetAdd(newcfp->fws,0); - } - - /* Compute the first state. All other states will be - ** computed automatically during the computation of the first one. - ** The returned pointer to the first state is not used. */ - (void)getstate(lemp); - return; -} - -/* Return a pointer to a state which is described by the configuration -** list which has been built from calls to Configlist_add. -*/ -PRIVATE void buildshifts(/* struct lemon *, struct state * */); /* Forwd ref */ -PRIVATE struct state *getstate(lemp) -struct lemon *lemp; -{ - struct config *cfp, *bp; - struct state *stp; - - /* Extract the sorted basis of the new state. The basis was constructed - ** by prior calls to "Configlist_addbasis()". */ - Configlist_sortbasis(); - bp = Configlist_basis(); - - /* Get a state with the same basis */ - stp = State_find(bp); - if( stp ){ - /* A state with the same basis already exists! Copy all the follow-set - ** propagation links from the state under construction into the - ** preexisting state, then return a pointer to the preexisting state */ - struct config *x, *y; - for(x=bp, y=stp->bp; x && y; x=x->bp, y=y->bp){ - Plink_copy(&y->bplp,x->bplp); - Plink_delete(x->fplp); - x->fplp = x->bplp = 0; - } - cfp = Configlist_return(); - Configlist_eat(cfp); - }else{ - /* This really is a new state. Construct all the details */ - Configlist_closure(lemp); /* Compute the configuration closure */ - Configlist_sort(); /* Sort the configuration closure */ - cfp = Configlist_return(); /* Get a pointer to the config list */ - stp = State_new(); /* A new state structure */ - MemoryCheck(stp); - stp->bp = bp; /* Remember the configuration basis */ - stp->cfp = cfp; /* Remember the configuration closure */ - stp->index = lemp->nstate++; /* Every state gets a sequence number */ - stp->ap = 0; /* No actions, yet. */ - State_insert(stp,stp->bp); /* Add to the state table */ - buildshifts(lemp,stp); /* Recursively compute successor states */ - } - return stp; -} - -/* Construct all successor states to the given state. A "successor" -** state is any state which can be reached by a shift action. -*/ -PRIVATE void buildshifts(lemp,stp) -struct lemon *lemp; -struct state *stp; /* The state from which successors are computed */ -{ - struct config *cfp; /* For looping thru the config closure of "stp" */ - struct config *bcfp; /* For the inner loop on config closure of "stp" */ - struct config *new; /* */ - struct symbol *sp; /* Symbol following the dot in configuration "cfp" */ - struct symbol *bsp; /* Symbol following the dot in configuration "bcfp" */ - struct state *newstp; /* A pointer to a successor state */ - - /* Each configuration becomes complete after it contibutes to a successor - ** state. Initially, all configurations are incomplete */ - for(cfp=stp->cfp; cfp; cfp=cfp->next) cfp->status = INCOMPLETE; - - /* Loop through all configurations of the state "stp" */ - for(cfp=stp->cfp; cfp; cfp=cfp->next){ - if( cfp->status==COMPLETE ) continue; /* Already used by inner loop */ - if( cfp->dot>=cfp->rp->nrhs ) continue; /* Can't shift this config */ - Configlist_reset(); /* Reset the new config set */ - sp = cfp->rp->rhs[cfp->dot]; /* Symbol after the dot */ - - /* For every configuration in the state "stp" which has the symbol "sp" - ** following its dot, add the same configuration to the basis set under - ** construction but with the dot shifted one symbol to the right. */ - for(bcfp=cfp; bcfp; bcfp=bcfp->next){ - if( bcfp->status==COMPLETE ) continue; /* Already used */ - if( bcfp->dot>=bcfp->rp->nrhs ) continue; /* Can't shift this one */ - bsp = bcfp->rp->rhs[bcfp->dot]; /* Get symbol after dot */ - if( bsp!=sp ) continue; /* Must be same as for "cfp" */ - bcfp->status = COMPLETE; /* Mark this config as used */ - new = Configlist_addbasis(bcfp->rp,bcfp->dot+1); - Plink_add(&new->bplp,bcfp); - } - - /* Get a pointer to the state described by the basis configuration set - ** constructed in the preceding loop */ - newstp = getstate(lemp); - - /* The state "newstp" is reached from the state "stp" by a shift action - ** on the symbol "sp" */ - Action_add(&stp->ap,SHIFT,sp,(char *)newstp); - } -} - -/* -** Construct the propagation links -*/ -void FindLinks(lemp) -struct lemon *lemp; -{ - int i; - struct config *cfp, *other; - struct state *stp; - struct plink *plp; - - /* Housekeeping detail: - ** Add to every propagate link a pointer back to the state to - ** which the link is attached. */ - for(i=0; instate; i++){ - stp = lemp->sorted[i]; - for(cfp=stp->cfp; cfp; cfp=cfp->next){ - cfp->stp = stp; - } - } - - /* Convert all backlinks into forward links. Only the forward - ** links are used in the follow-set computation. */ - for(i=0; instate; i++){ - stp = lemp->sorted[i]; - for(cfp=stp->cfp; cfp; cfp=cfp->next){ - for(plp=cfp->bplp; plp; plp=plp->next){ - other = plp->cfp; - Plink_add(&other->fplp,cfp); - } - } - } -} - -/* Compute all followsets. -** -** A followset is the set of all symbols which can come immediately -** after a configuration. -*/ -void FindFollowSets(lemp) -struct lemon *lemp; -{ - int i; - struct config *cfp; - struct plink *plp; - int progress; - int change; - - for(i=0; instate; i++){ - for(cfp=lemp->sorted[i]->cfp; cfp; cfp=cfp->next){ - cfp->status = INCOMPLETE; - } - } - - do{ - progress = 0; - for(i=0; instate; i++){ - for(cfp=lemp->sorted[i]->cfp; cfp; cfp=cfp->next){ - if( cfp->status==COMPLETE ) continue; - for(plp=cfp->fplp; plp; plp=plp->next){ - change = SetUnion(plp->cfp->fws,cfp->fws); - if( change ){ - plp->cfp->status = INCOMPLETE; - progress = 1; - } - } - cfp->status = COMPLETE; - } - } - }while( progress ); -} - -static int resolve_conflict(); - -/* Compute the reduce actions, and resolve conflicts. -*/ -void FindActions(lemp) -struct lemon *lemp; -{ - int i,j; - struct config *cfp; - struct state *stp; - struct symbol *sp; - struct rule *rp; - - /* Add all of the reduce actions - ** A reduce action is added for each element of the followset of - ** a configuration which has its dot at the extreme right. - */ - for(i=0; instate; i++){ /* Loop over all states */ - stp = lemp->sorted[i]; - for(cfp=stp->cfp; cfp; cfp=cfp->next){ /* Loop over all configurations */ - if( cfp->rp->nrhs==cfp->dot ){ /* Is dot at extreme right? */ - for(j=0; jnterminal; j++){ - if( SetFind(cfp->fws,j) ){ - /* Add a reduce action to the state "stp" which will reduce by the - ** rule "cfp->rp" if the lookahead symbol is "lemp->symbols[j]" */ - Action_add(&stp->ap,REDUCE,lemp->symbols[j],(char *)cfp->rp); - } - } - } - } - } - - /* Add the accepting token */ - if( lemp->start ){ - sp = Symbol_find(lemp->start); - if( sp==0 ) sp = lemp->rule->lhs; - }else{ - sp = lemp->rule->lhs; - } - /* Add to the first state (which is always the starting state of the - ** finite state machine) an action to ACCEPT if the lookahead is the - ** start nonterminal. */ - Action_add(&lemp->sorted[0]->ap,ACCEPT,sp,0); - - /* Resolve conflicts */ - for(i=0; instate; i++){ - struct action *ap, *nap; - struct state *stp; - stp = lemp->sorted[i]; - assert( stp->ap ); - stp->ap = Action_sort(stp->ap); - for(ap=stp->ap; ap && ap->next; ap=ap->next){ - for(nap=ap->next; nap && nap->sp==ap->sp; nap=nap->next){ - /* The two actions "ap" and "nap" have the same lookahead. - ** Figure out which one should be used */ - lemp->nconflict += resolve_conflict(ap,nap,lemp->errsym); - } - } - } - - /* Report an error for each rule that can never be reduced. */ - for(rp=lemp->rule; rp; rp=rp->next) rp->canReduce = B_FALSE; - for(i=0; instate; i++){ - struct action *ap; - for(ap=lemp->sorted[i]->ap; ap; ap=ap->next){ - if( ap->type==REDUCE ) ap->x.rp->canReduce = B_TRUE; - } - } - for(rp=lemp->rule; rp; rp=rp->next){ - if( rp->canReduce ) continue; - ErrorMsg(lemp->filename,rp->ruleline,"This rule can not be reduced.\n"); - lemp->errorcnt++; - } -} - -/* Resolve a conflict between the two given actions. If the -** conflict can't be resolve, return non-zero. -** -** NO LONGER TRUE: -** To resolve a conflict, first look to see if either action -** is on an error rule. In that case, take the action which -** is not associated with the error rule. If neither or both -** actions are associated with an error rule, then try to -** use precedence to resolve the conflict. -** -** If either action is a SHIFT, then it must be apx. This -** function won't work if apx->type==REDUCE and apy->type==SHIFT. -*/ -static int resolve_conflict(apx,apy,errsym) -struct action *apx; -struct action *apy; -struct symbol *errsym; /* The error symbol (if defined. NULL otherwise) */ -{ - struct symbol *spx, *spy; - int errcnt = 0; - assert( apx->sp==apy->sp ); /* Otherwise there would be no conflict */ - if( apx->type==SHIFT && apy->type==REDUCE ){ - spx = apx->sp; - spy = apy->x.rp->precsym; - if( spy==0 || spx->prec<0 || spy->prec<0 ){ - /* Not enough precedence information. */ - fprintf(stderr, "Not enough precedence: %s, %s\n", errsym->name, spx->name); - apy->type = CONFLICT; - errcnt++; - }else if( spx->prec>spy->prec ){ /* Lower precedence wins */ - apy->type = RD_RESOLVED; - }else if( spx->precprec ){ - apx->type = SH_RESOLVED; - }else if( spx->prec==spy->prec && spx->assoc==RIGHT ){ /* Use operator */ - apy->type = RD_RESOLVED; /* associativity */ - }else if( spx->prec==spy->prec && spx->assoc==LEFT ){ /* to break tie */ - apx->type = SH_RESOLVED; - }else{ - assert( spx->prec==spy->prec && spx->assoc==NONE ); - fprintf(stderr, "Not enough precedence: %s\n", errsym->name); - apy->type = CONFLICT; - errcnt++; - } - }else if( apx->type==REDUCE && apy->type==REDUCE ){ - spx = apx->x.rp->precsym; - spy = apy->x.rp->precsym; - if( spx==0 || spy==0 || spx->prec<0 || spy->prec<0 || spx->prec==spy->prec ){ - fprintf(stderr, "Not enough precedence: %s\n", errsym->name); - apy->type = CONFLICT; - errcnt++; - }else if( spx->prec>spy->prec ){ - apy->type = RD_RESOLVED; - }else if( spx->precprec ){ - apx->type = RD_RESOLVED; - } - }else{ - assert( - apx->type==SH_RESOLVED || - apx->type==RD_RESOLVED || - apx->type==CONFLICT || - apy->type==SH_RESOLVED || - apy->type==RD_RESOLVED || - apy->type==CONFLICT - ); - /* The REDUCE/SHIFT case cannot happen because SHIFTs come before - ** REDUCEs on the list. If we reach this point it must be because - ** the parser conflict had already been resolved. */ - } - return errcnt; -} -/********************* From the file "configlist.c" *************************/ -/* -** Routines to processing a configuration list and building a state -** in the LEMON parser generator. -*/ - -static struct config *freelist = 0; /* List of free configurations */ -static struct config *current = 0; /* Top of list of configurations */ -static struct config **currentend = 0; /* Last on list of configs */ -static struct config *basis = 0; /* Top of list of basis configs */ -static struct config **basisend = 0; /* End of list of basis configs */ - -/* Return a pointer to a new configuration */ -PRIVATE struct config *newconfig(){ - struct config *new; - if( freelist==0 ){ - int i; - int amt = 3; - freelist = (struct config *)malloc( sizeof(struct config)*amt ); - if( freelist==0 ){ - fprintf(stderr,"Unable to allocate memory for a new configuration."); - exit(1); - } - for(i=0; inext; - return new; -} - -/* The configuration "old" is no longer used */ -PRIVATE void deleteconfig(old) -struct config *old; -{ - old->next = freelist; - freelist = old; -} - -/* Initialized the configuration list builder */ -void Configlist_init(){ - current = 0; - currentend = ¤t; - basis = 0; - basisend = &basis; - Configtable_init(); - return; -} - -/* Initialized the configuration list builder */ -void Configlist_reset(){ - current = 0; - currentend = ¤t; - basis = 0; - basisend = &basis; - Configtable_clear(0); - return; -} - -/* Add another configuration to the configuration list */ -struct config *Configlist_add(rp,dot) -struct rule *rp; /* The rule */ -int dot; /* Index into the RHS of the rule where the dot goes */ -{ - struct config *cfp, model; - - assert( currentend!=0 ); - model.rp = rp; - model.dot = dot; - cfp = Configtable_find(&model); - if( cfp==0 ){ - cfp = newconfig(); - cfp->rp = rp; - cfp->dot = dot; - cfp->fws = SetNew(); - cfp->stp = 0; - cfp->fplp = cfp->bplp = 0; - cfp->next = 0; - cfp->bp = 0; - *currentend = cfp; - currentend = &cfp->next; - Configtable_insert(cfp); - } - return cfp; -} - -/* Add a basis configuration to the configuration list */ -struct config *Configlist_addbasis(rp,dot) -struct rule *rp; -int dot; -{ - struct config *cfp, model; - - assert( basisend!=0 ); - assert( currentend!=0 ); - model.rp = rp; - model.dot = dot; - cfp = Configtable_find(&model); - if( cfp==0 ){ - cfp = newconfig(); - cfp->rp = rp; - cfp->dot = dot; - cfp->fws = SetNew(); - cfp->stp = 0; - cfp->fplp = cfp->bplp = 0; - cfp->next = 0; - cfp->bp = 0; - *currentend = cfp; - currentend = &cfp->next; - *basisend = cfp; - basisend = &cfp->bp; - Configtable_insert(cfp); - } - return cfp; -} - -/* Compute the closure of the configuration list */ -void Configlist_closure(lemp) -struct lemon *lemp; -{ - struct config *cfp, *newcfp; - struct rule *rp, *newrp; - struct symbol *sp, *xsp; - int i, dot; - - assert( currentend!=0 ); - for(cfp=current; cfp; cfp=cfp->next){ - rp = cfp->rp; - dot = cfp->dot; - if( dot>=rp->nrhs ) continue; - sp = rp->rhs[dot]; - if( sp->type==NONTERMINAL ){ - if( sp->rule==0 && sp!=lemp->errsym ){ - ErrorMsg(lemp->filename,rp->line,"Nonterminal \"%s\" has no rules.", - sp->name); - lemp->errorcnt++; - } - for(newrp=sp->rule; newrp; newrp=newrp->nextlhs){ - newcfp = Configlist_add(newrp,0); - for(i=dot+1; inrhs; i++){ - xsp = rp->rhs[i]; - if( xsp->type==TERMINAL ){ - SetAdd(newcfp->fws,xsp->index); - break; - }else{ - SetUnion(newcfp->fws,xsp->firstset); - if( xsp->lambda==B_FALSE ) break; - } - } - if( i==rp->nrhs ) Plink_add(&cfp->fplp,newcfp); - } - } - } - return; -} - -/* Sort the configuration list */ -void Configlist_sort(){ - current = (struct config *)msort((char *)current,(char **)&(current->next),Configcmp); - currentend = 0; - return; -} - -/* Sort the basis configuration list */ -void Configlist_sortbasis(){ - basis = (struct config *)msort((char *)current,(char **)&(current->bp),Configcmp); - basisend = 0; - return; -} - -/* Return a pointer to the head of the configuration list and -** reset the list */ -struct config *Configlist_return(){ - struct config *old; - old = current; - current = 0; - currentend = 0; - return old; -} - -/* Return a pointer to the head of the configuration list and -** reset the list */ -struct config *Configlist_basis(){ - struct config *old; - old = basis; - basis = 0; - basisend = 0; - return old; -} - -/* Free all elements of the given configuration list */ -void Configlist_eat(cfp) -struct config *cfp; -{ - struct config *nextcfp; - for(; cfp; cfp=nextcfp){ - nextcfp = cfp->next; - assert( cfp->fplp==0 ); - assert( cfp->bplp==0 ); - if( cfp->fws ) SetFree(cfp->fws); - deleteconfig(cfp); - } - return; -} -/***************** From the file "error.c" *********************************/ -/* -** Code for printing error message. -*/ - -/* Find a good place to break "msg" so that its length is at least "min" -** but no more than "max". Make the point as close to max as possible. -*/ -static int findbreak(msg,min,max) -char *msg; -int min; -int max; -{ - int i,spot; - char c; - for(i=spot=min; i<=max; i++){ - c = msg[i]; - if( c=='\t' ) msg[i] = ' '; - if( c=='\n' ){ msg[i] = ' '; spot = i; break; } - if( c==0 ){ spot = i; break; } - if( c=='-' && i0 ){ - sprintf(prefix,"%.*s:%d: ",PREFIXLIMIT-10,filename,lineno); - }else{ - sprintf(prefix,"%.*s: ",PREFIXLIMIT-10,filename); - } - prefixsize = strlen(prefix); - availablewidth = LINEWIDTH - prefixsize; - - /* Generate the error message */ - vsprintf(errmsg,format,ap); - va_end(ap); - errmsgsize = strlen(errmsg); - /* Remove trailing '\n's from the error message. */ - while( errmsgsize>0 && errmsg[errmsgsize-1]=='\n' ){ - errmsg[--errmsgsize] = 0; - } - - /* Print the error message */ - base = 0; - while( errmsg[base]!=0 ){ - end = restart = findbreak(&errmsg[base],0,availablewidth); - restart += base; - while( errmsg[restart]==' ' ) restart++; - fprintf(stdout,"%s%.*s\n",prefix,end,&errmsg[base]); - base = restart; - } -} -/**************** From the file "main.c" ************************************/ -/* -** Main program file for the LEMON parser generator. -*/ - -/* Report an out-of-memory condition and abort. This function -** is used mostly by the "MemoryCheck" macro in struct.h -*/ -void memory_error(){ - fprintf(stderr,"Out of memory. Aborting...\n"); - exit(1); -} - -static int nDefine = 0; /* Number of -D options on the command line */ -static char **azDefine = 0; /* Name of the -D macros */ - -/* This routine is called with the argument to each -D command-line option. -** Add the macro defined to the azDefine array. -*/ -static void handle_D_option(char *z){ - char **paz; - nDefine++; - azDefine = realloc(azDefine, sizeof(azDefine[0])*nDefine); - if( azDefine==0 ){ - fprintf(stderr,"out of memory\n"); - exit(1); - } - paz = &azDefine[nDefine-1]; - *paz = malloc( strlen(z)+1 ); - if( *paz==0 ){ - fprintf(stderr,"out of memory\n"); - exit(1); - } - strcpy(*paz, z); - for(z=*paz; *z && *z!='='; z++){} - *z = 0; -} - - -/* The main program. Parse the command line and do it... */ -int main(argc,argv) -int argc; -char **argv; -{ - static int version = 0; - static int rpflag = 0; - static int basisflag = 0; - static int compress = 0; - static int quiet = 0; - static int statistics = 0; - static int mhflag = 0; - static struct s_options options[] = { - {OPT_FLAG, "b", (char*)&basisflag, "Print only the basis in report."}, - {OPT_FLAG, "c", (char*)&compress, "Don't compress the action table."}, - {OPT_FSTR, "D", (char*)handle_D_option, "Define an %ifdef macro."}, - {OPT_FLAG, "g", (char*)&rpflag, "Print grammar without actions."}, - {OPT_FLAG, "m", (char*)&mhflag, "Output a makeheaders compatible file"}, - {OPT_FLAG, "q", (char*)&quiet, "(Quiet) Don't print the report file."}, - {OPT_FLAG, "s", (char*)&statistics, - "Print parser stats to standard output."}, - {OPT_FLAG, "x", (char*)&version, "Print the version number."}, - {OPT_FLAG,0,0,0} - }; - int i; - struct lemon lem; - - OptInit(argv,options,stderr); - if( version ){ - printf("Lemon version 1.0\n"); - exit(0); - } - if( OptNArgs()!=1 ){ - fprintf(stderr,"Exactly one filename argument is required.\n"); - exit(1); - } - lem.errorcnt = 0; - - /* Initialize the machine */ - Strsafe_init(); - Symbol_init(); - State_init(); - lem.argv0 = argv[0]; - lem.filename = OptArg(0); - lem.basisflag = basisflag; - lem.has_fallback = 0; - lem.nconflict = 0; - lem.name = lem.include = lem.arg = lem.tokentype = lem.start = 0; - lem.vartype = 0; - lem.stacksize = 0; - lem.error = lem.overflow = lem.failure = lem.accept = lem.tokendest = - lem.tokenprefix = lem.outname = lem.extracode = 0; - lem.vardest = 0; - lem.tablesize = 0; - Symbol_new("$"); - lem.errsym = Symbol_new("error"); - - /* Parse the input file */ - Parse(&lem); - if( lem.errorcnt ) exit(lem.errorcnt); - if( lem.rule==0 ){ - fprintf(stderr,"Empty grammar.\n"); - exit(1); - } - - /* Count and index the symbols of the grammar */ - lem.nsymbol = Symbol_count(); - Symbol_new("{default}"); - lem.symbols = Symbol_arrayof(); - for(i=0; i<=lem.nsymbol; i++) lem.symbols[i]->index = i; - qsort(lem.symbols,lem.nsymbol+1,sizeof(struct symbol*), - (int(*)())Symbolcmpp); - for(i=0; i<=lem.nsymbol; i++) lem.symbols[i]->index = i; - for(i=1; isupper(lem.symbols[i]->name[0]); i++); - lem.nterminal = i; - - /* Generate a reprint of the grammar, if requested on the command line */ - if( rpflag ){ - Reprint(&lem); - }else{ - /* Initialize the size for all follow and first sets */ - SetSize(lem.nterminal); - - /* Find the precedence for every production rule (that has one) */ - FindRulePrecedences(&lem); - - /* Compute the lambda-nonterminals and the first-sets for every - ** nonterminal */ - FindFirstSets(&lem); - - /* Compute all LR(0) states. Also record follow-set propagation - ** links so that the follow-set can be computed later */ - lem.nstate = 0; - FindStates(&lem); - lem.sorted = State_arrayof(); - - /* Tie up loose ends on the propagation links */ - FindLinks(&lem); - - /* Compute the follow set of every reducible configuration */ - FindFollowSets(&lem); - - /* Compute the action tables */ - FindActions(&lem); - - /* Compress the action tables */ - if( compress==0 ) CompressTables(&lem); - - /* Generate a report of the parser generated. (the "y.output" file) */ - if( !quiet ) ReportOutput(&lem); - - /* Generate the source code for the parser */ - ReportTable(&lem, mhflag); - - /* Produce a header file for use by the scanner. (This step is - ** omitted if the "-m" option is used because makeheaders will - ** generate the file for us.) */ - if( !mhflag ) ReportHeader(&lem); - } - if( statistics ){ - printf("Parser statistics: %d terminals, %d nonterminals, %d rules\n", - lem.nterminal, lem.nsymbol - lem.nterminal, lem.nrule); - printf(" %d states, %d parser table entries, %d conflicts\n", - lem.nstate, lem.tablesize, lem.nconflict); - } - if( lem.nconflict ){ - fprintf(stderr,"%d parsing conflicts.\n",lem.nconflict); - } - exit(lem.errorcnt + lem.nconflict); - return (lem.errorcnt + lem.nconflict); -} -/******************** From the file "msort.c" *******************************/ -/* -** A generic merge-sort program. -** -** USAGE: -** Let "ptr" be a pointer to some structure which is at the head of -** a null-terminated list. Then to sort the list call: -** -** ptr = msort(ptr,&(ptr->next),cmpfnc); -** -** In the above, "cmpfnc" is a pointer to a function which compares -** two instances of the structure and returns an integer, as in -** strcmp. The second argument is a pointer to the pointer to the -** second element of the linked list. This address is used to compute -** the offset to the "next" field within the structure. The offset to -** the "next" field must be constant for all structures in the list. -** -** The function returns a new pointer which is the head of the list -** after sorting. -** -** ALGORITHM: -** Merge-sort. -*/ - -/* -** Return a pointer to the next structure in the linked list. -*/ -#define NEXT(A) (*(char**)(((char *)A)+offset)) - -/* -** Inputs: -** a: A sorted, null-terminated linked list. (May be null). -** b: A sorted, null-terminated linked list. (May be null). -** cmp: A pointer to the comparison function. -** offset: Offset in the structure to the "next" field. -** -** Return Value: -** A pointer to the head of a sorted list containing the elements -** of both a and b. -** -** Side effects: -** The "next" pointers for elements in the lists a and b are -** changed. -*/ -static char *merge(a,b,cmp,offset) -char *a; -char *b; -int (*cmp)(); -int offset; -{ - char *ptr, *head; - - if( a==0 ){ - head = b; - }else if( b==0 ){ - head = a; - }else{ - if( (*cmp)(a,b)<0 ){ - ptr = a; - a = NEXT(a); - }else{ - ptr = b; - b = NEXT(b); - } - head = ptr; - while( a && b ){ - if( (*cmp)(a,b)<0 ){ - NEXT(ptr) = a; - ptr = a; - a = NEXT(a); - }else{ - NEXT(ptr) = b; - ptr = b; - b = NEXT(b); - } - } - if( a ) NEXT(ptr) = a; - else NEXT(ptr) = b; - } - return head; -} - -/* -** Inputs: -** list: Pointer to a singly-linked list of structures. -** next: Pointer to pointer to the second element of the list. -** cmp: A comparison function. -** -** Return Value: -** A pointer to the head of a sorted list containing the elements -** orginally in list. -** -** Side effects: -** The "next" pointers for elements in list are changed. -*/ -#define LISTSIZE 30 -char *msort(list,next,cmp) -char *list; -char **next; -int (*cmp)(); -{ - unsigned long offset; - char *ep; - char *set[LISTSIZE]; - int i; - offset = (unsigned long)next - (unsigned long)list; - for(i=0; istate = WAITING_FOR_DECL_KEYWORD; - }else if( islower(x[0]) ){ - psp->lhs = Symbol_new(x); - psp->nrhs = 0; - psp->lhsalias = 0; - psp->state = WAITING_FOR_ARROW; - }else if( x[0]=='{' ){ - if( psp->prevrule==0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, -"There is not prior rule opon which to attach the code \ -fragment which begins on this line."); - psp->errorcnt++; - }else if( psp->prevrule->code!=0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, -"Code fragment beginning on this line is not the first \ -to follow the previous rule."); - psp->errorcnt++; - }else{ - psp->prevrule->line = psp->tokenlineno; - psp->prevrule->code = &x[1]; - } - }else if( x[0]=='[' ){ - psp->state = PRECEDENCE_MARK_1; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Token \"%s\" should be either \"%%\" or a nonterminal name.", - x); - psp->errorcnt++; - } - break; - case PRECEDENCE_MARK_1: - if( !isupper(x[0]) ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "The precedence symbol must be a terminal."); - psp->errorcnt++; - }else if( psp->prevrule==0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "There is no prior rule to assign precedence \"[%s]\".",x); - psp->errorcnt++; - }else if( psp->prevrule->precsym!=0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, -"Precedence mark on this line is not the first \ -to follow the previous rule."); - psp->errorcnt++; - }else{ - psp->prevrule->precsym = Symbol_new(x); - } - psp->state = PRECEDENCE_MARK_2; - break; - case PRECEDENCE_MARK_2: - if( x[0]!=']' ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Missing \"]\" on precedence mark."); - psp->errorcnt++; - } - psp->state = WAITING_FOR_DECL_OR_RULE; - break; - case WAITING_FOR_ARROW: - if( x[0]==':' && x[1]==':' && x[2]=='=' ){ - psp->state = IN_RHS; - }else if( x[0]=='(' ){ - psp->state = LHS_ALIAS_1; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Expected to see a \":\" following the LHS symbol \"%s\".", - psp->lhs->name); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case LHS_ALIAS_1: - if( isalpha(x[0]) ){ - psp->lhsalias = x; - psp->state = LHS_ALIAS_2; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "\"%s\" is not a valid alias for the LHS \"%s\"\n", - x,psp->lhs->name); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case LHS_ALIAS_2: - if( x[0]==')' ){ - psp->state = LHS_ALIAS_3; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Missing \")\" following LHS alias name \"%s\".",psp->lhsalias); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case LHS_ALIAS_3: - if( x[0]==':' && x[1]==':' && x[2]=='=' ){ - psp->state = IN_RHS; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Missing \"->\" following: \"%s(%s)\".", - psp->lhs->name,psp->lhsalias); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case IN_RHS: - if( x[0]=='.' ){ - struct rule *rp; - rp = (struct rule *)malloc( sizeof(struct rule) + - sizeof(struct symbol*)*psp->nrhs + sizeof(char*)*psp->nrhs ); - if( rp==0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Can't allocate enough memory for this rule."); - psp->errorcnt++; - psp->prevrule = 0; - }else{ - int i; - rp->ruleline = psp->tokenlineno; - rp->rhs = (struct symbol**)&rp[1]; - rp->rhsalias = (char**)&(rp->rhs[psp->nrhs]); - for(i=0; inrhs; i++){ - rp->rhs[i] = psp->rhs[i]; - rp->rhsalias[i] = psp->alias[i]; - } - rp->lhs = psp->lhs; - rp->lhsalias = psp->lhsalias; - rp->nrhs = psp->nrhs; - rp->code = 0; - rp->precsym = 0; - rp->index = psp->gp->nrule++; - rp->nextlhs = rp->lhs->rule; - rp->lhs->rule = rp; - rp->next = 0; - if( psp->firstrule==0 ){ - psp->firstrule = psp->lastrule = rp; - }else{ - psp->lastrule->next = rp; - psp->lastrule = rp; - } - psp->prevrule = rp; - } - psp->state = WAITING_FOR_DECL_OR_RULE; - }else if( isalpha(x[0]) ){ - if( psp->nrhs>=MAXRHS ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Too many symbol on RHS or rule beginning at \"%s\".", - x); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - }else{ - psp->rhs[psp->nrhs] = Symbol_new(x); - psp->alias[psp->nrhs] = 0; - psp->nrhs++; - } - }else if( x[0]=='(' && psp->nrhs>0 ){ - psp->state = RHS_ALIAS_1; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Illegal character on RHS of rule: \"%s\".",x); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case RHS_ALIAS_1: - if( isalpha(x[0]) ){ - psp->alias[psp->nrhs-1] = x; - psp->state = RHS_ALIAS_2; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "\"%s\" is not a valid alias for the RHS symbol \"%s\"\n", - x,psp->rhs[psp->nrhs-1]->name); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case RHS_ALIAS_2: - if( x[0]==')' ){ - psp->state = IN_RHS; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Missing \")\" following LHS alias name \"%s\".",psp->lhsalias); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case WAITING_FOR_DECL_KEYWORD: - if( isalpha(x[0]) ){ - psp->declkeyword = x; - psp->declargslot = 0; - psp->decllnslot = 0; - psp->state = WAITING_FOR_DECL_ARG; - if( strcmp(x,"name")==0 ){ - psp->declargslot = &(psp->gp->name); - }else if( strcmp(x,"include")==0 ){ - psp->declargslot = &(psp->gp->include); - psp->decllnslot = &psp->gp->includeln; - }else if( strcmp(x,"code")==0 ){ - psp->declargslot = &(psp->gp->extracode); - psp->decllnslot = &psp->gp->extracodeln; - }else if( strcmp(x,"token_destructor")==0 ){ - psp->declargslot = &psp->gp->tokendest; - psp->decllnslot = &psp->gp->tokendestln; - }else if( strcmp(x,"default_destructor")==0 ){ - psp->declargslot = &psp->gp->vardest; - psp->decllnslot = &psp->gp->vardestln; - }else if( strcmp(x,"token_prefix")==0 ){ - psp->declargslot = &psp->gp->tokenprefix; - }else if( strcmp(x,"syntax_error")==0 ){ - psp->declargslot = &(psp->gp->error); - psp->decllnslot = &psp->gp->errorln; - }else if( strcmp(x,"parse_accept")==0 ){ - psp->declargslot = &(psp->gp->accept); - psp->decllnslot = &psp->gp->acceptln; - }else if( strcmp(x,"parse_failure")==0 ){ - psp->declargslot = &(psp->gp->failure); - psp->decllnslot = &psp->gp->failureln; - }else if( strcmp(x,"stack_overflow")==0 ){ - psp->declargslot = &(psp->gp->overflow); - psp->decllnslot = &psp->gp->overflowln; - }else if( strcmp(x,"extra_argument")==0 ){ - psp->declargslot = &(psp->gp->arg); - }else if( strcmp(x,"token_type")==0 ){ - psp->declargslot = &(psp->gp->tokentype); - }else if( strcmp(x,"default_type")==0 ){ - psp->declargslot = &(psp->gp->vartype); - }else if( strcmp(x,"stack_size")==0 ){ - psp->declargslot = &(psp->gp->stacksize); - }else if( strcmp(x,"start_symbol")==0 ){ - psp->declargslot = &(psp->gp->start); - }else if( strcmp(x,"left")==0 ){ - psp->preccounter++; - psp->declassoc = LEFT; - psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; - }else if( strcmp(x,"right")==0 ){ - psp->preccounter++; - psp->declassoc = RIGHT; - psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; - }else if( strcmp(x,"nonassoc")==0 ){ - psp->preccounter++; - psp->declassoc = NONE; - psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; - }else if( strcmp(x,"destructor")==0 ){ - psp->state = WAITING_FOR_DESTRUCTOR_SYMBOL; - }else if( strcmp(x,"type")==0 ){ - psp->state = WAITING_FOR_DATATYPE_SYMBOL; - }else if( strcmp(x,"fallback")==0 ){ - psp->fallback = 0; - psp->state = WAITING_FOR_FALLBACK_ID; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Unknown declaration keyword: \"%%%s\".",x); - psp->errorcnt++; - psp->state = RESYNC_AFTER_DECL_ERROR; - } - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Illegal declaration keyword: \"%s\".",x); - psp->errorcnt++; - psp->state = RESYNC_AFTER_DECL_ERROR; - } - break; - case WAITING_FOR_DESTRUCTOR_SYMBOL: - if( !isalpha(x[0]) ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Symbol name missing after %destructor keyword"); - psp->errorcnt++; - psp->state = RESYNC_AFTER_DECL_ERROR; - }else{ - struct symbol *sp = Symbol_new(x); - psp->declargslot = &sp->destructor; - psp->decllnslot = &sp->destructorln; - psp->state = WAITING_FOR_DECL_ARG; - } - break; - case WAITING_FOR_DATATYPE_SYMBOL: - if( !isalpha(x[0]) ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Symbol name missing after %destructor keyword"); - psp->errorcnt++; - psp->state = RESYNC_AFTER_DECL_ERROR; - }else{ - struct symbol *sp = Symbol_new(x); - psp->declargslot = &sp->datatype; - psp->decllnslot = 0; - psp->state = WAITING_FOR_DECL_ARG; - } - break; - case WAITING_FOR_PRECEDENCE_SYMBOL: - if( x[0]=='.' ){ - psp->state = WAITING_FOR_DECL_OR_RULE; - }else if( isupper(x[0]) ){ - struct symbol *sp; - sp = Symbol_new(x); - if( sp->prec>=0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Symbol \"%s\" has already be given a precedence.",x); - psp->errorcnt++; - }else{ - sp->prec = psp->preccounter; - sp->assoc = psp->declassoc; - } - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Can't assign a precedence to \"%s\".",x); - psp->errorcnt++; - } - break; - case WAITING_FOR_DECL_ARG: - if( (x[0]=='{' || x[0]=='\"' || isalnum(x[0])) ){ - if( *(psp->declargslot)!=0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "The argument \"%s\" to declaration \"%%%s\" is not the first.", - x[0]=='\"' ? &x[1] : x,psp->declkeyword); - psp->errorcnt++; - psp->state = RESYNC_AFTER_DECL_ERROR; - }else{ - *(psp->declargslot) = (x[0]=='\"' || x[0]=='{') ? &x[1] : x; - if( psp->decllnslot ) *psp->decllnslot = psp->tokenlineno; - psp->state = WAITING_FOR_DECL_OR_RULE; - } - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Illegal argument to %%%s: %s",psp->declkeyword,x); - psp->errorcnt++; - psp->state = RESYNC_AFTER_DECL_ERROR; - } - break; - case WAITING_FOR_FALLBACK_ID: - if( x[0]=='.' ){ - psp->state = WAITING_FOR_DECL_OR_RULE; - }else if( !isupper(x[0]) ){ - ErrorMsg(psp->filename, psp->tokenlineno, - "%%fallback argument \"%s\" should be a token", x); - psp->errorcnt++; - }else{ - struct symbol *sp = Symbol_new(x); - if( psp->fallback==0 ){ - psp->fallback = sp; - }else if( sp->fallback ){ - ErrorMsg(psp->filename, psp->tokenlineno, - "More than one fallback assigned to token %s", x); - psp->errorcnt++; - }else{ - sp->fallback = psp->fallback; - psp->gp->has_fallback = 1; - } - } - break; - case RESYNC_AFTER_RULE_ERROR: -/* if( x[0]=='.' ) psp->state = WAITING_FOR_DECL_OR_RULE; -** break; */ - case RESYNC_AFTER_DECL_ERROR: - if( x[0]=='.' ) psp->state = WAITING_FOR_DECL_OR_RULE; - if( x[0]=='%' ) psp->state = WAITING_FOR_DECL_KEYWORD; - break; - } -} - -/* Run the proprocessor over the input file text. The global variables -** azDefine[0] through azDefine[nDefine-1] contains the names of all defined -** macros. This routine looks for "%ifdef" and "%ifndef" and "%endif" and -** comments them out. Text in between is also commented out as appropriate. -*/ -static preprocess_input(char *z){ - int i, j, k, n; - int exclude = 0; - int start; - int lineno = 1; - int start_lineno; - for(i=0; z[i]; i++){ - if( z[i]=='\n' ) lineno++; - if( z[i]!='%' || (i>0 && z[i-1]!='\n') ) continue; - if( strncmp(&z[i],"%endif",6)==0 && isspace(z[i+6]) ){ - if( exclude ){ - exclude--; - if( exclude==0 ){ - for(j=start; jfilename; - ps.errorcnt = 0; - ps.state = INITIALIZE; - - /* Begin by reading the input file */ - fp = fopen(ps.filename,"rb"); - if( fp==0 ){ - ErrorMsg(ps.filename,0,"Can't open this file for reading."); - gp->errorcnt++; - return; - } - fseek(fp,0,2); - filesize = ftell(fp); - rewind(fp); - filebuf = (char *)malloc( filesize+1 ); - if( filebuf==0 ){ - ErrorMsg(ps.filename,0,"Can't allocate %d of memory to hold this file.", - filesize+1); - gp->errorcnt++; - return; - } - if( fread(filebuf,1,filesize,fp)!=filesize ){ - ErrorMsg(ps.filename,0,"Can't read in all %d bytes of this file.", - filesize); - free(filebuf); - gp->errorcnt++; - return; - } - fclose(fp); - filebuf[filesize] = 0; - - /* Make an initial pass through the file to handle %ifdef and %ifndef */ - preprocess_input(filebuf); - - /* Now scan the text of the input file */ - lineno = 1; - for(cp=filebuf; (c= *cp)!=0; ){ - if( c=='\n' ) lineno++; /* Keep track of the line number */ - if( isspace(c) ){ cp++; continue; } /* Skip all white space */ - if( c=='/' && cp[1]=='/' ){ /* Skip C++ style comments */ - cp+=2; - while( (c= *cp)!=0 && c!='\n' ) cp++; - continue; - } - if( c=='/' && cp[1]=='*' ){ /* Skip C style comments */ - cp+=2; - while( (c= *cp)!=0 && (c!='/' || cp[-1]!='*') ){ - if( c=='\n' ) lineno++; - cp++; - } - if( c ) cp++; - continue; - } - ps.tokenstart = cp; /* Mark the beginning of the token */ - ps.tokenlineno = lineno; /* Linenumber on which token begins */ - if( c=='\"' ){ /* String literals */ - cp++; - while( (c= *cp)!=0 && c!='\"' ){ - if( c=='\n' ) lineno++; - cp++; - } - if( c==0 ){ - ErrorMsg(ps.filename,startline, -"String starting on this line is not terminated before the end of the file."); - ps.errorcnt++; - nextcp = cp; - }else{ - nextcp = cp+1; - } - }else if( c=='{' ){ /* A block of C code */ - int level; - cp++; - for(level=1; (c= *cp)!=0 && (level>1 || c!='}'); cp++){ - if( c=='\n' ) lineno++; - else if( c=='{' ) level++; - else if( c=='}' ) level--; - else if( c=='/' && cp[1]=='*' ){ /* Skip comments */ - int prevc; - cp = &cp[2]; - prevc = 0; - while( (c= *cp)!=0 && (c!='/' || prevc!='*') ){ - if( c=='\n' ) lineno++; - prevc = c; - cp++; - } - }else if( c=='/' && cp[1]=='/' ){ /* Skip C++ style comments too */ - cp = &cp[2]; - while( (c= *cp)!=0 && c!='\n' ) cp++; - if( c ) lineno++; - }else if( c=='\'' || c=='\"' ){ /* String a character literals */ - int startchar, prevc; - startchar = c; - prevc = 0; - for(cp++; (c= *cp)!=0 && (c!=startchar || prevc=='\\'); cp++){ - if( c=='\n' ) lineno++; - if( prevc=='\\' ) prevc = 0; - else prevc = c; - } - } - } - if( c==0 ){ - ErrorMsg(ps.filename,ps.tokenlineno, -"C code starting on this line is not terminated before the end of the file."); - ps.errorcnt++; - nextcp = cp; - }else{ - nextcp = cp+1; - } - }else if( isalnum(c) ){ /* Identifiers */ - while( (c= *cp)!=0 && (isalnum(c) || c=='_') ) cp++; - nextcp = cp; - }else if( c==':' && cp[1]==':' && cp[2]=='=' ){ /* The operator "::=" */ - cp += 3; - nextcp = cp; - }else{ /* All other (one character) operators */ - cp++; - nextcp = cp; - } - c = *cp; - *cp = 0; /* Null terminate the token */ - parseonetoken(&ps); /* Parse the token */ - *cp = c; /* Restore the buffer */ - cp = nextcp; - } - free(filebuf); /* Release the buffer after parsing */ - gp->rule = ps.firstrule; - gp->errorcnt = ps.errorcnt; -} -/*************************** From the file "plink.c" *********************/ -/* -** Routines processing configuration follow-set propagation links -** in the LEMON parser generator. -*/ -static struct plink *plink_freelist = 0; - -/* Allocate a new plink */ -struct plink *Plink_new(){ - struct plink *new; - - if( plink_freelist==0 ){ - int i; - int amt = 100; - plink_freelist = (struct plink *)malloc( sizeof(struct plink)*amt ); - if( plink_freelist==0 ){ - fprintf(stderr, - "Unable to allocate memory for a new follow-set propagation link.\n"); - exit(1); - } - for(i=0; inext; - return new; -} - -/* Add a plink to a plink list */ -void Plink_add(plpp,cfp) -struct plink **plpp; -struct config *cfp; -{ - struct plink *new; - new = Plink_new(); - new->next = *plpp; - *plpp = new; - new->cfp = cfp; -} - -/* Transfer every plink on the list "from" to the list "to" */ -void Plink_copy(to,from) -struct plink **to; -struct plink *from; -{ - struct plink *nextpl; - while( from ){ - nextpl = from->next; - from->next = *to; - *to = from; - from = nextpl; - } -} - -/* Delete every plink on the list */ -void Plink_delete(plp) -struct plink *plp; -{ - struct plink *nextpl; - - while( plp ){ - nextpl = plp->next; - plp->next = plink_freelist; - plink_freelist = plp; - plp = nextpl; - } -} -/*********************** From the file "report.c" **************************/ -/* -** Procedures for generating reports and tables in the LEMON parser generator. -*/ - -/* Generate a filename with the given suffix. Space to hold the -** name comes from malloc() and must be freed by the calling -** function. -*/ -PRIVATE char *file_makename(lemp,suffix) -struct lemon *lemp; -char *suffix; -{ - char *name; - char *cp; - - name = malloc( strlen(lemp->filename) + strlen(suffix) + 5 ); - if( name==0 ){ - fprintf(stderr,"Can't allocate space for a filename.\n"); - exit(1); - } - strcpy(name,lemp->filename); - cp = strrchr(name,'.'); - if( cp ) *cp = 0; - strcat(name,suffix); - return name; -} - -/* Open a file with a name based on the name of the input file, -** but with a different (specified) suffix, and return a pointer -** to the stream */ -PRIVATE FILE *file_open(lemp,suffix,mode) -struct lemon *lemp; -char *suffix; -char *mode; -{ - FILE *fp; - - if( lemp->outname ) free(lemp->outname); - lemp->outname = file_makename(lemp, suffix); - fp = fopen(lemp->outname,mode); - if( fp==0 && *mode=='w' ){ - fprintf(stderr,"Can't open file \"%s\".\n",lemp->outname); - lemp->errorcnt++; - return 0; - } - return fp; -} - -/* Duplicate the input file without comments and without actions -** on rules */ -void Reprint(lemp) -struct lemon *lemp; -{ - struct rule *rp; - struct symbol *sp; - int i, j, maxlen, len, ncolumns, skip; - printf("// Reprint of input file \"%s\".\n// Symbols:\n",lemp->filename); - maxlen = 10; - for(i=0; insymbol; i++){ - sp = lemp->symbols[i]; - len = strlen(sp->name); - if( len>maxlen ) maxlen = len; - } - ncolumns = 76/(maxlen+5); - if( ncolumns<1 ) ncolumns = 1; - skip = (lemp->nsymbol + ncolumns - 1)/ncolumns; - for(i=0; insymbol; j+=skip){ - sp = lemp->symbols[j]; - assert( sp->index==j ); - printf(" %3d %-*.*s",j,maxlen,maxlen,sp->name); - } - printf("\n"); - } - for(rp=lemp->rule; rp; rp=rp->next){ - printf("%s",rp->lhs->name); -/* if( rp->lhsalias ) printf("(%s)",rp->lhsalias); */ - printf(" ::="); - for(i=0; inrhs; i++){ - printf(" %s",rp->rhs[i]->name); -/* if( rp->rhsalias[i] ) printf("(%s)",rp->rhsalias[i]); */ - } - printf("."); - if( rp->precsym ) printf(" [%s]",rp->precsym->name); -/* if( rp->code ) printf("\n %s",rp->code); */ - printf("\n"); - } -} - -void ConfigPrint(fp,cfp) -FILE *fp; -struct config *cfp; -{ - struct rule *rp; - int i; - rp = cfp->rp; - fprintf(fp,"%s ::=",rp->lhs->name); - for(i=0; i<=rp->nrhs; i++){ - if( i==cfp->dot ) fprintf(fp," *"); - if( i==rp->nrhs ) break; - fprintf(fp," %s",rp->rhs[i]->name); - } -} - -/* #define TEST */ -#ifdef TEST -/* Print a set */ -PRIVATE void SetPrint(out,set,lemp) -FILE *out; -char *set; -struct lemon *lemp; -{ - int i; - char *spacer; - spacer = ""; - fprintf(out,"%12s[",""); - for(i=0; interminal; i++){ - if( SetFind(set,i) ){ - fprintf(out,"%s%s",spacer,lemp->symbols[i]->name); - spacer = " "; - } - } - fprintf(out,"]\n"); -} - -/* Print a plink chain */ -PRIVATE void PlinkPrint(out,plp,tag) -FILE *out; -struct plink *plp; -char *tag; -{ - while( plp ){ - fprintf(out,"%12s%s (state %2d) ","",tag,plp->cfp->stp->index); - ConfigPrint(out,plp->cfp); - fprintf(out,"\n"); - plp = plp->next; - } -} -#endif - -/* Print an action to the given file descriptor. Return FALSE if -** nothing was actually printed. -*/ -int PrintAction(struct action *ap, FILE *fp, int indent){ - int result = 1; - switch( ap->type ){ - case SHIFT: - fprintf(fp,"%*s shift %d",indent,ap->sp->name,ap->x.stp->index); - break; - case REDUCE: - fprintf(fp,"%*s reduce %d",indent,ap->sp->name,ap->x.rp->index); - break; - case ACCEPT: - fprintf(fp,"%*s accept",indent,ap->sp->name); - break; - case ERROR: - fprintf(fp,"%*s error",indent,ap->sp->name); - break; - case CONFLICT: - fprintf(fp,"%*s reduce %-3d ** Parsing conflict **", - indent,ap->sp->name,ap->x.rp->index); - break; - case SH_RESOLVED: - case RD_RESOLVED: - case NOT_USED: - result = 0; - break; - } - return result; -} - -/* Generate the "y.output" log file */ -void ReportOutput(lemp) -struct lemon *lemp; -{ - int i; - struct state *stp; - struct config *cfp; - struct action *ap; - FILE *fp; - - fp = file_open(lemp,".out","w"); - if( fp==0 ) return; - fprintf(fp," \b"); - for(i=0; instate; i++){ - stp = lemp->sorted[i]; - fprintf(fp,"State %d:\n",stp->index); - if( lemp->basisflag ) cfp=stp->bp; - else cfp=stp->cfp; - while( cfp ){ - char buf[20]; - if( cfp->dot==cfp->rp->nrhs ){ - sprintf(buf,"(%d)",cfp->rp->index); - fprintf(fp," %5s ",buf); - }else{ - fprintf(fp," "); - } - ConfigPrint(fp,cfp); - fprintf(fp,"\n"); -#ifdef TEST - SetPrint(fp,cfp->fws,lemp); - PlinkPrint(fp,cfp->fplp,"To "); - PlinkPrint(fp,cfp->bplp,"From"); -#endif - if( lemp->basisflag ) cfp=cfp->bp; - else cfp=cfp->next; - } - fprintf(fp,"\n"); - for(ap=stp->ap; ap; ap=ap->next){ - if( PrintAction(ap,fp,30) ) fprintf(fp,"\n"); - } - fprintf(fp,"\n"); - } - fclose(fp); - return; -} - -/* Search for the file "name" which is in the same directory as -** the exacutable */ -PRIVATE char *pathsearch(argv0,name,modemask) -char *argv0; -char *name; -int modemask; -{ - char *pathlist; - char *path,*cp; - char c; - extern int access(); - -#ifdef __WIN32__ - cp = strrchr(argv0,'\\'); -#else - cp = strrchr(argv0,'/'); -#endif - if( cp ){ - c = *cp; - *cp = 0; - path = (char *)malloc( strlen(argv0) + strlen(name) + 2 ); - if( path ) sprintf(path,"%s/%s",argv0,name); - *cp = c; - }else{ - extern char *getenv(); - pathlist = getenv("PATH"); - if( pathlist==0 ) pathlist = ".:/bin:/usr/bin"; - path = (char *)malloc( strlen(pathlist)+strlen(name)+2 ); - if( path!=0 ){ - while( *pathlist ){ - cp = strchr(pathlist,':'); - if( cp==0 ) cp = &pathlist[strlen(pathlist)]; - c = *cp; - *cp = 0; - sprintf(path,"%s/%s",pathlist,name); - *cp = c; - if( c==0 ) pathlist = ""; - else pathlist = &cp[1]; - if( access(path,modemask)==0 ) break; - } - } - } - return path; -} - -/* Given an action, compute the integer value for that action -** which is to be put in the action table of the generated machine. -** Return negative if no action should be generated. -*/ -PRIVATE int compute_action(lemp,ap) -struct lemon *lemp; -struct action *ap; -{ - int act; - switch( ap->type ){ - case SHIFT: act = ap->x.stp->index; break; - case REDUCE: act = ap->x.rp->index + lemp->nstate; break; - case ERROR: act = lemp->nstate + lemp->nrule; break; - case ACCEPT: act = lemp->nstate + lemp->nrule + 1; break; - default: act = -1; break; - } - return act; -} - -#define LINESIZE 1000 -/* The next cluster of routines are for reading the template file -** and writing the results to the generated parser */ -/* The first function transfers data from "in" to "out" until -** a line is seen which begins with "%%". The line number is -** tracked. -** -** if name!=0, then any word that begin with "Parse" is changed to -** begin with *name instead. -*/ -PRIVATE void tplt_xfer(name,in,out,lineno) -char *name; -FILE *in; -FILE *out; -int *lineno; -{ - int i, iStart; - char line[LINESIZE]; - while( fgets(line,LINESIZE,in) && (line[0]!='%' || line[1]!='%') ){ - (*lineno)++; - iStart = 0; - if( name ){ - for(i=0; line[i]; i++){ - if( line[i]=='P' && strncmp(&line[i],"Parse",5)==0 - && (i==0 || !isalpha(line[i-1])) - ){ - if( i>iStart ) fprintf(out,"%.*s",i-iStart,&line[iStart]); - fprintf(out,"%s",name); - i += 4; - iStart = i+1; - } - } - } - fprintf(out,"%s",&line[iStart]); - } -} - -/* The next function finds the template file and opens it, returning -** a pointer to the opened file. */ -PRIVATE FILE *tplt_open(lemp) -struct lemon *lemp; -{ - static char templatename[] = "lempar.c"; - char buf[1000]; - FILE *in; - char *tpltname; - char *cp; - - cp = strrchr(lemp->filename,'.'); - if( cp ){ - sprintf(buf,"%.*s.lt",(int)(cp-lemp->filename),lemp->filename); - }else{ - sprintf(buf,"%s.lt",lemp->filename); - } - if( access(buf,004)==0 ){ - tpltname = buf; - }else if( access(templatename,004)==0 ){ - tpltname = templatename; - }else{ - tpltname = pathsearch(lemp->argv0,templatename,0); - } - if( tpltname==0 ){ - fprintf(stderr,"Can't find the parser driver template file \"%s\".\n", - templatename); - lemp->errorcnt++; - return 0; - } - in = fopen(tpltname,"r"); - if( in==0 ){ - fprintf(stderr,"Can't open the template file \"%s\".\n",templatename); - lemp->errorcnt++; - return 0; - } - return in; -} - -/* Print a string to the file and keep the linenumber up to date */ -PRIVATE void tplt_print(out,lemp,str,strln,lineno) -FILE *out; -struct lemon *lemp; -char *str; -int strln; -int *lineno; -{ - if( str==0 ) return; - fprintf(out,"#line %d \"%s\"\n",strln,lemp->filename); (*lineno)++; - while( *str ){ - if( *str=='\n' ) (*lineno)++; - putc(*str,out); - str++; - } - fprintf(out,"\n#line %d \"%s\"\n",*lineno+2,lemp->outname); (*lineno)+=2; - return; -} - -/* -** The following routine emits code for the destructor for the -** symbol sp -*/ -void emit_destructor_code(out,sp,lemp,lineno) -FILE *out; -struct symbol *sp; -struct lemon *lemp; -int *lineno; -{ - char *cp = 0; - - int linecnt = 0; - if( sp->type==TERMINAL ){ - cp = lemp->tokendest; - if( cp==0 ) return; - fprintf(out,"#line %d \"%s\"\n{",lemp->tokendestln,lemp->filename); - }else if( sp->destructor ){ - cp = sp->destructor; - fprintf(out,"#line %d \"%s\"\n{",sp->destructorln,lemp->filename); - }else if( lemp->vardest ){ - cp = lemp->vardest; - if( cp==0 ) return; - fprintf(out,"#line %d \"%s\"\n{",lemp->vardestln,lemp->filename); - }else{ - assert( 0 ); /* Cannot happen */ - } - for(; *cp; cp++){ - if( *cp=='$' && cp[1]=='$' ){ - fprintf(out,"(yypminor->yy%d)",sp->dtnum); - cp++; - continue; - } - if( *cp=='\n' ) linecnt++; - fputc(*cp,out); - } - (*lineno) += 3 + linecnt; - fprintf(out,"}\n#line %d \"%s\"\n",*lineno,lemp->outname); - return; -} - -/* -** Return TRUE (non-zero) if the given symbol has a destructor. -*/ -int has_destructor(sp, lemp) -struct symbol *sp; -struct lemon *lemp; -{ - int ret; - if( sp->type==TERMINAL ){ - ret = lemp->tokendest!=0; - }else{ - ret = lemp->vardest!=0 || sp->destructor!=0; - } - return ret; -} - -/* -** Append text to a dynamically allocated string. If zText is 0 then -** reset the string to be empty again. Always return the complete text -** of the string (which is overwritten with each call). -** -** n bytes of zText are stored. If n==0 then all of zText up to the first -** \000 terminator is stored. zText can contain up to two instances of -** %d. The values of p1 and p2 are written into the first and second -** %d. -** -** If n==-1, then the previous character is overwritten. -*/ -PRIVATE char *append_str(char *zText, int n, int p1, int p2){ - static char *z = 0; - static int alloced = 0; - static int used = 0; - int i, c; - char zInt[40]; - - if( zText==0 ){ - used = 0; - return z; - } - if( n<=0 ){ - if( n<0 ){ - used += n; - assert( used>=0 ); - } - n = strlen(zText); - } - if( n+sizeof(zInt)*2+used >= alloced ){ - alloced = n + sizeof(zInt)*2 + used + 200; - z = realloc(z, alloced); - } - if( z==0 ) return ""; - while( n-- > 0 ){ - c = *(zText++); - if( c=='%' && zText[0]=='d' ){ - sprintf(zInt, "%d", p1); - p1 = p2; - strcpy(&z[used], zInt); - used += strlen(&z[used]); - zText++; - n--; - }else{ - z[used++] = c; - } - } - z[used] = 0; - return z; -} - -/* -** zCode is a string that is the action associated with a rule. Expand -** the symbols in this string so that the refer to elements of the parser -** stack. Return a new string stored in space obtained from malloc. -*/ -PRIVATE char *translate_code(struct lemon *lemp, struct rule *rp){ - char *cp, *xp; - int i; - char lhsused = 0; /* True if the LHS element has been used */ - char used[MAXRHS]; /* True for each RHS element which is used */ - - for(i=0; inrhs; i++) used[i] = 0; - lhsused = 0; - - append_str(0,0,0,0); - for(cp=rp->code; *cp; cp++){ - if( isalpha(*cp) && (cp==rp->code || (!isalnum(cp[-1]) && cp[-1]!='_')) ){ - char saved; - for(xp= &cp[1]; isalnum(*xp) || *xp=='_'; xp++); - saved = *xp; - *xp = 0; - if( rp->lhsalias && strcmp(cp,rp->lhsalias)==0 ){ - append_str("yygotominor.yy%d",0,rp->lhs->dtnum,0); - cp = xp; - lhsused = 1; - }else{ - for(i=0; inrhs; i++){ - if( rp->rhsalias[i] && strcmp(cp,rp->rhsalias[i])==0 ){ - if( cp!=rp->code && cp[-1]=='@' ){ - /* If the argument is of the form @X then substituted - ** the token number of X, not the value of X */ - append_str("yymsp[%d].major",-1,i-rp->nrhs+1,0); - }else{ - append_str("yymsp[%d].minor.yy%d",0, - i-rp->nrhs+1,rp->rhs[i]->dtnum); - } - cp = xp; - used[i] = 1; - break; - } - } - } - *xp = saved; - } - append_str(cp, 1, 0, 0); - } /* End loop */ - - /* Check to make sure the LHS has been used */ - if( rp->lhsalias && !lhsused ){ - ErrorMsg(lemp->filename,rp->ruleline, - "Label \"%s\" for \"%s(%s)\" is never used.", - rp->lhsalias,rp->lhs->name,rp->lhsalias); - lemp->errorcnt++; - } - - /* Generate destructor code for RHS symbols which are not used in the - ** reduce code */ - for(i=0; inrhs; i++){ - if( rp->rhsalias[i] && !used[i] ){ - ErrorMsg(lemp->filename,rp->ruleline, - "Label %s for \"%s(%s)\" is never used.", - rp->rhsalias[i],rp->rhs[i]->name,rp->rhsalias[i]); - lemp->errorcnt++; - }else if( rp->rhsalias[i]==0 ){ - if( has_destructor(rp->rhs[i],lemp) ){ - append_str(" yy_destructor(%d,&yymsp[%d].minor);\n", 0, - rp->rhs[i]->index,i-rp->nrhs+1); - }else{ - /* No destructor defined for this term */ - } - } - } - cp = append_str(0,0,0,0); - rp->code = Strsafe(cp); -} - -/* -** Generate code which executes when the rule "rp" is reduced. Write -** the code to "out". Make sure lineno stays up-to-date. -*/ -PRIVATE void emit_code(out,rp,lemp,lineno) -FILE *out; -struct rule *rp; -struct lemon *lemp; -int *lineno; -{ - char *cp; - int linecnt = 0; - - /* Generate code to do the reduce action */ - if( rp->code ){ - fprintf(out,"#line %d \"%s\"\n{",rp->line,lemp->filename); - fprintf(out,"%s",rp->code); - for(cp=rp->code; *cp; cp++){ - if( *cp=='\n' ) linecnt++; - } /* End loop */ - (*lineno) += 3 + linecnt; - fprintf(out,"}\n#line %d \"%s\"\n",*lineno,lemp->outname); - } /* End if( rp->code ) */ - - return; -} - -/* -** Print the definition of the union used for the parser's data stack. -** This union contains fields for every possible data type for tokens -** and nonterminals. In the process of computing and printing this -** union, also set the ".dtnum" field of every terminal and nonterminal -** symbol. -*/ -void print_stack_union(out,lemp,plineno,mhflag) -FILE *out; /* The output stream */ -struct lemon *lemp; /* The main info structure for this parser */ -int *plineno; /* Pointer to the line number */ -int mhflag; /* True if generating makeheaders output */ -{ - int lineno = *plineno; /* The line number of the output */ - char **types; /* A hash table of datatypes */ - int arraysize; /* Size of the "types" array */ - int maxdtlength; /* Maximum length of any ".datatype" field. */ - char *stddt; /* Standardized name for a datatype */ - int i,j; /* Loop counters */ - int hash; /* For hashing the name of a type */ - char *name; /* Name of the parser */ - - /* Allocate and initialize types[] and allocate stddt[] */ - arraysize = lemp->nsymbol * 2; - types = (char**)malloc( arraysize * sizeof(char*) ); - for(i=0; ivartype ){ - maxdtlength = strlen(lemp->vartype); - } - for(i=0; insymbol; i++){ - int len; - struct symbol *sp = lemp->symbols[i]; - if( sp->datatype==0 ) continue; - len = strlen(sp->datatype); - if( len>maxdtlength ) maxdtlength = len; - } - stddt = (char*)malloc( maxdtlength*2 + 1 ); - if( types==0 || stddt==0 ){ - fprintf(stderr,"Out of memory.\n"); - exit(1); - } - - /* Build a hash table of datatypes. The ".dtnum" field of each symbol - ** is filled in with the hash index plus 1. A ".dtnum" value of 0 is - ** used for terminal symbols. If there is no %default_type defined then - ** 0 is also used as the .dtnum value for nonterminals which do not specify - ** a datatype using the %type directive. - */ - for(i=0; insymbol; i++){ - struct symbol *sp = lemp->symbols[i]; - char *cp; - if( sp==lemp->errsym ){ - sp->dtnum = arraysize+1; - continue; - } - if( sp->type!=NONTERMINAL || (sp->datatype==0 && lemp->vartype==0) ){ - sp->dtnum = 0; - continue; - } - cp = sp->datatype; - if( cp==0 ) cp = lemp->vartype; - j = 0; - while( isspace(*cp) ) cp++; - while( *cp ) stddt[j++] = *cp++; - while( j>0 && isspace(stddt[j-1]) ) j--; - stddt[j] = 0; - hash = 0; - for(j=0; stddt[j]; j++){ - hash = hash*53 + stddt[j]; - } - hash = (hash & 0x7fffffff)%arraysize; - while( types[hash] ){ - if( strcmp(types[hash],stddt)==0 ){ - sp->dtnum = hash + 1; - break; - } - hash++; - if( hash>=arraysize ) hash = 0; - } - if( types[hash]==0 ){ - sp->dtnum = hash + 1; - types[hash] = (char*)malloc( strlen(stddt)+1 ); - if( types[hash]==0 ){ - fprintf(stderr,"Out of memory.\n"); - exit(1); - } - strcpy(types[hash],stddt); - } - } - - /* Print out the definition of YYTOKENTYPE and YYMINORTYPE */ - name = lemp->name ? lemp->name : "Parse"; - lineno = *plineno; - if( mhflag ){ fprintf(out,"#if INTERFACE\n"); lineno++; } - fprintf(out,"#define %sTOKENTYPE %s\n",name, - lemp->tokentype?lemp->tokentype:"void*"); lineno++; - if( mhflag ){ fprintf(out,"#endif\n"); lineno++; } - fprintf(out,"typedef union {\n"); lineno++; - fprintf(out," %sTOKENTYPE yy0;\n",name); lineno++; - for(i=0; ierrsym->dtnum); lineno++; - free(stddt); - free(types); - fprintf(out,"} YYMINORTYPE;\n"); lineno++; - *plineno = lineno; -} - -/* -** Return the name of a C datatype able to represent values between -** lwr and upr, inclusive. -*/ -static const char *minimum_size_type(int lwr, int upr){ - if( lwr>=0 ){ - if( upr<=255 ){ - return "unsigned char"; - }else if( upr<65535 ){ - return "unsigned short int"; - }else{ - return "unsigned int"; - } - }else if( lwr>=-127 && upr<=127 ){ - return "signed char"; - }else if( lwr>=-32767 && upr<32767 ){ - return "short"; - }else{ - return "int"; - } -} - -/* -** Each state contains a set of token transaction and a set of -** nonterminal transactions. Each of these sets makes an instance -** of the following structure. An array of these structures is used -** to order the creation of entries in the yy_action[] table. -*/ -struct axset { - struct state *stp; /* A pointer to a state */ - int isTkn; /* True to use tokens. False for non-terminals */ - int nAction; /* Number of actions */ -}; - -/* -** Compare to axset structures for sorting purposes -*/ -static int axset_compare(const void *a, const void *b){ - struct axset *p1 = (struct axset*)a; - struct axset *p2 = (struct axset*)b; - return p2->nAction - p1->nAction; -} - -/* Generate C source code for the parser */ -void ReportTable(lemp, mhflag) -struct lemon *lemp; -int mhflag; /* Output in makeheaders format if true */ -{ - FILE *out, *in; - char line[LINESIZE]; - int lineno; - struct state *stp; - struct action *ap; - struct rule *rp; - struct acttab *pActtab; - int i, j, n; - char *name; - int mnTknOfst, mxTknOfst; - int mnNtOfst, mxNtOfst; - struct axset *ax; - - in = tplt_open(lemp); - if( in==0 ) return; - out = file_open(lemp,".c","w"); - if( out==0 ){ - fclose(in); - return; - } - lineno = 1; - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate the include code, if any */ - tplt_print(out,lemp,lemp->include,lemp->includeln,&lineno); - if( mhflag ){ - char *name = file_makename(lemp, ".h"); - fprintf(out,"#include \"%s\"\n", name); lineno++; - free(name); - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate #defines for all tokens */ - if( mhflag ){ - char *prefix; - fprintf(out,"#if INTERFACE\n"); lineno++; - if( lemp->tokenprefix ) prefix = lemp->tokenprefix; - else prefix = ""; - for(i=1; interminal; i++){ - fprintf(out,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i); - lineno++; - } - fprintf(out,"#endif\n"); lineno++; - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate the defines */ - fprintf(out,"#define YYCODETYPE %s\n", - minimum_size_type(0, lemp->nsymbol+5)); lineno++; - fprintf(out,"#define YYNOCODE %d\n",lemp->nsymbol+1); lineno++; - fprintf(out,"#define YYACTIONTYPE %s\n", - minimum_size_type(0, lemp->nstate+lemp->nrule+5)); lineno++; - print_stack_union(out,lemp,&lineno,mhflag); - if( lemp->stacksize ){ - if( atoi(lemp->stacksize)<=0 ){ - ErrorMsg(lemp->filename,0, -"Illegal stack size: [%s]. The stack size should be an integer constant.", - lemp->stacksize); - lemp->errorcnt++; - lemp->stacksize = "100"; - } - fprintf(out,"#define YYSTACKDEPTH %s\n",lemp->stacksize); lineno++; - }else{ - fprintf(out,"#define YYSTACKDEPTH 100\n"); lineno++; - } - if( mhflag ){ - fprintf(out,"#if INTERFACE\n"); lineno++; - } - name = lemp->name ? lemp->name : "Parse"; - if( lemp->arg && lemp->arg[0] ){ - int i; - i = strlen(lemp->arg); - while( i>=1 && isspace(lemp->arg[i-1]) ) i--; - while( i>=1 && (isalnum(lemp->arg[i-1]) || lemp->arg[i-1]=='_') ) i--; - fprintf(out,"#define %sARG_SDECL %s;\n",name,lemp->arg); lineno++; - fprintf(out,"#define %sARG_PDECL ,%s\n",name,lemp->arg); lineno++; - fprintf(out,"#define %sARG_FETCH %s = yypParser->%s\n", - name,lemp->arg,&lemp->arg[i]); lineno++; - fprintf(out,"#define %sARG_STORE yypParser->%s = %s\n", - name,&lemp->arg[i],&lemp->arg[i]); lineno++; - }else{ - fprintf(out,"#define %sARG_SDECL\n",name); lineno++; - fprintf(out,"#define %sARG_PDECL\n",name); lineno++; - fprintf(out,"#define %sARG_FETCH\n",name); lineno++; - fprintf(out,"#define %sARG_STORE\n",name); lineno++; - } - if( mhflag ){ - fprintf(out,"#endif\n"); lineno++; - } - fprintf(out,"#define YYNSTATE %d\n",lemp->nstate); lineno++; - fprintf(out,"#define YYNRULE %d\n",lemp->nrule); lineno++; - fprintf(out,"#define YYERRORSYMBOL %d\n",lemp->errsym->index); lineno++; - fprintf(out,"#define YYERRSYMDT yy%d\n",lemp->errsym->dtnum); lineno++; - if( lemp->has_fallback ){ - fprintf(out,"#define YYFALLBACK 1\n"); lineno++; - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate the action table and its associates: - ** - ** yy_action[] A single table containing all actions. - ** yy_lookahead[] A table containing the lookahead for each entry in - ** yy_action. Used to detect hash collisions. - ** yy_shift_ofst[] For each state, the offset into yy_action for - ** shifting terminals. - ** yy_reduce_ofst[] For each state, the offset into yy_action for - ** shifting non-terminals after a reduce. - ** yy_default[] Default action for each state. - */ - - /* Compute the actions on all states and count them up */ - ax = malloc( sizeof(ax[0])*lemp->nstate*2 ); - if( ax==0 ){ - fprintf(stderr,"malloc failed\n"); - exit(1); - } - for(i=0; instate; i++){ - stp = lemp->sorted[i]; - stp->nTknAct = stp->nNtAct = 0; - stp->iDflt = lemp->nstate + lemp->nrule; - stp->iTknOfst = NO_OFFSET; - stp->iNtOfst = NO_OFFSET; - for(ap=stp->ap; ap; ap=ap->next){ - if( compute_action(lemp,ap)>=0 ){ - if( ap->sp->indexnterminal ){ - stp->nTknAct++; - }else if( ap->sp->indexnsymbol ){ - stp->nNtAct++; - }else{ - stp->iDflt = compute_action(lemp, ap); - } - } - } - ax[i*2].stp = stp; - ax[i*2].isTkn = 1; - ax[i*2].nAction = stp->nTknAct; - ax[i*2+1].stp = stp; - ax[i*2+1].isTkn = 0; - ax[i*2+1].nAction = stp->nNtAct; - } - mxTknOfst = mnTknOfst = 0; - mxNtOfst = mnNtOfst = 0; - - /* Compute the action table. In order to try to keep the size of the - ** action table to a minimum, the heuristic of placing the largest action - ** sets first is used. - */ - qsort(ax, lemp->nstate*2, sizeof(ax[0]), axset_compare); - pActtab = acttab_alloc(); - for(i=0; instate*2 && ax[i].nAction>0; i++){ - stp = ax[i].stp; - if( ax[i].isTkn ){ - for(ap=stp->ap; ap; ap=ap->next){ - int action; - if( ap->sp->index>=lemp->nterminal ) continue; - action = compute_action(lemp, ap); - if( action<0 ) continue; - acttab_action(pActtab, ap->sp->index, action); - } - stp->iTknOfst = acttab_insert(pActtab); - if( stp->iTknOfstiTknOfst; - if( stp->iTknOfst>mxTknOfst ) mxTknOfst = stp->iTknOfst; - }else{ - for(ap=stp->ap; ap; ap=ap->next){ - int action; - if( ap->sp->indexnterminal ) continue; - if( ap->sp->index==lemp->nsymbol ) continue; - action = compute_action(lemp, ap); - if( action<0 ) continue; - acttab_action(pActtab, ap->sp->index, action); - } - stp->iNtOfst = acttab_insert(pActtab); - if( stp->iNtOfstiNtOfst; - if( stp->iNtOfst>mxNtOfst ) mxNtOfst = stp->iNtOfst; - } - } - free(ax); - - /* Output the yy_action table */ - fprintf(out,"static YYACTIONTYPE yy_action[] = {\n"); lineno++; - n = acttab_size(pActtab); - for(i=j=0; insymbol + lemp->nrule + 2; - if( j==0 ) fprintf(out," /* %5d */ ", i); - fprintf(out, " %4d,", action); - if( j==9 || i==n-1 ){ - fprintf(out, "\n"); lineno++; - j = 0; - }else{ - j++; - } - } - fprintf(out, "};\n"); lineno++; - - /* Output the yy_lookahead table */ - fprintf(out,"static YYCODETYPE yy_lookahead[] = {\n"); lineno++; - for(i=j=0; insymbol; - if( j==0 ) fprintf(out," /* %5d */ ", i); - fprintf(out, " %4d,", la); - if( j==9 || i==n-1 ){ - fprintf(out, "\n"); lineno++; - j = 0; - }else{ - j++; - } - } - fprintf(out, "};\n"); lineno++; - - /* Output the yy_shift_ofst[] table */ - fprintf(out, "#define YY_SHIFT_USE_DFLT (%d)\n", mnTknOfst-1); lineno++; - fprintf(out, "static %s yy_shift_ofst[] = {\n", - minimum_size_type(mnTknOfst-1, mxTknOfst)); lineno++; - n = lemp->nstate; - for(i=j=0; isorted[i]; - ofst = stp->iTknOfst; - if( ofst==NO_OFFSET ) ofst = mnTknOfst - 1; - if( j==0 ) fprintf(out," /* %5d */ ", i); - fprintf(out, " %4d,", ofst); - if( j==9 || i==n-1 ){ - fprintf(out, "\n"); lineno++; - j = 0; - }else{ - j++; - } - } - fprintf(out, "};\n"); lineno++; - - /* Output the yy_reduce_ofst[] table */ - fprintf(out, "#define YY_REDUCE_USE_DFLT (%d)\n", mnNtOfst-1); lineno++; - fprintf(out, "static %s yy_reduce_ofst[] = {\n", - minimum_size_type(mnNtOfst-1, mxNtOfst)); lineno++; - n = lemp->nstate; - for(i=j=0; isorted[i]; - ofst = stp->iNtOfst; - if( ofst==NO_OFFSET ) ofst = mnNtOfst - 1; - if( j==0 ) fprintf(out," /* %5d */ ", i); - fprintf(out, " %4d,", ofst); - if( j==9 || i==n-1 ){ - fprintf(out, "\n"); lineno++; - j = 0; - }else{ - j++; - } - } - fprintf(out, "};\n"); lineno++; - - /* Output the default action table */ - fprintf(out, "static YYACTIONTYPE yy_default[] = {\n"); lineno++; - n = lemp->nstate; - for(i=j=0; isorted[i]; - if( j==0 ) fprintf(out," /* %5d */ ", i); - fprintf(out, " %4d,", stp->iDflt); - if( j==9 || i==n-1 ){ - fprintf(out, "\n"); lineno++; - j = 0; - }else{ - j++; - } - } - fprintf(out, "};\n"); lineno++; - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate the table of fallback tokens. - */ - if( lemp->has_fallback ){ - for(i=0; interminal; i++){ - struct symbol *p = lemp->symbols[i]; - if( p->fallback==0 ){ - fprintf(out, " 0, /* %10s => nothing */\n", p->name); - }else{ - fprintf(out, " %3d, /* %10s => %s */\n", p->fallback->index, - p->name, p->fallback->name); - } - lineno++; - } - } - tplt_xfer(lemp->name, in, out, &lineno); - - /* Generate a table containing the symbolic name of every symbol - */ - for(i=0; insymbol; i++){ - sprintf(line,"\"%s\",",lemp->symbols[i]->name); - fprintf(out," %-15s",line); - if( (i&3)==3 ){ fprintf(out,"\n"); lineno++; } - } - if( (i&3)!=0 ){ fprintf(out,"\n"); lineno++; } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate a table containing a text string that describes every - ** rule in the rule set of the grammer. This information is used - ** when tracing REDUCE actions. - */ - for(i=0, rp=lemp->rule; rp; rp=rp->next, i++){ - assert( rp->index==i ); - fprintf(out," /* %3d */ \"%s ::=", i, rp->lhs->name); - for(j=0; jnrhs; j++) fprintf(out," %s",rp->rhs[j]->name); - fprintf(out,"\",\n"); lineno++; - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which executes every time a symbol is popped from - ** the stack while processing errors or while destroying the parser. - ** (In other words, generate the %destructor actions) - */ - if( lemp->tokendest ){ - for(i=0; insymbol; i++){ - struct symbol *sp = lemp->symbols[i]; - if( sp==0 || sp->type!=TERMINAL ) continue; - fprintf(out," case %d:\n",sp->index); lineno++; - } - for(i=0; insymbol && lemp->symbols[i]->type!=TERMINAL; i++); - if( insymbol ){ - emit_destructor_code(out,lemp->symbols[i],lemp,&lineno); - fprintf(out," break;\n"); lineno++; - } - } - for(i=0; insymbol; i++){ - struct symbol *sp = lemp->symbols[i]; - if( sp==0 || sp->type==TERMINAL || sp->destructor==0 ) continue; - fprintf(out," case %d:\n",sp->index); lineno++; - - /* Combine duplicate destructors into a single case */ - for(j=i+1; jnsymbol; j++){ - struct symbol *sp2 = lemp->symbols[j]; - if( sp2 && sp2->type!=TERMINAL && sp2->destructor - && sp2->dtnum==sp->dtnum - && strcmp(sp->destructor,sp2->destructor)==0 ){ - fprintf(out," case %d:\n",sp2->index); lineno++; - sp2->destructor = 0; - } - } - - emit_destructor_code(out,lemp->symbols[i],lemp,&lineno); - fprintf(out," break;\n"); lineno++; - } - if( lemp->vardest ){ - struct symbol *dflt_sp = 0; - for(i=0; insymbol; i++){ - struct symbol *sp = lemp->symbols[i]; - if( sp==0 || sp->type==TERMINAL || - sp->index<=0 || sp->destructor!=0 ) continue; - fprintf(out," case %d:\n",sp->index); lineno++; - dflt_sp = sp; - } - if( dflt_sp!=0 ){ - emit_destructor_code(out,dflt_sp,lemp,&lineno); - fprintf(out," break;\n"); lineno++; - } - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which executes whenever the parser stack overflows */ - tplt_print(out,lemp,lemp->overflow,lemp->overflowln,&lineno); - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate the table of rule information - ** - ** Note: This code depends on the fact that rules are number - ** sequentually beginning with 0. - */ - for(rp=lemp->rule; rp; rp=rp->next){ - fprintf(out," { %d, %d },\n",rp->lhs->index,rp->nrhs); lineno++; - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which execution during each REDUCE action */ - for(rp=lemp->rule; rp; rp=rp->next){ - if( rp->code ) translate_code(lemp, rp); - } - for(rp=lemp->rule; rp; rp=rp->next){ - struct rule *rp2; - if( rp->code==0 ) continue; - fprintf(out," case %d:\n",rp->index); lineno++; - for(rp2=rp->next; rp2; rp2=rp2->next){ - if( rp2->code==rp->code ){ - fprintf(out," case %d:\n",rp2->index); lineno++; - rp2->code = 0; - } - } - emit_code(out,rp,lemp,&lineno); - fprintf(out," break;\n"); lineno++; - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which executes if a parse fails */ - tplt_print(out,lemp,lemp->failure,lemp->failureln,&lineno); - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which executes when a syntax error occurs */ - tplt_print(out,lemp,lemp->error,lemp->errorln,&lineno); - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which executes when the parser accepts its input */ - tplt_print(out,lemp,lemp->accept,lemp->acceptln,&lineno); - tplt_xfer(lemp->name,in,out,&lineno); - - /* Append any addition code the user desires */ - tplt_print(out,lemp,lemp->extracode,lemp->extracodeln,&lineno); - - fclose(in); - fclose(out); - return; -} - -/* Generate a header file for the parser */ -void ReportHeader(lemp) -struct lemon *lemp; -{ - FILE *out, *in; - char *prefix; - char line[LINESIZE]; - char pattern[LINESIZE]; - int i; - - if( lemp->tokenprefix ) prefix = lemp->tokenprefix; - else prefix = ""; - in = file_open(lemp,".h","r"); - if( in ){ - for(i=1; interminal && fgets(line,LINESIZE,in); i++){ - sprintf(pattern,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i); - if( strcmp(line,pattern) ) break; - } - fclose(in); - if( i==lemp->nterminal ){ - /* No change in the file. Don't rewrite it. */ - return; - } - } - out = file_open(lemp,".h","w"); - if( out ){ - for(i=1; interminal; i++){ - fprintf(out,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i); - } - fclose(out); - } - return; -} - -/* Reduce the size of the action tables, if possible, by making use -** of defaults. -** -** In this version, we take the most frequent REDUCE action and make -** it the default. Only default a reduce if there are more than one. -*/ -void CompressTables(lemp) -struct lemon *lemp; -{ - struct state *stp; - struct action *ap, *ap2; - struct rule *rp, *rp2, *rbest; - int nbest, n; - int i; - - for(i=0; instate; i++){ - stp = lemp->sorted[i]; - nbest = 0; - rbest = 0; - - for(ap=stp->ap; ap; ap=ap->next){ - if( ap->type!=REDUCE ) continue; - rp = ap->x.rp; - if( rp==rbest ) continue; - n = 1; - for(ap2=ap->next; ap2; ap2=ap2->next){ - if( ap2->type!=REDUCE ) continue; - rp2 = ap2->x.rp; - if( rp2==rbest ) continue; - if( rp2==rp ) n++; - } - if( n>nbest ){ - nbest = n; - rbest = rp; - } - } - - /* Do not make a default if the number of rules to default - ** is not at least 2 */ - if( nbest<2 ) continue; - - - /* Combine matching REDUCE actions into a single default */ - for(ap=stp->ap; ap; ap=ap->next){ - if( ap->type==REDUCE && ap->x.rp==rbest ) break; - } - assert( ap ); - ap->sp = Symbol_new("{default}"); - for(ap=ap->next; ap; ap=ap->next){ - if( ap->type==REDUCE && ap->x.rp==rbest ) ap->type = NOT_USED; - } - stp->ap = Action_sort(stp->ap); - } -} - -/***************** From the file "set.c" ************************************/ -/* -** Set manipulation routines for the LEMON parser generator. -*/ - -static int size = 0; - -/* Set the set size */ -void SetSize(n) -int n; -{ - size = n+1; -} - -/* Allocate a new set */ -char *SetNew(){ - char *s; - int i; - s = (char*)malloc( size ); - if( s==0 ){ - extern void memory_error(); - memory_error(); - } - for(i=0; isize = 1024; - x1a->count = 0; - x1a->tbl = (x1node*)malloc( - (sizeof(x1node) + sizeof(x1node*))*1024 ); - if( x1a->tbl==0 ){ - free(x1a); - x1a = 0; - }else{ - int i; - x1a->ht = (x1node**)&(x1a->tbl[1024]); - for(i=0; i<1024; i++) x1a->ht[i] = 0; - } - } -} -/* Insert a new record into the array. Return TRUE if successful. -** Prior data with the same key is NOT overwritten */ -int Strsafe_insert(data) -char *data; -{ - x1node *np; - int h; - int ph; - - if( x1a==0 ) return 0; - ph = strhash(data); - h = ph & (x1a->size-1); - np = x1a->ht[h]; - while( np ){ - if( strcmp(np->data,data)==0 ){ - /* An existing entry with the same key is found. */ - /* Fail because overwrite is not allows. */ - return 0; - } - np = np->next; - } - if( x1a->count>=x1a->size ){ - /* Need to make the hash table bigger */ - int i,size; - struct s_x1 array; - array.size = size = x1a->size*2; - array.count = x1a->count; - array.tbl = (x1node*)malloc( - (sizeof(x1node) + sizeof(x1node*))*size ); - if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ - array.ht = (x1node**)&(array.tbl[size]); - for(i=0; icount; i++){ - x1node *oldnp, *newnp; - oldnp = &(x1a->tbl[i]); - h = strhash(oldnp->data) & (size-1); - newnp = &(array.tbl[i]); - if( array.ht[h] ) array.ht[h]->from = &(newnp->next); - newnp->next = array.ht[h]; - newnp->data = oldnp->data; - newnp->from = &(array.ht[h]); - array.ht[h] = newnp; - } - free(x1a->tbl); - *x1a = array; - } - /* Insert the new data */ - h = ph & (x1a->size-1); - np = &(x1a->tbl[x1a->count++]); - np->data = data; - if( x1a->ht[h] ) x1a->ht[h]->from = &(np->next); - np->next = x1a->ht[h]; - x1a->ht[h] = np; - np->from = &(x1a->ht[h]); - return 1; -} - -/* Return a pointer to data assigned to the given key. Return NULL -** if no such key. */ -char *Strsafe_find(key) -char *key; -{ - int h; - x1node *np; - - if( x1a==0 ) return 0; - h = strhash(key) & (x1a->size-1); - np = x1a->ht[h]; - while( np ){ - if( strcmp(np->data,key)==0 ) break; - np = np->next; - } - return np ? np->data : 0; -} - -/* Return a pointer to the (terminal or nonterminal) symbol "x". -** Create a new symbol if this is the first time "x" has been seen. -*/ -struct symbol *Symbol_new(x) -char *x; -{ - struct symbol *sp; - - sp = Symbol_find(x); - if( sp==0 ){ - sp = (struct symbol *)malloc( sizeof(struct symbol) ); - MemoryCheck(sp); - sp->name = Strsafe(x); - sp->type = isupper(*x) ? TERMINAL : NONTERMINAL; - sp->rule = 0; - sp->fallback = 0; - sp->prec = -1; - sp->assoc = UNK; - sp->firstset = 0; - sp->lambda = B_FALSE; - sp->destructor = 0; - sp->datatype = 0; - Symbol_insert(sp,sp->name); - } - return sp; -} - -/* Compare two symbols for working purposes -** -** Symbols that begin with upper case letters (terminals or tokens) -** must sort before symbols that begin with lower case letters -** (non-terminals). Other than that, the order does not matter. -** -** We find experimentally that leaving the symbols in their original -** order (the order they appeared in the grammar file) gives the -** smallest parser tables in SQLite. -*/ -int Symbolcmpp(struct symbol **a, struct symbol **b){ - int i1 = (**a).index + 10000000*((**a).name[0]>'Z'); - int i2 = (**b).index + 10000000*((**b).name[0]>'Z'); - return i1-i2; -} - -/* There is one instance of the following structure for each -** associative array of type "x2". -*/ -struct s_x2 { - int size; /* The number of available slots. */ - /* Must be a power of 2 greater than or */ - /* equal to 1 */ - int count; /* Number of currently slots filled */ - struct s_x2node *tbl; /* The data stored here */ - struct s_x2node **ht; /* Hash table for lookups */ -}; - -/* There is one instance of this structure for every data element -** in an associative array of type "x2". -*/ -typedef struct s_x2node { - struct symbol *data; /* The data */ - char *key; /* The key */ - struct s_x2node *next; /* Next entry with the same hash */ - struct s_x2node **from; /* Previous link */ -} x2node; - -/* There is only one instance of the array, which is the following */ -static struct s_x2 *x2a; - -/* Allocate a new associative array */ -void Symbol_init(){ - if( x2a ) return; - x2a = (struct s_x2*)malloc( sizeof(struct s_x2) ); - if( x2a ){ - x2a->size = 128; - x2a->count = 0; - x2a->tbl = (x2node*)malloc( - (sizeof(x2node) + sizeof(x2node*))*128 ); - if( x2a->tbl==0 ){ - free(x2a); - x2a = 0; - }else{ - int i; - x2a->ht = (x2node**)&(x2a->tbl[128]); - for(i=0; i<128; i++) x2a->ht[i] = 0; - } - } -} -/* Insert a new record into the array. Return TRUE if successful. -** Prior data with the same key is NOT overwritten */ -int Symbol_insert(data,key) -struct symbol *data; -char *key; -{ - x2node *np; - int h; - int ph; - - if( x2a==0 ) return 0; - ph = strhash(key); - h = ph & (x2a->size-1); - np = x2a->ht[h]; - while( np ){ - if( strcmp(np->key,key)==0 ){ - /* An existing entry with the same key is found. */ - /* Fail because overwrite is not allows. */ - return 0; - } - np = np->next; - } - if( x2a->count>=x2a->size ){ - /* Need to make the hash table bigger */ - int i,size; - struct s_x2 array; - array.size = size = x2a->size*2; - array.count = x2a->count; - array.tbl = (x2node*)malloc( - (sizeof(x2node) + sizeof(x2node*))*size ); - if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ - array.ht = (x2node**)&(array.tbl[size]); - for(i=0; icount; i++){ - x2node *oldnp, *newnp; - oldnp = &(x2a->tbl[i]); - h = strhash(oldnp->key) & (size-1); - newnp = &(array.tbl[i]); - if( array.ht[h] ) array.ht[h]->from = &(newnp->next); - newnp->next = array.ht[h]; - newnp->key = oldnp->key; - newnp->data = oldnp->data; - newnp->from = &(array.ht[h]); - array.ht[h] = newnp; - } - free(x2a->tbl); - *x2a = array; - } - /* Insert the new data */ - h = ph & (x2a->size-1); - np = &(x2a->tbl[x2a->count++]); - np->key = key; - np->data = data; - if( x2a->ht[h] ) x2a->ht[h]->from = &(np->next); - np->next = x2a->ht[h]; - x2a->ht[h] = np; - np->from = &(x2a->ht[h]); - return 1; -} - -/* Return a pointer to data assigned to the given key. Return NULL -** if no such key. */ -struct symbol *Symbol_find(key) -char *key; -{ - int h; - x2node *np; - - if( x2a==0 ) return 0; - h = strhash(key) & (x2a->size-1); - np = x2a->ht[h]; - while( np ){ - if( strcmp(np->key,key)==0 ) break; - np = np->next; - } - return np ? np->data : 0; -} - -/* Return the n-th data. Return NULL if n is out of range. */ -struct symbol *Symbol_Nth(n) -int n; -{ - struct symbol *data; - if( x2a && n>0 && n<=x2a->count ){ - data = x2a->tbl[n-1].data; - }else{ - data = 0; - } - return data; -} - -/* Return the size of the array */ -int Symbol_count() -{ - return x2a ? x2a->count : 0; -} - -/* Return an array of pointers to all data in the table. -** The array is obtained from malloc. Return NULL if memory allocation -** problems, or if the array is empty. */ -struct symbol **Symbol_arrayof() -{ - struct symbol **array; - int i,size; - if( x2a==0 ) return 0; - size = x2a->count; - array = (struct symbol **)malloc( sizeof(struct symbol *)*size ); - if( array ){ - for(i=0; itbl[i].data; - } - return array; -} - -/* Compare two configurations */ -int Configcmp(a,b) -struct config *a; -struct config *b; -{ - int x; - x = a->rp->index - b->rp->index; - if( x==0 ) x = a->dot - b->dot; - return x; -} - -/* Compare two states */ -PRIVATE int statecmp(a,b) -struct config *a; -struct config *b; -{ - int rc; - for(rc=0; rc==0 && a && b; a=a->bp, b=b->bp){ - rc = a->rp->index - b->rp->index; - if( rc==0 ) rc = a->dot - b->dot; - } - if( rc==0 ){ - if( a ) rc = 1; - if( b ) rc = -1; - } - return rc; -} - -/* Hash a state */ -PRIVATE int statehash(a) -struct config *a; -{ - int h=0; - while( a ){ - h = h*571 + a->rp->index*37 + a->dot; - a = a->bp; - } - return h; -} - -/* Allocate a new state structure */ -struct state *State_new() -{ - struct state *new; - new = (struct state *)malloc( sizeof(struct state) ); - MemoryCheck(new); - return new; -} - -/* There is one instance of the following structure for each -** associative array of type "x3". -*/ -struct s_x3 { - int size; /* The number of available slots. */ - /* Must be a power of 2 greater than or */ - /* equal to 1 */ - int count; /* Number of currently slots filled */ - struct s_x3node *tbl; /* The data stored here */ - struct s_x3node **ht; /* Hash table for lookups */ -}; - -/* There is one instance of this structure for every data element -** in an associative array of type "x3". -*/ -typedef struct s_x3node { - struct state *data; /* The data */ - struct config *key; /* The key */ - struct s_x3node *next; /* Next entry with the same hash */ - struct s_x3node **from; /* Previous link */ -} x3node; - -/* There is only one instance of the array, which is the following */ -static struct s_x3 *x3a; - -/* Allocate a new associative array */ -void State_init(){ - if( x3a ) return; - x3a = (struct s_x3*)malloc( sizeof(struct s_x3) ); - if( x3a ){ - x3a->size = 128; - x3a->count = 0; - x3a->tbl = (x3node*)malloc( - (sizeof(x3node) + sizeof(x3node*))*128 ); - if( x3a->tbl==0 ){ - free(x3a); - x3a = 0; - }else{ - int i; - x3a->ht = (x3node**)&(x3a->tbl[128]); - for(i=0; i<128; i++) x3a->ht[i] = 0; - } - } -} -/* Insert a new record into the array. Return TRUE if successful. -** Prior data with the same key is NOT overwritten */ -int State_insert(data,key) -struct state *data; -struct config *key; -{ - x3node *np; - int h; - int ph; - - if( x3a==0 ) return 0; - ph = statehash(key); - h = ph & (x3a->size-1); - np = x3a->ht[h]; - while( np ){ - if( statecmp(np->key,key)==0 ){ - /* An existing entry with the same key is found. */ - /* Fail because overwrite is not allows. */ - return 0; - } - np = np->next; - } - if( x3a->count>=x3a->size ){ - /* Need to make the hash table bigger */ - int i,size; - struct s_x3 array; - array.size = size = x3a->size*2; - array.count = x3a->count; - array.tbl = (x3node*)malloc( - (sizeof(x3node) + sizeof(x3node*))*size ); - if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ - array.ht = (x3node**)&(array.tbl[size]); - for(i=0; icount; i++){ - x3node *oldnp, *newnp; - oldnp = &(x3a->tbl[i]); - h = statehash(oldnp->key) & (size-1); - newnp = &(array.tbl[i]); - if( array.ht[h] ) array.ht[h]->from = &(newnp->next); - newnp->next = array.ht[h]; - newnp->key = oldnp->key; - newnp->data = oldnp->data; - newnp->from = &(array.ht[h]); - array.ht[h] = newnp; - } - free(x3a->tbl); - *x3a = array; - } - /* Insert the new data */ - h = ph & (x3a->size-1); - np = &(x3a->tbl[x3a->count++]); - np->key = key; - np->data = data; - if( x3a->ht[h] ) x3a->ht[h]->from = &(np->next); - np->next = x3a->ht[h]; - x3a->ht[h] = np; - np->from = &(x3a->ht[h]); - return 1; -} - -/* Return a pointer to data assigned to the given key. Return NULL -** if no such key. */ -struct state *State_find(key) -struct config *key; -{ - int h; - x3node *np; - - if( x3a==0 ) return 0; - h = statehash(key) & (x3a->size-1); - np = x3a->ht[h]; - while( np ){ - if( statecmp(np->key,key)==0 ) break; - np = np->next; - } - return np ? np->data : 0; -} - -/* Return an array of pointers to all data in the table. -** The array is obtained from malloc. Return NULL if memory allocation -** problems, or if the array is empty. */ -struct state **State_arrayof() -{ - struct state **array; - int i,size; - if( x3a==0 ) return 0; - size = x3a->count; - array = (struct state **)malloc( sizeof(struct state *)*size ); - if( array ){ - for(i=0; itbl[i].data; - } - return array; -} - -/* Hash a configuration */ -PRIVATE int confighash(a) -struct config *a; -{ - int h=0; - h = h*571 + a->rp->index*37 + a->dot; - return h; -} - -/* There is one instance of the following structure for each -** associative array of type "x4". -*/ -struct s_x4 { - int size; /* The number of available slots. */ - /* Must be a power of 2 greater than or */ - /* equal to 1 */ - int count; /* Number of currently slots filled */ - struct s_x4node *tbl; /* The data stored here */ - struct s_x4node **ht; /* Hash table for lookups */ -}; - -/* There is one instance of this structure for every data element -** in an associative array of type "x4". -*/ -typedef struct s_x4node { - struct config *data; /* The data */ - struct s_x4node *next; /* Next entry with the same hash */ - struct s_x4node **from; /* Previous link */ -} x4node; - -/* There is only one instance of the array, which is the following */ -static struct s_x4 *x4a; - -/* Allocate a new associative array */ -void Configtable_init(){ - if( x4a ) return; - x4a = (struct s_x4*)malloc( sizeof(struct s_x4) ); - if( x4a ){ - x4a->size = 64; - x4a->count = 0; - x4a->tbl = (x4node*)malloc( - (sizeof(x4node) + sizeof(x4node*))*64 ); - if( x4a->tbl==0 ){ - free(x4a); - x4a = 0; - }else{ - int i; - x4a->ht = (x4node**)&(x4a->tbl[64]); - for(i=0; i<64; i++) x4a->ht[i] = 0; - } - } -} -/* Insert a new record into the array. Return TRUE if successful. -** Prior data with the same key is NOT overwritten */ -int Configtable_insert(data) -struct config *data; -{ - x4node *np; - int h; - int ph; - - if( x4a==0 ) return 0; - ph = confighash(data); - h = ph & (x4a->size-1); - np = x4a->ht[h]; - while( np ){ - if( Configcmp(np->data,data)==0 ){ - /* An existing entry with the same key is found. */ - /* Fail because overwrite is not allows. */ - return 0; - } - np = np->next; - } - if( x4a->count>=x4a->size ){ - /* Need to make the hash table bigger */ - int i,size; - struct s_x4 array; - array.size = size = x4a->size*2; - array.count = x4a->count; - array.tbl = (x4node*)malloc( - (sizeof(x4node) + sizeof(x4node*))*size ); - if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ - array.ht = (x4node**)&(array.tbl[size]); - for(i=0; icount; i++){ - x4node *oldnp, *newnp; - oldnp = &(x4a->tbl[i]); - h = confighash(oldnp->data) & (size-1); - newnp = &(array.tbl[i]); - if( array.ht[h] ) array.ht[h]->from = &(newnp->next); - newnp->next = array.ht[h]; - newnp->data = oldnp->data; - newnp->from = &(array.ht[h]); - array.ht[h] = newnp; - } - free(x4a->tbl); - *x4a = array; - } - /* Insert the new data */ - h = ph & (x4a->size-1); - np = &(x4a->tbl[x4a->count++]); - np->data = data; - if( x4a->ht[h] ) x4a->ht[h]->from = &(np->next); - np->next = x4a->ht[h]; - x4a->ht[h] = np; - np->from = &(x4a->ht[h]); - return 1; -} - -/* Return a pointer to data assigned to the given key. Return NULL -** if no such key. */ -struct config *Configtable_find(key) -struct config *key; -{ - int h; - x4node *np; - - if( x4a==0 ) return 0; - h = confighash(key) & (x4a->size-1); - np = x4a->ht[h]; - while( np ){ - if( Configcmp(np->data,key)==0 ) break; - np = np->next; - } - return np ? np->data : 0; -} - -/* Remove all data from the table. Pass each data to the function "f" -** as it is removed. ("f" may be null to avoid this step.) */ -void Configtable_clear(f) -int(*f)(/* struct config * */); -{ - int i; - if( x4a==0 || x4a->count==0 ) return; - if( f ) for(i=0; icount; i++) (*f)(x4a->tbl[i].data); - for(i=0; isize; i++) x4a->ht[i] = 0; - x4a->count = 0; - return; -} diff --git a/parser/parser/lempar.c b/parser/parser/lempar.c deleted file mode 100644 index b21cedf6b3..0000000000 --- a/parser/parser/lempar.c +++ /dev/null @@ -1,686 +0,0 @@ -/** The author disclaims copyright to this source code. -*/ -/* First off, code is include which follows the "include" declaration -** in the input file. */ -#include -%% -/* Next is all token values, in a form suitable for use by makeheaders. -** This section will be null unless lemon is run with the -m switch. -*/ -/* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ -%% -/* Make sure the INTERFACE macro is defined. -*/ -#ifndef INTERFACE -# define INTERFACE 1 -#endif -/* The next thing included is series of defines which control -** various aspects of the generated parser. -** YYCODETYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 terminals -** and nonterminals. "int" is used otherwise. -** YYNOCODE is a number of type YYCODETYPE which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. -** YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** YYACTIONTYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 rules and -** states combined. "int" is used otherwise. -** ParseTOKENTYPE is the data type used for minor tokens given -** directly to the parser from the tokenizer. -** YYMINORTYPE is the data type used for all minor tokens. -** This is typically a union of many types, one of -** which is ParseTOKENTYPE. The entry in the union -** for base tokens is called "yy0". -** YYSTACKDEPTH is the maximum depth of the parser's stack. -** ParseARG_SDECL A static variable declaration for the %extra_argument -** ParseARG_PDECL A parameter declaration for the %extra_argument -** ParseARG_STORE Code to store %extra_argument into yypParser -** ParseARG_FETCH Code to extract %extra_argument from yypParser -** YYNSTATE the combined number of states. -** YYNRULE the number of rules in the grammar -** YYERRORSYMBOL is the code number of the error symbol. If not -** defined, then do no error processing. -*/ -%% -#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) -#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) -#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) - -/* Next are that tables used to determine what action to take based on the -** current state and lookahead token. These tables are used to implement -** functions that take a state number and lookahead value and return an -** action integer. -** -** Suppose the action integer is N. Then the action is determined as -** follows -** -** 0 <= N < YYNSTATE Shift N. That is, push the lookahead -** token onto the stack and goto state N. -** -** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. -** -** N == YYNSTATE+YYNRULE A syntax error has occurred. -** -** N == YYNSTATE+YYNRULE+1 The parser accepts its input. -** -** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused -** slots in the yy_action[] table. -** -** The action table is constructed as a single large table named yy_action[]. -** Given state S and lookahead X, the action is computed as -** -** yy_action[ yy_shift_ofst[S] + X ] -** -** If the index value yy_shift_ofst[S]+X is out of range or if the value -** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] -** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table -** and that yy_default[S] should be used instead. -** -** The formula above is for computing the action when the lookahead is -** a terminal symbol. If the lookahead is a non-terminal (as occurs after -** a reduce action) then the yy_reduce_ofst[] array is used in place of -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of -** YY_SHIFT_USE_DFLT. -** -** The following are the tables generated in this section: -** -** yy_action[] A single table containing all actions. -** yy_lookahead[] A table containing the lookahead for each entry in -** yy_action. Used to detect hash collisions. -** yy_shift_ofst[] For each state, the offset into yy_action for -** shifting terminals. -** yy_reduce_ofst[] For each state, the offset into yy_action for -** shifting non-terminals after a reduce. -** yy_default[] Default action for each state. -*/ -%% -#define YY_SZ_ACTTAB (sizeof(yy_action)/sizeof(yy_action[0])) - -/* The next table maps tokens into fallback tokens. If a construct -** like the following: -** -** %fallback ID X Y Z. -** -** appears in the grammer, then ID becomes a fallback token for X, Y, -** and Z. Whenever one of the tokens X, Y, or Z is input to the parser -** but it does not parse, the type of the token is changed to ID and -** the parse is retried before an error is thrown. -*/ -#ifdef YYFALLBACK -static const YYCODETYPE yyFallback[] = { -%% -}; -#endif /* YYFALLBACK */ - -/* The following structure represents a single element of the -** parser's stack. Information stored includes: -** -** + The state number for the parser at this level of the stack. -** -** + The value of the token stored at this level of the stack. -** (In other words, the "major" token.) -** -** + The semantic value stored at this level of the stack. This is -** the information used by the action routines in the grammar. -** It is sometimes called the "minor" token. -*/ -struct yyStackEntry { - int stateno; /* The state-number */ - int major; /* The major token value. This is the code - ** number for the token at this stack level */ - YYMINORTYPE minor; /* The user-supplied minor token value. This - ** is the value of the token */ -}; -typedef struct yyStackEntry yyStackEntry; - -/* The state of the parser is completely contained in an instance of -** the following structure */ -struct yyParser { - int yyidx; /* Index of top element in stack */ - int yyerrcnt; /* Shifts left before out of the error */ - ParseARG_SDECL /* A place to hold %extra_argument */ - yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ -}; -typedef struct yyParser yyParser; - -#ifndef NDEBUG -#include -static FILE *yyTraceFILE = 0; -static char *yyTracePrompt = 0; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* -** Turn parser tracing on by giving a stream to which to write the trace -** and a prompt to preface each trace message. Tracing is turned off -** by making either argument NULL -** -** Inputs: -**
    -**
  • A FILE* to which trace output should be written. -** If NULL, then tracing is turned off. -**
  • A prefix string written at the beginning of every -** line of trace output. If NULL, then tracing is -** turned off. -**
-** -** Outputs: -** None. -*/ -void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ - yyTraceFILE = TraceFILE; - yyTracePrompt = zTracePrompt; - if( yyTraceFILE==0 ) yyTracePrompt = 0; - else if( yyTracePrompt==0 ) yyTraceFILE = 0; -} -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing shifts, the names of all terminals and nonterminals -** are required. The following table supplies these names */ -static const char *yyTokenName[] = { -%% -}; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing reduce actions, the names of all rules are required. -*/ -static const char *yyRuleName[] = { -%% -}; -#endif /* NDEBUG */ - -/* -** This function returns the symbolic name associated with a token -** value. -*/ -const char *ParseTokenName(int tokenType){ -#ifndef NDEBUG - if( tokenType>0 && tokenType<(sizeof(yyTokenName)/sizeof(yyTokenName[0])) ){ - return yyTokenName[tokenType]; - }else{ - return "Unknown"; - } -#else - return ""; -#endif -} - -/* -** This function allocates a new parser. -** The only argument is a pointer to a function which works like -** malloc. -** -** Inputs: -** A pointer to the function used to allocate memory. -** -** Outputs: -** A pointer to a parser. This pointer is used in subsequent calls -** to Parse and ParseFree. -*/ -void *ParseAlloc(void *(*mallocProc)(size_t)){ - yyParser *pParser; - pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); - if( pParser ){ - pParser->yyidx = -1; - } - return pParser; -} - -/* The following function deletes the value associated with a -** symbol. The symbol can be either a terminal or nonterminal. -** "yymajor" is the symbol code, and "yypminor" is a pointer to -** the value. -*/ -static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){ - switch( yymajor ){ - /* Here is inserted the actions which take place when a - ** terminal or non-terminal is destroyed. This can happen - ** when the symbol is popped from the stack during a - ** reduce or during error processing or when a parser is - ** being destroyed before it is finished parsing. - ** - ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used - ** inside the C code. - */ -%% - default: break; /* If no destructor action specified: do nothing */ - } -} - -/* -** Pop the parser's stack once. -** -** If there is a destructor routine associated with the token which -** is popped from the stack, then call it. -** -** Return the major token number for the symbol popped. -*/ -static int yy_pop_parser_stack(yyParser *pParser){ - YYCODETYPE yymajor; - yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; - - if( pParser->yyidx<0 ) return 0; -#ifndef NDEBUG - if( yyTraceFILE && pParser->yyidx>=0 ){ - fprintf(yyTraceFILE,"%sPopping %s\n", - yyTracePrompt, - yyTokenName[yytos->major]); - } -#endif - yymajor = yytos->major; - yy_destructor( yymajor, &yytos->minor); - pParser->yyidx--; - return yymajor; -} - -/* -** Deallocate and destroy a parser. Destructors are all called for -** all stack elements before shutting the parser down. -** -** Inputs: -**
    -**
  • A pointer to the parser. This should be a pointer -** obtained from ParseAlloc. -**
  • A pointer to a function used to reclaim memory obtained -** from malloc. -**
-*/ -void ParseFree( - void *p, /* The parser to be deleted */ - void (*freeProc)(void*) /* Function used to reclaim memory */ -){ - yyParser *pParser = (yyParser*)p; - if( pParser==0 ) return; - while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser); - (*freeProc)((void*)pParser); -} - -/* -** Find the appropriate action for a parser given the terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_shift_action( - yyParser *pParser, /* The parser */ - int iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - /* if( pParser->yyidx<0 ) return YY_NO_ACTION; */ - i = yy_shift_ofst[stateno]; - if( i==YY_SHIFT_USE_DFLT ){ - return yy_default[stateno]; - } - if( iLookAhead==YYNOCODE ){ - return YY_NO_ACTION; - } - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ -#ifdef YYFALLBACK - int iFallback; /* Fallback token */ - if( iLookAhead %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); - } -#endif - return yy_find_shift_action(pParser, iFallback); - } -#endif - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Find the appropriate action for a parser given the non-terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_reduce_action( - yyParser *pParser, /* The parser */ - int iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - i = yy_reduce_ofst[stateno]; - if( i==YY_REDUCE_USE_DFLT ){ - return yy_default[stateno]; - } - if( iLookAhead==YYNOCODE ){ - return YY_NO_ACTION; - } - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Perform a shift action. -*/ -static void yy_shift( - yyParser *yypParser, /* The parser to be shifted */ - int yyNewState, /* The new state to shift in */ - int yyMajor, /* The major token to shift in */ - YYMINORTYPE *yypMinor /* Pointer ot the minor token to shift in */ -){ - yyStackEntry *yytos; - yypParser->yyidx++; - if( yypParser->yyidx>=YYSTACKDEPTH ){ - ParseARG_FETCH; - yypParser->yyidx--; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will execute if the parser - ** stack every overflows */ -%% - ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ - return; - } - yytos = &yypParser->yystack[yypParser->yyidx]; - yytos->stateno = yyNewState; - yytos->major = yyMajor; - yytos->minor = *yypMinor; -#ifndef NDEBUG - if( yyTraceFILE && yypParser->yyidx>0 ){ - int i; - fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState); - fprintf(yyTraceFILE,"%sStack:",yyTracePrompt); - for(i=1; i<=yypParser->yyidx; i++) - fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); - fprintf(yyTraceFILE,"\n"); - } -#endif -} - -/* The following table contains information about every rule that -** is used during the reduce. -*/ -static struct { - YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ - unsigned char nrhs; /* Number of right-hand side symbols in the rule */ -} yyRuleInfo[] = { -%% -}; - -static void yy_accept(yyParser*); /* Forward Declaration */ - -/* -** Perform a reduce action and the shift that must immediately -** follow the reduce. -*/ -static void yy_reduce( - yyParser *yypParser, /* The parser */ - int yyruleno /* Number of the rule by which to reduce */ -){ - int yygoto; /* The next state */ - int yyact; /* The next action */ - YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ - yyStackEntry *yymsp; /* The top of the parser's stack */ - int yysize; /* Amount to pop the stack */ - ParseARG_FETCH; - yymsp = &yypParser->yystack[yypParser->yyidx]; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno>=0 - && yyruleno - ** { ... } // User supplied code - ** #line - ** break; - */ -%% - }; - yygoto = yyRuleInfo[yyruleno].lhs; - yysize = yyRuleInfo[yyruleno].nrhs; - yypParser->yyidx -= yysize; - yyact = yy_find_reduce_action(yypParser,yygoto); - if( yyact < YYNSTATE ){ - yy_shift(yypParser,yyact,yygoto,&yygotominor); - }else if( yyact == YYNSTATE + YYNRULE + 1 ){ - yy_accept(yypParser); - } -} - -/* -** The following code executes when the parse fails -*/ -static void yy_parse_failed( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser fails */ -%% - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following code executes when a syntax error first occurs. -*/ -static void yy_syntax_error( - yyParser *yypParser, /* The parser */ - int yymajor, /* The major type of the error token */ - YYMINORTYPE yyminor /* The minor type of the error token */ -){ - ParseARG_FETCH; -#define TOKEN (yyminor.yy0) -%% - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following is executed when the parser accepts -*/ -static void yy_accept( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser accepts */ -%% - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* The main parser program. -** The first argument is a pointer to a structure obtained from -** "ParseAlloc" which describes the current state of the parser. -** The second argument is the major token number. The third is -** the minor token. The fourth optional argument is whatever the -** user wants (and specified in the grammar) and is available for -** use by the action routines. -** -** Inputs: -**
    -**
  • A pointer to the parser (an opaque structure.) -**
  • The major token number. -**
  • The minor token number. -**
  • An option argument of a grammar-specified type. -**
-** -** Outputs: -** None. -*/ -void Parse( - void *yyp, /* The parser */ - int yymajor, /* The major token code number */ - ParseTOKENTYPE yyminor /* The value for the token */ - ParseARG_PDECL /* Optional %extra_argument parameter */ -){ - YYMINORTYPE yyminorunion; - int yyact; /* The parser action. */ - int yyendofinput; /* True if we are at the end of input */ - int yyerrorhit = 0; /* True if yymajor has invoked an error */ - yyParser *yypParser; /* The parser */ - - /* (re)initialize the parser, if necessary */ - yypParser = (yyParser*)yyp; - if( yypParser->yyidx<0 ){ - if( yymajor==0 ) return; - yypParser->yyidx = 0; - yypParser->yyerrcnt = -1; - yypParser->yystack[0].stateno = 0; - yypParser->yystack[0].major = 0; - } - yyminorunion.yy0 = yyminor; - yyendofinput = (yymajor==0); - ParseARG_STORE; - -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); - } -#endif - - do{ - yyact = yy_find_shift_action(yypParser,yymajor); - if( yyactyyerrcnt--; - if( yyendofinput && yypParser->yyidx>=0 ){ - yymajor = 0; - }else{ - yymajor = YYNOCODE; - } - }else if( yyact < YYNSTATE + YYNRULE ){ - yy_reduce(yypParser,yyact-YYNSTATE); - }else if( yyact == YY_ERROR_ACTION ){ - int yymx; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); - } -#endif -#ifdef YYERRORSYMBOL - /* A syntax error has occurred. - ** The response to an error depends upon whether or not the - ** grammar defines an error token "ERROR". - ** - ** This is what we do if the grammar does define ERROR: - ** - ** * Call the %syntax_error function. - ** - ** * Begin popping the stack until we enter a state where - ** it is legal to shift the error symbol, then shift - ** the error symbol. - ** - ** * Set the error count to three. - ** - ** * Begin accepting and shifting new tokens. No new error - ** processing will occur until three tokens have been - ** shifted successfully. - ** - */ - if( yypParser->yyerrcnt<0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yymx = yypParser->yystack[yypParser->yyidx].major; - if( yymx==YYERRORSYMBOL || yyerrorhit ){ -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sDiscard input token %s\n", - yyTracePrompt,yyTokenName[yymajor]); - } -#endif - yy_destructor(yymajor,&yyminorunion); - yymajor = YYNOCODE; - }else{ - while( - yypParser->yyidx >= 0 && - yymx != YYERRORSYMBOL && - (yyact = yy_find_shift_action(yypParser,YYERRORSYMBOL)) >= YYNSTATE - ){ - yy_pop_parser_stack(yypParser); - } - if( yypParser->yyidx < 0 || yymajor==0 ){ - yy_destructor(yymajor,&yyminorunion); - yy_parse_failed(yypParser); - yymajor = YYNOCODE; - }else if( yymx!=YYERRORSYMBOL ){ - YYMINORTYPE u2; - u2.YYERRSYMDT = 0; - yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2); - } - } - yypParser->yyerrcnt = 3; - yyerrorhit = 1; -#else /* YYERRORSYMBOL is not defined */ - /* This is what we do if the grammar does not define ERROR: - ** - ** * Report an error message, and throw away the input token. - ** - ** * If the input token is $, then fail the parse. - ** - ** As before, subsequent error messages are suppressed until - ** three input tokens have been successfully shifted. - */ - if( yypParser->yyerrcnt<=0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yypParser->yyerrcnt = 3; - yy_destructor(yymajor,&yyminorunion); - if( yyendofinput ){ - yy_parse_failed(yypParser); - } - yymajor = YYNOCODE; -#endif - }else{ - yy_accept(yypParser); - yymajor = YYNOCODE; - } - }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); - return; -} diff --git a/parser/parser/parser.h b/parser/parser/parser.h deleted file mode 100644 index 2c5dfb0ecf..0000000000 --- a/parser/parser/parser.h +++ /dev/null @@ -1,126 +0,0 @@ -#define XX_INTERNAL 1 -#define XX_PUBLIC 2 -#define XX_PROTECTED 3 -#define XX_STATIC 4 -#define XX_PRIVATE 5 -#define XX_SCOPED 6 -#define XX_COMMA 7 -#define XX_REQUIRE 8 -#define XX_DOUBLEARROW 9 -#define XX_QUESTION 10 -#define XX_LIKELY 11 -#define XX_UNLIKELY 12 -#define XX_OR 13 -#define XX_AND 14 -#define XX_INSTANCEOF 15 -#define XX_BITWISE_OR 16 -#define XX_BITWISE_XOR 17 -#define XX_BITWISE_SHIFTLEFT 18 -#define XX_BITWISE_SHIFTRIGHT 19 -#define XX_EQUALS 20 -#define XX_IDENTICAL 21 -#define XX_LESS 22 -#define XX_GREATER 23 -#define XX_LESSEQUAL 24 -#define XX_GREATEREQUAL 25 -#define XX_NOTIDENTICAL 26 -#define XX_NOTEQUALS 27 -#define XX_ADD 28 -#define XX_SUB 29 -#define XX_CONCAT 30 -#define XX_MUL 31 -#define XX_DIV 32 -#define XX_MOD 33 -#define XX_ISSET 34 -#define XX_FETCH 35 -#define XX_EMPTY 36 -#define XX_INCLUSIVE_RANGE 37 -#define XX_EXCLUSIVE_RANGE 38 -#define XX_TYPEOF 39 -#define XX_CLONE 40 -#define XX_NEW 41 -#define XX_NOT 42 -#define XX_BITWISE_NOT 43 -#define XX_BITWISE_AND 44 -#define XX_PARENTHESES_CLOSE 45 -#define XX_SBRACKET_OPEN 46 -#define XX_ARROW 47 -#define XX_NAMESPACE 48 -#define XX_IDENTIFIER 49 -#define XX_DOTCOMMA 50 -#define XX_USE 51 -#define XX_AS 52 -#define XX_FUNCTION 53 -#define XX_PARENTHESES_OPEN 54 -#define XX_BRACKET_OPEN 55 -#define XX_BRACKET_CLOSE 56 -#define XX_INTERFACE 57 -#define XX_EXTENDS 58 -#define XX_CLASS 59 -#define XX_IMPLEMENTS 60 -#define XX_ABSTRACT 61 -#define XX_FINAL 62 -#define XX_COMMENT 63 -#define XX_ASSIGN 64 -#define XX_CONST 65 -#define XX_CONSTANT 66 -#define XX_INLINE 67 -#define XX_DEPRECATED 68 -#define XX_VOID 69 -#define XX_NULL 70 -#define XX_THIS 71 -#define XX_SBRACKET_CLOSE 72 -#define XX_TYPE_INTEGER 73 -#define XX_TYPE_UINTEGER 74 -#define XX_TYPE_LONG 75 -#define XX_TYPE_ULONG 76 -#define XX_TYPE_CHAR 77 -#define XX_TYPE_UCHAR 78 -#define XX_TYPE_DOUBLE 79 -#define XX_TYPE_BOOL 80 -#define XX_TYPE_STRING 81 -#define XX_TYPE_ARRAY 82 -#define XX_TYPE_VAR 83 -#define XX_TYPE_CALLABLE 84 -#define XX_TYPE_RESOURCE 85 -#define XX_TYPE_OBJECT 86 -#define XX_BREAK 87 -#define XX_CONTINUE 88 -#define XX_IF 89 -#define XX_ELSE 90 -#define XX_ELSEIF 91 -#define XX_SWITCH 92 -#define XX_CASE 93 -#define XX_COLON 94 -#define XX_DEFAULT 95 -#define XX_LOOP 96 -#define XX_WHILE 97 -#define XX_DO 98 -#define XX_TRY 99 -#define XX_CATCH 100 -#define XX_FOR 101 -#define XX_IN 102 -#define XX_REVERSE 103 -#define XX_LET 104 -#define XX_ADDASSIGN 105 -#define XX_SUBASSIGN 106 -#define XX_MULASSIGN 107 -#define XX_DIVASSIGN 108 -#define XX_CONCATASSIGN 109 -#define XX_MODASSIGN 110 -#define XX_STRING 111 -#define XX_DOUBLECOLON 112 -#define XX_INCR 113 -#define XX_DECR 114 -#define XX_ECHO 115 -#define XX_RETURN 116 -#define XX_UNSET 117 -#define XX_THROW 118 -#define XX_PLUS 119 -#define XX_INTEGER 120 -#define XX_ISTRING 121 -#define XX_CHAR 122 -#define XX_DOUBLE 123 -#define XX_TRUE 124 -#define XX_FALSE 125 -#define XX_CBLOCK 126 diff --git a/parser/parser/parser.php5.c b/parser/parser/parser.php5.c deleted file mode 100644 index 84d478f645..0000000000 --- a/parser/parser/parser.php5.c +++ /dev/null @@ -1,7976 +0,0 @@ -/** The author disclaims copyright to this source code. -*/ -/* First off, code is include which follows the "include" declaration -** in the input file. */ -#include -#line 58 "parser.php5.lemon" - -#include "parser.php5.inc.h" - -#line 11 "parser.php5.c" -/* Next is all token values, in a form suitable for use by makeheaders. -** This section will be null unless lemon is run with the -m switch. -*/ -/* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ -/* Make sure the INTERFACE macro is defined. -*/ -#ifndef INTERFACE -# define INTERFACE 1 -#endif -/* The next thing included is series of defines which control -** various aspects of the generated parser. -** YYCODETYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 terminals -** and nonterminals. "int" is used otherwise. -** YYNOCODE is a number of type YYCODETYPE which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. -** YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** YYACTIONTYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 rules and -** states combined. "int" is used otherwise. -** xx_TOKENTYPE is the data type used for minor tokens given -** directly to the parser from the tokenizer. -** YYMINORTYPE is the data type used for all minor tokens. -** This is typically a union of many types, one of -** which is xx_TOKENTYPE. The entry in the union -** for base tokens is called "yy0". -** YYSTACKDEPTH is the maximum depth of the parser's stack. -** xx_ARG_SDECL A static variable declaration for the %extra_argument -** xx_ARG_PDECL A parameter declaration for the %extra_argument -** xx_ARG_STORE Code to store %extra_argument into yypParser -** xx_ARG_FETCH Code to extract %extra_argument from yypParser -** YYNSTATE the combined number of states. -** YYNRULE the number of rules in the grammar -** YYERRORSYMBOL is the code number of the error symbol. If not -** defined, then do no error processing. -*/ -#define YYCODETYPE unsigned char -#define YYNOCODE 227 -#define YYACTIONTYPE unsigned short int -#define xx_TOKENTYPE xx_parser_token* -typedef union { - xx_TOKENTYPE yy0; - zval* yy132; - int yy453; -} YYMINORTYPE; -#define YYSTACKDEPTH 100 -#define xx_ARG_SDECL xx_parser_status *status; -#define xx_ARG_PDECL ,xx_parser_status *status -#define xx_ARG_FETCH xx_parser_status *status = yypParser->status -#define xx_ARG_STORE yypParser->status = status -#define YYNSTATE 947 -#define YYNRULE 459 -#define YYERRORSYMBOL 127 -#define YYERRSYMDT yy453 -#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) -#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) -#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) - -/* Next are that tables used to determine what action to take based on the -** current state and lookahead token. These tables are used to implement -** functions that take a state number and lookahead value and return an -** action integer. -** -** Suppose the action integer is N. Then the action is determined as -** follows -** -** 0 <= N < YYNSTATE Shift N. That is, push the lookahead -** token onto the stack and goto state N. -** -** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. -** -** N == YYNSTATE+YYNRULE A syntax error has occurred. -** -** N == YYNSTATE+YYNRULE+1 The parser accepts its input. -** -** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused -** slots in the yy_action[] table. -** -** The action table is constructed as a single large table named yy_action[]. -** Given state S and lookahead X, the action is computed as -** -** yy_action[ yy_shift_ofst[S] + X ] -** -** If the index value yy_shift_ofst[S]+X is out of range or if the value -** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] -** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table -** and that yy_default[S] should be used instead. -** -** The formula above is for computing the action when the lookahead is -** a terminal symbol. If the lookahead is a non-terminal (as occurs after -** a reduce action) then the yy_reduce_ofst[] array is used in place of -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of -** YY_SHIFT_USE_DFLT. -** -** The following are the tables generated in this section: -** -** yy_action[] A single table containing all actions. -** yy_lookahead[] A table containing the lookahead for each entry in -** yy_action. Used to detect hash collisions. -** yy_shift_ofst[] For each state, the offset into yy_action for -** shifting terminals. -** yy_reduce_ofst[] For each state, the offset into yy_action for -** shifting non-terminals after a reduce. -** yy_default[] Default action for each state. -*/ -static YYACTIONTYPE yy_action[] = { - /* 0 */ 236, 947, 603, 151, 469, 130, 125, 128, 131, 731, - /* 10 */ 133, 135, 143, 137, 139, 141, 730, 773, 189, 161, - /* 20 */ 163, 683, 684, 688, 689, 108, 151, 22, 130, 125, - /* 30 */ 114, 200, 123, 15, 541, 205, 120, 222, 102, 105, - /* 40 */ 99, 603, 216, 547, 217, 193, 57, 199, 404, 247, - /* 50 */ 169, 229, 30, 885, 243, 245, 244, 204, 891, 518, - /* 60 */ 219, 12, 215, 597, 592, 596, 212, 886, 228, 478, - /* 70 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 80 */ 161, 163, 355, 58, 60, 62, 199, 151, 72, 130, - /* 90 */ 125, 197, 83, 87, 92, 347, 378, 358, 431, 400, - /* 100 */ 365, 243, 245, 244, 204, 194, 227, 208, 620, 246, - /* 110 */ 408, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 120 */ 213, 214, 519, 236, 663, 657, 601, 469, 17, 809, - /* 130 */ 128, 131, 811, 913, 919, 807, 918, 903, 801, 197, - /* 140 */ 920, 189, 796, 879, 194, 773, 67, 668, 108, 243, - /* 150 */ 245, 244, 204, 114, 200, 123, 606, 246, 205, 120, - /* 160 */ 222, 102, 105, 99, 195, 216, 1399, 217, 193, 57, - /* 170 */ 609, 16, 247, 169, 229, 32, 897, 243, 245, 244, - /* 180 */ 204, 608, 518, 892, 263, 215, 591, 592, 596, 212, - /* 190 */ 898, 13, 478, 487, 496, 499, 490, 493, 502, 508, - /* 200 */ 505, 514, 511, 68, 657, 278, 58, 60, 62, 232, - /* 210 */ 75, 72, 76, 654, 197, 83, 87, 92, 347, 383, - /* 220 */ 358, 392, 400, 365, 243, 245, 244, 204, 441, 77, - /* 230 */ 208, 598, 246, 278, 450, 465, 472, 475, 111, 207, - /* 240 */ 209, 210, 211, 213, 214, 519, 236, 79, 19, 651, - /* 250 */ 469, 130, 125, 128, 131, 3, 4, 5, 6, 7, - /* 260 */ 8, 9, 10, 301, 189, 297, 79, 561, 651, 18, - /* 270 */ 294, 108, 271, 280, 275, 279, 114, 200, 123, 221, - /* 280 */ 273, 205, 120, 222, 102, 105, 99, 126, 216, 197, - /* 290 */ 445, 193, 57, 623, 228, 247, 169, 229, 669, 243, - /* 300 */ 245, 244, 204, 277, 679, 518, 226, 246, 215, 29, - /* 310 */ 320, 336, 212, 251, 278, 478, 487, 496, 499, 490, - /* 320 */ 493, 502, 508, 505, 514, 511, 729, 20, 731, 58, - /* 330 */ 60, 62, 234, 774, 72, 775, 773, 197, 83, 87, - /* 340 */ 92, 347, 25, 358, 220, 272, 365, 243, 245, 244, - /* 350 */ 204, 293, 309, 208, 233, 246, 21, 450, 465, 472, - /* 360 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 370 */ 527, 27, 703, 469, 700, 714, 128, 131, 197, 696, - /* 380 */ 710, 371, 274, 275, 279, 351, 551, 189, 243, 245, - /* 390 */ 244, 204, 305, 24, 108, 240, 246, 302, 228, 114, - /* 400 */ 200, 123, 354, 550, 205, 120, 222, 102, 105, 99, - /* 410 */ 328, 216, 324, 250, 193, 57, 368, 321, 247, 169, - /* 420 */ 229, 66, 372, 373, 374, 375, 376, 377, 518, 313, - /* 430 */ 414, 215, 420, 400, 310, 212, 241, 59, 478, 487, - /* 440 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 370, - /* 450 */ 814, 344, 58, 60, 62, 440, 813, 72, 773, 367, - /* 460 */ 197, 83, 87, 92, 347, 360, 358, 366, 449, 365, - /* 470 */ 243, 245, 244, 204, 332, 61, 208, 565, 246, 329, - /* 480 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 490 */ 214, 519, 236, 455, 64, 393, 469, 453, 399, 128, - /* 500 */ 131, 451, 456, 243, 245, 244, 204, 481, 197, 807, - /* 510 */ 189, 228, 927, 421, 933, 656, 399, 108, 243, 245, - /* 520 */ 244, 204, 114, 200, 123, 572, 246, 205, 120, 222, - /* 530 */ 102, 105, 99, 382, 216, 197, 228, 193, 57, 403, - /* 540 */ 452, 247, 169, 229, 655, 243, 245, 244, 204, 566, - /* 550 */ 480, 518, 578, 246, 215, 340, 432, 69, 212, 399, - /* 560 */ 337, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 570 */ 514, 511, 562, 701, 573, 58, 60, 62, 567, 915, - /* 580 */ 72, 881, 903, 74, 83, 87, 92, 347, 879, 358, - /* 590 */ 773, 78, 365, 824, 479, 486, 823, 320, 336, 208, - /* 600 */ 555, 819, 81, 450, 465, 472, 475, 111, 207, 209, - /* 610 */ 210, 211, 213, 214, 519, 236, 481, 877, 812, 469, - /* 620 */ 881, 903, 128, 131, 197, 807, 796, 879, 940, 773, - /* 630 */ 943, 488, 486, 189, 243, 245, 244, 204, 84, 481, - /* 640 */ 108, 585, 246, 491, 486, 114, 200, 123, 494, 486, - /* 650 */ 205, 120, 222, 102, 105, 99, 721, 216, 197, 489, - /* 660 */ 193, 57, 481, 228, 247, 169, 229, 71, 243, 245, - /* 670 */ 244, 204, 674, 657, 518, 589, 246, 215, 497, 486, - /* 680 */ 89, 212, 492, 228, 478, 487, 496, 499, 490, 493, - /* 690 */ 502, 508, 505, 514, 511, 500, 486, 905, 58, 60, - /* 700 */ 62, 579, 891, 72, 724, 495, 197, 83, 87, 92, - /* 710 */ 347, 906, 358, 503, 486, 365, 243, 245, 244, 204, - /* 720 */ 93, 586, 208, 614, 246, 319, 450, 465, 472, 475, - /* 730 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 914, - /* 740 */ 96, 917, 469, 918, 903, 128, 131, 197, 692, 774, - /* 750 */ 879, 98, 773, 481, 506, 486, 189, 243, 245, 244, - /* 760 */ 204, 127, 481, 108, 627, 246, 509, 486, 114, 200, - /* 770 */ 123, 512, 486, 205, 120, 222, 102, 105, 99, 624, - /* 780 */ 216, 197, 481, 193, 57, 481, 481, 247, 169, 229, - /* 790 */ 650, 243, 245, 244, 204, 187, 498, 518, 633, 246, - /* 800 */ 215, 515, 486, 724, 212, 507, 718, 478, 487, 496, - /* 810 */ 499, 490, 493, 502, 508, 505, 514, 511, 721, 249, - /* 820 */ 481, 58, 60, 62, 196, 501, 72, 481, 504, 510, - /* 830 */ 83, 87, 92, 347, 719, 358, 228, 797, 365, 838, - /* 840 */ 758, 630, 837, 320, 336, 208, 555, 833, 773, 450, - /* 850 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 860 */ 519, 236, 191, 513, 856, 469, 807, 855, 128, 131, - /* 870 */ 516, 726, 851, 728, 590, 795, 709, 731, 202, 189, - /* 880 */ 870, 705, 796, 869, 775, 773, 108, 228, 865, 190, - /* 890 */ 228, 114, 200, 123, 740, 63, 205, 120, 222, 102, - /* 900 */ 105, 99, 201, 216, 644, 228, 193, 57, 587, 228, - /* 910 */ 247, 169, 229, 86, 243, 245, 244, 204, 320, 336, - /* 920 */ 518, 555, 228, 215, 782, 599, 228, 212, 607, 231, - /* 930 */ 478, 487, 496, 499, 490, 493, 502, 508, 505, 514, - /* 940 */ 511, 778, 767, 615, 58, 60, 62, 621, 250, 72, - /* 950 */ 670, 668, 807, 83, 87, 92, 347, 804, 358, 230, - /* 960 */ 628, 365, 671, 657, 634, 186, 320, 336, 208, 555, - /* 970 */ 250, 28, 450, 465, 472, 475, 111, 207, 209, 210, - /* 980 */ 211, 213, 214, 519, 236, 224, 702, 736, 469, 237, - /* 990 */ 739, 128, 131, 100, 681, 695, 684, 688, 689, 846, - /* 1000 */ 184, 238, 189, 243, 245, 244, 204, 773, 741, 108, - /* 1010 */ 243, 245, 244, 204, 114, 200, 123, 831, 73, 205, - /* 1020 */ 120, 222, 102, 105, 99, 742, 216, 644, 745, 193, - /* 1030 */ 57, 897, 250, 247, 169, 229, 649, 243, 245, 244, - /* 1040 */ 204, 320, 336, 518, 555, 898, 215, 239, 763, 805, - /* 1050 */ 212, 766, 797, 478, 487, 496, 499, 490, 493, 502, - /* 1060 */ 508, 505, 514, 511, 248, 863, 791, 58, 60, 62, - /* 1070 */ 768, 769, 72, 253, 772, 254, 83, 87, 92, 347, - /* 1080 */ 830, 358, 250, 787, 365, 826, 250, 263, 844, 320, - /* 1090 */ 336, 208, 555, 840, 264, 450, 465, 472, 475, 111, - /* 1100 */ 207, 209, 210, 211, 213, 214, 519, 236, 80, 1401, - /* 1110 */ 878, 469, 1400, 814, 128, 131, 276, 644, 774, 879, - /* 1120 */ 832, 773, 893, 900, 864, 189, 883, 243, 245, 244, - /* 1130 */ 204, 862, 108, 282, 773, 876, 858, 114, 200, 123, - /* 1140 */ 872, 88, 205, 120, 222, 102, 105, 99, 895, 216, - /* 1150 */ 644, 921, 193, 57, 797, 283, 247, 169, 229, 91, - /* 1160 */ 243, 245, 244, 204, 287, 888, 518, 807, 284, 215, - /* 1170 */ 891, 931, 930, 212, 797, 288, 478, 487, 496, 499, - /* 1180 */ 490, 493, 502, 508, 505, 514, 511, 291, 908, 97, - /* 1190 */ 58, 60, 62, 891, 290, 72, 292, 894, 644, 83, - /* 1200 */ 87, 92, 347, 934, 358, 296, 797, 365, 243, 245, - /* 1210 */ 244, 204, 944, 295, 208, 797, 298, 299, 450, 465, - /* 1220 */ 472, 475, 111, 207, 209, 210, 211, 213, 214, 519, - /* 1230 */ 236, 197, 300, 303, 469, 304, 306, 128, 131, 307, - /* 1240 */ 391, 243, 245, 244, 204, 308, 311, 389, 189, 574, - /* 1250 */ 243, 245, 244, 204, 312, 108, 314, 315, 318, 316, - /* 1260 */ 114, 200, 123, 319, 322, 205, 120, 222, 102, 105, - /* 1270 */ 99, 323, 216, 380, 325, 193, 57, 379, 326, 247, - /* 1280 */ 169, 229, 645, 243, 245, 244, 204, 327, 330, 518, - /* 1290 */ 331, 333, 215, 334, 335, 338, 212, 339, 341, 478, - /* 1300 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 1310 */ 342, 343, 345, 58, 60, 62, 348, 353, 72, 352, - /* 1320 */ 549, 359, 83, 87, 92, 347, 369, 358, 387, 397, - /* 1330 */ 365, 390, 405, 406, 409, 413, 410, 208, 442, 418, - /* 1340 */ 425, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 1350 */ 213, 214, 519, 236, 380, 429, 446, 469, 384, 458, - /* 1360 */ 128, 131, 436, 455, 243, 245, 244, 204, 443, 447, - /* 1370 */ 460, 189, 454, 243, 245, 244, 204, 462, 108, 464, - /* 1380 */ 483, 484, 528, 114, 200, 123, 482, 542, 205, 120, - /* 1390 */ 222, 102, 105, 99, 529, 216, 380, 543, 193, 57, - /* 1400 */ 388, 548, 247, 169, 229, 95, 243, 245, 244, 204, - /* 1410 */ 557, 563, 518, 568, 569, 215, 570, 576, 581, 212, - /* 1420 */ 583, 582, 478, 487, 496, 499, 490, 493, 502, 508, - /* 1430 */ 505, 514, 511, 588, 593, 647, 58, 60, 62, 610, - /* 1440 */ 611, 72, 612, 625, 644, 83, 87, 92, 347, 626, - /* 1450 */ 358, 632, 631, 365, 243, 245, 244, 204, 646, 648, - /* 1460 */ 208, 659, 652, 673, 450, 465, 472, 475, 111, 207, - /* 1470 */ 209, 210, 211, 213, 214, 519, 236, 380, 664, 672, - /* 1480 */ 469, 394, 675, 128, 131, 643, 682, 243, 245, 244, - /* 1490 */ 204, 685, 691, 693, 189, 243, 245, 244, 204, 694, - /* 1500 */ 716, 108, 717, 723, 727, 746, 114, 200, 123, 733, - /* 1510 */ 734, 205, 120, 222, 102, 105, 99, 720, 216, 380, - /* 1520 */ 722, 193, 57, 398, 738, 247, 169, 229, 554, 243, - /* 1530 */ 245, 244, 204, 744, 760, 518, 761, 765, 215, 771, - /* 1540 */ 780, 779, 212, 781, 783, 478, 487, 496, 499, 490, - /* 1550 */ 493, 502, 508, 505, 514, 511, 784, 785, 658, 58, - /* 1560 */ 60, 62, 788, 790, 72, 789, 792, 644, 83, 87, - /* 1570 */ 92, 347, 793, 358, 794, 799, 365, 243, 245, 244, - /* 1580 */ 204, 800, 802, 208, 803, 806, 810, 450, 465, 472, - /* 1590 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 1600 */ 380, 816, 817, 469, 407, 848, 128, 131, 103, 849, - /* 1610 */ 243, 245, 244, 204, 901, 889, 887, 189, 243, 245, - /* 1620 */ 244, 204, 890, 1018, 108, 1019, 896, 899, 907, 114, - /* 1630 */ 200, 123, 902, 910, 205, 120, 222, 102, 105, 99, - /* 1640 */ 911, 216, 380, 912, 193, 57, 411, 909, 247, 169, - /* 1650 */ 229, 553, 243, 245, 244, 204, 922, 924, 518, 925, - /* 1660 */ 926, 215, 929, 928, 932, 212, 935, 937, 478, 487, - /* 1670 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 938, - /* 1680 */ 939, 941, 58, 60, 62, 942, 807, 72, 945, 687, - /* 1690 */ 642, 83, 87, 92, 347, 687, 358, 687, 687, 365, - /* 1700 */ 243, 245, 244, 204, 687, 687, 208, 687, 687, 687, - /* 1710 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 1720 */ 214, 519, 236, 380, 687, 687, 469, 415, 687, 128, - /* 1730 */ 131, 106, 687, 243, 245, 244, 204, 687, 687, 687, - /* 1740 */ 189, 243, 245, 244, 204, 687, 687, 108, 687, 687, - /* 1750 */ 687, 687, 114, 200, 123, 687, 687, 205, 120, 222, - /* 1760 */ 102, 105, 99, 687, 216, 380, 687, 193, 57, 419, - /* 1770 */ 687, 247, 169, 229, 552, 243, 245, 244, 204, 687, - /* 1780 */ 687, 518, 687, 687, 215, 687, 687, 687, 212, 687, - /* 1790 */ 687, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 1800 */ 514, 511, 687, 687, 687, 58, 60, 62, 687, 687, - /* 1810 */ 72, 687, 687, 641, 83, 87, 92, 347, 687, 358, - /* 1820 */ 687, 687, 365, 243, 245, 244, 204, 687, 687, 208, - /* 1830 */ 687, 687, 687, 450, 465, 472, 475, 111, 207, 209, - /* 1840 */ 210, 211, 213, 214, 519, 236, 380, 687, 687, 469, - /* 1850 */ 422, 687, 128, 131, 109, 687, 243, 245, 244, 204, - /* 1860 */ 687, 687, 687, 189, 243, 245, 244, 204, 687, 687, - /* 1870 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 1880 */ 205, 120, 222, 102, 105, 99, 687, 216, 380, 687, - /* 1890 */ 193, 57, 426, 687, 247, 169, 229, 350, 243, 245, - /* 1900 */ 244, 204, 687, 687, 518, 687, 687, 215, 687, 687, - /* 1910 */ 687, 212, 687, 687, 478, 487, 496, 499, 490, 493, - /* 1920 */ 502, 508, 505, 514, 511, 687, 687, 687, 58, 60, - /* 1930 */ 62, 687, 687, 72, 687, 687, 640, 83, 87, 92, - /* 1940 */ 347, 687, 358, 687, 687, 365, 243, 245, 244, 204, - /* 1950 */ 687, 687, 208, 687, 687, 687, 450, 465, 472, 475, - /* 1960 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 380, - /* 1970 */ 687, 687, 469, 430, 687, 128, 131, 112, 687, 243, - /* 1980 */ 245, 244, 204, 687, 687, 687, 189, 243, 245, 244, - /* 1990 */ 204, 687, 687, 108, 687, 687, 687, 687, 114, 200, - /* 2000 */ 123, 687, 687, 205, 120, 222, 102, 105, 99, 687, - /* 2010 */ 216, 380, 687, 193, 57, 433, 687, 247, 169, 229, - /* 2020 */ 540, 243, 245, 244, 204, 687, 687, 518, 687, 687, - /* 2030 */ 215, 687, 687, 687, 212, 687, 687, 478, 487, 496, - /* 2040 */ 499, 490, 493, 502, 508, 505, 514, 511, 687, 687, - /* 2050 */ 687, 58, 60, 62, 687, 687, 72, 687, 687, 639, - /* 2060 */ 83, 87, 92, 347, 687, 358, 687, 687, 365, 243, - /* 2070 */ 245, 244, 204, 687, 687, 208, 687, 687, 687, 450, - /* 2080 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 2090 */ 519, 236, 380, 687, 687, 469, 437, 687, 128, 131, - /* 2100 */ 115, 687, 243, 245, 244, 204, 687, 687, 687, 189, - /* 2110 */ 243, 245, 244, 204, 687, 687, 108, 687, 687, 687, - /* 2120 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 2130 */ 105, 99, 687, 216, 380, 687, 193, 57, 444, 687, - /* 2140 */ 247, 169, 229, 357, 243, 245, 244, 204, 687, 687, - /* 2150 */ 518, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 2160 */ 478, 487, 496, 499, 490, 493, 502, 508, 505, 514, - /* 2170 */ 511, 687, 687, 687, 58, 60, 62, 687, 687, 72, - /* 2180 */ 687, 687, 638, 83, 87, 92, 347, 687, 358, 687, - /* 2190 */ 687, 365, 243, 245, 244, 204, 687, 687, 208, 687, - /* 2200 */ 687, 687, 450, 465, 472, 475, 111, 207, 209, 210, - /* 2210 */ 211, 213, 214, 519, 236, 380, 687, 687, 469, 448, - /* 2220 */ 687, 128, 131, 118, 687, 243, 245, 244, 204, 687, - /* 2230 */ 687, 687, 189, 243, 245, 244, 204, 687, 687, 108, - /* 2240 */ 687, 687, 687, 687, 114, 200, 123, 687, 687, 205, - /* 2250 */ 120, 222, 102, 105, 99, 687, 216, 594, 687, 193, - /* 2260 */ 57, 687, 687, 247, 169, 229, 521, 243, 245, 244, - /* 2270 */ 204, 687, 687, 518, 687, 687, 215, 687, 595, 687, - /* 2280 */ 212, 687, 687, 478, 487, 496, 499, 490, 493, 502, - /* 2290 */ 508, 505, 514, 511, 687, 687, 687, 58, 60, 62, - /* 2300 */ 687, 687, 72, 687, 687, 637, 83, 87, 92, 347, - /* 2310 */ 687, 358, 687, 687, 365, 243, 245, 244, 204, 687, - /* 2320 */ 687, 208, 687, 687, 704, 450, 465, 472, 475, 111, - /* 2330 */ 207, 209, 210, 211, 213, 214, 519, 236, 687, 687, - /* 2340 */ 687, 469, 687, 687, 128, 131, 121, 681, 695, 684, - /* 2350 */ 688, 689, 687, 687, 687, 189, 243, 245, 244, 204, - /* 2360 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 2370 */ 687, 687, 205, 120, 222, 102, 105, 99, 687, 216, - /* 2380 */ 636, 687, 193, 57, 687, 687, 247, 169, 229, 364, - /* 2390 */ 243, 245, 244, 204, 687, 687, 518, 687, 687, 215, - /* 2400 */ 687, 687, 687, 212, 687, 687, 478, 487, 496, 499, - /* 2410 */ 490, 493, 502, 508, 505, 514, 511, 687, 687, 687, - /* 2420 */ 58, 60, 62, 687, 687, 72, 687, 687, 124, 83, - /* 2430 */ 87, 92, 347, 687, 358, 687, 687, 365, 243, 245, - /* 2440 */ 244, 204, 687, 687, 208, 687, 687, 737, 450, 465, - /* 2450 */ 472, 475, 111, 207, 209, 210, 211, 213, 214, 519, - /* 2460 */ 236, 687, 687, 687, 469, 687, 687, 128, 131, 129, - /* 2470 */ 681, 695, 684, 688, 689, 687, 687, 687, 189, 243, - /* 2480 */ 245, 244, 204, 687, 687, 108, 687, 687, 687, 687, - /* 2490 */ 114, 200, 123, 687, 687, 205, 120, 222, 102, 105, - /* 2500 */ 99, 687, 216, 618, 687, 193, 57, 687, 687, 247, - /* 2510 */ 169, 229, 526, 243, 245, 244, 204, 687, 687, 518, - /* 2520 */ 687, 687, 215, 687, 687, 687, 212, 687, 687, 478, - /* 2530 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 2540 */ 687, 687, 687, 58, 60, 62, 687, 687, 72, 687, - /* 2550 */ 687, 132, 83, 87, 92, 347, 687, 358, 687, 687, - /* 2560 */ 365, 243, 245, 244, 204, 687, 687, 208, 687, 687, - /* 2570 */ 743, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 2580 */ 213, 214, 519, 236, 687, 687, 687, 469, 687, 687, - /* 2590 */ 128, 131, 134, 681, 695, 684, 688, 689, 687, 687, - /* 2600 */ 687, 189, 243, 245, 244, 204, 687, 687, 108, 687, - /* 2610 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 2620 */ 222, 102, 105, 99, 687, 216, 136, 687, 193, 57, - /* 2630 */ 687, 687, 247, 169, 229, 534, 243, 245, 244, 204, - /* 2640 */ 687, 687, 518, 687, 687, 215, 687, 687, 687, 212, - /* 2650 */ 687, 687, 478, 487, 496, 499, 490, 493, 502, 508, - /* 2660 */ 505, 514, 511, 687, 687, 687, 58, 60, 62, 687, - /* 2670 */ 687, 72, 687, 687, 138, 83, 87, 92, 347, 687, - /* 2680 */ 358, 687, 687, 365, 243, 245, 244, 204, 687, 687, - /* 2690 */ 208, 687, 687, 764, 450, 465, 472, 475, 111, 207, - /* 2700 */ 209, 210, 211, 213, 214, 519, 236, 687, 687, 687, - /* 2710 */ 469, 687, 687, 128, 131, 140, 681, 695, 684, 688, - /* 2720 */ 689, 687, 687, 687, 189, 243, 245, 244, 204, 687, - /* 2730 */ 687, 108, 687, 687, 687, 687, 114, 200, 123, 687, - /* 2740 */ 687, 205, 120, 222, 102, 105, 99, 687, 216, 142, - /* 2750 */ 687, 193, 57, 687, 687, 247, 169, 229, 533, 243, - /* 2760 */ 245, 244, 204, 687, 687, 518, 687, 687, 215, 687, - /* 2770 */ 687, 687, 212, 687, 687, 478, 487, 496, 499, 490, - /* 2780 */ 493, 502, 508, 505, 514, 511, 687, 687, 687, 58, - /* 2790 */ 60, 62, 687, 687, 72, 687, 687, 144, 83, 87, - /* 2800 */ 92, 347, 687, 358, 687, 687, 365, 243, 245, 244, - /* 2810 */ 204, 687, 687, 208, 687, 687, 770, 450, 465, 472, - /* 2820 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 2830 */ 687, 687, 687, 469, 687, 687, 128, 131, 146, 681, - /* 2840 */ 695, 684, 688, 689, 687, 687, 687, 189, 243, 245, - /* 2850 */ 244, 204, 687, 687, 108, 687, 687, 687, 687, 114, - /* 2860 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 2870 */ 687, 216, 148, 687, 193, 57, 687, 687, 247, 169, - /* 2880 */ 229, 539, 243, 245, 244, 204, 687, 687, 518, 687, - /* 2890 */ 687, 215, 687, 687, 687, 212, 687, 687, 478, 487, - /* 2900 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 687, - /* 2910 */ 687, 687, 58, 60, 62, 687, 687, 72, 687, 687, - /* 2920 */ 150, 83, 87, 92, 347, 687, 358, 687, 687, 365, - /* 2930 */ 243, 245, 244, 204, 687, 687, 208, 687, 687, 825, - /* 2940 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 2950 */ 214, 519, 236, 687, 687, 687, 469, 687, 687, 128, - /* 2960 */ 131, 152, 681, 695, 684, 688, 689, 687, 687, 687, - /* 2970 */ 189, 243, 245, 244, 204, 687, 687, 108, 687, 687, - /* 2980 */ 687, 687, 114, 200, 123, 687, 687, 205, 120, 222, - /* 2990 */ 102, 105, 99, 687, 216, 154, 687, 193, 57, 687, - /* 3000 */ 687, 247, 169, 229, 546, 243, 245, 244, 204, 687, - /* 3010 */ 687, 518, 687, 687, 215, 687, 687, 687, 212, 687, - /* 3020 */ 687, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 3030 */ 514, 511, 687, 687, 687, 58, 60, 62, 687, 687, - /* 3040 */ 72, 687, 687, 156, 83, 87, 92, 347, 687, 358, - /* 3050 */ 687, 687, 365, 243, 245, 244, 204, 687, 687, 208, - /* 3060 */ 687, 687, 839, 450, 465, 472, 475, 111, 207, 209, - /* 3070 */ 210, 211, 213, 214, 519, 236, 687, 687, 687, 469, - /* 3080 */ 687, 687, 128, 131, 158, 681, 695, 684, 688, 689, - /* 3090 */ 687, 687, 687, 189, 243, 245, 244, 204, 687, 687, - /* 3100 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 3110 */ 205, 120, 222, 102, 105, 99, 687, 216, 160, 687, - /* 3120 */ 193, 57, 687, 687, 247, 169, 229, 545, 243, 245, - /* 3130 */ 244, 204, 687, 687, 518, 687, 687, 215, 687, 687, - /* 3140 */ 687, 212, 687, 687, 478, 487, 496, 499, 490, 493, - /* 3150 */ 502, 508, 505, 514, 511, 687, 687, 687, 58, 60, - /* 3160 */ 62, 687, 687, 72, 687, 687, 162, 83, 87, 92, - /* 3170 */ 347, 687, 358, 687, 687, 365, 243, 245, 244, 204, - /* 3180 */ 687, 687, 208, 687, 687, 857, 450, 465, 472, 475, - /* 3190 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 687, - /* 3200 */ 687, 687, 469, 687, 687, 128, 131, 164, 681, 695, - /* 3210 */ 684, 688, 689, 687, 687, 687, 189, 243, 245, 244, - /* 3220 */ 204, 687, 687, 108, 687, 687, 687, 687, 114, 200, - /* 3230 */ 123, 687, 687, 205, 120, 222, 102, 105, 99, 687, - /* 3240 */ 216, 166, 687, 193, 57, 687, 687, 247, 169, 229, - /* 3250 */ 560, 243, 245, 244, 204, 687, 687, 518, 687, 687, - /* 3260 */ 215, 687, 687, 687, 212, 687, 687, 478, 487, 496, - /* 3270 */ 499, 490, 493, 502, 508, 505, 514, 511, 687, 687, - /* 3280 */ 687, 58, 60, 62, 687, 687, 72, 687, 687, 168, - /* 3290 */ 83, 87, 92, 347, 687, 358, 687, 687, 365, 243, - /* 3300 */ 245, 244, 204, 687, 687, 208, 687, 687, 871, 450, - /* 3310 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 3320 */ 519, 236, 687, 687, 687, 469, 687, 687, 128, 131, - /* 3330 */ 188, 681, 695, 684, 688, 689, 687, 687, 687, 189, - /* 3340 */ 243, 245, 244, 204, 687, 687, 108, 687, 687, 687, - /* 3350 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 3360 */ 105, 99, 687, 216, 192, 687, 193, 57, 687, 687, - /* 3370 */ 247, 169, 229, 559, 243, 245, 244, 204, 687, 687, - /* 3380 */ 518, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 3390 */ 478, 487, 496, 499, 490, 493, 502, 508, 505, 514, - /* 3400 */ 511, 687, 687, 687, 58, 60, 62, 687, 687, 72, - /* 3410 */ 687, 687, 203, 83, 87, 92, 347, 687, 358, 687, - /* 3420 */ 687, 365, 243, 245, 244, 204, 687, 687, 208, 687, - /* 3430 */ 687, 687, 450, 465, 472, 475, 111, 207, 209, 210, - /* 3440 */ 211, 213, 214, 519, 236, 206, 687, 687, 469, 687, - /* 3450 */ 687, 128, 131, 361, 687, 243, 245, 244, 204, 687, - /* 3460 */ 687, 687, 189, 243, 245, 244, 204, 687, 687, 108, - /* 3470 */ 687, 687, 687, 687, 114, 200, 123, 687, 687, 205, - /* 3480 */ 120, 222, 102, 105, 99, 687, 216, 466, 687, 193, - /* 3490 */ 57, 687, 687, 247, 169, 229, 662, 243, 245, 244, - /* 3500 */ 204, 687, 687, 518, 687, 687, 215, 687, 687, 687, - /* 3510 */ 212, 687, 687, 478, 487, 496, 499, 490, 493, 502, - /* 3520 */ 508, 505, 514, 511, 687, 687, 687, 58, 60, 62, - /* 3530 */ 687, 687, 72, 687, 687, 470, 83, 87, 92, 347, - /* 3540 */ 687, 358, 687, 687, 365, 243, 245, 244, 204, 687, - /* 3550 */ 687, 208, 687, 687, 687, 450, 465, 472, 475, 111, - /* 3560 */ 207, 209, 210, 211, 213, 214, 519, 236, 473, 687, - /* 3570 */ 687, 469, 687, 687, 128, 131, 476, 687, 243, 245, - /* 3580 */ 244, 204, 687, 687, 687, 189, 243, 245, 244, 204, - /* 3590 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 3600 */ 687, 687, 205, 120, 222, 102, 105, 99, 687, 216, - /* 3610 */ 485, 687, 193, 57, 687, 687, 247, 169, 229, 661, - /* 3620 */ 243, 245, 244, 204, 687, 687, 518, 687, 687, 215, - /* 3630 */ 687, 687, 687, 212, 687, 687, 478, 487, 496, 499, - /* 3640 */ 490, 493, 502, 508, 505, 514, 511, 687, 687, 687, - /* 3650 */ 58, 60, 62, 687, 687, 72, 687, 687, 523, 83, - /* 3660 */ 87, 92, 347, 687, 358, 687, 687, 365, 243, 245, - /* 3670 */ 244, 204, 687, 687, 208, 687, 687, 687, 450, 465, - /* 3680 */ 472, 475, 111, 207, 209, 210, 211, 213, 214, 519, - /* 3690 */ 236, 530, 687, 687, 469, 687, 687, 128, 131, 536, - /* 3700 */ 687, 243, 245, 244, 204, 687, 687, 687, 189, 243, - /* 3710 */ 245, 244, 204, 687, 687, 108, 687, 687, 687, 687, - /* 3720 */ 114, 200, 123, 687, 687, 205, 120, 222, 102, 105, - /* 3730 */ 99, 687, 216, 602, 687, 193, 57, 687, 687, 247, - /* 3740 */ 169, 229, 667, 243, 245, 244, 204, 687, 687, 518, - /* 3750 */ 687, 687, 215, 687, 687, 687, 212, 687, 687, 478, - /* 3760 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 3770 */ 687, 687, 687, 58, 60, 62, 687, 687, 72, 687, - /* 3780 */ 687, 604, 83, 87, 92, 347, 687, 358, 687, 687, - /* 3790 */ 365, 243, 245, 244, 204, 687, 687, 208, 687, 687, - /* 3800 */ 687, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 3810 */ 213, 214, 519, 236, 617, 687, 687, 469, 687, 687, - /* 3820 */ 128, 131, 687, 687, 243, 245, 244, 204, 687, 687, - /* 3830 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 3840 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 3850 */ 222, 102, 105, 99, 687, 216, 687, 687, 193, 57, - /* 3860 */ 687, 687, 247, 169, 229, 666, 687, 687, 687, 687, - /* 3870 */ 687, 687, 518, 687, 687, 215, 687, 687, 687, 212, - /* 3880 */ 687, 687, 478, 487, 496, 499, 490, 493, 502, 508, - /* 3890 */ 505, 514, 511, 687, 687, 687, 58, 60, 62, 687, - /* 3900 */ 687, 72, 687, 687, 687, 83, 87, 92, 347, 687, - /* 3910 */ 358, 687, 687, 365, 687, 687, 687, 687, 687, 687, - /* 3920 */ 208, 687, 687, 687, 450, 465, 472, 475, 111, 207, - /* 3930 */ 209, 210, 211, 213, 214, 519, 236, 687, 687, 687, - /* 3940 */ 469, 687, 687, 128, 131, 687, 687, 687, 687, 687, - /* 3950 */ 687, 687, 687, 687, 189, 687, 687, 687, 687, 687, - /* 3960 */ 687, 108, 687, 687, 687, 687, 114, 200, 123, 687, - /* 3970 */ 687, 205, 120, 222, 102, 105, 99, 687, 216, 687, - /* 3980 */ 687, 193, 57, 687, 687, 247, 169, 229, 678, 687, - /* 3990 */ 687, 687, 687, 687, 687, 518, 687, 687, 215, 687, - /* 4000 */ 687, 687, 212, 687, 687, 478, 487, 496, 499, 490, - /* 4010 */ 493, 502, 508, 505, 514, 511, 687, 687, 687, 58, - /* 4020 */ 60, 62, 687, 687, 72, 687, 687, 687, 83, 87, - /* 4030 */ 92, 347, 687, 358, 687, 687, 365, 687, 687, 687, - /* 4040 */ 687, 687, 687, 208, 687, 687, 687, 450, 465, 472, - /* 4050 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 4060 */ 687, 687, 687, 469, 687, 687, 128, 131, 687, 687, - /* 4070 */ 687, 687, 687, 687, 687, 687, 687, 189, 687, 687, - /* 4080 */ 687, 687, 687, 687, 108, 687, 687, 687, 687, 114, - /* 4090 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 4100 */ 687, 216, 687, 687, 193, 57, 687, 687, 247, 169, - /* 4110 */ 229, 677, 687, 687, 687, 687, 687, 687, 518, 687, - /* 4120 */ 687, 215, 687, 687, 687, 212, 687, 687, 478, 487, - /* 4130 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 687, - /* 4140 */ 687, 687, 58, 60, 62, 687, 687, 72, 687, 687, - /* 4150 */ 687, 83, 87, 92, 347, 687, 358, 687, 687, 365, - /* 4160 */ 687, 687, 687, 687, 687, 687, 208, 687, 687, 687, - /* 4170 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 4180 */ 214, 519, 236, 687, 687, 687, 469, 687, 687, 128, - /* 4190 */ 131, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 4200 */ 189, 687, 687, 687, 687, 687, 687, 108, 687, 687, - /* 4210 */ 687, 687, 114, 200, 123, 687, 687, 205, 120, 222, - /* 4220 */ 102, 105, 99, 687, 216, 687, 687, 193, 57, 687, - /* 4230 */ 687, 247, 169, 229, 697, 687, 687, 687, 687, 687, - /* 4240 */ 687, 518, 687, 687, 215, 687, 687, 687, 212, 687, - /* 4250 */ 687, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 4260 */ 514, 511, 687, 687, 687, 58, 60, 62, 687, 687, - /* 4270 */ 72, 687, 687, 687, 83, 87, 92, 347, 687, 358, - /* 4280 */ 687, 687, 365, 687, 687, 687, 687, 687, 687, 208, - /* 4290 */ 687, 687, 687, 450, 465, 472, 475, 111, 207, 209, - /* 4300 */ 210, 211, 213, 214, 519, 236, 687, 687, 687, 469, - /* 4310 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 4320 */ 687, 687, 687, 189, 687, 687, 687, 687, 687, 687, - /* 4330 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 4340 */ 205, 120, 222, 102, 105, 99, 687, 216, 687, 687, - /* 4350 */ 193, 57, 687, 687, 247, 169, 229, 699, 687, 687, - /* 4360 */ 687, 687, 687, 687, 518, 687, 687, 215, 687, 687, - /* 4370 */ 687, 212, 687, 687, 478, 487, 496, 499, 490, 493, - /* 4380 */ 502, 508, 505, 514, 511, 687, 687, 687, 58, 60, - /* 4390 */ 62, 687, 687, 72, 687, 687, 687, 83, 87, 92, - /* 4400 */ 347, 687, 358, 687, 687, 365, 687, 687, 687, 687, - /* 4410 */ 687, 687, 208, 687, 687, 687, 450, 465, 472, 475, - /* 4420 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 687, - /* 4430 */ 687, 687, 469, 687, 687, 128, 131, 687, 687, 687, - /* 4440 */ 687, 687, 687, 687, 687, 687, 189, 687, 687, 687, - /* 4450 */ 687, 687, 687, 108, 687, 687, 687, 687, 114, 200, - /* 4460 */ 123, 687, 687, 205, 120, 222, 102, 105, 99, 687, - /* 4470 */ 216, 687, 687, 193, 57, 687, 687, 247, 169, 229, - /* 4480 */ 706, 687, 687, 687, 687, 687, 687, 518, 687, 687, - /* 4490 */ 215, 687, 687, 687, 212, 687, 687, 478, 487, 496, - /* 4500 */ 499, 490, 493, 502, 508, 505, 514, 511, 687, 687, - /* 4510 */ 687, 58, 60, 62, 687, 687, 72, 687, 687, 687, - /* 4520 */ 83, 87, 92, 347, 687, 358, 687, 687, 365, 687, - /* 4530 */ 687, 687, 687, 687, 687, 208, 687, 687, 687, 450, - /* 4540 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 4550 */ 519, 236, 687, 687, 687, 469, 687, 687, 128, 131, - /* 4560 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 189, - /* 4570 */ 687, 687, 687, 687, 687, 687, 108, 687, 687, 687, - /* 4580 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 4590 */ 105, 99, 687, 216, 687, 687, 193, 57, 687, 687, - /* 4600 */ 247, 169, 229, 708, 687, 687, 687, 687, 687, 687, - /* 4610 */ 518, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 4620 */ 478, 487, 496, 499, 490, 493, 502, 508, 505, 514, - /* 4630 */ 511, 687, 687, 687, 58, 60, 62, 687, 687, 72, - /* 4640 */ 687, 687, 687, 83, 87, 92, 347, 687, 358, 687, - /* 4650 */ 687, 365, 687, 687, 687, 687, 687, 687, 208, 687, - /* 4660 */ 687, 687, 450, 465, 472, 475, 111, 207, 209, 210, - /* 4670 */ 211, 213, 214, 519, 236, 687, 687, 687, 469, 687, - /* 4680 */ 687, 128, 131, 687, 687, 687, 687, 687, 687, 687, - /* 4690 */ 687, 687, 189, 687, 687, 687, 687, 687, 687, 108, - /* 4700 */ 687, 687, 687, 687, 114, 200, 123, 687, 687, 205, - /* 4710 */ 120, 222, 102, 105, 99, 687, 216, 687, 687, 193, - /* 4720 */ 57, 687, 687, 247, 169, 229, 711, 687, 687, 687, - /* 4730 */ 687, 687, 687, 518, 687, 687, 215, 687, 687, 687, - /* 4740 */ 212, 687, 687, 478, 487, 496, 499, 490, 493, 502, - /* 4750 */ 508, 505, 514, 511, 687, 687, 687, 58, 60, 62, - /* 4760 */ 687, 687, 72, 687, 687, 687, 83, 87, 92, 347, - /* 4770 */ 687, 358, 687, 687, 365, 687, 687, 687, 687, 687, - /* 4780 */ 687, 208, 687, 687, 687, 450, 465, 472, 475, 111, - /* 4790 */ 207, 209, 210, 211, 213, 214, 519, 236, 687, 687, - /* 4800 */ 687, 469, 687, 687, 128, 131, 687, 687, 687, 687, - /* 4810 */ 687, 687, 687, 687, 687, 189, 687, 687, 687, 687, - /* 4820 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 4830 */ 687, 687, 205, 120, 222, 102, 105, 99, 687, 216, - /* 4840 */ 687, 687, 193, 57, 687, 687, 247, 169, 229, 713, - /* 4850 */ 687, 687, 687, 687, 687, 687, 518, 687, 687, 215, - /* 4860 */ 687, 687, 687, 212, 687, 687, 478, 487, 496, 499, - /* 4870 */ 490, 493, 502, 508, 505, 514, 511, 687, 687, 687, - /* 4880 */ 58, 60, 62, 687, 687, 72, 687, 687, 687, 83, - /* 4890 */ 87, 92, 347, 687, 358, 687, 687, 365, 687, 687, - /* 4900 */ 687, 687, 687, 687, 208, 687, 687, 687, 450, 465, - /* 4910 */ 472, 475, 111, 207, 209, 210, 211, 213, 214, 519, - /* 4920 */ 236, 687, 687, 687, 469, 687, 687, 128, 131, 687, - /* 4930 */ 687, 687, 687, 687, 687, 687, 687, 687, 189, 687, - /* 4940 */ 687, 687, 687, 687, 687, 108, 687, 687, 687, 687, - /* 4950 */ 114, 200, 123, 687, 687, 205, 120, 222, 102, 105, - /* 4960 */ 99, 687, 216, 687, 687, 193, 57, 687, 687, 247, - /* 4970 */ 169, 229, 820, 687, 687, 687, 687, 687, 687, 518, - /* 4980 */ 687, 687, 215, 687, 687, 687, 212, 687, 687, 478, - /* 4990 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 5000 */ 687, 687, 687, 58, 60, 62, 687, 687, 72, 687, - /* 5010 */ 687, 687, 83, 87, 92, 347, 687, 358, 687, 687, - /* 5020 */ 365, 687, 687, 687, 687, 687, 687, 208, 687, 687, - /* 5030 */ 687, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 5040 */ 213, 214, 519, 236, 687, 687, 687, 469, 687, 687, - /* 5050 */ 128, 131, 687, 687, 687, 687, 687, 687, 687, 687, - /* 5060 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 5070 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 5080 */ 222, 102, 105, 99, 687, 216, 687, 687, 193, 57, - /* 5090 */ 687, 687, 247, 169, 229, 822, 687, 687, 687, 687, - /* 5100 */ 687, 687, 518, 687, 687, 215, 687, 687, 687, 212, - /* 5110 */ 687, 687, 478, 487, 496, 499, 490, 493, 502, 508, - /* 5120 */ 505, 514, 511, 687, 687, 687, 58, 60, 62, 687, - /* 5130 */ 687, 72, 687, 687, 687, 83, 87, 92, 347, 687, - /* 5140 */ 358, 687, 687, 365, 687, 687, 687, 687, 687, 687, - /* 5150 */ 208, 687, 687, 687, 450, 465, 472, 475, 111, 207, - /* 5160 */ 209, 210, 211, 213, 214, 519, 236, 687, 687, 687, - /* 5170 */ 469, 687, 687, 128, 131, 687, 687, 687, 687, 687, - /* 5180 */ 687, 687, 687, 687, 189, 687, 687, 687, 687, 687, - /* 5190 */ 687, 108, 687, 687, 687, 687, 114, 200, 123, 687, - /* 5200 */ 687, 205, 120, 222, 102, 105, 99, 687, 216, 687, - /* 5210 */ 687, 193, 57, 687, 687, 247, 169, 229, 827, 687, - /* 5220 */ 687, 687, 687, 687, 687, 518, 687, 687, 215, 687, - /* 5230 */ 687, 687, 212, 687, 687, 478, 487, 496, 499, 490, - /* 5240 */ 493, 502, 508, 505, 514, 511, 687, 687, 687, 58, - /* 5250 */ 60, 62, 687, 687, 72, 687, 687, 687, 83, 87, - /* 5260 */ 92, 347, 687, 358, 687, 687, 365, 687, 687, 687, - /* 5270 */ 687, 687, 687, 208, 687, 687, 687, 450, 465, 472, - /* 5280 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 5290 */ 687, 687, 687, 469, 687, 687, 128, 131, 687, 687, - /* 5300 */ 687, 687, 687, 687, 687, 687, 687, 189, 687, 687, - /* 5310 */ 687, 687, 687, 687, 108, 687, 687, 687, 687, 114, - /* 5320 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 5330 */ 687, 216, 687, 687, 193, 57, 687, 687, 247, 169, - /* 5340 */ 229, 829, 687, 687, 687, 687, 687, 687, 518, 687, - /* 5350 */ 687, 215, 687, 687, 687, 212, 687, 687, 478, 487, - /* 5360 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 687, - /* 5370 */ 687, 687, 58, 60, 62, 687, 687, 72, 687, 687, - /* 5380 */ 687, 83, 87, 92, 347, 687, 358, 687, 687, 365, - /* 5390 */ 687, 687, 687, 687, 687, 687, 208, 687, 687, 687, - /* 5400 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 5410 */ 214, 519, 236, 687, 687, 687, 469, 687, 687, 128, - /* 5420 */ 131, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 5430 */ 189, 687, 687, 687, 687, 687, 687, 108, 687, 687, - /* 5440 */ 687, 687, 114, 200, 123, 687, 687, 205, 120, 222, - /* 5450 */ 102, 105, 99, 687, 216, 687, 687, 193, 57, 687, - /* 5460 */ 687, 247, 169, 229, 834, 687, 687, 687, 687, 687, - /* 5470 */ 687, 518, 687, 687, 215, 687, 687, 687, 212, 687, - /* 5480 */ 687, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 5490 */ 514, 511, 687, 687, 687, 58, 60, 62, 687, 687, - /* 5500 */ 72, 687, 687, 687, 83, 87, 92, 347, 687, 358, - /* 5510 */ 687, 687, 365, 687, 687, 687, 687, 687, 687, 208, - /* 5520 */ 687, 687, 687, 450, 465, 472, 475, 111, 207, 209, - /* 5530 */ 210, 211, 213, 214, 519, 236, 687, 687, 687, 469, - /* 5540 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 5550 */ 687, 687, 687, 189, 687, 687, 687, 687, 687, 687, - /* 5560 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 5570 */ 205, 120, 222, 102, 105, 99, 687, 216, 687, 687, - /* 5580 */ 193, 57, 687, 687, 247, 169, 229, 836, 687, 687, - /* 5590 */ 687, 687, 687, 687, 518, 687, 687, 215, 687, 687, - /* 5600 */ 687, 212, 687, 687, 478, 487, 496, 499, 490, 493, - /* 5610 */ 502, 508, 505, 514, 511, 687, 687, 687, 58, 60, - /* 5620 */ 62, 687, 687, 72, 687, 687, 687, 83, 87, 92, - /* 5630 */ 347, 687, 358, 687, 687, 365, 687, 687, 687, 687, - /* 5640 */ 687, 687, 208, 687, 687, 687, 450, 465, 472, 475, - /* 5650 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 687, - /* 5660 */ 687, 687, 469, 687, 687, 128, 131, 687, 687, 687, - /* 5670 */ 687, 687, 687, 687, 687, 687, 189, 687, 687, 687, - /* 5680 */ 687, 687, 687, 108, 687, 687, 687, 687, 114, 200, - /* 5690 */ 123, 687, 687, 205, 120, 222, 102, 105, 99, 687, - /* 5700 */ 216, 687, 687, 193, 57, 687, 687, 247, 169, 229, - /* 5710 */ 841, 687, 687, 687, 687, 687, 687, 518, 687, 687, - /* 5720 */ 215, 687, 687, 687, 212, 687, 687, 478, 487, 496, - /* 5730 */ 499, 490, 493, 502, 508, 505, 514, 511, 687, 687, - /* 5740 */ 687, 58, 60, 62, 687, 687, 72, 687, 687, 687, - /* 5750 */ 83, 87, 92, 347, 687, 358, 687, 687, 365, 687, - /* 5760 */ 687, 687, 687, 687, 687, 208, 687, 687, 687, 450, - /* 5770 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 5780 */ 519, 236, 687, 687, 687, 469, 687, 687, 128, 131, - /* 5790 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 189, - /* 5800 */ 687, 687, 687, 687, 687, 687, 108, 687, 687, 687, - /* 5810 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 5820 */ 105, 99, 687, 216, 687, 687, 193, 57, 687, 687, - /* 5830 */ 247, 169, 229, 843, 687, 687, 687, 687, 687, 687, - /* 5840 */ 518, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 5850 */ 478, 487, 496, 499, 490, 493, 502, 508, 505, 514, - /* 5860 */ 511, 687, 687, 687, 58, 60, 62, 687, 687, 72, - /* 5870 */ 687, 687, 687, 83, 87, 92, 347, 687, 358, 687, - /* 5880 */ 687, 365, 687, 687, 687, 687, 687, 687, 208, 687, - /* 5890 */ 687, 687, 450, 465, 472, 475, 111, 207, 209, 210, - /* 5900 */ 211, 213, 214, 519, 236, 687, 687, 687, 469, 687, - /* 5910 */ 687, 128, 131, 687, 687, 687, 687, 687, 687, 687, - /* 5920 */ 687, 687, 189, 687, 687, 687, 687, 687, 687, 108, - /* 5930 */ 687, 687, 687, 687, 114, 200, 123, 687, 687, 205, - /* 5940 */ 120, 222, 102, 105, 99, 687, 216, 687, 687, 193, - /* 5950 */ 57, 687, 687, 247, 169, 229, 852, 687, 687, 687, - /* 5960 */ 687, 687, 687, 518, 687, 687, 215, 687, 687, 687, - /* 5970 */ 212, 687, 687, 478, 487, 496, 499, 490, 493, 502, - /* 5980 */ 508, 505, 514, 511, 687, 687, 687, 58, 60, 62, - /* 5990 */ 687, 687, 72, 687, 687, 687, 83, 87, 92, 347, - /* 6000 */ 687, 358, 687, 687, 365, 687, 687, 687, 687, 687, - /* 6010 */ 687, 208, 687, 687, 687, 450, 465, 472, 475, 111, - /* 6020 */ 207, 209, 210, 211, 213, 214, 519, 236, 687, 687, - /* 6030 */ 687, 469, 687, 687, 128, 131, 687, 687, 687, 687, - /* 6040 */ 687, 687, 687, 687, 687, 189, 687, 687, 687, 687, - /* 6050 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 6060 */ 687, 687, 205, 120, 222, 102, 105, 99, 687, 216, - /* 6070 */ 687, 687, 193, 57, 687, 687, 247, 169, 229, 854, - /* 6080 */ 687, 687, 687, 687, 687, 687, 518, 687, 687, 215, - /* 6090 */ 687, 687, 687, 212, 687, 687, 478, 487, 496, 499, - /* 6100 */ 490, 493, 502, 508, 505, 514, 511, 687, 687, 687, - /* 6110 */ 58, 60, 62, 687, 687, 72, 687, 687, 687, 83, - /* 6120 */ 87, 92, 347, 687, 358, 687, 687, 365, 687, 687, - /* 6130 */ 687, 687, 687, 687, 208, 687, 687, 687, 450, 465, - /* 6140 */ 472, 475, 111, 207, 209, 210, 211, 213, 214, 519, - /* 6150 */ 236, 687, 687, 687, 469, 687, 687, 128, 131, 687, - /* 6160 */ 687, 687, 687, 687, 687, 687, 687, 687, 189, 687, - /* 6170 */ 687, 687, 687, 687, 687, 108, 687, 687, 687, 687, - /* 6180 */ 114, 200, 123, 687, 687, 205, 120, 222, 102, 105, - /* 6190 */ 99, 687, 216, 687, 687, 193, 57, 687, 687, 247, - /* 6200 */ 169, 229, 859, 687, 687, 687, 687, 687, 687, 518, - /* 6210 */ 687, 687, 215, 687, 687, 687, 212, 687, 687, 478, - /* 6220 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 6230 */ 687, 687, 687, 58, 60, 62, 687, 687, 72, 687, - /* 6240 */ 687, 687, 83, 87, 92, 347, 687, 358, 687, 687, - /* 6250 */ 365, 687, 687, 687, 687, 687, 687, 208, 687, 687, - /* 6260 */ 687, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 6270 */ 213, 214, 519, 236, 687, 687, 687, 469, 687, 687, - /* 6280 */ 128, 131, 687, 687, 687, 687, 687, 687, 687, 687, - /* 6290 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 6300 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 6310 */ 222, 102, 105, 99, 687, 216, 687, 687, 193, 57, - /* 6320 */ 687, 687, 247, 169, 229, 861, 687, 687, 687, 687, - /* 6330 */ 687, 687, 518, 687, 687, 215, 687, 687, 687, 212, - /* 6340 */ 687, 687, 478, 487, 496, 499, 490, 493, 502, 508, - /* 6350 */ 505, 514, 511, 687, 687, 687, 58, 60, 62, 687, - /* 6360 */ 687, 72, 687, 687, 687, 83, 87, 92, 347, 687, - /* 6370 */ 358, 687, 687, 365, 687, 687, 687, 687, 687, 687, - /* 6380 */ 208, 687, 687, 687, 450, 465, 472, 475, 111, 207, - /* 6390 */ 209, 210, 211, 213, 214, 519, 236, 687, 687, 687, - /* 6400 */ 469, 687, 687, 128, 131, 687, 687, 687, 687, 687, - /* 6410 */ 687, 687, 687, 687, 189, 687, 687, 687, 687, 687, - /* 6420 */ 687, 108, 687, 687, 687, 687, 114, 200, 123, 687, - /* 6430 */ 687, 205, 120, 222, 102, 105, 99, 687, 216, 687, - /* 6440 */ 687, 193, 57, 687, 687, 247, 169, 229, 866, 687, - /* 6450 */ 687, 687, 687, 687, 687, 518, 687, 687, 215, 687, - /* 6460 */ 687, 687, 212, 687, 687, 478, 487, 496, 499, 490, - /* 6470 */ 493, 502, 508, 505, 514, 511, 687, 687, 687, 58, - /* 6480 */ 60, 62, 687, 687, 72, 687, 687, 687, 83, 87, - /* 6490 */ 92, 347, 687, 358, 687, 687, 365, 687, 687, 687, - /* 6500 */ 687, 687, 687, 208, 687, 687, 687, 450, 465, 472, - /* 6510 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 6520 */ 687, 687, 687, 469, 687, 687, 128, 131, 687, 687, - /* 6530 */ 687, 687, 687, 687, 687, 687, 687, 189, 687, 687, - /* 6540 */ 687, 687, 687, 687, 108, 687, 687, 687, 687, 114, - /* 6550 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 6560 */ 687, 216, 687, 687, 193, 57, 687, 687, 247, 169, - /* 6570 */ 229, 868, 687, 687, 687, 687, 687, 687, 518, 687, - /* 6580 */ 687, 215, 687, 687, 687, 212, 687, 687, 478, 487, - /* 6590 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 687, - /* 6600 */ 687, 687, 58, 60, 62, 687, 687, 72, 687, 687, - /* 6610 */ 687, 83, 87, 92, 347, 687, 358, 687, 687, 365, - /* 6620 */ 687, 687, 687, 687, 687, 687, 208, 687, 687, 687, - /* 6630 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 6640 */ 214, 519, 236, 687, 687, 687, 469, 687, 687, 128, - /* 6650 */ 131, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 6660 */ 189, 687, 687, 687, 687, 687, 687, 108, 687, 687, - /* 6670 */ 687, 687, 114, 200, 123, 687, 687, 205, 120, 222, - /* 6680 */ 102, 105, 99, 687, 216, 687, 687, 193, 57, 687, - /* 6690 */ 687, 247, 169, 229, 873, 687, 687, 687, 687, 687, - /* 6700 */ 687, 518, 687, 687, 215, 687, 687, 687, 212, 687, - /* 6710 */ 687, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 6720 */ 514, 511, 687, 687, 687, 58, 60, 62, 687, 687, - /* 6730 */ 72, 687, 687, 687, 83, 87, 92, 347, 687, 358, - /* 6740 */ 687, 687, 365, 687, 687, 687, 687, 687, 687, 208, - /* 6750 */ 687, 687, 687, 450, 465, 472, 475, 111, 207, 209, - /* 6760 */ 210, 211, 213, 214, 519, 236, 687, 687, 687, 469, - /* 6770 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 6780 */ 687, 687, 687, 189, 687, 687, 687, 687, 687, 687, - /* 6790 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 6800 */ 205, 120, 222, 102, 105, 99, 687, 216, 687, 687, - /* 6810 */ 193, 57, 687, 687, 247, 169, 229, 875, 687, 687, - /* 6820 */ 687, 687, 687, 687, 518, 687, 687, 215, 687, 687, - /* 6830 */ 687, 212, 687, 687, 478, 487, 496, 499, 490, 493, - /* 6840 */ 502, 508, 505, 514, 511, 687, 687, 687, 58, 60, - /* 6850 */ 62, 687, 687, 72, 687, 687, 687, 83, 87, 92, - /* 6860 */ 347, 687, 358, 687, 687, 365, 687, 687, 687, 687, - /* 6870 */ 687, 687, 208, 687, 687, 687, 450, 465, 472, 475, - /* 6880 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 687, - /* 6890 */ 687, 687, 469, 687, 687, 128, 131, 687, 687, 687, - /* 6900 */ 687, 687, 687, 687, 687, 687, 189, 687, 687, 687, - /* 6910 */ 687, 687, 687, 108, 687, 687, 687, 687, 114, 200, - /* 6920 */ 123, 687, 687, 205, 120, 222, 102, 105, 99, 687, - /* 6930 */ 216, 687, 687, 193, 57, 687, 687, 247, 169, 229, - /* 6940 */ 687, 687, 687, 687, 687, 687, 687, 518, 687, 687, - /* 6950 */ 215, 687, 687, 687, 212, 687, 687, 478, 487, 496, - /* 6960 */ 499, 490, 493, 502, 508, 505, 514, 511, 687, 687, - /* 6970 */ 687, 58, 60, 62, 687, 687, 72, 687, 687, 687, - /* 6980 */ 83, 87, 92, 347, 687, 358, 687, 687, 365, 687, - /* 6990 */ 687, 687, 687, 687, 687, 208, 687, 687, 687, 450, - /* 7000 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 7010 */ 519, 236, 687, 687, 687, 117, 687, 687, 128, 131, - /* 7020 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 189, - /* 7030 */ 687, 687, 687, 687, 687, 687, 108, 687, 687, 687, - /* 7040 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 7050 */ 105, 99, 687, 216, 687, 687, 193, 687, 687, 687, - /* 7060 */ 247, 169, 229, 687, 687, 687, 687, 687, 687, 687, - /* 7070 */ 687, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 7080 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 7090 */ 180, 181, 182, 183, 149, 153, 155, 157, 101, 107, - /* 7100 */ 113, 116, 119, 122, 110, 104, 133, 135, 143, 137, - /* 7110 */ 139, 141, 687, 687, 687, 161, 163, 687, 208, 687, - /* 7120 */ 687, 687, 151, 687, 130, 125, 111, 207, 209, 210, - /* 7130 */ 211, 213, 214, 236, 687, 687, 687, 117, 687, 687, - /* 7140 */ 128, 131, 747, 748, 749, 751, 750, 752, 687, 687, - /* 7150 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 7160 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 7170 */ 222, 102, 105, 99, 622, 216, 687, 687, 198, 687, - /* 7180 */ 687, 687, 247, 169, 229, 687, 687, 687, 687, 687, - /* 7190 */ 687, 687, 687, 687, 687, 215, 687, 725, 687, 212, - /* 7200 */ 687, 687, 755, 756, 776, 687, 786, 687, 753, 754, - /* 7210 */ 165, 687, 687, 147, 145, 159, 149, 153, 155, 157, - /* 7220 */ 101, 107, 113, 116, 119, 122, 110, 104, 133, 135, - /* 7230 */ 143, 137, 139, 141, 687, 687, 687, 161, 163, 687, - /* 7240 */ 208, 687, 687, 687, 151, 185, 130, 125, 111, 207, - /* 7250 */ 209, 210, 211, 213, 214, 236, 687, 687, 687, 117, - /* 7260 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 7270 */ 687, 687, 687, 189, 687, 687, 317, 687, 687, 687, - /* 7280 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 7290 */ 205, 120, 222, 102, 105, 99, 317, 216, 281, 26, - /* 7300 */ 193, 687, 687, 252, 247, 169, 229, 687, 687, 687, - /* 7310 */ 687, 687, 687, 687, 687, 687, 687, 215, 289, 285, - /* 7320 */ 687, 212, 687, 286, 687, 687, 687, 170, 171, 172, - /* 7330 */ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - /* 7340 */ 183, 687, 687, 687, 687, 616, 687, 170, 171, 172, - /* 7350 */ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - /* 7360 */ 183, 687, 208, 687, 747, 748, 749, 751, 750, 752, - /* 7370 */ 111, 207, 209, 210, 211, 213, 214, 236, 687, 687, - /* 7380 */ 687, 117, 687, 687, 128, 131, 747, 748, 749, 751, - /* 7390 */ 750, 752, 687, 687, 687, 189, 687, 687, 687, 687, - /* 7400 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 7410 */ 687, 687, 205, 120, 222, 102, 105, 99, 605, 216, - /* 7420 */ 687, 687, 198, 687, 755, 756, 247, 169, 229, 687, - /* 7430 */ 753, 754, 687, 687, 687, 687, 687, 687, 687, 215, - /* 7440 */ 687, 1005, 687, 212, 687, 687, 755, 756, 776, 687, - /* 7450 */ 786, 687, 753, 754, 165, 687, 687, 147, 145, 159, - /* 7460 */ 149, 153, 155, 157, 101, 107, 113, 116, 119, 122, - /* 7470 */ 110, 104, 133, 135, 143, 137, 139, 141, 687, 687, - /* 7480 */ 687, 161, 163, 687, 208, 687, 687, 687, 151, 687, - /* 7490 */ 130, 125, 111, 207, 209, 210, 211, 213, 214, 236, - /* 7500 */ 687, 687, 687, 117, 687, 687, 128, 131, 747, 748, - /* 7510 */ 749, 751, 750, 752, 687, 687, 1245, 189, 687, 687, - /* 7520 */ 687, 687, 687, 687, 108, 687, 687, 687, 687, 114, - /* 7530 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 7540 */ 600, 216, 687, 687, 198, 687, 687, 687, 247, 169, - /* 7550 */ 229, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 7560 */ 687, 215, 687, 808, 687, 212, 687, 687, 755, 756, - /* 7570 */ 882, 687, 786, 687, 753, 754, 165, 687, 687, 147, - /* 7580 */ 145, 159, 149, 153, 155, 157, 101, 107, 113, 116, - /* 7590 */ 119, 122, 110, 104, 133, 135, 143, 137, 139, 141, - /* 7600 */ 687, 687, 687, 161, 163, 687, 208, 687, 687, 687, - /* 7610 */ 151, 687, 130, 125, 111, 207, 209, 210, 211, 213, - /* 7620 */ 214, 236, 687, 687, 687, 117, 687, 687, 128, 131, - /* 7630 */ 747, 748, 749, 751, 750, 752, 687, 687, 619, 189, - /* 7640 */ 687, 687, 687, 687, 687, 687, 108, 687, 687, 687, - /* 7650 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 7660 */ 105, 99, 687, 216, 687, 687, 193, 687, 687, 687, - /* 7670 */ 247, 169, 229, 687, 687, 687, 687, 687, 687, 687, - /* 7680 */ 687, 687, 687, 215, 687, 996, 687, 212, 687, 218, - /* 7690 */ 755, 756, 882, 687, 786, 687, 753, 754, 165, 687, - /* 7700 */ 687, 147, 145, 159, 149, 153, 155, 157, 101, 107, - /* 7710 */ 113, 116, 119, 122, 110, 104, 133, 135, 143, 137, - /* 7720 */ 139, 141, 687, 687, 687, 161, 163, 687, 208, 687, - /* 7730 */ 687, 687, 151, 687, 130, 125, 111, 207, 209, 210, - /* 7740 */ 211, 213, 214, 236, 687, 687, 687, 117, 687, 687, - /* 7750 */ 128, 131, 747, 748, 749, 751, 750, 752, 687, 687, - /* 7760 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 7770 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 7780 */ 222, 102, 105, 99, 225, 216, 687, 687, 198, 687, - /* 7790 */ 687, 687, 247, 169, 229, 687, 687, 687, 687, 687, - /* 7800 */ 687, 687, 687, 687, 687, 215, 687, 1000, 687, 212, - /* 7810 */ 687, 687, 755, 756, 880, 687, 786, 687, 753, 754, - /* 7820 */ 687, 687, 687, 147, 145, 159, 149, 153, 155, 157, - /* 7830 */ 101, 107, 113, 116, 119, 122, 110, 104, 133, 135, - /* 7840 */ 143, 137, 139, 141, 687, 687, 687, 161, 163, 687, - /* 7850 */ 208, 687, 687, 687, 151, 687, 130, 125, 111, 207, - /* 7860 */ 209, 210, 211, 213, 214, 236, 687, 687, 687, 117, - /* 7870 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 7880 */ 687, 690, 687, 189, 687, 687, 687, 687, 687, 687, - /* 7890 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 7900 */ 205, 120, 222, 102, 105, 99, 235, 216, 687, 687, - /* 7910 */ 198, 687, 687, 687, 247, 169, 229, 687, 687, 687, - /* 7920 */ 687, 687, 687, 687, 687, 687, 687, 215, 680, 686, - /* 7930 */ 687, 212, 170, 171, 172, 173, 174, 175, 176, 177, - /* 7940 */ 178, 179, 180, 181, 182, 183, 145, 159, 149, 153, - /* 7950 */ 155, 157, 101, 107, 113, 116, 119, 122, 110, 104, - /* 7960 */ 133, 135, 143, 137, 139, 141, 687, 687, 687, 161, - /* 7970 */ 163, 687, 208, 687, 687, 687, 151, 687, 130, 125, - /* 7980 */ 111, 207, 209, 210, 211, 213, 214, 236, 687, 687, - /* 7990 */ 687, 117, 687, 687, 128, 131, 687, 687, 687, 687, - /* 8000 */ 687, 687, 687, 687, 687, 189, 687, 687, 687, 687, - /* 8010 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 8020 */ 687, 687, 205, 120, 222, 102, 105, 99, 242, 216, - /* 8030 */ 687, 687, 198, 687, 687, 687, 247, 169, 229, 687, - /* 8040 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 215, - /* 8050 */ 687, 687, 687, 212, 159, 149, 153, 155, 157, 101, - /* 8060 */ 107, 113, 116, 119, 122, 110, 104, 133, 135, 143, - /* 8070 */ 137, 139, 141, 687, 687, 687, 161, 163, 687, 687, - /* 8080 */ 687, 687, 687, 151, 687, 130, 125, 687, 687, 687, - /* 8090 */ 687, 687, 687, 687, 208, 687, 687, 687, 687, 687, - /* 8100 */ 687, 687, 111, 207, 209, 210, 211, 213, 214, 236, - /* 8110 */ 687, 687, 687, 117, 687, 687, 128, 131, 687, 687, - /* 8120 */ 687, 687, 687, 687, 687, 687, 687, 189, 687, 687, - /* 8130 */ 687, 687, 687, 266, 108, 687, 262, 687, 687, 114, - /* 8140 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 8150 */ 687, 216, 687, 265, 193, 687, 687, 259, 247, 169, - /* 8160 */ 229, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 8170 */ 687, 215, 687, 687, 687, 212, 687, 687, 687, 101, - /* 8180 */ 107, 113, 116, 119, 122, 110, 104, 133, 135, 143, - /* 8190 */ 137, 139, 141, 687, 687, 687, 161, 163, 257, 687, - /* 8200 */ 687, 687, 687, 151, 687, 130, 125, 255, 522, 256, - /* 8210 */ 258, 261, 260, 236, 687, 687, 208, 117, 687, 687, - /* 8220 */ 128, 131, 687, 687, 111, 207, 209, 210, 211, 213, - /* 8230 */ 214, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 8240 */ 687, 687, 687, 114, 200, 123, 687, 317, 205, 120, - /* 8250 */ 222, 102, 105, 99, 687, 216, 687, 687, 193, 687, - /* 8260 */ 687, 687, 247, 169, 229, 687, 687, 687, 687, 281, - /* 8270 */ 556, 687, 687, 266, 252, 215, 269, 687, 687, 212, - /* 8280 */ 687, 386, 687, 687, 687, 687, 687, 687, 687, 687, - /* 8290 */ 285, 687, 687, 265, 687, 687, 687, 259, 170, 171, - /* 8300 */ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - /* 8310 */ 182, 183, 11, 19, 687, 14, 687, 23, 687, 687, - /* 8320 */ 208, 715, 687, 798, 687, 923, 936, 518, 111, 207, - /* 8330 */ 209, 210, 211, 213, 214, 236, 687, 687, 268, 117, - /* 8340 */ 687, 687, 128, 131, 687, 687, 687, 267, 687, 256, - /* 8350 */ 258, 261, 260, 189, 687, 687, 317, 687, 687, 687, - /* 8360 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 8370 */ 205, 120, 222, 102, 105, 99, 690, 216, 281, 735, - /* 8380 */ 193, 687, 687, 252, 247, 169, 229, 687, 687, 687, - /* 8390 */ 519, 687, 687, 687, 687, 687, 687, 215, 687, 285, - /* 8400 */ 687, 212, 687, 396, 687, 687, 687, 170, 171, 172, - /* 8410 */ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - /* 8420 */ 183, 687, 687, 687, 686, 687, 687, 170, 171, 172, - /* 8430 */ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - /* 8440 */ 183, 687, 208, 687, 687, 687, 687, 687, 687, 687, - /* 8450 */ 111, 207, 209, 210, 211, 213, 214, 236, 687, 687, - /* 8460 */ 687, 117, 687, 687, 128, 131, 687, 687, 687, 687, - /* 8470 */ 687, 687, 687, 687, 687, 189, 687, 687, 317, 687, - /* 8480 */ 687, 687, 108, 687, 687, 427, 381, 114, 200, 123, - /* 8490 */ 687, 687, 205, 120, 222, 102, 105, 99, 385, 216, - /* 8500 */ 281, 762, 193, 371, 687, 252, 247, 169, 229, 687, - /* 8510 */ 687, 687, 687, 687, 687, 687, 371, 687, 687, 215, - /* 8520 */ 687, 285, 687, 212, 687, 417, 687, 687, 687, 170, - /* 8530 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 8540 */ 181, 182, 183, 687, 372, 373, 374, 375, 376, 377, - /* 8550 */ 687, 412, 438, 439, 687, 687, 687, 372, 373, 374, - /* 8560 */ 375, 376, 377, 687, 208, 401, 402, 687, 687, 687, - /* 8570 */ 687, 687, 111, 207, 209, 210, 211, 213, 214, 236, - /* 8580 */ 687, 687, 687, 117, 687, 687, 128, 131, 687, 687, - /* 8590 */ 687, 687, 137, 139, 141, 687, 687, 189, 161, 163, - /* 8600 */ 317, 687, 687, 687, 108, 151, 687, 130, 125, 114, - /* 8610 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 8620 */ 395, 216, 281, 818, 193, 687, 687, 252, 247, 169, - /* 8630 */ 229, 687, 687, 687, 687, 687, 687, 687, 371, 687, - /* 8640 */ 687, 215, 687, 285, 687, 212, 687, 424, 687, 687, - /* 8650 */ 687, 170, 171, 172, 173, 174, 175, 176, 177, 178, - /* 8660 */ 179, 180, 181, 182, 183, 1407, 1, 2, 946, 4, - /* 8670 */ 5, 6, 7, 8, 9, 10, 687, 687, 687, 372, - /* 8680 */ 373, 374, 375, 376, 377, 687, 208, 687, 687, 687, - /* 8690 */ 687, 687, 687, 687, 111, 207, 209, 210, 211, 213, - /* 8700 */ 214, 236, 687, 687, 687, 117, 687, 687, 128, 131, - /* 8710 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 189, - /* 8720 */ 687, 687, 317, 687, 687, 687, 108, 687, 687, 416, - /* 8730 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 8740 */ 105, 99, 423, 216, 281, 850, 193, 371, 687, 252, - /* 8750 */ 247, 169, 229, 687, 687, 687, 687, 687, 687, 687, - /* 8760 */ 371, 687, 687, 215, 687, 285, 687, 212, 687, 428, - /* 8770 */ 687, 687, 687, 170, 171, 172, 173, 174, 175, 176, - /* 8780 */ 177, 178, 179, 180, 181, 182, 183, 687, 372, 373, - /* 8790 */ 374, 375, 376, 377, 687, 687, 687, 687, 687, 687, - /* 8800 */ 687, 372, 373, 374, 375, 376, 377, 687, 208, 687, - /* 8810 */ 687, 687, 687, 687, 687, 687, 111, 207, 209, 210, - /* 8820 */ 211, 213, 214, 236, 687, 687, 687, 117, 687, 687, - /* 8830 */ 128, 131, 687, 687, 687, 687, 687, 687, 687, 687, - /* 8840 */ 687, 189, 687, 687, 317, 687, 687, 687, 108, 687, - /* 8850 */ 687, 434, 687, 114, 200, 123, 687, 687, 205, 120, - /* 8860 */ 222, 102, 105, 99, 687, 216, 281, 687, 193, 371, - /* 8870 */ 687, 252, 247, 169, 229, 687, 687, 687, 687, 687, - /* 8880 */ 687, 687, 687, 687, 687, 215, 687, 285, 687, 212, - /* 8890 */ 687, 435, 687, 687, 687, 170, 171, 172, 173, 174, - /* 8900 */ 175, 176, 177, 178, 179, 180, 181, 182, 183, 687, - /* 8910 */ 372, 373, 374, 375, 376, 377, 687, 687, 687, 687, - /* 8920 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 8930 */ 208, 687, 687, 687, 687, 687, 687, 687, 111, 207, - /* 8940 */ 209, 210, 211, 213, 214, 236, 687, 223, 687, 117, - /* 8950 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 8960 */ 687, 687, 687, 189, 687, 687, 687, 687, 687, 687, - /* 8970 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 8980 */ 205, 120, 222, 102, 105, 99, 687, 216, 948, 687, - /* 8990 */ 193, 468, 575, 687, 247, 169, 229, 687, 580, 687, - /* 9000 */ 687, 687, 687, 687, 687, 687, 687, 215, 687, 687, - /* 9010 */ 687, 212, 687, 687, 687, 687, 170, 171, 172, 173, - /* 9020 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 9030 */ 687, 687, 687, 687, 687, 687, 11, 19, 687, 14, - /* 9040 */ 687, 23, 687, 687, 687, 715, 687, 798, 687, 923, - /* 9050 */ 936, 518, 208, 687, 687, 687, 687, 687, 687, 687, - /* 9060 */ 111, 207, 209, 210, 211, 213, 214, 236, 687, 687, - /* 9070 */ 266, 117, 687, 269, 128, 131, 747, 748, 749, 751, - /* 9080 */ 750, 752, 687, 687, 687, 189, 687, 687, 687, 687, - /* 9090 */ 265, 687, 108, 687, 259, 687, 270, 114, 200, 123, - /* 9100 */ 687, 687, 205, 120, 222, 102, 105, 99, 687, 216, - /* 9110 */ 687, 687, 193, 687, 519, 687, 247, 169, 229, 687, - /* 9120 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 215, - /* 9130 */ 687, 997, 687, 212, 687, 268, 755, 756, 882, 687, - /* 9140 */ 786, 687, 753, 754, 267, 687, 256, 258, 261, 260, - /* 9150 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9160 */ 687, 687, 687, 687, 687, 687, 535, 687, 687, 687, - /* 9170 */ 687, 236, 687, 687, 208, 117, 687, 687, 128, 131, - /* 9180 */ 687, 687, 111, 207, 209, 210, 211, 213, 214, 189, - /* 9190 */ 747, 748, 749, 751, 750, 752, 108, 687, 687, 687, - /* 9200 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 9210 */ 105, 99, 564, 216, 687, 687, 198, 687, 687, 687, - /* 9220 */ 247, 169, 229, 687, 687, 687, 687, 687, 687, 687, - /* 9230 */ 687, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 9240 */ 687, 687, 687, 687, 687, 1007, 687, 687, 687, 687, - /* 9250 */ 755, 756, 757, 687, 687, 687, 753, 754, 687, 687, - /* 9260 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9270 */ 687, 687, 687, 687, 687, 687, 687, 687, 208, 687, - /* 9280 */ 687, 687, 687, 687, 687, 687, 111, 207, 209, 210, - /* 9290 */ 211, 213, 214, 236, 687, 687, 687, 117, 687, 687, - /* 9300 */ 128, 131, 747, 748, 749, 751, 750, 752, 687, 687, - /* 9310 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 9320 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 9330 */ 222, 102, 105, 99, 571, 216, 687, 687, 198, 687, - /* 9340 */ 687, 687, 247, 169, 229, 687, 687, 687, 687, 687, - /* 9350 */ 687, 687, 687, 687, 687, 215, 687, 1006, 687, 212, - /* 9360 */ 687, 687, 755, 756, 757, 687, 687, 687, 753, 754, - /* 9370 */ 747, 748, 749, 751, 750, 752, 687, 687, 687, 687, - /* 9380 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9390 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9400 */ 208, 687, 687, 687, 687, 687, 687, 687, 111, 207, - /* 9410 */ 209, 210, 211, 213, 214, 236, 687, 687, 687, 117, - /* 9420 */ 687, 687, 128, 131, 687, 999, 687, 687, 687, 687, - /* 9430 */ 755, 756, 845, 189, 687, 687, 753, 754, 687, 687, - /* 9440 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 9450 */ 205, 120, 222, 102, 105, 99, 577, 216, 687, 687, - /* 9460 */ 198, 687, 687, 687, 247, 169, 229, 687, 687, 687, - /* 9470 */ 687, 687, 687, 687, 687, 687, 687, 215, 687, 687, - /* 9480 */ 687, 212, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9490 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9500 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9510 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9520 */ 687, 687, 208, 687, 687, 687, 687, 687, 687, 687, - /* 9530 */ 111, 207, 209, 210, 211, 213, 214, 236, 687, 687, - /* 9540 */ 687, 117, 687, 687, 128, 131, 747, 748, 749, 751, - /* 9550 */ 750, 752, 687, 687, 687, 189, 687, 687, 687, 687, - /* 9560 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 9570 */ 687, 687, 205, 120, 222, 102, 105, 99, 584, 216, - /* 9580 */ 687, 687, 198, 687, 687, 687, 247, 169, 229, 687, - /* 9590 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 215, - /* 9600 */ 687, 1003, 687, 212, 687, 687, 755, 756, 845, 687, - /* 9610 */ 687, 687, 753, 754, 747, 748, 749, 751, 750, 752, - /* 9620 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9630 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9640 */ 687, 687, 687, 687, 208, 687, 687, 687, 687, 687, - /* 9650 */ 687, 687, 111, 207, 209, 210, 211, 213, 214, 236, - /* 9660 */ 687, 687, 687, 117, 687, 687, 128, 131, 747, 748, - /* 9670 */ 749, 751, 750, 752, 755, 756, 687, 189, 777, 687, - /* 9680 */ 753, 754, 687, 687, 108, 687, 687, 687, 687, 114, - /* 9690 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 9700 */ 613, 216, 687, 687, 198, 687, 687, 687, 247, 169, - /* 9710 */ 229, 687, 687, 687, 687, 687, 884, 687, 687, 687, - /* 9720 */ 847, 215, 687, 687, 687, 212, 687, 687, 755, 756, - /* 9730 */ 687, 687, 687, 687, 753, 754, 687, 687, 687, 687, - /* 9740 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9750 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9760 */ 687, 687, 687, 687, 687, 687, 208, 687, 687, 687, - /* 9770 */ 687, 687, 687, 687, 111, 207, 209, 210, 211, 213, - /* 9780 */ 214, 236, 687, 687, 687, 117, 687, 687, 128, 131, - /* 9790 */ 747, 748, 749, 751, 750, 752, 687, 687, 687, 189, - /* 9800 */ 687, 687, 687, 687, 687, 687, 108, 687, 687, 687, - /* 9810 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 9820 */ 105, 99, 629, 216, 687, 687, 198, 687, 687, 687, - /* 9830 */ 247, 169, 229, 687, 687, 687, 687, 687, 904, 687, - /* 9840 */ 687, 687, 815, 215, 687, 687, 687, 212, 687, 687, - /* 9850 */ 755, 756, 687, 687, 687, 687, 753, 754, 747, 748, - /* 9860 */ 749, 751, 750, 752, 687, 687, 687, 687, 687, 687, - /* 9870 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9880 */ 687, 687, 687, 687, 687, 687, 687, 687, 208, 687, - /* 9890 */ 687, 687, 687, 687, 687, 687, 111, 207, 209, 210, - /* 9900 */ 211, 213, 214, 236, 687, 687, 687, 117, 687, 687, - /* 9910 */ 128, 131, 687, 1001, 687, 687, 687, 687, 755, 756, - /* 9920 */ 916, 189, 687, 687, 753, 754, 687, 687, 108, 687, - /* 9930 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 9940 */ 222, 102, 105, 99, 635, 216, 687, 687, 198, 687, - /* 9950 */ 687, 687, 247, 169, 229, 687, 687, 687, 687, 687, - /* 9960 */ 687, 687, 687, 687, 687, 215, 687, 687, 687, 212, - /* 9970 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9980 */ 165, 687, 687, 147, 145, 159, 149, 153, 155, 157, - /* 9990 */ 101, 107, 113, 116, 119, 122, 110, 104, 133, 135, - /* 10000 */ 143, 137, 139, 141, 687, 687, 687, 161, 163, 687, - /* 10010 */ 208, 687, 687, 687, 151, 687, 130, 125, 111, 207, - /* 10020 */ 209, 210, 211, 213, 214, 362, 55, 34, 687, 687, - /* 10030 */ 687, 31, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10040 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10050 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 10060 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 10070 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 10080 */ 236, 687, 687, 687, 117, 687, 687, 128, 131, 517, - /* 10090 */ 747, 748, 749, 751, 750, 752, 687, 687, 189, 457, - /* 10100 */ 459, 461, 463, 687, 687, 108, 687, 687, 687, 687, - /* 10110 */ 114, 200, 123, 687, 687, 205, 120, 222, 102, 105, - /* 10120 */ 99, 687, 216, 687, 687, 193, 687, 687, 687, 247, - /* 10130 */ 169, 229, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10140 */ 687, 687, 215, 687, 687, 1004, 212, 687, 687, 687, - /* 10150 */ 755, 756, 845, 687, 687, 687, 753, 754, 747, 748, - /* 10160 */ 749, 751, 750, 752, 687, 687, 687, 687, 687, 687, - /* 10170 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10180 */ 687, 687, 687, 687, 687, 687, 687, 208, 687, 687, - /* 10190 */ 687, 687, 687, 687, 687, 111, 207, 209, 210, 211, - /* 10200 */ 213, 214, 55, 34, 687, 687, 687, 65, 687, 687, - /* 10210 */ 687, 687, 687, 1002, 687, 687, 687, 687, 755, 756, - /* 10220 */ 845, 687, 687, 687, 753, 754, 687, 687, 687, 687, - /* 10230 */ 687, 687, 687, 687, 520, 35, 36, 37, 38, 39, - /* 10240 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - /* 10250 */ 50, 51, 52, 53, 54, 56, 55, 34, 687, 687, - /* 10260 */ 687, 70, 687, 687, 687, 517, 687, 687, 687, 687, - /* 10270 */ 687, 687, 687, 687, 687, 457, 459, 461, 463, 687, - /* 10280 */ 747, 748, 749, 751, 750, 752, 687, 687, 520, 35, - /* 10290 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 10300 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 10310 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 517, - /* 10320 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 457, - /* 10330 */ 459, 461, 463, 55, 34, 998, 687, 687, 82, 687, - /* 10340 */ 755, 756, 845, 687, 687, 687, 753, 754, 687, 687, - /* 10350 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10360 */ 687, 687, 687, 687, 687, 520, 35, 36, 37, 38, - /* 10370 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 10380 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 10390 */ 687, 687, 85, 687, 687, 687, 517, 687, 687, 687, - /* 10400 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 10410 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 10420 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 10430 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 10440 */ 56, 55, 34, 687, 687, 687, 90, 687, 687, 687, - /* 10450 */ 517, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10460 */ 457, 459, 461, 463, 687, 687, 687, 687, 687, 687, - /* 10470 */ 687, 687, 687, 520, 35, 36, 37, 38, 39, 40, - /* 10480 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - /* 10490 */ 51, 52, 53, 54, 56, 687, 687, 687, 687, 687, - /* 10500 */ 687, 687, 687, 687, 517, 55, 34, 687, 687, 687, - /* 10510 */ 94, 687, 687, 687, 457, 459, 461, 463, 687, 687, - /* 10520 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10530 */ 687, 687, 687, 687, 687, 687, 687, 520, 35, 36, - /* 10540 */ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - /* 10550 */ 47, 48, 49, 50, 51, 52, 53, 54, 56, 236, - /* 10560 */ 687, 687, 687, 117, 687, 687, 128, 131, 517, 687, - /* 10570 */ 687, 687, 687, 687, 687, 687, 687, 189, 457, 459, - /* 10580 */ 461, 463, 687, 687, 108, 687, 687, 687, 687, 114, - /* 10590 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 10600 */ 687, 216, 687, 687, 198, 687, 687, 687, 247, 169, - /* 10610 */ 229, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10620 */ 687, 215, 687, 687, 687, 212, 687, 687, 687, 687, - /* 10630 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10640 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10650 */ 687, 687, 55, 34, 687, 687, 687, 346, 687, 687, - /* 10660 */ 687, 687, 687, 687, 687, 687, 208, 687, 687, 687, - /* 10670 */ 687, 687, 687, 687, 111, 207, 209, 210, 211, 213, - /* 10680 */ 214, 687, 687, 687, 520, 35, 36, 37, 38, 39, - /* 10690 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - /* 10700 */ 50, 51, 52, 53, 54, 56, 55, 34, 687, 687, - /* 10710 */ 687, 349, 687, 687, 687, 517, 687, 687, 687, 687, - /* 10720 */ 687, 687, 687, 687, 687, 457, 459, 461, 463, 687, - /* 10730 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 10740 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 10750 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 10760 */ 687, 687, 687, 55, 34, 687, 687, 687, 356, 517, - /* 10770 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 457, - /* 10780 */ 459, 461, 463, 687, 687, 687, 687, 687, 687, 687, - /* 10790 */ 687, 687, 687, 687, 687, 520, 35, 36, 37, 38, - /* 10800 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 10810 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 10820 */ 687, 687, 363, 687, 687, 687, 517, 687, 687, 687, - /* 10830 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 10840 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 10850 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 10860 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 10870 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 10880 */ 517, 525, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10890 */ 457, 459, 461, 463, 747, 748, 749, 751, 750, 752, - /* 10900 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 10910 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 10920 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 10930 */ 687, 687, 687, 55, 34, 687, 687, 687, 532, 517, - /* 10940 */ 687, 687, 687, 687, 687, 687, 732, 687, 687, 457, - /* 10950 */ 459, 461, 463, 687, 755, 756, 687, 687, 687, 687, - /* 10960 */ 753, 754, 687, 687, 687, 520, 35, 36, 37, 38, - /* 10970 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 10980 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 10990 */ 687, 687, 538, 687, 687, 687, 517, 687, 687, 687, - /* 11000 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11010 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11020 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11030 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11040 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11050 */ 517, 544, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11060 */ 457, 459, 461, 463, 747, 748, 749, 751, 750, 752, - /* 11070 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11080 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11090 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11100 */ 687, 687, 687, 55, 34, 687, 687, 687, 558, 517, - /* 11110 */ 687, 687, 687, 687, 687, 687, 759, 687, 687, 457, - /* 11120 */ 459, 461, 463, 687, 755, 756, 687, 687, 687, 687, - /* 11130 */ 753, 754, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11140 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 11150 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 11160 */ 687, 687, 653, 687, 687, 687, 517, 687, 687, 687, - /* 11170 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11180 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11190 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11200 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11210 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11220 */ 517, 660, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11230 */ 457, 459, 461, 463, 747, 748, 749, 751, 750, 752, - /* 11240 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11250 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11260 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11270 */ 687, 687, 687, 55, 34, 687, 687, 687, 665, 517, - /* 11280 */ 687, 687, 687, 687, 687, 687, 815, 687, 687, 457, - /* 11290 */ 459, 461, 463, 687, 755, 756, 687, 687, 687, 687, - /* 11300 */ 753, 754, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11310 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 11320 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 11330 */ 687, 687, 676, 687, 687, 687, 517, 687, 687, 687, - /* 11340 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11350 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11360 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11370 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11380 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11390 */ 517, 698, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11400 */ 457, 459, 461, 463, 747, 748, 749, 751, 750, 752, - /* 11410 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11420 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11430 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11440 */ 687, 687, 687, 55, 34, 687, 687, 687, 707, 517, - /* 11450 */ 687, 687, 687, 687, 687, 687, 847, 687, 687, 457, - /* 11460 */ 459, 461, 463, 687, 755, 756, 687, 687, 687, 687, - /* 11470 */ 753, 754, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11480 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 11490 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 11500 */ 687, 687, 712, 687, 687, 687, 517, 687, 687, 687, - /* 11510 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11520 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11530 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11540 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11550 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11560 */ 517, 821, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11570 */ 457, 459, 461, 463, 687, 687, 687, 687, 687, 687, - /* 11580 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11590 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11600 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11610 */ 687, 687, 687, 55, 34, 687, 687, 687, 828, 517, - /* 11620 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 457, - /* 11630 */ 459, 461, 463, 687, 687, 687, 687, 687, 687, 687, - /* 11640 */ 687, 687, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11650 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 11660 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 11670 */ 687, 687, 835, 687, 687, 687, 517, 687, 687, 687, - /* 11680 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11690 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11700 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11710 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11720 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11730 */ 517, 842, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11740 */ 457, 459, 461, 463, 687, 687, 687, 687, 687, 687, - /* 11750 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11760 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11770 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11780 */ 687, 687, 687, 55, 34, 687, 687, 687, 853, 517, - /* 11790 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 457, - /* 11800 */ 459, 461, 463, 687, 687, 687, 687, 687, 687, 687, - /* 11810 */ 687, 687, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11820 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 11830 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 11840 */ 687, 687, 860, 687, 687, 687, 517, 687, 687, 687, - /* 11850 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11860 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11870 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11880 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11890 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11900 */ 517, 867, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11910 */ 457, 459, 461, 463, 687, 687, 687, 687, 687, 687, - /* 11920 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11930 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11940 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11950 */ 687, 687, 687, 55, 34, 687, 687, 687, 874, 517, - /* 11960 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 457, - /* 11970 */ 459, 461, 463, 687, 687, 687, 687, 687, 687, 687, - /* 11980 */ 687, 687, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11990 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 12000 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 12010 */ 687, 687, 687, 687, 687, 687, 517, 687, 687, 687, - /* 12020 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 12030 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 33, - /* 12040 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 12050 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 12060 */ 56, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 12070 */ 517, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 12080 */ 457, 459, 461, 463, 687, 687, 687, 687, 687, 687, - /* 12090 */ 687, 165, 687, 687, 147, 145, 159, 149, 153, 155, - /* 12100 */ 157, 101, 107, 113, 116, 119, 122, 110, 104, 133, - /* 12110 */ 135, 143, 137, 139, 141, 687, 687, 687, 161, 163, - /* 12120 */ 687, 687, 687, 687, 687, 151, 687, 130, 125, 165, - /* 12130 */ 687, 687, 147, 145, 159, 149, 153, 155, 157, 101, - /* 12140 */ 107, 113, 116, 119, 122, 110, 104, 133, 135, 143, - /* 12150 */ 137, 139, 141, 687, 687, 687, 161, 163, 687, 687, - /* 12160 */ 687, 687, 687, 151, 687, 130, 125, 687, 687, 687, - /* 12170 */ 687, 687, 687, 687, 165, 167, 687, 147, 145, 159, - /* 12180 */ 149, 153, 155, 157, 101, 107, 113, 116, 119, 122, - /* 12190 */ 110, 104, 133, 135, 143, 137, 139, 141, 687, 687, - /* 12200 */ 687, 161, 163, 687, 687, 687, 687, 687, 151, 687, - /* 12210 */ 130, 125, 165, 1382, 467, 147, 145, 159, 149, 153, - /* 12220 */ 155, 157, 101, 107, 113, 116, 119, 122, 110, 104, - /* 12230 */ 133, 135, 143, 137, 139, 141, 687, 687, 687, 161, - /* 12240 */ 163, 687, 687, 687, 687, 687, 151, 687, 130, 125, - /* 12250 */ 165, 687, 471, 147, 145, 159, 149, 153, 155, 157, - /* 12260 */ 101, 107, 113, 116, 119, 122, 110, 104, 133, 135, - /* 12270 */ 143, 137, 139, 141, 687, 687, 687, 161, 163, 687, - /* 12280 */ 687, 687, 687, 687, 151, 687, 130, 125, 165, 687, - /* 12290 */ 474, 147, 145, 159, 149, 153, 155, 157, 101, 107, - /* 12300 */ 113, 116, 119, 122, 110, 104, 133, 135, 143, 137, - /* 12310 */ 139, 141, 687, 687, 687, 161, 163, 687, 687, 687, - /* 12320 */ 687, 687, 151, 687, 130, 125, 165, 687, 477, 147, - /* 12330 */ 145, 159, 149, 153, 155, 157, 101, 107, 113, 116, - /* 12340 */ 119, 122, 110, 104, 133, 135, 143, 137, 139, 141, - /* 12350 */ 687, 687, 687, 161, 163, 687, 687, 687, 687, 687, - /* 12360 */ 151, 687, 130, 125, 687, 687, 687, 687, 687, 687, - /* 12370 */ 687, 524, 687, 165, 687, 687, 147, 145, 159, 149, - /* 12380 */ 153, 155, 157, 101, 107, 113, 116, 119, 122, 110, - /* 12390 */ 104, 133, 135, 143, 137, 139, 141, 687, 687, 687, - /* 12400 */ 161, 163, 687, 687, 687, 687, 687, 151, 687, 130, - /* 12410 */ 125, 687, 687, 687, 687, 687, 687, 687, 531, 687, - /* 12420 */ 165, 687, 687, 147, 145, 159, 149, 153, 155, 157, - /* 12430 */ 101, 107, 113, 116, 119, 122, 110, 104, 133, 135, - /* 12440 */ 143, 137, 139, 141, 687, 687, 687, 161, 163, 687, - /* 12450 */ 687, 687, 687, 687, 151, 687, 130, 125, 687, 687, - /* 12460 */ 687, 687, 687, 687, 687, 537, -}; -static YYCODETYPE yy_lookahead[] = { - /* 0 */ 4, 0, 9, 44, 8, 46, 47, 11, 12, 154, - /* 10 */ 28, 29, 30, 31, 32, 33, 161, 162, 22, 37, - /* 20 */ 38, 164, 165, 166, 167, 29, 44, 133, 46, 47, - /* 30 */ 34, 35, 36, 139, 7, 39, 40, 41, 42, 43, - /* 40 */ 44, 9, 46, 16, 200, 49, 50, 54, 49, 53, - /* 50 */ 54, 55, 56, 50, 210, 211, 212, 213, 55, 63, - /* 60 */ 216, 49, 66, 219, 220, 221, 70, 64, 7, 73, - /* 70 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 80 */ 37, 38, 55, 87, 88, 89, 54, 44, 92, 46, - /* 90 */ 47, 200, 96, 97, 98, 99, 203, 101, 205, 206, - /* 100 */ 104, 210, 211, 212, 213, 112, 45, 111, 217, 218, - /* 110 */ 111, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 120 */ 124, 125, 126, 4, 90, 91, 94, 8, 7, 146, - /* 130 */ 11, 12, 149, 150, 151, 55, 153, 154, 58, 200, - /* 140 */ 60, 22, 159, 160, 112, 162, 192, 193, 29, 210, - /* 150 */ 211, 212, 213, 34, 35, 36, 217, 218, 39, 40, - /* 160 */ 41, 42, 43, 44, 49, 46, 94, 200, 49, 50, - /* 170 */ 55, 50, 53, 54, 55, 56, 49, 210, 211, 212, - /* 180 */ 213, 66, 63, 56, 112, 66, 219, 220, 221, 70, - /* 190 */ 63, 50, 73, 74, 75, 76, 77, 78, 79, 80, - /* 200 */ 81, 82, 83, 90, 91, 155, 87, 88, 89, 54, - /* 210 */ 56, 92, 194, 195, 200, 96, 97, 98, 99, 203, - /* 220 */ 101, 205, 206, 104, 210, 211, 212, 213, 49, 56, - /* 230 */ 111, 217, 218, 155, 115, 116, 117, 118, 119, 120, - /* 240 */ 121, 122, 123, 124, 125, 126, 4, 93, 49, 95, - /* 250 */ 8, 46, 47, 11, 12, 131, 132, 133, 134, 135, - /* 260 */ 136, 137, 138, 42, 22, 44, 93, 112, 95, 133, - /* 270 */ 49, 29, 222, 223, 224, 225, 34, 35, 36, 7, - /* 280 */ 7, 39, 40, 41, 42, 43, 44, 49, 46, 200, - /* 290 */ 111, 49, 50, 55, 7, 53, 54, 55, 56, 210, - /* 300 */ 211, 212, 213, 225, 50, 63, 217, 218, 66, 55, - /* 310 */ 165, 166, 70, 168, 155, 73, 74, 75, 76, 77, - /* 320 */ 78, 79, 80, 81, 82, 83, 152, 52, 154, 87, - /* 330 */ 88, 89, 45, 159, 92, 161, 162, 200, 96, 97, - /* 340 */ 98, 99, 54, 101, 72, 72, 104, 210, 211, 212, - /* 350 */ 213, 165, 166, 111, 217, 218, 49, 115, 116, 117, - /* 360 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 370 */ 7, 47, 47, 8, 50, 50, 11, 12, 200, 55, - /* 380 */ 55, 64, 223, 224, 225, 196, 197, 22, 210, 211, - /* 390 */ 212, 213, 44, 49, 29, 217, 218, 49, 7, 34, - /* 400 */ 35, 36, 198, 199, 39, 40, 41, 42, 43, 44, - /* 410 */ 42, 46, 44, 7, 49, 50, 7, 49, 53, 54, - /* 420 */ 55, 56, 105, 106, 107, 108, 109, 110, 63, 44, - /* 430 */ 203, 66, 205, 206, 49, 70, 45, 50, 73, 74, - /* 440 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 49, - /* 450 */ 154, 45, 87, 88, 89, 55, 160, 92, 162, 50, - /* 460 */ 200, 96, 97, 98, 99, 102, 101, 201, 202, 104, - /* 470 */ 210, 211, 212, 213, 44, 50, 111, 217, 218, 49, - /* 480 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 490 */ 125, 126, 4, 200, 55, 203, 8, 7, 206, 11, - /* 500 */ 12, 208, 209, 210, 211, 212, 213, 7, 200, 55, - /* 510 */ 22, 7, 58, 203, 60, 193, 206, 29, 210, 211, - /* 520 */ 212, 213, 34, 35, 36, 217, 218, 39, 40, 41, - /* 530 */ 42, 43, 44, 49, 46, 200, 7, 49, 50, 55, - /* 540 */ 50, 53, 54, 55, 56, 210, 211, 212, 213, 45, - /* 550 */ 50, 63, 217, 218, 66, 44, 203, 55, 70, 206, - /* 560 */ 49, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 570 */ 82, 83, 49, 141, 45, 87, 88, 89, 55, 151, - /* 580 */ 92, 153, 154, 55, 96, 97, 98, 99, 160, 101, - /* 590 */ 162, 195, 104, 47, 214, 215, 50, 165, 166, 111, - /* 600 */ 168, 55, 94, 115, 116, 117, 118, 119, 120, 121, - /* 610 */ 122, 123, 124, 125, 126, 4, 7, 150, 151, 8, - /* 620 */ 153, 154, 11, 12, 200, 55, 159, 160, 58, 162, - /* 630 */ 60, 214, 215, 22, 210, 211, 212, 213, 55, 7, - /* 640 */ 29, 217, 218, 214, 215, 34, 35, 36, 214, 215, - /* 650 */ 39, 40, 41, 42, 43, 44, 7, 46, 200, 50, - /* 660 */ 49, 50, 7, 7, 53, 54, 55, 56, 210, 211, - /* 670 */ 212, 213, 90, 91, 63, 217, 218, 66, 214, 215, - /* 680 */ 55, 70, 50, 7, 73, 74, 75, 76, 77, 78, - /* 690 */ 79, 80, 81, 82, 83, 214, 215, 50, 87, 88, - /* 700 */ 89, 45, 55, 92, 55, 50, 200, 96, 97, 98, - /* 710 */ 99, 64, 101, 214, 215, 104, 210, 211, 212, 213, - /* 720 */ 55, 45, 111, 217, 218, 23, 115, 116, 117, 118, - /* 730 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 149, - /* 740 */ 97, 151, 8, 153, 154, 11, 12, 200, 46, 159, - /* 750 */ 160, 50, 162, 7, 214, 215, 22, 210, 211, 212, - /* 760 */ 213, 54, 7, 29, 217, 218, 214, 215, 34, 35, - /* 770 */ 36, 214, 215, 39, 40, 41, 42, 43, 44, 49, - /* 780 */ 46, 200, 7, 49, 50, 7, 7, 53, 54, 55, - /* 790 */ 56, 210, 211, 212, 213, 45, 50, 63, 217, 218, - /* 800 */ 66, 214, 215, 55, 70, 50, 58, 73, 74, 75, - /* 810 */ 76, 77, 78, 79, 80, 81, 82, 83, 7, 141, - /* 820 */ 7, 87, 88, 89, 54, 50, 92, 7, 50, 50, - /* 830 */ 96, 97, 98, 99, 144, 101, 7, 147, 104, 47, - /* 840 */ 154, 111, 50, 165, 166, 111, 168, 55, 162, 115, - /* 850 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 860 */ 126, 4, 23, 50, 47, 8, 55, 50, 11, 12, - /* 870 */ 50, 148, 55, 150, 45, 152, 50, 154, 7, 22, - /* 880 */ 47, 55, 159, 50, 161, 162, 29, 7, 55, 49, - /* 890 */ 7, 34, 35, 36, 141, 191, 39, 40, 41, 42, - /* 900 */ 43, 44, 49, 46, 200, 7, 49, 50, 165, 7, - /* 910 */ 53, 54, 55, 56, 210, 211, 212, 213, 165, 166, - /* 920 */ 63, 168, 7, 66, 49, 45, 7, 70, 45, 56, - /* 930 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 940 */ 83, 66, 141, 45, 87, 88, 89, 45, 7, 92, - /* 950 */ 192, 193, 55, 96, 97, 98, 99, 60, 101, 49, - /* 960 */ 45, 104, 90, 91, 45, 165, 165, 166, 111, 168, - /* 970 */ 7, 140, 115, 116, 117, 118, 119, 120, 121, 122, - /* 980 */ 123, 124, 125, 126, 4, 54, 45, 47, 8, 112, - /* 990 */ 50, 11, 12, 200, 163, 164, 165, 166, 167, 154, - /* 1000 */ 200, 49, 22, 210, 211, 212, 213, 162, 45, 29, - /* 1010 */ 210, 211, 212, 213, 34, 35, 36, 141, 191, 39, - /* 1020 */ 40, 41, 42, 43, 44, 47, 46, 200, 50, 49, - /* 1030 */ 50, 49, 7, 53, 54, 55, 56, 210, 211, 212, - /* 1040 */ 213, 165, 166, 63, 168, 63, 66, 54, 47, 144, - /* 1050 */ 70, 50, 147, 73, 74, 75, 76, 77, 78, 79, - /* 1060 */ 80, 81, 82, 83, 54, 141, 49, 87, 88, 89, - /* 1070 */ 45, 47, 92, 64, 50, 155, 96, 97, 98, 99, - /* 1080 */ 50, 101, 7, 66, 104, 55, 7, 112, 50, 165, - /* 1090 */ 166, 111, 168, 55, 66, 115, 116, 117, 118, 119, - /* 1100 */ 120, 121, 122, 123, 124, 125, 126, 4, 191, 94, - /* 1110 */ 151, 8, 94, 154, 11, 12, 94, 200, 159, 160, - /* 1120 */ 45, 162, 157, 158, 45, 22, 154, 210, 211, 212, - /* 1130 */ 213, 50, 29, 49, 162, 50, 55, 34, 35, 36, - /* 1140 */ 55, 191, 39, 40, 41, 42, 43, 44, 7, 46, - /* 1150 */ 200, 144, 49, 50, 147, 64, 53, 54, 55, 56, - /* 1160 */ 210, 211, 212, 213, 64, 50, 63, 55, 155, 66, - /* 1170 */ 55, 144, 60, 70, 147, 155, 73, 74, 75, 76, - /* 1180 */ 77, 78, 79, 80, 81, 82, 83, 64, 50, 191, - /* 1190 */ 87, 88, 89, 55, 49, 92, 155, 56, 200, 96, - /* 1200 */ 97, 98, 99, 144, 101, 155, 147, 104, 210, 211, - /* 1210 */ 212, 213, 144, 64, 111, 147, 49, 64, 115, 116, - /* 1220 */ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - /* 1230 */ 4, 200, 155, 64, 8, 155, 49, 11, 12, 64, - /* 1240 */ 200, 210, 211, 212, 213, 155, 64, 207, 22, 218, - /* 1250 */ 210, 211, 212, 213, 155, 29, 49, 64, 49, 155, - /* 1260 */ 34, 35, 36, 23, 64, 39, 40, 41, 42, 43, - /* 1270 */ 44, 155, 46, 200, 49, 49, 50, 204, 64, 53, - /* 1280 */ 54, 55, 56, 210, 211, 212, 213, 155, 64, 63, - /* 1290 */ 155, 49, 66, 64, 155, 64, 70, 155, 49, 73, - /* 1300 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 1310 */ 64, 155, 55, 87, 88, 89, 55, 100, 92, 197, - /* 1320 */ 49, 49, 96, 97, 98, 99, 202, 101, 203, 203, - /* 1330 */ 104, 72, 56, 203, 56, 49, 203, 111, 56, 203, - /* 1340 */ 203, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 1350 */ 124, 125, 126, 4, 200, 203, 56, 8, 204, 50, - /* 1360 */ 11, 12, 203, 200, 210, 211, 212, 213, 203, 203, - /* 1370 */ 50, 22, 209, 210, 211, 212, 213, 50, 29, 50, - /* 1380 */ 49, 64, 49, 34, 35, 36, 215, 49, 39, 40, - /* 1390 */ 41, 42, 43, 44, 102, 46, 200, 55, 49, 50, - /* 1400 */ 204, 199, 53, 54, 55, 56, 210, 211, 212, 213, - /* 1410 */ 55, 54, 63, 49, 56, 66, 54, 54, 49, 70, - /* 1420 */ 54, 56, 73, 74, 75, 76, 77, 78, 79, 80, - /* 1430 */ 81, 82, 83, 54, 94, 191, 87, 88, 89, 49, - /* 1440 */ 56, 92, 54, 56, 200, 96, 97, 98, 99, 54, - /* 1450 */ 101, 54, 56, 104, 210, 211, 212, 213, 97, 50, - /* 1460 */ 111, 55, 94, 56, 115, 116, 117, 118, 119, 120, - /* 1470 */ 121, 122, 123, 124, 125, 126, 4, 200, 55, 55, - /* 1480 */ 8, 204, 55, 11, 12, 200, 16, 210, 211, 212, - /* 1490 */ 213, 42, 49, 72, 22, 210, 211, 212, 213, 23, - /* 1500 */ 49, 29, 143, 49, 56, 162, 34, 35, 36, 49, - /* 1510 */ 54, 39, 40, 41, 42, 43, 44, 143, 46, 200, - /* 1520 */ 147, 49, 50, 204, 50, 53, 54, 55, 56, 210, - /* 1530 */ 211, 212, 213, 50, 49, 63, 54, 50, 66, 50, - /* 1540 */ 155, 64, 70, 50, 64, 73, 74, 75, 76, 77, - /* 1550 */ 78, 79, 80, 81, 82, 83, 155, 50, 191, 87, - /* 1560 */ 88, 89, 64, 50, 92, 155, 64, 200, 96, 97, - /* 1570 */ 98, 99, 155, 101, 50, 49, 104, 210, 211, 212, - /* 1580 */ 213, 145, 49, 111, 145, 145, 56, 115, 116, 117, - /* 1590 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 1600 */ 200, 49, 54, 8, 204, 49, 11, 12, 200, 54, - /* 1610 */ 210, 211, 212, 213, 156, 156, 155, 22, 210, 211, - /* 1620 */ 212, 213, 50, 50, 29, 50, 158, 49, 155, 34, - /* 1630 */ 35, 36, 50, 50, 39, 40, 41, 42, 43, 44, - /* 1640 */ 156, 46, 200, 50, 49, 50, 204, 156, 53, 54, - /* 1650 */ 55, 56, 210, 211, 212, 213, 145, 59, 63, 49, - /* 1660 */ 145, 66, 145, 49, 145, 70, 145, 59, 73, 74, - /* 1670 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 49, - /* 1680 */ 145, 49, 87, 88, 89, 145, 55, 92, 145, 226, - /* 1690 */ 200, 96, 97, 98, 99, 226, 101, 226, 226, 104, - /* 1700 */ 210, 211, 212, 213, 226, 226, 111, 226, 226, 226, - /* 1710 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 1720 */ 125, 126, 4, 200, 226, 226, 8, 204, 226, 11, - /* 1730 */ 12, 200, 226, 210, 211, 212, 213, 226, 226, 226, - /* 1740 */ 22, 210, 211, 212, 213, 226, 226, 29, 226, 226, - /* 1750 */ 226, 226, 34, 35, 36, 226, 226, 39, 40, 41, - /* 1760 */ 42, 43, 44, 226, 46, 200, 226, 49, 50, 204, - /* 1770 */ 226, 53, 54, 55, 56, 210, 211, 212, 213, 226, - /* 1780 */ 226, 63, 226, 226, 66, 226, 226, 226, 70, 226, - /* 1790 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 1800 */ 82, 83, 226, 226, 226, 87, 88, 89, 226, 226, - /* 1810 */ 92, 226, 226, 200, 96, 97, 98, 99, 226, 101, - /* 1820 */ 226, 226, 104, 210, 211, 212, 213, 226, 226, 111, - /* 1830 */ 226, 226, 226, 115, 116, 117, 118, 119, 120, 121, - /* 1840 */ 122, 123, 124, 125, 126, 4, 200, 226, 226, 8, - /* 1850 */ 204, 226, 11, 12, 200, 226, 210, 211, 212, 213, - /* 1860 */ 226, 226, 226, 22, 210, 211, 212, 213, 226, 226, - /* 1870 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 1880 */ 39, 40, 41, 42, 43, 44, 226, 46, 200, 226, - /* 1890 */ 49, 50, 204, 226, 53, 54, 55, 56, 210, 211, - /* 1900 */ 212, 213, 226, 226, 63, 226, 226, 66, 226, 226, - /* 1910 */ 226, 70, 226, 226, 73, 74, 75, 76, 77, 78, - /* 1920 */ 79, 80, 81, 82, 83, 226, 226, 226, 87, 88, - /* 1930 */ 89, 226, 226, 92, 226, 226, 200, 96, 97, 98, - /* 1940 */ 99, 226, 101, 226, 226, 104, 210, 211, 212, 213, - /* 1950 */ 226, 226, 111, 226, 226, 226, 115, 116, 117, 118, - /* 1960 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 200, - /* 1970 */ 226, 226, 8, 204, 226, 11, 12, 200, 226, 210, - /* 1980 */ 211, 212, 213, 226, 226, 226, 22, 210, 211, 212, - /* 1990 */ 213, 226, 226, 29, 226, 226, 226, 226, 34, 35, - /* 2000 */ 36, 226, 226, 39, 40, 41, 42, 43, 44, 226, - /* 2010 */ 46, 200, 226, 49, 50, 204, 226, 53, 54, 55, - /* 2020 */ 56, 210, 211, 212, 213, 226, 226, 63, 226, 226, - /* 2030 */ 66, 226, 226, 226, 70, 226, 226, 73, 74, 75, - /* 2040 */ 76, 77, 78, 79, 80, 81, 82, 83, 226, 226, - /* 2050 */ 226, 87, 88, 89, 226, 226, 92, 226, 226, 200, - /* 2060 */ 96, 97, 98, 99, 226, 101, 226, 226, 104, 210, - /* 2070 */ 211, 212, 213, 226, 226, 111, 226, 226, 226, 115, - /* 2080 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 2090 */ 126, 4, 200, 226, 226, 8, 204, 226, 11, 12, - /* 2100 */ 200, 226, 210, 211, 212, 213, 226, 226, 226, 22, - /* 2110 */ 210, 211, 212, 213, 226, 226, 29, 226, 226, 226, - /* 2120 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 2130 */ 43, 44, 226, 46, 200, 226, 49, 50, 204, 226, - /* 2140 */ 53, 54, 55, 56, 210, 211, 212, 213, 226, 226, - /* 2150 */ 63, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 2160 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 2170 */ 83, 226, 226, 226, 87, 88, 89, 226, 226, 92, - /* 2180 */ 226, 226, 200, 96, 97, 98, 99, 226, 101, 226, - /* 2190 */ 226, 104, 210, 211, 212, 213, 226, 226, 111, 226, - /* 2200 */ 226, 226, 115, 116, 117, 118, 119, 120, 121, 122, - /* 2210 */ 123, 124, 125, 126, 4, 200, 226, 226, 8, 204, - /* 2220 */ 226, 11, 12, 200, 226, 210, 211, 212, 213, 226, - /* 2230 */ 226, 226, 22, 210, 211, 212, 213, 226, 226, 29, - /* 2240 */ 226, 226, 226, 226, 34, 35, 36, 226, 226, 39, - /* 2250 */ 40, 41, 42, 43, 44, 226, 46, 200, 226, 49, - /* 2260 */ 50, 226, 226, 53, 54, 55, 56, 210, 211, 212, - /* 2270 */ 213, 226, 226, 63, 226, 226, 66, 226, 221, 226, - /* 2280 */ 70, 226, 226, 73, 74, 75, 76, 77, 78, 79, - /* 2290 */ 80, 81, 82, 83, 226, 226, 226, 87, 88, 89, - /* 2300 */ 226, 226, 92, 226, 226, 200, 96, 97, 98, 99, - /* 2310 */ 226, 101, 226, 226, 104, 210, 211, 212, 213, 226, - /* 2320 */ 226, 111, 226, 226, 140, 115, 116, 117, 118, 119, - /* 2330 */ 120, 121, 122, 123, 124, 125, 126, 4, 226, 226, - /* 2340 */ 226, 8, 226, 226, 11, 12, 200, 163, 164, 165, - /* 2350 */ 166, 167, 226, 226, 226, 22, 210, 211, 212, 213, - /* 2360 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 2370 */ 226, 226, 39, 40, 41, 42, 43, 44, 226, 46, - /* 2380 */ 200, 226, 49, 50, 226, 226, 53, 54, 55, 56, - /* 2390 */ 210, 211, 212, 213, 226, 226, 63, 226, 226, 66, - /* 2400 */ 226, 226, 226, 70, 226, 226, 73, 74, 75, 76, - /* 2410 */ 77, 78, 79, 80, 81, 82, 83, 226, 226, 226, - /* 2420 */ 87, 88, 89, 226, 226, 92, 226, 226, 200, 96, - /* 2430 */ 97, 98, 99, 226, 101, 226, 226, 104, 210, 211, - /* 2440 */ 212, 213, 226, 226, 111, 226, 226, 140, 115, 116, - /* 2450 */ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - /* 2460 */ 4, 226, 226, 226, 8, 226, 226, 11, 12, 200, - /* 2470 */ 163, 164, 165, 166, 167, 226, 226, 226, 22, 210, - /* 2480 */ 211, 212, 213, 226, 226, 29, 226, 226, 226, 226, - /* 2490 */ 34, 35, 36, 226, 226, 39, 40, 41, 42, 43, - /* 2500 */ 44, 226, 46, 200, 226, 49, 50, 226, 226, 53, - /* 2510 */ 54, 55, 56, 210, 211, 212, 213, 226, 226, 63, - /* 2520 */ 226, 226, 66, 226, 226, 226, 70, 226, 226, 73, - /* 2530 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 2540 */ 226, 226, 226, 87, 88, 89, 226, 226, 92, 226, - /* 2550 */ 226, 200, 96, 97, 98, 99, 226, 101, 226, 226, - /* 2560 */ 104, 210, 211, 212, 213, 226, 226, 111, 226, 226, - /* 2570 */ 140, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 2580 */ 124, 125, 126, 4, 226, 226, 226, 8, 226, 226, - /* 2590 */ 11, 12, 200, 163, 164, 165, 166, 167, 226, 226, - /* 2600 */ 226, 22, 210, 211, 212, 213, 226, 226, 29, 226, - /* 2610 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 2620 */ 41, 42, 43, 44, 226, 46, 200, 226, 49, 50, - /* 2630 */ 226, 226, 53, 54, 55, 56, 210, 211, 212, 213, - /* 2640 */ 226, 226, 63, 226, 226, 66, 226, 226, 226, 70, - /* 2650 */ 226, 226, 73, 74, 75, 76, 77, 78, 79, 80, - /* 2660 */ 81, 82, 83, 226, 226, 226, 87, 88, 89, 226, - /* 2670 */ 226, 92, 226, 226, 200, 96, 97, 98, 99, 226, - /* 2680 */ 101, 226, 226, 104, 210, 211, 212, 213, 226, 226, - /* 2690 */ 111, 226, 226, 140, 115, 116, 117, 118, 119, 120, - /* 2700 */ 121, 122, 123, 124, 125, 126, 4, 226, 226, 226, - /* 2710 */ 8, 226, 226, 11, 12, 200, 163, 164, 165, 166, - /* 2720 */ 167, 226, 226, 226, 22, 210, 211, 212, 213, 226, - /* 2730 */ 226, 29, 226, 226, 226, 226, 34, 35, 36, 226, - /* 2740 */ 226, 39, 40, 41, 42, 43, 44, 226, 46, 200, - /* 2750 */ 226, 49, 50, 226, 226, 53, 54, 55, 56, 210, - /* 2760 */ 211, 212, 213, 226, 226, 63, 226, 226, 66, 226, - /* 2770 */ 226, 226, 70, 226, 226, 73, 74, 75, 76, 77, - /* 2780 */ 78, 79, 80, 81, 82, 83, 226, 226, 226, 87, - /* 2790 */ 88, 89, 226, 226, 92, 226, 226, 200, 96, 97, - /* 2800 */ 98, 99, 226, 101, 226, 226, 104, 210, 211, 212, - /* 2810 */ 213, 226, 226, 111, 226, 226, 140, 115, 116, 117, - /* 2820 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 2830 */ 226, 226, 226, 8, 226, 226, 11, 12, 200, 163, - /* 2840 */ 164, 165, 166, 167, 226, 226, 226, 22, 210, 211, - /* 2850 */ 212, 213, 226, 226, 29, 226, 226, 226, 226, 34, - /* 2860 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 2870 */ 226, 46, 200, 226, 49, 50, 226, 226, 53, 54, - /* 2880 */ 55, 56, 210, 211, 212, 213, 226, 226, 63, 226, - /* 2890 */ 226, 66, 226, 226, 226, 70, 226, 226, 73, 74, - /* 2900 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 226, - /* 2910 */ 226, 226, 87, 88, 89, 226, 226, 92, 226, 226, - /* 2920 */ 200, 96, 97, 98, 99, 226, 101, 226, 226, 104, - /* 2930 */ 210, 211, 212, 213, 226, 226, 111, 226, 226, 140, - /* 2940 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 2950 */ 125, 126, 4, 226, 226, 226, 8, 226, 226, 11, - /* 2960 */ 12, 200, 163, 164, 165, 166, 167, 226, 226, 226, - /* 2970 */ 22, 210, 211, 212, 213, 226, 226, 29, 226, 226, - /* 2980 */ 226, 226, 34, 35, 36, 226, 226, 39, 40, 41, - /* 2990 */ 42, 43, 44, 226, 46, 200, 226, 49, 50, 226, - /* 3000 */ 226, 53, 54, 55, 56, 210, 211, 212, 213, 226, - /* 3010 */ 226, 63, 226, 226, 66, 226, 226, 226, 70, 226, - /* 3020 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 3030 */ 82, 83, 226, 226, 226, 87, 88, 89, 226, 226, - /* 3040 */ 92, 226, 226, 200, 96, 97, 98, 99, 226, 101, - /* 3050 */ 226, 226, 104, 210, 211, 212, 213, 226, 226, 111, - /* 3060 */ 226, 226, 140, 115, 116, 117, 118, 119, 120, 121, - /* 3070 */ 122, 123, 124, 125, 126, 4, 226, 226, 226, 8, - /* 3080 */ 226, 226, 11, 12, 200, 163, 164, 165, 166, 167, - /* 3090 */ 226, 226, 226, 22, 210, 211, 212, 213, 226, 226, - /* 3100 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 3110 */ 39, 40, 41, 42, 43, 44, 226, 46, 200, 226, - /* 3120 */ 49, 50, 226, 226, 53, 54, 55, 56, 210, 211, - /* 3130 */ 212, 213, 226, 226, 63, 226, 226, 66, 226, 226, - /* 3140 */ 226, 70, 226, 226, 73, 74, 75, 76, 77, 78, - /* 3150 */ 79, 80, 81, 82, 83, 226, 226, 226, 87, 88, - /* 3160 */ 89, 226, 226, 92, 226, 226, 200, 96, 97, 98, - /* 3170 */ 99, 226, 101, 226, 226, 104, 210, 211, 212, 213, - /* 3180 */ 226, 226, 111, 226, 226, 140, 115, 116, 117, 118, - /* 3190 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 226, - /* 3200 */ 226, 226, 8, 226, 226, 11, 12, 200, 163, 164, - /* 3210 */ 165, 166, 167, 226, 226, 226, 22, 210, 211, 212, - /* 3220 */ 213, 226, 226, 29, 226, 226, 226, 226, 34, 35, - /* 3230 */ 36, 226, 226, 39, 40, 41, 42, 43, 44, 226, - /* 3240 */ 46, 200, 226, 49, 50, 226, 226, 53, 54, 55, - /* 3250 */ 56, 210, 211, 212, 213, 226, 226, 63, 226, 226, - /* 3260 */ 66, 226, 226, 226, 70, 226, 226, 73, 74, 75, - /* 3270 */ 76, 77, 78, 79, 80, 81, 82, 83, 226, 226, - /* 3280 */ 226, 87, 88, 89, 226, 226, 92, 226, 226, 200, - /* 3290 */ 96, 97, 98, 99, 226, 101, 226, 226, 104, 210, - /* 3300 */ 211, 212, 213, 226, 226, 111, 226, 226, 140, 115, - /* 3310 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 3320 */ 126, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 3330 */ 200, 163, 164, 165, 166, 167, 226, 226, 226, 22, - /* 3340 */ 210, 211, 212, 213, 226, 226, 29, 226, 226, 226, - /* 3350 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 3360 */ 43, 44, 226, 46, 200, 226, 49, 50, 226, 226, - /* 3370 */ 53, 54, 55, 56, 210, 211, 212, 213, 226, 226, - /* 3380 */ 63, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 3390 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 3400 */ 83, 226, 226, 226, 87, 88, 89, 226, 226, 92, - /* 3410 */ 226, 226, 200, 96, 97, 98, 99, 226, 101, 226, - /* 3420 */ 226, 104, 210, 211, 212, 213, 226, 226, 111, 226, - /* 3430 */ 226, 226, 115, 116, 117, 118, 119, 120, 121, 122, - /* 3440 */ 123, 124, 125, 126, 4, 200, 226, 226, 8, 226, - /* 3450 */ 226, 11, 12, 200, 226, 210, 211, 212, 213, 226, - /* 3460 */ 226, 226, 22, 210, 211, 212, 213, 226, 226, 29, - /* 3470 */ 226, 226, 226, 226, 34, 35, 36, 226, 226, 39, - /* 3480 */ 40, 41, 42, 43, 44, 226, 46, 200, 226, 49, - /* 3490 */ 50, 226, 226, 53, 54, 55, 56, 210, 211, 212, - /* 3500 */ 213, 226, 226, 63, 226, 226, 66, 226, 226, 226, - /* 3510 */ 70, 226, 226, 73, 74, 75, 76, 77, 78, 79, - /* 3520 */ 80, 81, 82, 83, 226, 226, 226, 87, 88, 89, - /* 3530 */ 226, 226, 92, 226, 226, 200, 96, 97, 98, 99, - /* 3540 */ 226, 101, 226, 226, 104, 210, 211, 212, 213, 226, - /* 3550 */ 226, 111, 226, 226, 226, 115, 116, 117, 118, 119, - /* 3560 */ 120, 121, 122, 123, 124, 125, 126, 4, 200, 226, - /* 3570 */ 226, 8, 226, 226, 11, 12, 200, 226, 210, 211, - /* 3580 */ 212, 213, 226, 226, 226, 22, 210, 211, 212, 213, - /* 3590 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 3600 */ 226, 226, 39, 40, 41, 42, 43, 44, 226, 46, - /* 3610 */ 200, 226, 49, 50, 226, 226, 53, 54, 55, 56, - /* 3620 */ 210, 211, 212, 213, 226, 226, 63, 226, 226, 66, - /* 3630 */ 226, 226, 226, 70, 226, 226, 73, 74, 75, 76, - /* 3640 */ 77, 78, 79, 80, 81, 82, 83, 226, 226, 226, - /* 3650 */ 87, 88, 89, 226, 226, 92, 226, 226, 200, 96, - /* 3660 */ 97, 98, 99, 226, 101, 226, 226, 104, 210, 211, - /* 3670 */ 212, 213, 226, 226, 111, 226, 226, 226, 115, 116, - /* 3680 */ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - /* 3690 */ 4, 200, 226, 226, 8, 226, 226, 11, 12, 200, - /* 3700 */ 226, 210, 211, 212, 213, 226, 226, 226, 22, 210, - /* 3710 */ 211, 212, 213, 226, 226, 29, 226, 226, 226, 226, - /* 3720 */ 34, 35, 36, 226, 226, 39, 40, 41, 42, 43, - /* 3730 */ 44, 226, 46, 200, 226, 49, 50, 226, 226, 53, - /* 3740 */ 54, 55, 56, 210, 211, 212, 213, 226, 226, 63, - /* 3750 */ 226, 226, 66, 226, 226, 226, 70, 226, 226, 73, - /* 3760 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 3770 */ 226, 226, 226, 87, 88, 89, 226, 226, 92, 226, - /* 3780 */ 226, 200, 96, 97, 98, 99, 226, 101, 226, 226, - /* 3790 */ 104, 210, 211, 212, 213, 226, 226, 111, 226, 226, - /* 3800 */ 226, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 3810 */ 124, 125, 126, 4, 200, 226, 226, 8, 226, 226, - /* 3820 */ 11, 12, 226, 226, 210, 211, 212, 213, 226, 226, - /* 3830 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 3840 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 3850 */ 41, 42, 43, 44, 226, 46, 226, 226, 49, 50, - /* 3860 */ 226, 226, 53, 54, 55, 56, 226, 226, 226, 226, - /* 3870 */ 226, 226, 63, 226, 226, 66, 226, 226, 226, 70, - /* 3880 */ 226, 226, 73, 74, 75, 76, 77, 78, 79, 80, - /* 3890 */ 81, 82, 83, 226, 226, 226, 87, 88, 89, 226, - /* 3900 */ 226, 92, 226, 226, 226, 96, 97, 98, 99, 226, - /* 3910 */ 101, 226, 226, 104, 226, 226, 226, 226, 226, 226, - /* 3920 */ 111, 226, 226, 226, 115, 116, 117, 118, 119, 120, - /* 3930 */ 121, 122, 123, 124, 125, 126, 4, 226, 226, 226, - /* 3940 */ 8, 226, 226, 11, 12, 226, 226, 226, 226, 226, - /* 3950 */ 226, 226, 226, 226, 22, 226, 226, 226, 226, 226, - /* 3960 */ 226, 29, 226, 226, 226, 226, 34, 35, 36, 226, - /* 3970 */ 226, 39, 40, 41, 42, 43, 44, 226, 46, 226, - /* 3980 */ 226, 49, 50, 226, 226, 53, 54, 55, 56, 226, - /* 3990 */ 226, 226, 226, 226, 226, 63, 226, 226, 66, 226, - /* 4000 */ 226, 226, 70, 226, 226, 73, 74, 75, 76, 77, - /* 4010 */ 78, 79, 80, 81, 82, 83, 226, 226, 226, 87, - /* 4020 */ 88, 89, 226, 226, 92, 226, 226, 226, 96, 97, - /* 4030 */ 98, 99, 226, 101, 226, 226, 104, 226, 226, 226, - /* 4040 */ 226, 226, 226, 111, 226, 226, 226, 115, 116, 117, - /* 4050 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 4060 */ 226, 226, 226, 8, 226, 226, 11, 12, 226, 226, - /* 4070 */ 226, 226, 226, 226, 226, 226, 226, 22, 226, 226, - /* 4080 */ 226, 226, 226, 226, 29, 226, 226, 226, 226, 34, - /* 4090 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 4100 */ 226, 46, 226, 226, 49, 50, 226, 226, 53, 54, - /* 4110 */ 55, 56, 226, 226, 226, 226, 226, 226, 63, 226, - /* 4120 */ 226, 66, 226, 226, 226, 70, 226, 226, 73, 74, - /* 4130 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 226, - /* 4140 */ 226, 226, 87, 88, 89, 226, 226, 92, 226, 226, - /* 4150 */ 226, 96, 97, 98, 99, 226, 101, 226, 226, 104, - /* 4160 */ 226, 226, 226, 226, 226, 226, 111, 226, 226, 226, - /* 4170 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 4180 */ 125, 126, 4, 226, 226, 226, 8, 226, 226, 11, - /* 4190 */ 12, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 4200 */ 22, 226, 226, 226, 226, 226, 226, 29, 226, 226, - /* 4210 */ 226, 226, 34, 35, 36, 226, 226, 39, 40, 41, - /* 4220 */ 42, 43, 44, 226, 46, 226, 226, 49, 50, 226, - /* 4230 */ 226, 53, 54, 55, 56, 226, 226, 226, 226, 226, - /* 4240 */ 226, 63, 226, 226, 66, 226, 226, 226, 70, 226, - /* 4250 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 4260 */ 82, 83, 226, 226, 226, 87, 88, 89, 226, 226, - /* 4270 */ 92, 226, 226, 226, 96, 97, 98, 99, 226, 101, - /* 4280 */ 226, 226, 104, 226, 226, 226, 226, 226, 226, 111, - /* 4290 */ 226, 226, 226, 115, 116, 117, 118, 119, 120, 121, - /* 4300 */ 122, 123, 124, 125, 126, 4, 226, 226, 226, 8, - /* 4310 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 4320 */ 226, 226, 226, 22, 226, 226, 226, 226, 226, 226, - /* 4330 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 4340 */ 39, 40, 41, 42, 43, 44, 226, 46, 226, 226, - /* 4350 */ 49, 50, 226, 226, 53, 54, 55, 56, 226, 226, - /* 4360 */ 226, 226, 226, 226, 63, 226, 226, 66, 226, 226, - /* 4370 */ 226, 70, 226, 226, 73, 74, 75, 76, 77, 78, - /* 4380 */ 79, 80, 81, 82, 83, 226, 226, 226, 87, 88, - /* 4390 */ 89, 226, 226, 92, 226, 226, 226, 96, 97, 98, - /* 4400 */ 99, 226, 101, 226, 226, 104, 226, 226, 226, 226, - /* 4410 */ 226, 226, 111, 226, 226, 226, 115, 116, 117, 118, - /* 4420 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 226, - /* 4430 */ 226, 226, 8, 226, 226, 11, 12, 226, 226, 226, - /* 4440 */ 226, 226, 226, 226, 226, 226, 22, 226, 226, 226, - /* 4450 */ 226, 226, 226, 29, 226, 226, 226, 226, 34, 35, - /* 4460 */ 36, 226, 226, 39, 40, 41, 42, 43, 44, 226, - /* 4470 */ 46, 226, 226, 49, 50, 226, 226, 53, 54, 55, - /* 4480 */ 56, 226, 226, 226, 226, 226, 226, 63, 226, 226, - /* 4490 */ 66, 226, 226, 226, 70, 226, 226, 73, 74, 75, - /* 4500 */ 76, 77, 78, 79, 80, 81, 82, 83, 226, 226, - /* 4510 */ 226, 87, 88, 89, 226, 226, 92, 226, 226, 226, - /* 4520 */ 96, 97, 98, 99, 226, 101, 226, 226, 104, 226, - /* 4530 */ 226, 226, 226, 226, 226, 111, 226, 226, 226, 115, - /* 4540 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 4550 */ 126, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 4560 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 22, - /* 4570 */ 226, 226, 226, 226, 226, 226, 29, 226, 226, 226, - /* 4580 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 4590 */ 43, 44, 226, 46, 226, 226, 49, 50, 226, 226, - /* 4600 */ 53, 54, 55, 56, 226, 226, 226, 226, 226, 226, - /* 4610 */ 63, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 4620 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 4630 */ 83, 226, 226, 226, 87, 88, 89, 226, 226, 92, - /* 4640 */ 226, 226, 226, 96, 97, 98, 99, 226, 101, 226, - /* 4650 */ 226, 104, 226, 226, 226, 226, 226, 226, 111, 226, - /* 4660 */ 226, 226, 115, 116, 117, 118, 119, 120, 121, 122, - /* 4670 */ 123, 124, 125, 126, 4, 226, 226, 226, 8, 226, - /* 4680 */ 226, 11, 12, 226, 226, 226, 226, 226, 226, 226, - /* 4690 */ 226, 226, 22, 226, 226, 226, 226, 226, 226, 29, - /* 4700 */ 226, 226, 226, 226, 34, 35, 36, 226, 226, 39, - /* 4710 */ 40, 41, 42, 43, 44, 226, 46, 226, 226, 49, - /* 4720 */ 50, 226, 226, 53, 54, 55, 56, 226, 226, 226, - /* 4730 */ 226, 226, 226, 63, 226, 226, 66, 226, 226, 226, - /* 4740 */ 70, 226, 226, 73, 74, 75, 76, 77, 78, 79, - /* 4750 */ 80, 81, 82, 83, 226, 226, 226, 87, 88, 89, - /* 4760 */ 226, 226, 92, 226, 226, 226, 96, 97, 98, 99, - /* 4770 */ 226, 101, 226, 226, 104, 226, 226, 226, 226, 226, - /* 4780 */ 226, 111, 226, 226, 226, 115, 116, 117, 118, 119, - /* 4790 */ 120, 121, 122, 123, 124, 125, 126, 4, 226, 226, - /* 4800 */ 226, 8, 226, 226, 11, 12, 226, 226, 226, 226, - /* 4810 */ 226, 226, 226, 226, 226, 22, 226, 226, 226, 226, - /* 4820 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 4830 */ 226, 226, 39, 40, 41, 42, 43, 44, 226, 46, - /* 4840 */ 226, 226, 49, 50, 226, 226, 53, 54, 55, 56, - /* 4850 */ 226, 226, 226, 226, 226, 226, 63, 226, 226, 66, - /* 4860 */ 226, 226, 226, 70, 226, 226, 73, 74, 75, 76, - /* 4870 */ 77, 78, 79, 80, 81, 82, 83, 226, 226, 226, - /* 4880 */ 87, 88, 89, 226, 226, 92, 226, 226, 226, 96, - /* 4890 */ 97, 98, 99, 226, 101, 226, 226, 104, 226, 226, - /* 4900 */ 226, 226, 226, 226, 111, 226, 226, 226, 115, 116, - /* 4910 */ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - /* 4920 */ 4, 226, 226, 226, 8, 226, 226, 11, 12, 226, - /* 4930 */ 226, 226, 226, 226, 226, 226, 226, 226, 22, 226, - /* 4940 */ 226, 226, 226, 226, 226, 29, 226, 226, 226, 226, - /* 4950 */ 34, 35, 36, 226, 226, 39, 40, 41, 42, 43, - /* 4960 */ 44, 226, 46, 226, 226, 49, 50, 226, 226, 53, - /* 4970 */ 54, 55, 56, 226, 226, 226, 226, 226, 226, 63, - /* 4980 */ 226, 226, 66, 226, 226, 226, 70, 226, 226, 73, - /* 4990 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 5000 */ 226, 226, 226, 87, 88, 89, 226, 226, 92, 226, - /* 5010 */ 226, 226, 96, 97, 98, 99, 226, 101, 226, 226, - /* 5020 */ 104, 226, 226, 226, 226, 226, 226, 111, 226, 226, - /* 5030 */ 226, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 5040 */ 124, 125, 126, 4, 226, 226, 226, 8, 226, 226, - /* 5050 */ 11, 12, 226, 226, 226, 226, 226, 226, 226, 226, - /* 5060 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 5070 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 5080 */ 41, 42, 43, 44, 226, 46, 226, 226, 49, 50, - /* 5090 */ 226, 226, 53, 54, 55, 56, 226, 226, 226, 226, - /* 5100 */ 226, 226, 63, 226, 226, 66, 226, 226, 226, 70, - /* 5110 */ 226, 226, 73, 74, 75, 76, 77, 78, 79, 80, - /* 5120 */ 81, 82, 83, 226, 226, 226, 87, 88, 89, 226, - /* 5130 */ 226, 92, 226, 226, 226, 96, 97, 98, 99, 226, - /* 5140 */ 101, 226, 226, 104, 226, 226, 226, 226, 226, 226, - /* 5150 */ 111, 226, 226, 226, 115, 116, 117, 118, 119, 120, - /* 5160 */ 121, 122, 123, 124, 125, 126, 4, 226, 226, 226, - /* 5170 */ 8, 226, 226, 11, 12, 226, 226, 226, 226, 226, - /* 5180 */ 226, 226, 226, 226, 22, 226, 226, 226, 226, 226, - /* 5190 */ 226, 29, 226, 226, 226, 226, 34, 35, 36, 226, - /* 5200 */ 226, 39, 40, 41, 42, 43, 44, 226, 46, 226, - /* 5210 */ 226, 49, 50, 226, 226, 53, 54, 55, 56, 226, - /* 5220 */ 226, 226, 226, 226, 226, 63, 226, 226, 66, 226, - /* 5230 */ 226, 226, 70, 226, 226, 73, 74, 75, 76, 77, - /* 5240 */ 78, 79, 80, 81, 82, 83, 226, 226, 226, 87, - /* 5250 */ 88, 89, 226, 226, 92, 226, 226, 226, 96, 97, - /* 5260 */ 98, 99, 226, 101, 226, 226, 104, 226, 226, 226, - /* 5270 */ 226, 226, 226, 111, 226, 226, 226, 115, 116, 117, - /* 5280 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 5290 */ 226, 226, 226, 8, 226, 226, 11, 12, 226, 226, - /* 5300 */ 226, 226, 226, 226, 226, 226, 226, 22, 226, 226, - /* 5310 */ 226, 226, 226, 226, 29, 226, 226, 226, 226, 34, - /* 5320 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 5330 */ 226, 46, 226, 226, 49, 50, 226, 226, 53, 54, - /* 5340 */ 55, 56, 226, 226, 226, 226, 226, 226, 63, 226, - /* 5350 */ 226, 66, 226, 226, 226, 70, 226, 226, 73, 74, - /* 5360 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 226, - /* 5370 */ 226, 226, 87, 88, 89, 226, 226, 92, 226, 226, - /* 5380 */ 226, 96, 97, 98, 99, 226, 101, 226, 226, 104, - /* 5390 */ 226, 226, 226, 226, 226, 226, 111, 226, 226, 226, - /* 5400 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 5410 */ 125, 126, 4, 226, 226, 226, 8, 226, 226, 11, - /* 5420 */ 12, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 5430 */ 22, 226, 226, 226, 226, 226, 226, 29, 226, 226, - /* 5440 */ 226, 226, 34, 35, 36, 226, 226, 39, 40, 41, - /* 5450 */ 42, 43, 44, 226, 46, 226, 226, 49, 50, 226, - /* 5460 */ 226, 53, 54, 55, 56, 226, 226, 226, 226, 226, - /* 5470 */ 226, 63, 226, 226, 66, 226, 226, 226, 70, 226, - /* 5480 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 5490 */ 82, 83, 226, 226, 226, 87, 88, 89, 226, 226, - /* 5500 */ 92, 226, 226, 226, 96, 97, 98, 99, 226, 101, - /* 5510 */ 226, 226, 104, 226, 226, 226, 226, 226, 226, 111, - /* 5520 */ 226, 226, 226, 115, 116, 117, 118, 119, 120, 121, - /* 5530 */ 122, 123, 124, 125, 126, 4, 226, 226, 226, 8, - /* 5540 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 5550 */ 226, 226, 226, 22, 226, 226, 226, 226, 226, 226, - /* 5560 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 5570 */ 39, 40, 41, 42, 43, 44, 226, 46, 226, 226, - /* 5580 */ 49, 50, 226, 226, 53, 54, 55, 56, 226, 226, - /* 5590 */ 226, 226, 226, 226, 63, 226, 226, 66, 226, 226, - /* 5600 */ 226, 70, 226, 226, 73, 74, 75, 76, 77, 78, - /* 5610 */ 79, 80, 81, 82, 83, 226, 226, 226, 87, 88, - /* 5620 */ 89, 226, 226, 92, 226, 226, 226, 96, 97, 98, - /* 5630 */ 99, 226, 101, 226, 226, 104, 226, 226, 226, 226, - /* 5640 */ 226, 226, 111, 226, 226, 226, 115, 116, 117, 118, - /* 5650 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 226, - /* 5660 */ 226, 226, 8, 226, 226, 11, 12, 226, 226, 226, - /* 5670 */ 226, 226, 226, 226, 226, 226, 22, 226, 226, 226, - /* 5680 */ 226, 226, 226, 29, 226, 226, 226, 226, 34, 35, - /* 5690 */ 36, 226, 226, 39, 40, 41, 42, 43, 44, 226, - /* 5700 */ 46, 226, 226, 49, 50, 226, 226, 53, 54, 55, - /* 5710 */ 56, 226, 226, 226, 226, 226, 226, 63, 226, 226, - /* 5720 */ 66, 226, 226, 226, 70, 226, 226, 73, 74, 75, - /* 5730 */ 76, 77, 78, 79, 80, 81, 82, 83, 226, 226, - /* 5740 */ 226, 87, 88, 89, 226, 226, 92, 226, 226, 226, - /* 5750 */ 96, 97, 98, 99, 226, 101, 226, 226, 104, 226, - /* 5760 */ 226, 226, 226, 226, 226, 111, 226, 226, 226, 115, - /* 5770 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 5780 */ 126, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 5790 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 22, - /* 5800 */ 226, 226, 226, 226, 226, 226, 29, 226, 226, 226, - /* 5810 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 5820 */ 43, 44, 226, 46, 226, 226, 49, 50, 226, 226, - /* 5830 */ 53, 54, 55, 56, 226, 226, 226, 226, 226, 226, - /* 5840 */ 63, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 5850 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 5860 */ 83, 226, 226, 226, 87, 88, 89, 226, 226, 92, - /* 5870 */ 226, 226, 226, 96, 97, 98, 99, 226, 101, 226, - /* 5880 */ 226, 104, 226, 226, 226, 226, 226, 226, 111, 226, - /* 5890 */ 226, 226, 115, 116, 117, 118, 119, 120, 121, 122, - /* 5900 */ 123, 124, 125, 126, 4, 226, 226, 226, 8, 226, - /* 5910 */ 226, 11, 12, 226, 226, 226, 226, 226, 226, 226, - /* 5920 */ 226, 226, 22, 226, 226, 226, 226, 226, 226, 29, - /* 5930 */ 226, 226, 226, 226, 34, 35, 36, 226, 226, 39, - /* 5940 */ 40, 41, 42, 43, 44, 226, 46, 226, 226, 49, - /* 5950 */ 50, 226, 226, 53, 54, 55, 56, 226, 226, 226, - /* 5960 */ 226, 226, 226, 63, 226, 226, 66, 226, 226, 226, - /* 5970 */ 70, 226, 226, 73, 74, 75, 76, 77, 78, 79, - /* 5980 */ 80, 81, 82, 83, 226, 226, 226, 87, 88, 89, - /* 5990 */ 226, 226, 92, 226, 226, 226, 96, 97, 98, 99, - /* 6000 */ 226, 101, 226, 226, 104, 226, 226, 226, 226, 226, - /* 6010 */ 226, 111, 226, 226, 226, 115, 116, 117, 118, 119, - /* 6020 */ 120, 121, 122, 123, 124, 125, 126, 4, 226, 226, - /* 6030 */ 226, 8, 226, 226, 11, 12, 226, 226, 226, 226, - /* 6040 */ 226, 226, 226, 226, 226, 22, 226, 226, 226, 226, - /* 6050 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 6060 */ 226, 226, 39, 40, 41, 42, 43, 44, 226, 46, - /* 6070 */ 226, 226, 49, 50, 226, 226, 53, 54, 55, 56, - /* 6080 */ 226, 226, 226, 226, 226, 226, 63, 226, 226, 66, - /* 6090 */ 226, 226, 226, 70, 226, 226, 73, 74, 75, 76, - /* 6100 */ 77, 78, 79, 80, 81, 82, 83, 226, 226, 226, - /* 6110 */ 87, 88, 89, 226, 226, 92, 226, 226, 226, 96, - /* 6120 */ 97, 98, 99, 226, 101, 226, 226, 104, 226, 226, - /* 6130 */ 226, 226, 226, 226, 111, 226, 226, 226, 115, 116, - /* 6140 */ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - /* 6150 */ 4, 226, 226, 226, 8, 226, 226, 11, 12, 226, - /* 6160 */ 226, 226, 226, 226, 226, 226, 226, 226, 22, 226, - /* 6170 */ 226, 226, 226, 226, 226, 29, 226, 226, 226, 226, - /* 6180 */ 34, 35, 36, 226, 226, 39, 40, 41, 42, 43, - /* 6190 */ 44, 226, 46, 226, 226, 49, 50, 226, 226, 53, - /* 6200 */ 54, 55, 56, 226, 226, 226, 226, 226, 226, 63, - /* 6210 */ 226, 226, 66, 226, 226, 226, 70, 226, 226, 73, - /* 6220 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 6230 */ 226, 226, 226, 87, 88, 89, 226, 226, 92, 226, - /* 6240 */ 226, 226, 96, 97, 98, 99, 226, 101, 226, 226, - /* 6250 */ 104, 226, 226, 226, 226, 226, 226, 111, 226, 226, - /* 6260 */ 226, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 6270 */ 124, 125, 126, 4, 226, 226, 226, 8, 226, 226, - /* 6280 */ 11, 12, 226, 226, 226, 226, 226, 226, 226, 226, - /* 6290 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 6300 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 6310 */ 41, 42, 43, 44, 226, 46, 226, 226, 49, 50, - /* 6320 */ 226, 226, 53, 54, 55, 56, 226, 226, 226, 226, - /* 6330 */ 226, 226, 63, 226, 226, 66, 226, 226, 226, 70, - /* 6340 */ 226, 226, 73, 74, 75, 76, 77, 78, 79, 80, - /* 6350 */ 81, 82, 83, 226, 226, 226, 87, 88, 89, 226, - /* 6360 */ 226, 92, 226, 226, 226, 96, 97, 98, 99, 226, - /* 6370 */ 101, 226, 226, 104, 226, 226, 226, 226, 226, 226, - /* 6380 */ 111, 226, 226, 226, 115, 116, 117, 118, 119, 120, - /* 6390 */ 121, 122, 123, 124, 125, 126, 4, 226, 226, 226, - /* 6400 */ 8, 226, 226, 11, 12, 226, 226, 226, 226, 226, - /* 6410 */ 226, 226, 226, 226, 22, 226, 226, 226, 226, 226, - /* 6420 */ 226, 29, 226, 226, 226, 226, 34, 35, 36, 226, - /* 6430 */ 226, 39, 40, 41, 42, 43, 44, 226, 46, 226, - /* 6440 */ 226, 49, 50, 226, 226, 53, 54, 55, 56, 226, - /* 6450 */ 226, 226, 226, 226, 226, 63, 226, 226, 66, 226, - /* 6460 */ 226, 226, 70, 226, 226, 73, 74, 75, 76, 77, - /* 6470 */ 78, 79, 80, 81, 82, 83, 226, 226, 226, 87, - /* 6480 */ 88, 89, 226, 226, 92, 226, 226, 226, 96, 97, - /* 6490 */ 98, 99, 226, 101, 226, 226, 104, 226, 226, 226, - /* 6500 */ 226, 226, 226, 111, 226, 226, 226, 115, 116, 117, - /* 6510 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 6520 */ 226, 226, 226, 8, 226, 226, 11, 12, 226, 226, - /* 6530 */ 226, 226, 226, 226, 226, 226, 226, 22, 226, 226, - /* 6540 */ 226, 226, 226, 226, 29, 226, 226, 226, 226, 34, - /* 6550 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 6560 */ 226, 46, 226, 226, 49, 50, 226, 226, 53, 54, - /* 6570 */ 55, 56, 226, 226, 226, 226, 226, 226, 63, 226, - /* 6580 */ 226, 66, 226, 226, 226, 70, 226, 226, 73, 74, - /* 6590 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 226, - /* 6600 */ 226, 226, 87, 88, 89, 226, 226, 92, 226, 226, - /* 6610 */ 226, 96, 97, 98, 99, 226, 101, 226, 226, 104, - /* 6620 */ 226, 226, 226, 226, 226, 226, 111, 226, 226, 226, - /* 6630 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 6640 */ 125, 126, 4, 226, 226, 226, 8, 226, 226, 11, - /* 6650 */ 12, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 6660 */ 22, 226, 226, 226, 226, 226, 226, 29, 226, 226, - /* 6670 */ 226, 226, 34, 35, 36, 226, 226, 39, 40, 41, - /* 6680 */ 42, 43, 44, 226, 46, 226, 226, 49, 50, 226, - /* 6690 */ 226, 53, 54, 55, 56, 226, 226, 226, 226, 226, - /* 6700 */ 226, 63, 226, 226, 66, 226, 226, 226, 70, 226, - /* 6710 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 6720 */ 82, 83, 226, 226, 226, 87, 88, 89, 226, 226, - /* 6730 */ 92, 226, 226, 226, 96, 97, 98, 99, 226, 101, - /* 6740 */ 226, 226, 104, 226, 226, 226, 226, 226, 226, 111, - /* 6750 */ 226, 226, 226, 115, 116, 117, 118, 119, 120, 121, - /* 6760 */ 122, 123, 124, 125, 126, 4, 226, 226, 226, 8, - /* 6770 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 6780 */ 226, 226, 226, 22, 226, 226, 226, 226, 226, 226, - /* 6790 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 6800 */ 39, 40, 41, 42, 43, 44, 226, 46, 226, 226, - /* 6810 */ 49, 50, 226, 226, 53, 54, 55, 56, 226, 226, - /* 6820 */ 226, 226, 226, 226, 63, 226, 226, 66, 226, 226, - /* 6830 */ 226, 70, 226, 226, 73, 74, 75, 76, 77, 78, - /* 6840 */ 79, 80, 81, 82, 83, 226, 226, 226, 87, 88, - /* 6850 */ 89, 226, 226, 92, 226, 226, 226, 96, 97, 98, - /* 6860 */ 99, 226, 101, 226, 226, 104, 226, 226, 226, 226, - /* 6870 */ 226, 226, 111, 226, 226, 226, 115, 116, 117, 118, - /* 6880 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 226, - /* 6890 */ 226, 226, 8, 226, 226, 11, 12, 226, 226, 226, - /* 6900 */ 226, 226, 226, 226, 226, 226, 22, 226, 226, 226, - /* 6910 */ 226, 226, 226, 29, 226, 226, 226, 226, 34, 35, - /* 6920 */ 36, 226, 226, 39, 40, 41, 42, 43, 44, 226, - /* 6930 */ 46, 226, 226, 49, 50, 226, 226, 53, 54, 55, - /* 6940 */ 226, 226, 226, 226, 226, 226, 226, 63, 226, 226, - /* 6950 */ 66, 226, 226, 226, 70, 226, 226, 73, 74, 75, - /* 6960 */ 76, 77, 78, 79, 80, 81, 82, 83, 226, 226, - /* 6970 */ 226, 87, 88, 89, 226, 226, 92, 226, 226, 226, - /* 6980 */ 96, 97, 98, 99, 226, 101, 226, 226, 104, 226, - /* 6990 */ 226, 226, 226, 226, 226, 111, 226, 226, 226, 115, - /* 7000 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 7010 */ 126, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 7020 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 22, - /* 7030 */ 226, 226, 226, 226, 226, 226, 29, 226, 226, 226, - /* 7040 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 7050 */ 43, 44, 226, 46, 226, 226, 49, 226, 226, 226, - /* 7060 */ 53, 54, 55, 226, 226, 226, 226, 226, 226, 226, - /* 7070 */ 226, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 7080 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 7090 */ 83, 84, 85, 86, 16, 17, 18, 19, 20, 21, - /* 7100 */ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - /* 7110 */ 32, 33, 226, 226, 226, 37, 38, 226, 111, 226, - /* 7120 */ 226, 226, 44, 226, 46, 47, 119, 120, 121, 122, - /* 7130 */ 123, 124, 125, 4, 226, 226, 226, 8, 226, 226, - /* 7140 */ 11, 12, 1, 2, 3, 4, 5, 6, 226, 226, - /* 7150 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 7160 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 7170 */ 41, 42, 43, 44, 45, 46, 226, 226, 49, 226, - /* 7180 */ 226, 226, 53, 54, 55, 226, 226, 226, 226, 226, - /* 7190 */ 226, 226, 226, 226, 226, 66, 226, 56, 226, 70, - /* 7200 */ 226, 226, 61, 62, 63, 226, 65, 226, 67, 68, - /* 7210 */ 10, 226, 226, 13, 14, 15, 16, 17, 18, 19, - /* 7220 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - /* 7230 */ 30, 31, 32, 33, 226, 226, 226, 37, 38, 226, - /* 7240 */ 111, 226, 226, 226, 44, 45, 46, 47, 119, 120, - /* 7250 */ 121, 122, 123, 124, 125, 4, 226, 226, 226, 8, - /* 7260 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 7270 */ 226, 226, 226, 22, 226, 226, 22, 226, 226, 226, - /* 7280 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 7290 */ 39, 40, 41, 42, 43, 44, 22, 46, 44, 45, - /* 7300 */ 49, 226, 226, 49, 53, 54, 55, 226, 226, 226, - /* 7310 */ 226, 226, 226, 226, 226, 226, 226, 66, 44, 65, - /* 7320 */ 226, 70, 226, 49, 226, 226, 226, 73, 74, 75, - /* 7330 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 7340 */ 86, 226, 226, 226, 226, 94, 226, 73, 74, 75, - /* 7350 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 7360 */ 86, 226, 111, 226, 1, 2, 3, 4, 5, 6, - /* 7370 */ 119, 120, 121, 122, 123, 124, 125, 4, 226, 226, - /* 7380 */ 226, 8, 226, 226, 11, 12, 1, 2, 3, 4, - /* 7390 */ 5, 6, 226, 226, 226, 22, 226, 226, 226, 226, - /* 7400 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 7410 */ 226, 226, 39, 40, 41, 42, 43, 44, 45, 46, - /* 7420 */ 226, 226, 49, 226, 61, 62, 53, 54, 55, 226, - /* 7430 */ 67, 68, 226, 226, 226, 226, 226, 226, 226, 66, - /* 7440 */ 226, 56, 226, 70, 226, 226, 61, 62, 63, 226, - /* 7450 */ 65, 226, 67, 68, 10, 226, 226, 13, 14, 15, - /* 7460 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - /* 7470 */ 26, 27, 28, 29, 30, 31, 32, 33, 226, 226, - /* 7480 */ 226, 37, 38, 226, 111, 226, 226, 226, 44, 226, - /* 7490 */ 46, 47, 119, 120, 121, 122, 123, 124, 125, 4, - /* 7500 */ 226, 226, 226, 8, 226, 226, 11, 12, 1, 2, - /* 7510 */ 3, 4, 5, 6, 226, 226, 72, 22, 226, 226, - /* 7520 */ 226, 226, 226, 226, 29, 226, 226, 226, 226, 34, - /* 7530 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 7540 */ 45, 46, 226, 226, 49, 226, 226, 226, 53, 54, - /* 7550 */ 55, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 7560 */ 226, 66, 226, 56, 226, 70, 226, 226, 61, 62, - /* 7570 */ 63, 226, 65, 226, 67, 68, 10, 226, 226, 13, - /* 7580 */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - /* 7590 */ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - /* 7600 */ 226, 226, 226, 37, 38, 226, 111, 226, 226, 226, - /* 7610 */ 44, 226, 46, 47, 119, 120, 121, 122, 123, 124, - /* 7620 */ 125, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 7630 */ 1, 2, 3, 4, 5, 6, 226, 226, 72, 22, - /* 7640 */ 226, 226, 226, 226, 226, 226, 29, 226, 226, 226, - /* 7650 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 7660 */ 43, 44, 226, 46, 226, 226, 49, 226, 226, 226, - /* 7670 */ 53, 54, 55, 226, 226, 226, 226, 226, 226, 226, - /* 7680 */ 226, 226, 226, 66, 226, 56, 226, 70, 226, 72, - /* 7690 */ 61, 62, 63, 226, 65, 226, 67, 68, 10, 226, - /* 7700 */ 226, 13, 14, 15, 16, 17, 18, 19, 20, 21, - /* 7710 */ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - /* 7720 */ 32, 33, 226, 226, 226, 37, 38, 226, 111, 226, - /* 7730 */ 226, 226, 44, 226, 46, 47, 119, 120, 121, 122, - /* 7740 */ 123, 124, 125, 4, 226, 226, 226, 8, 226, 226, - /* 7750 */ 11, 12, 1, 2, 3, 4, 5, 6, 226, 226, - /* 7760 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 7770 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 7780 */ 41, 42, 43, 44, 45, 46, 226, 226, 49, 226, - /* 7790 */ 226, 226, 53, 54, 55, 226, 226, 226, 226, 226, - /* 7800 */ 226, 226, 226, 226, 226, 66, 226, 56, 226, 70, - /* 7810 */ 226, 226, 61, 62, 63, 226, 65, 226, 67, 68, - /* 7820 */ 226, 226, 226, 13, 14, 15, 16, 17, 18, 19, - /* 7830 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - /* 7840 */ 30, 31, 32, 33, 226, 226, 226, 37, 38, 226, - /* 7850 */ 111, 226, 226, 226, 44, 226, 46, 47, 119, 120, - /* 7860 */ 121, 122, 123, 124, 125, 4, 226, 226, 226, 8, - /* 7870 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 7880 */ 226, 22, 226, 22, 226, 226, 226, 226, 226, 226, - /* 7890 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 7900 */ 39, 40, 41, 42, 43, 44, 45, 46, 226, 226, - /* 7910 */ 49, 226, 226, 226, 53, 54, 55, 226, 226, 226, - /* 7920 */ 226, 226, 226, 226, 226, 226, 226, 66, 69, 70, - /* 7930 */ 71, 70, 73, 74, 75, 76, 77, 78, 79, 80, - /* 7940 */ 81, 82, 83, 84, 85, 86, 14, 15, 16, 17, - /* 7950 */ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - /* 7960 */ 28, 29, 30, 31, 32, 33, 226, 226, 226, 37, - /* 7970 */ 38, 226, 111, 226, 226, 226, 44, 226, 46, 47, - /* 7980 */ 119, 120, 121, 122, 123, 124, 125, 4, 226, 226, - /* 7990 */ 226, 8, 226, 226, 11, 12, 226, 226, 226, 226, - /* 8000 */ 226, 226, 226, 226, 226, 22, 226, 226, 226, 226, - /* 8010 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 8020 */ 226, 226, 39, 40, 41, 42, 43, 44, 45, 46, - /* 8030 */ 226, 226, 49, 226, 226, 226, 53, 54, 55, 226, - /* 8040 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 66, - /* 8050 */ 226, 226, 226, 70, 15, 16, 17, 18, 19, 20, - /* 8060 */ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - /* 8070 */ 31, 32, 33, 226, 226, 226, 37, 38, 226, 226, - /* 8080 */ 226, 226, 226, 44, 226, 46, 47, 226, 226, 226, - /* 8090 */ 226, 226, 226, 226, 111, 226, 226, 226, 226, 226, - /* 8100 */ 226, 226, 119, 120, 121, 122, 123, 124, 125, 4, - /* 8110 */ 226, 226, 226, 8, 226, 226, 11, 12, 226, 226, - /* 8120 */ 226, 226, 226, 226, 226, 226, 226, 22, 226, 226, - /* 8130 */ 226, 226, 226, 46, 29, 226, 49, 226, 226, 34, - /* 8140 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 8150 */ 226, 46, 226, 66, 49, 226, 226, 70, 53, 54, - /* 8160 */ 55, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 8170 */ 226, 66, 226, 226, 226, 70, 226, 226, 226, 20, - /* 8180 */ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - /* 8190 */ 31, 32, 33, 226, 226, 226, 37, 38, 111, 226, - /* 8200 */ 226, 226, 226, 44, 226, 46, 47, 120, 103, 122, - /* 8210 */ 123, 124, 125, 4, 226, 226, 111, 8, 226, 226, - /* 8220 */ 11, 12, 226, 226, 119, 120, 121, 122, 123, 124, - /* 8230 */ 125, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 8240 */ 226, 226, 226, 34, 35, 36, 226, 22, 39, 40, - /* 8250 */ 41, 42, 43, 44, 226, 46, 226, 226, 49, 226, - /* 8260 */ 226, 226, 53, 54, 55, 226, 226, 226, 226, 44, - /* 8270 */ 45, 226, 226, 46, 49, 66, 49, 226, 226, 70, - /* 8280 */ 226, 72, 226, 226, 226, 226, 226, 226, 226, 226, - /* 8290 */ 65, 226, 226, 66, 226, 226, 226, 70, 73, 74, - /* 8300 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - /* 8310 */ 85, 86, 48, 49, 226, 51, 226, 53, 226, 226, - /* 8320 */ 111, 57, 226, 59, 226, 61, 62, 63, 119, 120, - /* 8330 */ 121, 122, 123, 124, 125, 4, 226, 226, 111, 8, - /* 8340 */ 226, 226, 11, 12, 226, 226, 226, 120, 226, 122, - /* 8350 */ 123, 124, 125, 22, 226, 226, 22, 226, 226, 226, - /* 8360 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 8370 */ 39, 40, 41, 42, 43, 44, 22, 46, 44, 45, - /* 8380 */ 49, 226, 226, 49, 53, 54, 55, 226, 226, 226, - /* 8390 */ 126, 226, 226, 226, 226, 226, 226, 66, 226, 65, - /* 8400 */ 226, 70, 226, 72, 226, 226, 226, 73, 74, 75, - /* 8410 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 8420 */ 86, 226, 226, 226, 70, 71, 226, 73, 74, 75, - /* 8430 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 8440 */ 86, 226, 111, 226, 226, 226, 226, 226, 226, 226, - /* 8450 */ 119, 120, 121, 122, 123, 124, 125, 4, 226, 226, - /* 8460 */ 226, 8, 226, 226, 11, 12, 226, 226, 226, 226, - /* 8470 */ 226, 226, 226, 226, 226, 22, 226, 226, 22, 226, - /* 8480 */ 226, 226, 29, 226, 226, 46, 47, 34, 35, 36, - /* 8490 */ 226, 226, 39, 40, 41, 42, 43, 44, 46, 46, - /* 8500 */ 44, 45, 49, 64, 226, 49, 53, 54, 55, 226, - /* 8510 */ 226, 226, 226, 226, 226, 226, 64, 226, 226, 66, - /* 8520 */ 226, 65, 226, 70, 226, 72, 226, 226, 226, 73, - /* 8530 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 8540 */ 84, 85, 86, 226, 105, 106, 107, 108, 109, 110, - /* 8550 */ 226, 112, 113, 114, 226, 226, 226, 105, 106, 107, - /* 8560 */ 108, 109, 110, 226, 111, 113, 114, 226, 226, 226, - /* 8570 */ 226, 226, 119, 120, 121, 122, 123, 124, 125, 4, - /* 8580 */ 226, 226, 226, 8, 226, 226, 11, 12, 226, 226, - /* 8590 */ 226, 226, 31, 32, 33, 226, 226, 22, 37, 38, - /* 8600 */ 22, 226, 226, 226, 29, 44, 226, 46, 47, 34, - /* 8610 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 8620 */ 46, 46, 44, 45, 49, 226, 226, 49, 53, 54, - /* 8630 */ 55, 226, 226, 226, 226, 226, 226, 226, 64, 226, - /* 8640 */ 226, 66, 226, 65, 226, 70, 226, 72, 226, 226, - /* 8650 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 8660 */ 82, 83, 84, 85, 86, 128, 129, 130, 131, 132, - /* 8670 */ 133, 134, 135, 136, 137, 138, 226, 226, 226, 105, - /* 8680 */ 106, 107, 108, 109, 110, 226, 111, 226, 226, 226, - /* 8690 */ 226, 226, 226, 226, 119, 120, 121, 122, 123, 124, - /* 8700 */ 125, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 8710 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 22, - /* 8720 */ 226, 226, 22, 226, 226, 226, 29, 226, 226, 46, - /* 8730 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 8740 */ 43, 44, 46, 46, 44, 45, 49, 64, 226, 49, - /* 8750 */ 53, 54, 55, 226, 226, 226, 226, 226, 226, 226, - /* 8760 */ 64, 226, 226, 66, 226, 65, 226, 70, 226, 72, - /* 8770 */ 226, 226, 226, 73, 74, 75, 76, 77, 78, 79, - /* 8780 */ 80, 81, 82, 83, 84, 85, 86, 226, 105, 106, - /* 8790 */ 107, 108, 109, 110, 226, 226, 226, 226, 226, 226, - /* 8800 */ 226, 105, 106, 107, 108, 109, 110, 226, 111, 226, - /* 8810 */ 226, 226, 226, 226, 226, 226, 119, 120, 121, 122, - /* 8820 */ 123, 124, 125, 4, 226, 226, 226, 8, 226, 226, - /* 8830 */ 11, 12, 226, 226, 226, 226, 226, 226, 226, 226, - /* 8840 */ 226, 22, 226, 226, 22, 226, 226, 226, 29, 226, - /* 8850 */ 226, 46, 226, 34, 35, 36, 226, 226, 39, 40, - /* 8860 */ 41, 42, 43, 44, 226, 46, 44, 226, 49, 64, - /* 8870 */ 226, 49, 53, 54, 55, 226, 226, 226, 226, 226, - /* 8880 */ 226, 226, 226, 226, 226, 66, 226, 65, 226, 70, - /* 8890 */ 226, 72, 226, 226, 226, 73, 74, 75, 76, 77, - /* 8900 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 226, - /* 8910 */ 105, 106, 107, 108, 109, 110, 226, 226, 226, 226, - /* 8920 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 8930 */ 111, 226, 226, 226, 226, 226, 226, 226, 119, 120, - /* 8940 */ 121, 122, 123, 124, 125, 4, 226, 4, 226, 8, - /* 8950 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 8960 */ 226, 226, 226, 22, 226, 226, 226, 226, 226, 226, - /* 8970 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 8980 */ 39, 40, 41, 42, 43, 44, 226, 46, 0, 226, - /* 8990 */ 49, 50, 49, 226, 53, 54, 55, 226, 55, 226, - /* 9000 */ 226, 226, 226, 226, 226, 226, 226, 66, 226, 226, - /* 9010 */ 226, 70, 226, 226, 226, 226, 73, 74, 75, 76, - /* 9020 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - /* 9030 */ 226, 226, 226, 226, 226, 226, 48, 49, 226, 51, - /* 9040 */ 226, 53, 226, 226, 226, 57, 226, 59, 226, 61, - /* 9050 */ 62, 63, 111, 226, 226, 226, 226, 226, 226, 226, - /* 9060 */ 119, 120, 121, 122, 123, 124, 125, 4, 226, 226, - /* 9070 */ 46, 8, 226, 49, 11, 12, 1, 2, 3, 4, - /* 9080 */ 5, 6, 226, 226, 226, 22, 226, 226, 226, 226, - /* 9090 */ 66, 226, 29, 226, 70, 226, 72, 34, 35, 36, - /* 9100 */ 226, 226, 39, 40, 41, 42, 43, 44, 226, 46, - /* 9110 */ 226, 226, 49, 226, 126, 226, 53, 54, 55, 226, - /* 9120 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 66, - /* 9130 */ 226, 56, 226, 70, 226, 111, 61, 62, 63, 226, - /* 9140 */ 65, 226, 67, 68, 120, 226, 122, 123, 124, 125, - /* 9150 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9160 */ 226, 226, 226, 226, 226, 226, 103, 226, 226, 226, - /* 9170 */ 226, 4, 226, 226, 111, 8, 226, 226, 11, 12, - /* 9180 */ 226, 226, 119, 120, 121, 122, 123, 124, 125, 22, - /* 9190 */ 1, 2, 3, 4, 5, 6, 29, 226, 226, 226, - /* 9200 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 9210 */ 43, 44, 45, 46, 226, 226, 49, 226, 226, 226, - /* 9220 */ 53, 54, 55, 226, 226, 226, 226, 226, 226, 226, - /* 9230 */ 226, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 9240 */ 226, 226, 226, 226, 226, 56, 226, 226, 226, 226, - /* 9250 */ 61, 62, 63, 226, 226, 226, 67, 68, 226, 226, - /* 9260 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9270 */ 226, 226, 226, 226, 226, 226, 226, 226, 111, 226, - /* 9280 */ 226, 226, 226, 226, 226, 226, 119, 120, 121, 122, - /* 9290 */ 123, 124, 125, 4, 226, 226, 226, 8, 226, 226, - /* 9300 */ 11, 12, 1, 2, 3, 4, 5, 6, 226, 226, - /* 9310 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 9320 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 9330 */ 41, 42, 43, 44, 45, 46, 226, 226, 49, 226, - /* 9340 */ 226, 226, 53, 54, 55, 226, 226, 226, 226, 226, - /* 9350 */ 226, 226, 226, 226, 226, 66, 226, 56, 226, 70, - /* 9360 */ 226, 226, 61, 62, 63, 226, 226, 226, 67, 68, - /* 9370 */ 1, 2, 3, 4, 5, 6, 226, 226, 226, 226, - /* 9380 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9390 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9400 */ 111, 226, 226, 226, 226, 226, 226, 226, 119, 120, - /* 9410 */ 121, 122, 123, 124, 125, 4, 226, 226, 226, 8, - /* 9420 */ 226, 226, 11, 12, 226, 56, 226, 226, 226, 226, - /* 9430 */ 61, 62, 63, 22, 226, 226, 67, 68, 226, 226, - /* 9440 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 9450 */ 39, 40, 41, 42, 43, 44, 45, 46, 226, 226, - /* 9460 */ 49, 226, 226, 226, 53, 54, 55, 226, 226, 226, - /* 9470 */ 226, 226, 226, 226, 226, 226, 226, 66, 226, 226, - /* 9480 */ 226, 70, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9490 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9500 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9510 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9520 */ 226, 226, 111, 226, 226, 226, 226, 226, 226, 226, - /* 9530 */ 119, 120, 121, 122, 123, 124, 125, 4, 226, 226, - /* 9540 */ 226, 8, 226, 226, 11, 12, 1, 2, 3, 4, - /* 9550 */ 5, 6, 226, 226, 226, 22, 226, 226, 226, 226, - /* 9560 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 9570 */ 226, 226, 39, 40, 41, 42, 43, 44, 45, 46, - /* 9580 */ 226, 226, 49, 226, 226, 226, 53, 54, 55, 226, - /* 9590 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 66, - /* 9600 */ 226, 56, 226, 70, 226, 226, 61, 62, 63, 226, - /* 9610 */ 226, 226, 67, 68, 1, 2, 3, 4, 5, 6, - /* 9620 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9630 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9640 */ 226, 226, 226, 226, 111, 226, 226, 226, 226, 226, - /* 9650 */ 226, 226, 119, 120, 121, 122, 123, 124, 125, 4, - /* 9660 */ 226, 226, 226, 8, 226, 226, 11, 12, 1, 2, - /* 9670 */ 3, 4, 5, 6, 61, 62, 226, 22, 65, 226, - /* 9680 */ 67, 68, 226, 226, 29, 226, 226, 226, 226, 34, - /* 9690 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 9700 */ 45, 46, 226, 226, 49, 226, 226, 226, 53, 54, - /* 9710 */ 55, 226, 226, 226, 226, 226, 49, 226, 226, 226, - /* 9720 */ 53, 66, 226, 226, 226, 70, 226, 226, 61, 62, - /* 9730 */ 226, 226, 226, 226, 67, 68, 226, 226, 226, 226, - /* 9740 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9750 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9760 */ 226, 226, 226, 226, 226, 226, 111, 226, 226, 226, - /* 9770 */ 226, 226, 226, 226, 119, 120, 121, 122, 123, 124, - /* 9780 */ 125, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 9790 */ 1, 2, 3, 4, 5, 6, 226, 226, 226, 22, - /* 9800 */ 226, 226, 226, 226, 226, 226, 29, 226, 226, 226, - /* 9810 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 9820 */ 43, 44, 45, 46, 226, 226, 49, 226, 226, 226, - /* 9830 */ 53, 54, 55, 226, 226, 226, 226, 226, 49, 226, - /* 9840 */ 226, 226, 53, 66, 226, 226, 226, 70, 226, 226, - /* 9850 */ 61, 62, 226, 226, 226, 226, 67, 68, 1, 2, - /* 9860 */ 3, 4, 5, 6, 226, 226, 226, 226, 226, 226, - /* 9870 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9880 */ 226, 226, 226, 226, 226, 226, 226, 226, 111, 226, - /* 9890 */ 226, 226, 226, 226, 226, 226, 119, 120, 121, 122, - /* 9900 */ 123, 124, 125, 4, 226, 226, 226, 8, 226, 226, - /* 9910 */ 11, 12, 226, 56, 226, 226, 226, 226, 61, 62, - /* 9920 */ 63, 22, 226, 226, 67, 68, 226, 226, 29, 226, - /* 9930 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 9940 */ 41, 42, 43, 44, 45, 46, 226, 226, 49, 226, - /* 9950 */ 226, 226, 53, 54, 55, 226, 226, 226, 226, 226, - /* 9960 */ 226, 226, 226, 226, 226, 66, 226, 226, 226, 70, - /* 9970 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9980 */ 10, 226, 226, 13, 14, 15, 16, 17, 18, 19, - /* 9990 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - /* 10000 */ 30, 31, 32, 33, 226, 226, 226, 37, 38, 226, - /* 10010 */ 111, 226, 226, 226, 44, 226, 46, 47, 119, 120, - /* 10020 */ 121, 122, 123, 124, 125, 55, 137, 138, 226, 226, - /* 10030 */ 226, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10040 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10050 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 10060 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 10070 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 10080 */ 4, 226, 226, 226, 8, 226, 226, 11, 12, 200, - /* 10090 */ 1, 2, 3, 4, 5, 6, 226, 226, 22, 210, - /* 10100 */ 211, 212, 213, 226, 226, 29, 226, 226, 226, 226, - /* 10110 */ 34, 35, 36, 226, 226, 39, 40, 41, 42, 43, - /* 10120 */ 44, 226, 46, 226, 226, 49, 226, 226, 226, 53, - /* 10130 */ 54, 55, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10140 */ 226, 226, 66, 226, 226, 56, 70, 226, 226, 226, - /* 10150 */ 61, 62, 63, 226, 226, 226, 67, 68, 1, 2, - /* 10160 */ 3, 4, 5, 6, 226, 226, 226, 226, 226, 226, - /* 10170 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10180 */ 226, 226, 226, 226, 226, 226, 226, 111, 226, 226, - /* 10190 */ 226, 226, 226, 226, 226, 119, 120, 121, 122, 123, - /* 10200 */ 124, 125, 137, 138, 226, 226, 226, 142, 226, 226, - /* 10210 */ 226, 226, 226, 56, 226, 226, 226, 226, 61, 62, - /* 10220 */ 63, 226, 226, 226, 67, 68, 226, 226, 226, 226, - /* 10230 */ 226, 226, 226, 226, 169, 170, 171, 172, 173, 174, - /* 10240 */ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - /* 10250 */ 185, 186, 187, 188, 189, 190, 137, 138, 226, 226, - /* 10260 */ 226, 142, 226, 226, 226, 200, 226, 226, 226, 226, - /* 10270 */ 226, 226, 226, 226, 226, 210, 211, 212, 213, 226, - /* 10280 */ 1, 2, 3, 4, 5, 6, 226, 226, 169, 170, - /* 10290 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 10300 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 10310 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 200, - /* 10320 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 210, - /* 10330 */ 211, 212, 213, 137, 138, 56, 226, 226, 142, 226, - /* 10340 */ 61, 62, 63, 226, 226, 226, 67, 68, 226, 226, - /* 10350 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10360 */ 226, 226, 226, 226, 226, 169, 170, 171, 172, 173, - /* 10370 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 10380 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 10390 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 10400 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 10410 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 10420 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 10430 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 10440 */ 190, 137, 138, 226, 226, 226, 142, 226, 226, 226, - /* 10450 */ 200, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10460 */ 210, 211, 212, 213, 226, 226, 226, 226, 226, 226, - /* 10470 */ 226, 226, 226, 169, 170, 171, 172, 173, 174, 175, - /* 10480 */ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - /* 10490 */ 186, 187, 188, 189, 190, 226, 226, 226, 226, 226, - /* 10500 */ 226, 226, 226, 226, 200, 137, 138, 226, 226, 226, - /* 10510 */ 142, 226, 226, 226, 210, 211, 212, 213, 226, 226, - /* 10520 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10530 */ 226, 226, 226, 226, 226, 226, 226, 169, 170, 171, - /* 10540 */ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - /* 10550 */ 182, 183, 184, 185, 186, 187, 188, 189, 190, 4, - /* 10560 */ 226, 226, 226, 8, 226, 226, 11, 12, 200, 226, - /* 10570 */ 226, 226, 226, 226, 226, 226, 226, 22, 210, 211, - /* 10580 */ 212, 213, 226, 226, 29, 226, 226, 226, 226, 34, - /* 10590 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 10600 */ 226, 46, 226, 226, 49, 226, 226, 226, 53, 54, - /* 10610 */ 55, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10620 */ 226, 66, 226, 226, 226, 70, 226, 226, 226, 226, - /* 10630 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10640 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10650 */ 226, 226, 137, 138, 226, 226, 226, 142, 226, 226, - /* 10660 */ 226, 226, 226, 226, 226, 226, 111, 226, 226, 226, - /* 10670 */ 226, 226, 226, 226, 119, 120, 121, 122, 123, 124, - /* 10680 */ 125, 226, 226, 226, 169, 170, 171, 172, 173, 174, - /* 10690 */ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - /* 10700 */ 185, 186, 187, 188, 189, 190, 137, 138, 226, 226, - /* 10710 */ 226, 142, 226, 226, 226, 200, 226, 226, 226, 226, - /* 10720 */ 226, 226, 226, 226, 226, 210, 211, 212, 213, 226, - /* 10730 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 10740 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 10750 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 10760 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 10770 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 210, - /* 10780 */ 211, 212, 213, 226, 226, 226, 226, 226, 226, 226, - /* 10790 */ 226, 226, 226, 226, 226, 169, 170, 171, 172, 173, - /* 10800 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 10810 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 10820 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 10830 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 10840 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 10850 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 10860 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 10870 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 10880 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10890 */ 210, 211, 212, 213, 1, 2, 3, 4, 5, 6, - /* 10900 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 10910 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 10920 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 10930 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 10940 */ 226, 226, 226, 226, 226, 226, 53, 226, 226, 210, - /* 10950 */ 211, 212, 213, 226, 61, 62, 226, 226, 226, 226, - /* 10960 */ 67, 68, 226, 226, 226, 169, 170, 171, 172, 173, - /* 10970 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 10980 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 10990 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11000 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11010 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11020 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11030 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11040 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11050 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11060 */ 210, 211, 212, 213, 1, 2, 3, 4, 5, 6, - /* 11070 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11080 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11090 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11100 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11110 */ 226, 226, 226, 226, 226, 226, 53, 226, 226, 210, - /* 11120 */ 211, 212, 213, 226, 61, 62, 226, 226, 226, 226, - /* 11130 */ 67, 68, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11140 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 11150 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 11160 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11170 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11180 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11190 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11200 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11210 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11220 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11230 */ 210, 211, 212, 213, 1, 2, 3, 4, 5, 6, - /* 11240 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11250 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11260 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11270 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11280 */ 226, 226, 226, 226, 226, 226, 53, 226, 226, 210, - /* 11290 */ 211, 212, 213, 226, 61, 62, 226, 226, 226, 226, - /* 11300 */ 67, 68, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11310 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 11320 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 11330 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11340 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11350 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11360 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11370 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11380 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11390 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11400 */ 210, 211, 212, 213, 1, 2, 3, 4, 5, 6, - /* 11410 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11420 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11430 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11440 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11450 */ 226, 226, 226, 226, 226, 226, 53, 226, 226, 210, - /* 11460 */ 211, 212, 213, 226, 61, 62, 226, 226, 226, 226, - /* 11470 */ 67, 68, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11480 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 11490 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 11500 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11510 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11520 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11530 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11540 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11550 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11560 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11570 */ 210, 211, 212, 213, 226, 226, 226, 226, 226, 226, - /* 11580 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11590 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11600 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11610 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11620 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 210, - /* 11630 */ 211, 212, 213, 226, 226, 226, 226, 226, 226, 226, - /* 11640 */ 226, 226, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11650 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 11660 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 11670 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11680 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11690 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11700 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11710 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11720 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11730 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11740 */ 210, 211, 212, 213, 226, 226, 226, 226, 226, 226, - /* 11750 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11760 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11770 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11780 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11790 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 210, - /* 11800 */ 211, 212, 213, 226, 226, 226, 226, 226, 226, 226, - /* 11810 */ 226, 226, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11820 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 11830 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 11840 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11850 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11860 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11870 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11880 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11890 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11900 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11910 */ 210, 211, 212, 213, 226, 226, 226, 226, 226, 226, - /* 11920 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11930 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11940 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11950 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11960 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 210, - /* 11970 */ 211, 212, 213, 226, 226, 226, 226, 226, 226, 226, - /* 11980 */ 226, 226, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11990 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 12000 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 12010 */ 226, 226, 226, 226, 226, 226, 200, 226, 226, 226, - /* 12020 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 12030 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 12040 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 12050 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 12060 */ 190, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 12070 */ 200, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 12080 */ 210, 211, 212, 213, 226, 226, 226, 226, 226, 226, - /* 12090 */ 226, 10, 226, 226, 13, 14, 15, 16, 17, 18, - /* 12100 */ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - /* 12110 */ 29, 30, 31, 32, 33, 226, 226, 226, 37, 38, - /* 12120 */ 226, 226, 226, 226, 226, 44, 226, 46, 47, 10, - /* 12130 */ 226, 226, 13, 14, 15, 16, 17, 18, 19, 20, - /* 12140 */ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - /* 12150 */ 31, 32, 33, 226, 226, 226, 37, 38, 226, 226, - /* 12160 */ 226, 226, 226, 44, 226, 46, 47, 226, 226, 226, - /* 12170 */ 226, 226, 226, 226, 10, 94, 226, 13, 14, 15, - /* 12180 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - /* 12190 */ 26, 27, 28, 29, 30, 31, 32, 33, 226, 226, - /* 12200 */ 226, 37, 38, 226, 226, 226, 226, 226, 44, 226, - /* 12210 */ 46, 47, 10, 94, 50, 13, 14, 15, 16, 17, - /* 12220 */ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - /* 12230 */ 28, 29, 30, 31, 32, 33, 226, 226, 226, 37, - /* 12240 */ 38, 226, 226, 226, 226, 226, 44, 226, 46, 47, - /* 12250 */ 10, 226, 50, 13, 14, 15, 16, 17, 18, 19, - /* 12260 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - /* 12270 */ 30, 31, 32, 33, 226, 226, 226, 37, 38, 226, - /* 12280 */ 226, 226, 226, 226, 44, 226, 46, 47, 10, 226, - /* 12290 */ 50, 13, 14, 15, 16, 17, 18, 19, 20, 21, - /* 12300 */ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - /* 12310 */ 32, 33, 226, 226, 226, 37, 38, 226, 226, 226, - /* 12320 */ 226, 226, 44, 226, 46, 47, 10, 226, 50, 13, - /* 12330 */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - /* 12340 */ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - /* 12350 */ 226, 226, 226, 37, 38, 226, 226, 226, 226, 226, - /* 12360 */ 44, 226, 46, 47, 226, 226, 226, 226, 226, 226, - /* 12370 */ 226, 55, 226, 10, 226, 226, 13, 14, 15, 16, - /* 12380 */ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - /* 12390 */ 27, 28, 29, 30, 31, 32, 33, 226, 226, 226, - /* 12400 */ 37, 38, 226, 226, 226, 226, 226, 44, 226, 46, - /* 12410 */ 47, 226, 226, 226, 226, 226, 226, 226, 55, 226, - /* 12420 */ 10, 226, 226, 13, 14, 15, 16, 17, 18, 19, - /* 12430 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - /* 12440 */ 30, 31, 32, 33, 226, 226, 226, 37, 38, 226, - /* 12450 */ 226, 226, 226, 226, 44, 226, 46, 47, 226, 226, - /* 12460 */ 226, 226, 226, 226, 226, 55, -}; -#define YY_SHIFT_USE_DFLT (-42) -static short yy_shift_ofst[] = { - /* 0 */ 8264, 1, 8988, -42, -42, -42, -42, -42, -42, -42, - /* 10 */ -42, 12, 141, -42, 199, 121, -42, 199, -42, 275, - /* 20 */ 307, -42, -42, 344, 288, 7254, 324, 7859, 254, -4, - /* 30 */ -42, 119, -42, -42, -42, -42, -42, -42, -42, -42, - /* 40 */ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, - /* 50 */ -42, -42, -42, -42, -42, -42, -42, -42, 387, -42, - /* 60 */ 425, -42, 10076, 439, 242, 365, 34, 113, 502, 488, - /* 70 */ 611, -42, 10076, 528, 154, -42, 173, -42, -42, 10076, - /* 80 */ 508, 6884, 6884, 583, 734, 857, -42, 10076, 625, 980, - /* 90 */ 1103, -42, 665, 1226, 1349, 643, 10076, 701, -42, 10076, - /* 100 */ 205, 10076, 10076, -41, 10076, 10076, -41, 10076, 10076, -41, - /* 110 */ 10076, 10076, -41, 10076, 10076, 43, 10076, 10076, 7688, 10076, - /* 120 */ 10076, -41, 10076, 10076, 43, 238, 707, 7129, 10076, 7810, - /* 130 */ 10076, 10076, 7810, 10076, 8561, 10076, 8561, 10076, 43, 10076, - /* 140 */ 43, 10076, 43, 10076, 8561, 10076, 8039, 10076, 7932, 10076, - /* 150 */ 8159, 10076, 8159, 10076, 8159, 10076, 8159, 10076, 8159, 10076, - /* 160 */ 7078, 10076, -41, 10076, -41, 7251, 12081, 10076, 7688, 7007, - /* 170 */ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, - /* 180 */ -42, -42, -42, -42, 7200, -42, 750, 10076, 205, 840, - /* 190 */ 839, 10076, -18, -7, 115, 770, 7373, 7688, 32, 7495, - /* 200 */ 853, 871, 10076, 43, -42, 10076, -41, -42, -42, -42, - /* 210 */ -42, -42, -42, -42, -42, -42, 7617, 12119, -42, 272, - /* 220 */ -42, 10076, 8943, 931, 7739, -42, 61, -42, 10555, 910, - /* 230 */ 873, 155, 7861, 287, -42, -42, 877, 952, 993, 7983, - /* 240 */ 391, -42, -42, -42, -42, -42, -42, 1010, 8225, 406, - /* 250 */ 8822, -42, 1009, 8087, -42, -42, -42, -42, -42, -42, - /* 260 */ -42, -42, 975, 1028, -42, -42, 9024, 1015, 1018, 72, - /* 270 */ -42, 273, -42, 8227, -42, 1022, 8087, -42, -42, -42, - /* 280 */ -42, 1084, 1091, 8087, -42, 7274, 1100, 8087, -42, 1145, - /* 290 */ 1123, 8087, -42, 221, 1149, 8087, -42, 1167, 1153, 8087, - /* 300 */ -42, 348, 1169, 8087, -42, 1187, 1175, 8087, -42, 385, - /* 310 */ 1182, 8087, -42, 1207, 1193, 8087, -42, 1209, 1240, -42, - /* 320 */ 368, 1200, 8087, -42, 1225, 1214, 8087, -42, 430, 1224, - /* 330 */ 8087, -42, 1242, 1229, 8087, -42, 511, 1231, 8087, -42, - /* 340 */ 1249, 1246, 8087, -42, 1257, 1472, 1595, 1261, 1718, 1841, - /* 350 */ 1217, 1217, -42, 1271, 27, 1964, 2087, -42, 1272, 363, - /* 360 */ 8105, 9970, 2210, 2333, -42, 400, 409, -42, 400, -42, - /* 370 */ 8439, -42, -42, -42, -42, -42, -42, -42, 10076, -42, - /* 380 */ 7688, 484, 8452, 10076, -42, 8209, 317, 10076, -42, 1259, - /* 390 */ -42, 7444, 8574, 10076, -42, 8331, 317, 10076, -42, -42, - /* 400 */ -42, -42, -42, -1, 1276, 317, 10076, -42, 1278, 317, - /* 410 */ 10076, -42, 1286, 8683, 10076, -42, 8453, 317, 10076, -42, - /* 420 */ 8696, 10076, -42, 8575, 317, 10076, -42, 8697, 317, 10076, - /* 430 */ -42, 8805, 10076, -42, 8819, 317, 10076, -42, -42, -42, - /* 440 */ 179, 1282, 317, 10076, -42, 1300, 317, 10076, -42, -42, - /* 450 */ 10076, 490, -42, 10076, -42, 7688, -42, 1309, -42, 1320, - /* 460 */ -42, 1327, -42, 1329, -42, 8941, 12164, -42, -42, 10076, - /* 470 */ 12202, -42, 10076, 12240, -42, 10076, 12278, -42, 1331, 500, - /* 480 */ -42, 1331, -42, 1317, 10076, 7688, -42, 1331, 609, -42, - /* 490 */ 1331, 632, -42, 1331, 655, -42, 1331, 746, -42, 1331, - /* 500 */ 775, -42, 1331, 778, -42, 1331, 755, -42, 1331, 779, - /* 510 */ -42, 1331, 813, -42, 1331, 820, -42, 7688, -42, -42, - /* 520 */ -42, -42, 10076, 12316, 6884, 2456, -42, 1333, 1292, 9063, - /* 530 */ 12363, 2579, 2702, -42, -42, 10076, 12410, 6884, 2825, -42, - /* 540 */ -42, 1338, 1342, 2948, 3071, -42, -42, 1271, -42, -42, - /* 550 */ -42, -42, -42, -42, -42, -42, 1355, 3194, 3317, -42, - /* 560 */ -42, 523, 1357, 9167, -42, 504, -42, 1364, 1358, 1362, - /* 570 */ 9289, -42, 529, -42, -42, 1363, 9411, -42, 656, -42, - /* 580 */ 1369, 1365, 1366, 9533, -42, 676, -42, 1379, 10555, 829, - /* 590 */ -42, -42, 1340, 10076, 7688, -42, -42, -42, 880, -42, - /* 600 */ -42, 10076, 7688, 10076, 7688, -42, 883, -42, -42, 1390, - /* 610 */ 1384, 1388, 9655, -42, 898, -42, 10076, 7688, 7566, -42, - /* 620 */ 902, -42, -42, 730, 1387, 1395, 9777, 915, -42, -42, - /* 630 */ 1396, 1397, 9899, 919, -42, -42, -18, -18, -18, -18, - /* 640 */ -18, -18, -18, -18, 7688, 1361, 10076, 1409, -42, -42, - /* 650 */ -42, 1368, 6884, 6884, -42, -42, -42, 10076, 1406, 3440, - /* 660 */ 3563, -42, -42, 1423, 3686, 3809, -42, -42, -42, 582, - /* 670 */ 872, 1424, 1407, -42, 1427, 3932, 4055, -42, -42, -42, - /* 680 */ -42, 1470, 8354, -42, 1449, -42, -42, -42, -42, -42, - /* 690 */ 1443, 702, 1421, 1476, -42, -42, 4178, -42, 4301, -42, - /* 700 */ -42, 941, 325, 7859, 826, 4424, -42, 4547, -42, -42, - /* 710 */ 4670, -42, 4793, -42, -42, 1451, 748, -42, 1454, 649, - /* 720 */ -42, 1454, -42, -42, 7141, -42, 1448, -42, 7385, 9189, - /* 730 */ -42, 10893, 1460, 1456, 8334, 940, 7859, 1474, -42, -42, - /* 740 */ 963, 978, 7859, 1483, -42, -42, -42, -42, -42, -42, - /* 750 */ -42, -42, -42, -42, -42, -42, -42, 7363, 11063, 1485, - /* 760 */ 1482, 8456, 1001, 7859, 1487, -42, -42, 1025, 1024, 7859, - /* 770 */ 1489, -42, -42, -42, -42, -42, 9613, 875, 1477, 8087, - /* 780 */ 1493, -42, 1480, 8087, 1507, -42, 1017, 1498, 8087, 1513, - /* 790 */ -42, 1502, 8087, 1524, -42, 9301, -42, -42, 1526, 80, - /* 800 */ -42, 1533, 897, -42, 1454, 811, -42, 7507, -42, 1530, - /* 810 */ -42, 7629, 9369, -42, 11233, 1552, 1548, 8578, 546, 4916, - /* 820 */ -42, 5039, -42, -42, 7859, 1030, 5162, -42, 5285, -42, - /* 830 */ -42, 1075, 792, 5408, -42, 5531, -42, -42, 7859, 1038, - /* 840 */ 5654, -42, 5777, -42, -42, 7363, 11403, 1556, 1555, 8700, - /* 850 */ 817, 5900, -42, 6023, -42, -42, 7859, 1081, 6146, -42, - /* 860 */ 6269, -42, -42, 1079, 833, 6392, -42, 6515, -42, -42, - /* 870 */ 7859, 1085, 6638, -42, 6761, -42, -42, 7751, 9545, -42, - /* 880 */ 9613, -42, 9613, 9667, 3, -42, 8087, 1115, -42, 1572, - /* 890 */ -42, 127, 1573, 1141, 1575, 982, -42, -42, 1578, -42, - /* 900 */ -42, 1582, -42, 9789, 647, -42, 8087, 1138, -42, 1583, - /* 910 */ -42, 1593, -42, 9075, 9857, 10089, 7363, 10157, -42, 10279, - /* 920 */ 1454, 811, -42, 1598, 1610, 454, -42, 1614, 1112, -42, - /* 930 */ 1454, 811, -42, 1454, 811, -42, 1608, 1630, 570, -42, - /* 940 */ 1632, 1631, -42, 1454, 811, -42, -42, -}; -#define YY_REDUCE_USE_DFLT (-157) -static short yy_reduce_ofst[] = { - /* 0 */ 8537, -157, 124, -157, -157, -157, -157, -157, -157, -157, - /* 10 */ -157, -157, -157, -157, -106, -157, -157, 136, -157, -157, - /* 20 */ -157, -157, -157, -157, -157, 432, -157, 831, -157, 9889, - /* 30 */ -157, 11870, -157, -157, -157, -157, -157, -157, -157, -157, - /* 40 */ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - /* 50 */ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - /* 60 */ -157, -157, 704, -157, 10065, 11870, -46, 322, -157, 10119, - /* 70 */ 11870, -157, 827, -157, 18, -157, 396, -157, -157, 917, - /* 80 */ -157, 10196, 11870, -157, 10250, 11870, -157, 950, -157, 10304, - /* 90 */ 11870, -157, -157, 10368, 11870, -157, 998, -157, -157, 793, - /* 100 */ -157, 1285, 1408, -157, 1490, 1531, -157, 1613, 1654, -157, - /* 110 */ 1736, 1777, -157, 1859, 1900, -157, 1982, 2023, -157, 2105, - /* 120 */ 2146, -157, 2180, 2228, -157, -157, -157, -109, 2269, -157, - /* 130 */ 2303, 2351, -157, 2392, -157, 2426, -157, 2474, -157, 2515, - /* 140 */ -157, 2549, -157, 2597, -157, 2638, -157, 2672, -157, 2720, - /* 150 */ -157, 2761, -157, 2795, -157, 2843, -157, 2884, -157, 2918, - /* 160 */ -157, 2966, -157, 3007, -157, 3041, -157, 3089, -157, 800, - /* 170 */ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - /* 180 */ -157, -157, -157, -157, -157, -157, -157, 3130, -157, -157, - /* 190 */ -157, 3164, -157, -157, -157, -157, -61, -157, -157, 14, - /* 200 */ -157, -157, 3212, -157, -157, 3245, -157, -157, -157, -157, - /* 210 */ -157, -157, -157, -157, -157, -157, -156, -157, -157, -157, - /* 220 */ -157, -33, 743, -157, 89, -157, -157, -157, 1031, -157, - /* 230 */ -157, -157, 137, -157, -157, -157, -157, -157, -157, 178, - /* 240 */ -157, -157, -157, -157, -157, -157, -157, -157, 678, -157, - /* 250 */ 145, -157, -157, 920, -157, -157, -157, -157, -157, -157, - /* 260 */ -157, -157, -157, -157, -157, -157, 50, -157, -157, -157, - /* 270 */ -157, -157, -157, 159, -157, -157, 78, -157, -157, -157, - /* 280 */ -157, -157, -157, 1013, -157, 186, -157, 1020, -157, -157, - /* 290 */ -157, 1041, -157, -157, -157, 1050, -157, -157, -157, 1077, - /* 300 */ -157, -157, -157, 1080, -157, -157, -157, 1090, -157, -157, - /* 310 */ -157, 1099, -157, -157, -157, 1104, -157, -157, -157, -157, - /* 320 */ -157, -157, 1116, -157, -157, -157, 1132, -157, -157, -157, - /* 330 */ 1135, -157, -157, -157, 1139, -157, -157, -157, 1142, -157, - /* 340 */ -157, -157, 1156, -157, -157, 10515, 11870, -157, 10569, 11870, - /* 350 */ 189, 1122, -157, 204, -157, 10626, 11870, -157, -157, -157, - /* 360 */ 3253, -157, 10680, 11870, -157, 266, -157, -157, 1124, -157, - /* 370 */ -107, -157, -157, -157, -157, -157, -157, -157, 1073, -157, - /* 380 */ -157, -157, 16, 1154, -157, 1040, 1125, 1196, -157, -157, - /* 390 */ -157, -157, 292, 1277, -157, 1040, 1126, 1319, -157, -157, - /* 400 */ -157, -157, -157, -157, -157, 1130, 1400, -157, -157, 1133, - /* 410 */ 1442, -157, -157, 227, 1523, -157, 1040, 1136, 1565, -157, - /* 420 */ 310, 1646, -157, 1040, 1137, 1688, -157, 1040, 1152, 1769, - /* 430 */ -157, 353, 1811, -157, 1040, 1159, 1892, -157, -157, -157, - /* 440 */ -157, -157, 1165, 1934, -157, -157, 1166, 2015, -157, -157, - /* 450 */ 293, -157, -157, 1163, -157, -157, -157, -157, -157, -157, - /* 460 */ -157, -157, -157, -157, -157, 3287, -157, -157, -157, 3335, - /* 470 */ -157, -157, 3368, -157, -157, 3376, -157, -157, 380, -157, - /* 480 */ -157, 1171, -157, -157, 3410, -157, -157, 417, -157, -157, - /* 490 */ 429, -157, -157, 434, -157, -157, 464, -157, -157, 481, - /* 500 */ -157, -157, 499, -157, -157, 540, -157, -157, 552, -157, - /* 510 */ -157, 557, -157, -157, 587, -157, -157, -157, -157, -157, - /* 520 */ -157, -157, 3458, -157, 10739, 11870, -157, -157, -157, 3491, - /* 530 */ -157, 10796, 11870, -157, -157, 3499, -157, 10850, 11870, -157, - /* 540 */ -157, -157, -157, 10909, 11870, -157, -157, 1202, -157, -157, - /* 550 */ -157, -157, -157, -157, -157, -157, -157, 10966, 11870, -157, - /* 560 */ -157, -157, -157, 260, -157, -157, -157, -157, -157, -157, - /* 570 */ 308, -157, -157, -157, -157, -157, 335, -157, -157, -157, - /* 580 */ -157, -157, -157, 424, -157, -157, -157, -157, 458, -157, - /* 590 */ -157, -157, -157, 2057, -157, -157, -157, -157, -157, -157, - /* 600 */ -157, 3533, -157, 3581, -157, -157, -157, -157, -157, -157, - /* 610 */ -157, -157, 506, -157, -157, -157, 3614, -157, -157, -157, - /* 620 */ -157, -157, -157, -157, -157, -157, 547, -157, -157, -157, - /* 630 */ -157, -157, 581, -157, -157, -157, -157, -157, -157, -157, - /* 640 */ -157, -157, -157, -157, -157, -157, 1244, -157, -157, -157, - /* 650 */ -157, -157, 11020, 11870, -157, -157, -157, 1367, -157, 11079, - /* 660 */ 11870, -157, -157, -157, 11136, 11870, -157, -157, -157, 758, - /* 670 */ 322, -157, -157, -157, -157, 11190, 11870, -157, -157, -157, - /* 680 */ -157, -157, -143, -157, -157, -157, -157, -157, -157, -157, - /* 690 */ -157, -157, -157, -157, -157, -157, 11249, -157, 11870, -157, - /* 700 */ -157, -157, -157, 2184, -157, 11306, -157, 11870, -157, -157, - /* 710 */ 11360, -157, 11870, -157, -157, -157, 1359, -157, 690, 1374, - /* 720 */ -157, 1373, -157, -157, 723, -157, -157, -157, 174, -145, - /* 730 */ -157, 1343, -157, -157, 753, -157, 2307, -157, -157, -157, - /* 740 */ -157, -157, 2430, -157, -157, -157, -157, -157, -157, -157, - /* 750 */ -157, -157, -157, -157, -157, -157, -157, 686, 1343, -157, - /* 760 */ -157, 801, -157, 2553, -157, -157, -157, -157, -157, 2676, - /* 770 */ -157, -157, -157, -157, -157, -157, 686, -157, -157, 1385, - /* 780 */ -157, -157, -157, 1401, -157, -157, -157, -157, 1410, -157, - /* 790 */ -157, -157, 1417, -157, -157, -145, -157, -157, -157, 1436, - /* 800 */ -157, -157, 1439, -157, 905, 1440, -157, -17, -157, -157, - /* 810 */ -157, 467, 296, -157, 1343, -157, -157, 876, -157, 11419, - /* 820 */ -157, 11870, -157, -157, 2799, -157, 11476, -157, 11870, -157, - /* 830 */ -157, -157, -157, 11530, -157, 11870, -157, -157, 2922, -157, - /* 840 */ 11589, -157, 11870, -157, -157, 845, 1343, -157, -157, 924, - /* 850 */ -157, 11646, -157, 11870, -157, -157, 3045, -157, 11700, -157, - /* 860 */ 11870, -157, -157, -157, -157, 11759, -157, 11870, -157, -157, - /* 870 */ 3168, -157, 11816, -157, 11870, -157, -157, 959, 296, -157, - /* 880 */ 845, -157, 972, 1343, 1458, -157, 1461, 1459, -157, -157, - /* 890 */ -157, 965, -157, -157, -157, 1468, -157, -157, -157, -157, - /* 900 */ -157, -157, -157, 1343, 1484, -157, 1473, 1491, -157, -157, - /* 910 */ -157, -157, -157, 590, 428, 296, 972, 296, -157, 296, - /* 920 */ 1007, 1511, -157, -157, -157, 1515, -157, -157, 1517, -157, - /* 930 */ 1027, 1519, -157, 1059, 1521, -157, -157, -157, 1535, -157, - /* 940 */ -157, 1540, -157, 1068, 1543, -157, -157, -}; -static YYACTIONTYPE yy_default[] = { - /* 0 */ 1406, 1406, 1406, 949, 951, 952, 953, 954, 955, 956, - /* 10 */ 957, 1406, 1406, 958, 1406, 1406, 959, 1406, 960, 962, - /* 20 */ 1406, 963, 961, 1406, 1406, 1406, 1406, 1406, 1406, 1406, - /* 30 */ 964, 1406, 968, 1138, 1140, 1141, 1142, 1143, 1144, 1145, - /* 40 */ 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, - /* 50 */ 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1406, 1164, - /* 60 */ 1406, 1165, 1406, 1406, 1406, 1406, 1170, 1171, 1406, 1406, - /* 70 */ 1406, 1173, 1406, 1406, 1406, 1181, 1406, 1182, 1183, 1406, - /* 80 */ 1406, 1185, 1186, 1406, 1406, 1406, 1189, 1406, 1406, 1406, - /* 90 */ 1406, 1191, 1406, 1406, 1406, 1406, 1406, 1406, 1193, 1406, - /* 100 */ 1275, 1406, 1406, 1276, 1406, 1406, 1277, 1406, 1406, 1278, - /* 110 */ 1406, 1406, 1279, 1406, 1406, 1280, 1406, 1406, 1281, 1406, - /* 120 */ 1406, 1282, 1406, 1406, 1283, 1406, 1297, 1406, 1406, 1284, - /* 130 */ 1406, 1406, 1285, 1406, 1303, 1406, 1304, 1406, 1305, 1406, - /* 140 */ 1306, 1406, 1307, 1406, 1308, 1406, 1309, 1406, 1310, 1406, - /* 150 */ 1311, 1406, 1312, 1406, 1313, 1406, 1314, 1406, 1315, 1406, - /* 160 */ 1316, 1406, 1317, 1406, 1318, 1406, 1406, 1406, 1367, 1406, - /* 170 */ 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, - /* 180 */ 1134, 1135, 1136, 1137, 1406, 1294, 1406, 1406, 1295, 1406, - /* 190 */ 1406, 1406, 1296, 1322, 1406, 1300, 1406, 1371, 1322, 1406, - /* 200 */ 1406, 1406, 1406, 1319, 1320, 1406, 1321, 1323, 1324, 1325, - /* 210 */ 1326, 1327, 1328, 1329, 1330, 1331, 1406, 1383, 1332, 1406, - /* 220 */ 1333, 1406, 1406, 1334, 1406, 1335, 1406, 1336, 1406, 1406, - /* 230 */ 1406, 1406, 1406, 1406, 1346, 1347, 1406, 1406, 1406, 1406, - /* 240 */ 1406, 1350, 1351, 1364, 1365, 1366, 1370, 1406, 1406, 1406, - /* 250 */ 1406, 1088, 1090, 1406, 1106, 1384, 1385, 1386, 1387, 1388, - /* 260 */ 1389, 1390, 1406, 1406, 1391, 1392, 1406, 1384, 1386, 1406, - /* 270 */ 1393, 1406, 1394, 1406, 1395, 1406, 1406, 1397, 1402, 1398, - /* 280 */ 1396, 1406, 1091, 1406, 1107, 1406, 1092, 1406, 1108, 1406, - /* 290 */ 1093, 1406, 1109, 1406, 1096, 1406, 1112, 1406, 1097, 1406, - /* 300 */ 1113, 1406, 1100, 1406, 1116, 1406, 1101, 1406, 1117, 1406, - /* 310 */ 1104, 1406, 1120, 1406, 1105, 1406, 1121, 1406, 1406, 1122, - /* 320 */ 1406, 1094, 1406, 1110, 1406, 1095, 1406, 1111, 1406, 1098, - /* 330 */ 1406, 1114, 1406, 1099, 1406, 1115, 1406, 1102, 1406, 1118, - /* 340 */ 1406, 1103, 1406, 1119, 1406, 1406, 1406, 1406, 1406, 1406, - /* 350 */ 1195, 1196, 1197, 1406, 1406, 1406, 1406, 1199, 1406, 1406, - /* 360 */ 1406, 1406, 1406, 1406, 1206, 1406, 1406, 1212, 1406, 1213, - /* 370 */ 1406, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1406, 1222, - /* 380 */ 1274, 1406, 1406, 1406, 1223, 1406, 1406, 1406, 1226, 1406, - /* 390 */ 1238, 1406, 1406, 1406, 1227, 1406, 1406, 1406, 1228, 1236, - /* 400 */ 1237, 1239, 1240, 1406, 1406, 1406, 1406, 1224, 1406, 1406, - /* 410 */ 1406, 1225, 1406, 1406, 1406, 1229, 1406, 1406, 1406, 1230, - /* 420 */ 1406, 1406, 1231, 1406, 1406, 1406, 1232, 1406, 1406, 1406, - /* 430 */ 1233, 1406, 1406, 1234, 1406, 1406, 1406, 1235, 1241, 1242, - /* 440 */ 1406, 1406, 1406, 1406, 1243, 1406, 1406, 1406, 1244, 1214, - /* 450 */ 1406, 1406, 1246, 1406, 1247, 1249, 1248, 1364, 1250, 1366, - /* 460 */ 1251, 1365, 1252, 1320, 1253, 1406, 1406, 1254, 1255, 1406, - /* 470 */ 1406, 1256, 1406, 1406, 1257, 1406, 1406, 1258, 1406, 1406, - /* 480 */ 1259, 1406, 1270, 1272, 1406, 1273, 1271, 1406, 1406, 1260, - /* 490 */ 1406, 1406, 1261, 1406, 1406, 1262, 1406, 1406, 1263, 1406, - /* 500 */ 1406, 1264, 1406, 1406, 1265, 1406, 1406, 1266, 1406, 1406, - /* 510 */ 1267, 1406, 1406, 1268, 1406, 1406, 1269, 1406, 1404, 1405, - /* 520 */ 1139, 1207, 1406, 1406, 1406, 1406, 1208, 1406, 1406, 1406, - /* 530 */ 1406, 1406, 1406, 1209, 1210, 1406, 1406, 1406, 1406, 1211, - /* 540 */ 1200, 1406, 1406, 1406, 1406, 1202, 1201, 1406, 1203, 1205, - /* 550 */ 1204, 1198, 1194, 1376, 1375, 1089, 1406, 1406, 1406, 1374, - /* 560 */ 1373, 1406, 1406, 1406, 1352, 1406, 1353, 1406, 1406, 1406, - /* 570 */ 1406, 1354, 1406, 1355, 1369, 1337, 1406, 1338, 1406, 1339, - /* 580 */ 1406, 1406, 1340, 1406, 1341, 1406, 1342, 1406, 1406, 1406, - /* 590 */ 1343, 1378, 1406, 1406, 1383, 1380, 1381, 1379, 1406, 1344, - /* 600 */ 1345, 1406, 1372, 1406, 1377, 1348, 1406, 1349, 1301, 1406, - /* 610 */ 1406, 1406, 1406, 1356, 1406, 1357, 1406, 1368, 1406, 1302, - /* 620 */ 1406, 1358, 1359, 1406, 1406, 1298, 1406, 1406, 1360, 1361, - /* 630 */ 1406, 1299, 1406, 1406, 1362, 1363, 1293, 1292, 1291, 1290, - /* 640 */ 1289, 1288, 1287, 1286, 1403, 1406, 1406, 1406, 1192, 1190, - /* 650 */ 1188, 1406, 1406, 1187, 1184, 1175, 1177, 1406, 1406, 1406, - /* 660 */ 1406, 1180, 1179, 1406, 1406, 1406, 1172, 1174, 1178, 1166, - /* 670 */ 1167, 1406, 1406, 1169, 1406, 1406, 1406, 1176, 1168, 965, - /* 680 */ 1078, 1079, 1406, 1080, 1082, 1085, 1083, 1084, 1086, 1087, - /* 690 */ 1406, 1406, 1406, 1406, 1123, 1081, 1406, 970, 1406, 974, - /* 700 */ 971, 1406, 1406, 1406, 1406, 1406, 966, 1406, 969, 967, - /* 710 */ 1406, 972, 1406, 975, 973, 1406, 1406, 976, 1406, 1406, - /* 720 */ 977, 1406, 991, 993, 1406, 994, 1406, 995, 1406, 1406, - /* 730 */ 1028, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1058, 1062, - /* 740 */ 1406, 1406, 1406, 1406, 1059, 1063, 1066, 1068, 1069, 1070, - /* 750 */ 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1406, 1406, 1406, - /* 760 */ 1406, 1406, 1406, 1406, 1406, 1060, 1064, 1406, 1406, 1406, - /* 770 */ 1406, 1061, 1065, 1067, 1024, 1029, 1406, 1406, 1406, 1406, - /* 780 */ 1406, 1030, 1406, 1406, 1406, 1032, 1406, 1406, 1406, 1406, - /* 790 */ 1031, 1406, 1406, 1406, 1033, 1406, 1025, 992, 1406, 1406, - /* 800 */ 978, 1406, 1406, 979, 1406, 1406, 981, 1406, 989, 1406, - /* 810 */ 990, 1406, 1406, 1026, 1406, 1406, 1406, 1406, 1406, 1406, - /* 820 */ 1034, 1406, 1038, 1035, 1406, 1406, 1406, 1046, 1406, 1050, - /* 830 */ 1047, 1406, 1406, 1406, 1036, 1406, 1039, 1037, 1406, 1406, - /* 840 */ 1406, 1048, 1406, 1051, 1049, 1406, 1406, 1406, 1406, 1406, - /* 850 */ 1406, 1406, 1040, 1406, 1044, 1041, 1406, 1406, 1406, 1052, - /* 860 */ 1406, 1056, 1053, 1406, 1406, 1406, 1042, 1406, 1045, 1043, - /* 870 */ 1406, 1406, 1406, 1054, 1406, 1057, 1055, 1406, 1406, 1027, - /* 880 */ 1406, 1008, 1406, 1406, 1406, 1010, 1406, 1406, 1012, 1406, - /* 890 */ 1016, 1406, 1406, 1406, 1406, 1406, 1020, 1022, 1406, 1023, - /* 900 */ 1021, 1406, 1014, 1406, 1406, 1011, 1406, 1406, 1013, 1406, - /* 910 */ 1017, 1406, 1015, 1406, 1406, 1406, 1406, 1406, 1009, 1406, - /* 920 */ 1406, 1406, 980, 1406, 1406, 1406, 982, 1406, 1406, 983, - /* 930 */ 1406, 1406, 985, 1406, 1406, 984, 1406, 1406, 1406, 986, - /* 940 */ 1406, 1406, 987, 1406, 1406, 988, 950, -}; -#define YY_SZ_ACTTAB (sizeof(yy_action)/sizeof(yy_action[0])) - -/* The next table maps tokens into fallback tokens. If a construct -** like the following: -** -** %fallback ID X Y Z. -** -** appears in the grammer, then ID becomes a fallback token for X, Y, -** and Z. Whenever one of the tokens X, Y, or Z is input to the parser -** but it does not parse, the type of the token is changed to ID and -** the parse is retried before an error is thrown. -*/ -#ifdef YYFALLBACK -static const YYCODETYPE yyFallback[] = { -}; -#endif /* YYFALLBACK */ - -/* The following structure represents a single element of the -** parser's stack. Information stored includes: -** -** + The state number for the parser at this level of the stack. -** -** + The value of the token stored at this level of the stack. -** (In other words, the "major" token.) -** -** + The semantic value stored at this level of the stack. This is -** the information used by the action routines in the grammar. -** It is sometimes called the "minor" token. -*/ -struct yyStackEntry { - int stateno; /* The state-number */ - int major; /* The major token value. This is the code - ** number for the token at this stack level */ - YYMINORTYPE minor; /* The user-supplied minor token value. This - ** is the value of the token */ -}; -typedef struct yyStackEntry yyStackEntry; - -/* The state of the parser is completely contained in an instance of -** the following structure */ -struct yyParser { - int yyidx; /* Index of top element in stack */ - int yyerrcnt; /* Shifts left before out of the error */ - xx_ARG_SDECL /* A place to hold %extra_argument */ - yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ -}; -typedef struct yyParser yyParser; - -#ifndef NDEBUG -#include -static FILE *yyTraceFILE = 0; -static char *yyTracePrompt = 0; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* -** Turn parser tracing on by giving a stream to which to write the trace -** and a prompt to preface each trace message. Tracing is turned off -** by making either argument NULL -** -** Inputs: -**
    -**
  • A FILE* to which trace output should be written. -** If NULL, then tracing is turned off. -**
  • A prefix string written at the beginning of every -** line of trace output. If NULL, then tracing is -** turned off. -**
-** -** Outputs: -** None. -*/ -void xx_Trace(FILE *TraceFILE, char *zTracePrompt){ - yyTraceFILE = TraceFILE; - yyTracePrompt = zTracePrompt; - if( yyTraceFILE==0 ) yyTracePrompt = 0; - else if( yyTracePrompt==0 ) yyTraceFILE = 0; -} -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing shifts, the names of all terminals and nonterminals -** are required. The following table supplies these names */ -static const char *yyTokenName[] = { - "$", "INTERNAL", "PUBLIC", "PROTECTED", - "STATIC", "PRIVATE", "SCOPED", "COMMA", - "REQUIRE", "DOUBLEARROW", "QUESTION", "LIKELY", - "UNLIKELY", "OR", "AND", "INSTANCEOF", - "BITWISE_OR", "BITWISE_XOR", "BITWISE_SHIFTLEFT", "BITWISE_SHIFTRIGHT", - "EQUALS", "IDENTICAL", "LESS", "GREATER", - "LESSEQUAL", "GREATEREQUAL", "NOTIDENTICAL", "NOTEQUALS", - "ADD", "SUB", "CONCAT", "MUL", - "DIV", "MOD", "ISSET", "FETCH", - "EMPTY", "INCLUSIVE_RANGE", "EXCLUSIVE_RANGE", "TYPEOF", - "CLONE", "NEW", "NOT", "BITWISE_NOT", - "BITWISE_AND", "PARENTHESES_CLOSE", "SBRACKET_OPEN", "ARROW", - "NAMESPACE", "IDENTIFIER", "DOTCOMMA", "USE", - "AS", "FUNCTION", "PARENTHESES_OPEN", "BRACKET_OPEN", - "BRACKET_CLOSE", "INTERFACE", "EXTENDS", "CLASS", - "IMPLEMENTS", "ABSTRACT", "FINAL", "COMMENT", - "ASSIGN", "CONST", "CONSTANT", "INLINE", - "DEPRECATED", "VOID", "NULL", "THIS", - "SBRACKET_CLOSE", "TYPE_INTEGER", "TYPE_UINTEGER", "TYPE_LONG", - "TYPE_ULONG", "TYPE_CHAR", "TYPE_UCHAR", "TYPE_DOUBLE", - "TYPE_BOOL", "TYPE_STRING", "TYPE_ARRAY", "TYPE_VAR", - "TYPE_CALLABLE", "TYPE_RESOURCE", "TYPE_OBJECT", "BREAK", - "CONTINUE", "IF", "ELSE", "ELSEIF", - "SWITCH", "CASE", "COLON", "DEFAULT", - "LOOP", "WHILE", "DO", "TRY", - "CATCH", "FOR", "IN", "REVERSE", - "LET", "ADDASSIGN", "SUBASSIGN", "MULASSIGN", - "DIVASSIGN", "CONCATASSIGN", "MODASSIGN", "STRING", - "DOUBLECOLON", "INCR", "DECR", "ECHO", - "RETURN", "UNSET", "THROW", "PLUS", - "INTEGER", "ISTRING", "CHAR", "DOUBLE", - "TRUE", "FALSE", "CBLOCK", "error", - "program", "xx_language", "xx_top_statement_list", "xx_top_statement", - "xx_namespace_def", "xx_use_aliases", "xx_function_def", "xx_class_def", - "xx_interface_def", "xx_comment", "xx_cblock", "xx_use_aliases_list", - "xx_method_return_type", "xx_parameter_list", "xx_statement_list", "xx_interface_body", - "xx_implements_list", "xx_class_body", "xx_class_definition", "xx_implements", - "xx_interface_definition", "xx_class_properties_definition", "xx_class_consts_definition", "xx_class_methods_definition", - "xx_interface_methods_definition", "xx_class_property_definition", "xx_visibility_list", "xx_literal_expr", - "xx_class_property_shortcuts", "xx_class_property_shortcuts_list", "xx_class_property_shortcut", "xx_class_const_definition", - "xx_class_method_definition", "xx_interface_method_definition", "xx_visibility", "xx_method_return_type_list", - "xx_method_return_type_item", "xx_parameter_type", "xx_parameter_cast", "xx_parameter_cast_collection", - "xx_parameter", "xx_statement", "xx_let_statement", "xx_if_statement", - "xx_loop_statement", "xx_echo_statement", "xx_return_statement", "xx_require_statement", - "xx_fetch_statement", "xx_fcall_statement", "xx_mcall_statement", "xx_scall_statement", - "xx_unset_statement", "xx_throw_statement", "xx_declare_statement", "xx_break_statement", - "xx_continue_statement", "xx_while_statement", "xx_do_while_statement", "xx_try_catch_statement", - "xx_switch_statement", "xx_for_statement", "xx_empty_statement", "xx_eval_expr", - "xx_elseif_statements", "xx_elseif_statement", "xx_case_clauses", "xx_case_clause", - "xx_catch_statement_list", "xx_catch_statement", "xx_catch_classes_list", "xx_catch_class", - "xx_common_expr", "xx_let_assignments", "xx_let_assignment", "xx_assignment_operator", - "xx_assign_expr", "xx_array_offset_list", "xx_array_offset", "xx_index_expr", - "xx_echo_expressions", "xx_echo_expression", "xx_mcall_expr", "xx_fcall_expr", - "xx_scall_expr", "xx_fetch_expr", "xx_declare_variable_list", "xx_declare_variable", - "xx_array_list", "xx_call_parameters", "xx_call_parameter", "xx_array_item", - "xx_array_key", "xx_array_value", "xx_literal_array_list", "xx_literal_array_item", - "xx_literal_array_key", "xx_literal_array_value", -}; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing reduce actions, the names of all rules are required. -*/ -static const char *yyRuleName[] = { - /* 0 */ "program ::= xx_language", - /* 1 */ "xx_language ::= xx_top_statement_list", - /* 2 */ "xx_top_statement_list ::= xx_top_statement_list xx_top_statement", - /* 3 */ "xx_top_statement_list ::= xx_top_statement", - /* 4 */ "xx_top_statement ::= xx_namespace_def", - /* 5 */ "xx_top_statement ::= xx_use_aliases", - /* 6 */ "xx_top_statement ::= xx_function_def", - /* 7 */ "xx_top_statement ::= xx_class_def", - /* 8 */ "xx_top_statement ::= xx_interface_def", - /* 9 */ "xx_top_statement ::= xx_comment", - /* 10 */ "xx_top_statement ::= xx_cblock", - /* 11 */ "xx_namespace_def ::= NAMESPACE IDENTIFIER DOTCOMMA", - /* 12 */ "xx_namespace_def ::= USE xx_use_aliases_list DOTCOMMA", - /* 13 */ "xx_use_aliases_list ::= xx_use_aliases_list COMMA xx_use_aliases", - /* 14 */ "xx_use_aliases_list ::= xx_use_aliases", - /* 15 */ "xx_use_aliases ::= IDENTIFIER", - /* 16 */ "xx_use_aliases ::= IDENTIFIER AS IDENTIFIER", - /* 17 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 18 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 19 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 20 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 21 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 22 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 23 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 24 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA", - /* 25 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 26 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE DOTCOMMA", - /* 27 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 28 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 29 */ "xx_interface_def ::= INTERFACE IDENTIFIER xx_interface_body", - /* 30 */ "xx_interface_def ::= INTERFACE IDENTIFIER EXTENDS xx_implements_list xx_interface_body", - /* 31 */ "xx_class_def ::= CLASS IDENTIFIER xx_class_body", - /* 32 */ "xx_class_def ::= CLASS IDENTIFIER EXTENDS IDENTIFIER xx_class_body", - /* 33 */ "xx_class_def ::= CLASS IDENTIFIER IMPLEMENTS xx_implements_list xx_class_body", - /* 34 */ "xx_class_def ::= CLASS IDENTIFIER EXTENDS IDENTIFIER IMPLEMENTS xx_implements_list xx_class_body", - /* 35 */ "xx_class_def ::= ABSTRACT CLASS IDENTIFIER xx_class_body", - /* 36 */ "xx_class_def ::= ABSTRACT CLASS IDENTIFIER EXTENDS IDENTIFIER xx_class_body", - /* 37 */ "xx_class_def ::= ABSTRACT CLASS IDENTIFIER IMPLEMENTS xx_implements_list xx_class_body", - /* 38 */ "xx_class_def ::= ABSTRACT CLASS IDENTIFIER EXTENDS IDENTIFIER IMPLEMENTS xx_implements_list xx_class_body", - /* 39 */ "xx_class_def ::= FINAL CLASS IDENTIFIER xx_class_body", - /* 40 */ "xx_class_def ::= FINAL CLASS IDENTIFIER EXTENDS IDENTIFIER xx_class_body", - /* 41 */ "xx_class_def ::= FINAL CLASS IDENTIFIER IMPLEMENTS xx_implements_list xx_class_body", - /* 42 */ "xx_class_body ::= BRACKET_OPEN BRACKET_CLOSE", - /* 43 */ "xx_class_body ::= BRACKET_OPEN xx_class_definition BRACKET_CLOSE", - /* 44 */ "xx_implements_list ::= xx_implements_list COMMA xx_implements", - /* 45 */ "xx_implements_list ::= xx_implements", - /* 46 */ "xx_implements ::= IDENTIFIER", - /* 47 */ "xx_interface_body ::= BRACKET_OPEN BRACKET_CLOSE", - /* 48 */ "xx_interface_body ::= BRACKET_OPEN xx_interface_definition BRACKET_CLOSE", - /* 49 */ "xx_class_definition ::= xx_class_properties_definition", - /* 50 */ "xx_class_definition ::= xx_class_consts_definition", - /* 51 */ "xx_class_definition ::= xx_class_methods_definition", - /* 52 */ "xx_class_definition ::= xx_class_properties_definition xx_class_methods_definition", - /* 53 */ "xx_class_definition ::= xx_class_properties_definition xx_class_consts_definition", - /* 54 */ "xx_class_definition ::= xx_class_consts_definition xx_class_properties_definition", - /* 55 */ "xx_class_definition ::= xx_class_consts_definition xx_class_methods_definition", - /* 56 */ "xx_class_definition ::= xx_class_properties_definition xx_class_consts_definition xx_class_methods_definition", - /* 57 */ "xx_class_definition ::= xx_class_consts_definition xx_class_properties_definition xx_class_methods_definition", - /* 58 */ "xx_interface_definition ::= xx_class_consts_definition", - /* 59 */ "xx_interface_definition ::= xx_interface_methods_definition", - /* 60 */ "xx_interface_definition ::= xx_class_consts_definition xx_interface_methods_definition", - /* 61 */ "xx_class_properties_definition ::= xx_class_properties_definition xx_class_property_definition", - /* 62 */ "xx_class_properties_definition ::= xx_class_property_definition", - /* 63 */ "xx_class_property_definition ::= COMMENT xx_visibility_list IDENTIFIER DOTCOMMA", - /* 64 */ "xx_class_property_definition ::= xx_visibility_list IDENTIFIER DOTCOMMA", - /* 65 */ "xx_class_property_definition ::= COMMENT xx_visibility_list IDENTIFIER ASSIGN xx_literal_expr DOTCOMMA", - /* 66 */ "xx_class_property_definition ::= xx_visibility_list IDENTIFIER ASSIGN xx_literal_expr DOTCOMMA", - /* 67 */ "xx_class_property_definition ::= COMMENT xx_visibility_list IDENTIFIER xx_class_property_shortcuts DOTCOMMA", - /* 68 */ "xx_class_property_definition ::= xx_visibility_list IDENTIFIER xx_class_property_shortcuts DOTCOMMA", - /* 69 */ "xx_class_property_definition ::= COMMENT xx_visibility_list IDENTIFIER ASSIGN xx_literal_expr xx_class_property_shortcuts DOTCOMMA", - /* 70 */ "xx_class_property_definition ::= xx_visibility_list IDENTIFIER ASSIGN xx_literal_expr xx_class_property_shortcuts DOTCOMMA", - /* 71 */ "xx_class_property_shortcuts ::= BRACKET_OPEN BRACKET_CLOSE", - /* 72 */ "xx_class_property_shortcuts ::= BRACKET_OPEN xx_class_property_shortcuts_list BRACKET_CLOSE", - /* 73 */ "xx_class_property_shortcuts_list ::= xx_class_property_shortcuts_list COMMA xx_class_property_shortcut", - /* 74 */ "xx_class_property_shortcuts_list ::= xx_class_property_shortcut", - /* 75 */ "xx_class_property_shortcut ::= IDENTIFIER", - /* 76 */ "xx_class_property_shortcut ::= COMMENT IDENTIFIER", - /* 77 */ "xx_class_consts_definition ::= xx_class_consts_definition xx_class_const_definition", - /* 78 */ "xx_class_consts_definition ::= xx_class_const_definition", - /* 79 */ "xx_class_methods_definition ::= xx_class_methods_definition xx_class_method_definition", - /* 80 */ "xx_class_methods_definition ::= xx_class_method_definition", - /* 81 */ "xx_interface_methods_definition ::= xx_interface_methods_definition xx_interface_method_definition", - /* 82 */ "xx_interface_methods_definition ::= xx_interface_method_definition", - /* 83 */ "xx_class_const_definition ::= COMMENT CONST CONSTANT ASSIGN xx_literal_expr DOTCOMMA", - /* 84 */ "xx_class_const_definition ::= CONST CONSTANT ASSIGN xx_literal_expr DOTCOMMA", - /* 85 */ "xx_class_const_definition ::= COMMENT CONST IDENTIFIER ASSIGN xx_literal_expr DOTCOMMA", - /* 86 */ "xx_class_const_definition ::= CONST IDENTIFIER ASSIGN xx_literal_expr DOTCOMMA", - /* 87 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 88 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA", - /* 89 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 90 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE DOTCOMMA", - /* 91 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 92 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 93 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 94 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA", - /* 95 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 96 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE DOTCOMMA", - /* 97 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 98 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 99 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 100 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 101 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 102 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 103 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 104 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 105 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 106 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 107 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 108 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 109 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 110 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 111 */ "xx_interface_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 112 */ "xx_interface_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 113 */ "xx_interface_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 114 */ "xx_interface_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 115 */ "xx_interface_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA", - /* 116 */ "xx_interface_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE DOTCOMMA", - /* 117 */ "xx_interface_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA", - /* 118 */ "xx_interface_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE DOTCOMMA", - /* 119 */ "xx_visibility_list ::= xx_visibility_list xx_visibility", - /* 120 */ "xx_visibility_list ::= xx_visibility", - /* 121 */ "xx_visibility ::= INTERNAL", - /* 122 */ "xx_visibility ::= PUBLIC", - /* 123 */ "xx_visibility ::= PROTECTED", - /* 124 */ "xx_visibility ::= PRIVATE", - /* 125 */ "xx_visibility ::= STATIC", - /* 126 */ "xx_visibility ::= SCOPED", - /* 127 */ "xx_visibility ::= INLINE", - /* 128 */ "xx_visibility ::= DEPRECATED", - /* 129 */ "xx_visibility ::= ABSTRACT", - /* 130 */ "xx_visibility ::= FINAL", - /* 131 */ "xx_method_return_type ::= VOID", - /* 132 */ "xx_method_return_type ::= xx_method_return_type_list", - /* 133 */ "xx_method_return_type_list ::= xx_method_return_type_list BITWISE_OR xx_method_return_type_item", - /* 134 */ "xx_method_return_type_list ::= xx_method_return_type_item", - /* 135 */ "xx_method_return_type_item ::= xx_parameter_type", - /* 136 */ "xx_method_return_type_item ::= NULL", - /* 137 */ "xx_method_return_type_item ::= THIS", - /* 138 */ "xx_method_return_type_item ::= xx_parameter_type NOT", - /* 139 */ "xx_method_return_type_item ::= xx_parameter_cast", - /* 140 */ "xx_method_return_type_item ::= xx_parameter_cast_collection", - /* 141 */ "xx_parameter_list ::= xx_parameter_list COMMA xx_parameter", - /* 142 */ "xx_parameter_list ::= xx_parameter", - /* 143 */ "xx_parameter ::= IDENTIFIER", - /* 144 */ "xx_parameter ::= BITWISE_AND IDENTIFIER", - /* 145 */ "xx_parameter ::= CONST IDENTIFIER", - /* 146 */ "xx_parameter ::= CONST BITWISE_AND IDENTIFIER", - /* 147 */ "xx_parameter ::= xx_parameter_type IDENTIFIER", - /* 148 */ "xx_parameter ::= xx_parameter_type BITWISE_AND IDENTIFIER", - /* 149 */ "xx_parameter ::= CONST xx_parameter_type IDENTIFIER", - /* 150 */ "xx_parameter ::= CONST xx_parameter_type BITWISE_AND IDENTIFIER", - /* 151 */ "xx_parameter ::= xx_parameter_type NOT IDENTIFIER", - /* 152 */ "xx_parameter ::= xx_parameter_type NOT BITWISE_AND IDENTIFIER", - /* 153 */ "xx_parameter ::= CONST xx_parameter_type NOT IDENTIFIER", - /* 154 */ "xx_parameter ::= CONST xx_parameter_type NOT BITWISE_AND IDENTIFIER", - /* 155 */ "xx_parameter ::= xx_parameter_cast IDENTIFIER", - /* 156 */ "xx_parameter ::= xx_parameter_cast BITWISE_AND IDENTIFIER", - /* 157 */ "xx_parameter ::= CONST xx_parameter_cast IDENTIFIER", - /* 158 */ "xx_parameter ::= CONST xx_parameter_cast BITWISE_AND IDENTIFIER", - /* 159 */ "xx_parameter ::= IDENTIFIER ASSIGN xx_literal_expr", - /* 160 */ "xx_parameter ::= BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 161 */ "xx_parameter ::= CONST IDENTIFIER ASSIGN xx_literal_expr", - /* 162 */ "xx_parameter ::= CONST BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 163 */ "xx_parameter ::= xx_parameter_type IDENTIFIER ASSIGN xx_literal_expr", - /* 164 */ "xx_parameter ::= xx_parameter_type BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 165 */ "xx_parameter ::= CONST xx_parameter_type IDENTIFIER ASSIGN xx_literal_expr", - /* 166 */ "xx_parameter ::= CONST xx_parameter_type BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 167 */ "xx_parameter ::= xx_parameter_type NOT IDENTIFIER ASSIGN xx_literal_expr", - /* 168 */ "xx_parameter ::= xx_parameter_type NOT BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 169 */ "xx_parameter ::= CONST xx_parameter_type NOT IDENTIFIER ASSIGN xx_literal_expr", - /* 170 */ "xx_parameter ::= CONST xx_parameter_type NOT BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 171 */ "xx_parameter ::= xx_parameter_cast IDENTIFIER ASSIGN xx_literal_expr", - /* 172 */ "xx_parameter ::= xx_parameter_cast BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 173 */ "xx_parameter ::= CONST xx_parameter_cast IDENTIFIER ASSIGN xx_literal_expr", - /* 174 */ "xx_parameter ::= CONST xx_parameter_cast BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 175 */ "xx_parameter_cast ::= LESS IDENTIFIER GREATER", - /* 176 */ "xx_parameter_cast_collection ::= LESS IDENTIFIER SBRACKET_OPEN SBRACKET_CLOSE GREATER", - /* 177 */ "xx_parameter_type ::= TYPE_INTEGER", - /* 178 */ "xx_parameter_type ::= TYPE_UINTEGER", - /* 179 */ "xx_parameter_type ::= TYPE_LONG", - /* 180 */ "xx_parameter_type ::= TYPE_ULONG", - /* 181 */ "xx_parameter_type ::= TYPE_CHAR", - /* 182 */ "xx_parameter_type ::= TYPE_UCHAR", - /* 183 */ "xx_parameter_type ::= TYPE_DOUBLE", - /* 184 */ "xx_parameter_type ::= TYPE_BOOL", - /* 185 */ "xx_parameter_type ::= TYPE_STRING", - /* 186 */ "xx_parameter_type ::= TYPE_ARRAY", - /* 187 */ "xx_parameter_type ::= TYPE_VAR", - /* 188 */ "xx_parameter_type ::= TYPE_CALLABLE", - /* 189 */ "xx_parameter_type ::= TYPE_RESOURCE", - /* 190 */ "xx_parameter_type ::= TYPE_OBJECT", - /* 191 */ "xx_statement_list ::= xx_statement_list xx_statement", - /* 192 */ "xx_statement_list ::= xx_statement", - /* 193 */ "xx_statement ::= xx_cblock", - /* 194 */ "xx_statement ::= xx_let_statement", - /* 195 */ "xx_statement ::= xx_if_statement", - /* 196 */ "xx_statement ::= xx_loop_statement", - /* 197 */ "xx_statement ::= xx_echo_statement", - /* 198 */ "xx_statement ::= xx_return_statement", - /* 199 */ "xx_statement ::= xx_require_statement", - /* 200 */ "xx_statement ::= xx_fetch_statement", - /* 201 */ "xx_statement ::= xx_fcall_statement", - /* 202 */ "xx_statement ::= xx_mcall_statement", - /* 203 */ "xx_statement ::= xx_scall_statement", - /* 204 */ "xx_statement ::= xx_unset_statement", - /* 205 */ "xx_statement ::= xx_throw_statement", - /* 206 */ "xx_statement ::= xx_declare_statement", - /* 207 */ "xx_statement ::= xx_break_statement", - /* 208 */ "xx_statement ::= xx_continue_statement", - /* 209 */ "xx_statement ::= xx_while_statement", - /* 210 */ "xx_statement ::= xx_do_while_statement", - /* 211 */ "xx_statement ::= xx_try_catch_statement", - /* 212 */ "xx_statement ::= xx_switch_statement", - /* 213 */ "xx_statement ::= xx_for_statement", - /* 214 */ "xx_statement ::= xx_comment", - /* 215 */ "xx_statement ::= xx_empty_statement", - /* 216 */ "xx_empty_statement ::= DOTCOMMA", - /* 217 */ "xx_break_statement ::= BREAK DOTCOMMA", - /* 218 */ "xx_continue_statement ::= CONTINUE DOTCOMMA", - /* 219 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE", - /* 220 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE xx_elseif_statements", - /* 221 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE ELSE BRACKET_OPEN BRACKET_CLOSE", - /* 222 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE xx_elseif_statements ELSE BRACKET_OPEN BRACKET_CLOSE", - /* 223 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 224 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE xx_elseif_statements", - /* 225 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE ELSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 226 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE xx_elseif_statements ELSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 227 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE ELSE BRACKET_OPEN BRACKET_CLOSE", - /* 228 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE xx_elseif_statements ELSE BRACKET_OPEN BRACKET_CLOSE", - /* 229 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE ELSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 230 */ "xx_elseif_statements ::= xx_elseif_statements xx_elseif_statement", - /* 231 */ "xx_elseif_statements ::= xx_elseif_statement", - /* 232 */ "xx_elseif_statement ::= ELSEIF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE", - /* 233 */ "xx_elseif_statement ::= ELSEIF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 234 */ "xx_switch_statement ::= SWITCH xx_eval_expr BRACKET_OPEN BRACKET_CLOSE", - /* 235 */ "xx_switch_statement ::= SWITCH xx_eval_expr BRACKET_OPEN xx_case_clauses BRACKET_CLOSE", - /* 236 */ "xx_case_clauses ::= xx_case_clauses xx_case_clause", - /* 237 */ "xx_case_clauses ::= xx_case_clause", - /* 238 */ "xx_case_clause ::= CASE xx_eval_expr COLON", - /* 239 */ "xx_case_clause ::= CASE xx_eval_expr COLON xx_statement_list", - /* 240 */ "xx_case_clause ::= DEFAULT COLON xx_statement_list", - /* 241 */ "xx_loop_statement ::= LOOP BRACKET_OPEN BRACKET_CLOSE", - /* 242 */ "xx_loop_statement ::= LOOP BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 243 */ "xx_while_statement ::= WHILE xx_eval_expr BRACKET_OPEN BRACKET_CLOSE", - /* 244 */ "xx_while_statement ::= WHILE xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 245 */ "xx_do_while_statement ::= DO BRACKET_OPEN BRACKET_CLOSE WHILE xx_eval_expr DOTCOMMA", - /* 246 */ "xx_do_while_statement ::= DO BRACKET_OPEN xx_statement_list BRACKET_CLOSE WHILE xx_eval_expr DOTCOMMA", - /* 247 */ "xx_try_catch_statement ::= TRY BRACKET_OPEN BRACKET_CLOSE", - /* 248 */ "xx_try_catch_statement ::= TRY BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 249 */ "xx_try_catch_statement ::= TRY BRACKET_OPEN xx_statement_list BRACKET_CLOSE xx_catch_statement_list", - /* 250 */ "xx_catch_statement_list ::= xx_catch_statement_list xx_catch_statement", - /* 251 */ "xx_catch_statement_list ::= xx_catch_statement", - /* 252 */ "xx_catch_statement ::= CATCH xx_catch_classes_list BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 253 */ "xx_catch_statement ::= CATCH xx_catch_classes_list BRACKET_OPEN BRACKET_CLOSE", - /* 254 */ "xx_catch_statement ::= CATCH xx_catch_classes_list COMMA IDENTIFIER BRACKET_OPEN BRACKET_CLOSE", - /* 255 */ "xx_catch_statement ::= CATCH xx_catch_classes_list COMMA IDENTIFIER BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 256 */ "xx_catch_classes_list ::= xx_catch_classes_list BITWISE_OR xx_catch_class", - /* 257 */ "xx_catch_classes_list ::= xx_catch_class", - /* 258 */ "xx_catch_class ::= IDENTIFIER", - /* 259 */ "xx_for_statement ::= FOR IDENTIFIER IN xx_common_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 260 */ "xx_for_statement ::= FOR IDENTIFIER IN xx_common_expr BRACKET_OPEN BRACKET_CLOSE", - /* 261 */ "xx_for_statement ::= FOR IDENTIFIER IN REVERSE xx_common_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 262 */ "xx_for_statement ::= FOR IDENTIFIER COMMA IDENTIFIER IN xx_common_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 263 */ "xx_for_statement ::= FOR IDENTIFIER COMMA IDENTIFIER IN xx_common_expr BRACKET_OPEN BRACKET_CLOSE", - /* 264 */ "xx_for_statement ::= FOR IDENTIFIER COMMA IDENTIFIER IN REVERSE xx_common_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 265 */ "xx_let_statement ::= LET xx_let_assignments DOTCOMMA", - /* 266 */ "xx_let_assignments ::= xx_let_assignments COMMA xx_let_assignment", - /* 267 */ "xx_let_assignments ::= xx_let_assignment", - /* 268 */ "xx_assignment_operator ::= ASSIGN", - /* 269 */ "xx_assignment_operator ::= ADDASSIGN", - /* 270 */ "xx_assignment_operator ::= SUBASSIGN", - /* 271 */ "xx_assignment_operator ::= MULASSIGN", - /* 272 */ "xx_assignment_operator ::= DIVASSIGN", - /* 273 */ "xx_assignment_operator ::= CONCATASSIGN", - /* 274 */ "xx_assignment_operator ::= MODASSIGN", - /* 275 */ "xx_let_assignment ::= IDENTIFIER xx_assignment_operator xx_assign_expr", - /* 276 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER xx_assignment_operator xx_assign_expr", - /* 277 */ "xx_let_assignment ::= IDENTIFIER ARROW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 278 */ "xx_let_assignment ::= IDENTIFIER ARROW BRACKET_OPEN STRING BRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 279 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 280 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER xx_array_offset_list xx_assignment_operator xx_assign_expr", - /* 281 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER xx_array_offset_list SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 282 */ "xx_let_assignment ::= IDENTIFIER DOUBLECOLON IDENTIFIER xx_assignment_operator xx_assign_expr", - /* 283 */ "xx_let_assignment ::= IDENTIFIER DOUBLECOLON IDENTIFIER SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 284 */ "xx_let_assignment ::= IDENTIFIER DOUBLECOLON IDENTIFIER xx_array_offset_list xx_assignment_operator xx_assign_expr", - /* 285 */ "xx_let_assignment ::= IDENTIFIER DOUBLECOLON IDENTIFIER xx_array_offset_list SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 286 */ "xx_let_assignment ::= IDENTIFIER SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 287 */ "xx_let_assignment ::= IDENTIFIER xx_array_offset_list xx_assignment_operator xx_assign_expr", - /* 288 */ "xx_let_assignment ::= IDENTIFIER xx_array_offset_list SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 289 */ "xx_array_offset_list ::= xx_array_offset_list xx_array_offset", - /* 290 */ "xx_array_offset_list ::= xx_array_offset", - /* 291 */ "xx_array_offset ::= SBRACKET_OPEN xx_index_expr SBRACKET_CLOSE", - /* 292 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER INCR", - /* 293 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER DECR", - /* 294 */ "xx_let_assignment ::= IDENTIFIER INCR", - /* 295 */ "xx_let_assignment ::= IDENTIFIER DECR", - /* 296 */ "xx_let_assignment ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 297 */ "xx_let_assignment ::= BRACKET_OPEN STRING BRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 298 */ "xx_index_expr ::= xx_common_expr", - /* 299 */ "xx_echo_statement ::= ECHO xx_echo_expressions DOTCOMMA", - /* 300 */ "xx_echo_expressions ::= xx_echo_expressions COMMA xx_echo_expression", - /* 301 */ "xx_echo_expressions ::= xx_echo_expression", - /* 302 */ "xx_echo_expression ::= xx_common_expr", - /* 303 */ "xx_mcall_statement ::= xx_mcall_expr DOTCOMMA", - /* 304 */ "xx_fcall_statement ::= xx_fcall_expr DOTCOMMA", - /* 305 */ "xx_scall_statement ::= xx_scall_expr DOTCOMMA", - /* 306 */ "xx_fetch_statement ::= xx_fetch_expr DOTCOMMA", - /* 307 */ "xx_return_statement ::= RETURN xx_common_expr DOTCOMMA", - /* 308 */ "xx_return_statement ::= RETURN DOTCOMMA", - /* 309 */ "xx_require_statement ::= REQUIRE xx_common_expr DOTCOMMA", - /* 310 */ "xx_unset_statement ::= UNSET xx_common_expr DOTCOMMA", - /* 311 */ "xx_throw_statement ::= THROW xx_common_expr DOTCOMMA", - /* 312 */ "xx_declare_statement ::= TYPE_INTEGER xx_declare_variable_list DOTCOMMA", - /* 313 */ "xx_declare_statement ::= TYPE_UINTEGER xx_declare_variable_list DOTCOMMA", - /* 314 */ "xx_declare_statement ::= TYPE_CHAR xx_declare_variable_list DOTCOMMA", - /* 315 */ "xx_declare_statement ::= TYPE_UCHAR xx_declare_variable_list DOTCOMMA", - /* 316 */ "xx_declare_statement ::= TYPE_LONG xx_declare_variable_list DOTCOMMA", - /* 317 */ "xx_declare_statement ::= TYPE_ULONG xx_declare_variable_list DOTCOMMA", - /* 318 */ "xx_declare_statement ::= TYPE_DOUBLE xx_declare_variable_list DOTCOMMA", - /* 319 */ "xx_declare_statement ::= TYPE_STRING xx_declare_variable_list DOTCOMMA", - /* 320 */ "xx_declare_statement ::= TYPE_BOOL xx_declare_variable_list DOTCOMMA", - /* 321 */ "xx_declare_statement ::= TYPE_VAR xx_declare_variable_list DOTCOMMA", - /* 322 */ "xx_declare_statement ::= TYPE_ARRAY xx_declare_variable_list DOTCOMMA", - /* 323 */ "xx_declare_variable_list ::= xx_declare_variable_list COMMA xx_declare_variable", - /* 324 */ "xx_declare_variable_list ::= xx_declare_variable", - /* 325 */ "xx_declare_variable ::= IDENTIFIER", - /* 326 */ "xx_declare_variable ::= IDENTIFIER ASSIGN xx_common_expr", - /* 327 */ "xx_assign_expr ::= xx_common_expr", - /* 328 */ "xx_common_expr ::= BITWISE_AND xx_common_expr", - /* 329 */ "xx_common_expr ::= NOT xx_common_expr", - /* 330 */ "xx_common_expr ::= BITWISE_NOT xx_common_expr", - /* 331 */ "xx_common_expr ::= SUB xx_common_expr", - /* 332 */ "xx_common_expr ::= PLUS xx_common_expr", - /* 333 */ "xx_common_expr ::= ISSET xx_common_expr", - /* 334 */ "xx_common_expr ::= REQUIRE xx_common_expr", - /* 335 */ "xx_common_expr ::= CLONE xx_common_expr", - /* 336 */ "xx_common_expr ::= EMPTY xx_common_expr", - /* 337 */ "xx_common_expr ::= LIKELY xx_common_expr", - /* 338 */ "xx_common_expr ::= UNLIKELY xx_common_expr", - /* 339 */ "xx_common_expr ::= xx_common_expr EQUALS xx_common_expr", - /* 340 */ "xx_common_expr ::= xx_common_expr NOTEQUALS xx_common_expr", - /* 341 */ "xx_common_expr ::= xx_common_expr IDENTICAL xx_common_expr", - /* 342 */ "xx_common_expr ::= xx_common_expr NOTIDENTICAL xx_common_expr", - /* 343 */ "xx_common_expr ::= xx_common_expr LESS xx_common_expr", - /* 344 */ "xx_common_expr ::= xx_common_expr GREATER xx_common_expr", - /* 345 */ "xx_common_expr ::= xx_common_expr LESSEQUAL xx_common_expr", - /* 346 */ "xx_common_expr ::= xx_common_expr GREATEREQUAL xx_common_expr", - /* 347 */ "xx_common_expr ::= PARENTHESES_OPEN xx_common_expr PARENTHESES_CLOSE", - /* 348 */ "xx_common_expr ::= PARENTHESES_OPEN xx_parameter_type PARENTHESES_CLOSE xx_common_expr", - /* 349 */ "xx_common_expr ::= LESS IDENTIFIER GREATER xx_common_expr", - /* 350 */ "xx_common_expr ::= xx_common_expr ARROW IDENTIFIER", - /* 351 */ "xx_common_expr ::= xx_common_expr ARROW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE", - /* 352 */ "xx_common_expr ::= xx_common_expr ARROW BRACKET_OPEN STRING BRACKET_CLOSE", - /* 353 */ "xx_common_expr ::= IDENTIFIER DOUBLECOLON IDENTIFIER", - /* 354 */ "xx_common_expr ::= IDENTIFIER DOUBLECOLON CONSTANT", - /* 355 */ "xx_common_expr ::= xx_common_expr SBRACKET_OPEN xx_common_expr SBRACKET_CLOSE", - /* 356 */ "xx_common_expr ::= xx_common_expr ADD xx_common_expr", - /* 357 */ "xx_common_expr ::= xx_common_expr SUB xx_common_expr", - /* 358 */ "xx_common_expr ::= xx_common_expr MUL xx_common_expr", - /* 359 */ "xx_common_expr ::= xx_common_expr DIV xx_common_expr", - /* 360 */ "xx_common_expr ::= xx_common_expr MOD xx_common_expr", - /* 361 */ "xx_common_expr ::= xx_common_expr CONCAT xx_common_expr", - /* 362 */ "xx_common_expr ::= xx_common_expr AND xx_common_expr", - /* 363 */ "xx_common_expr ::= xx_common_expr OR xx_common_expr", - /* 364 */ "xx_common_expr ::= xx_common_expr BITWISE_OR xx_common_expr", - /* 365 */ "xx_common_expr ::= xx_common_expr BITWISE_AND xx_common_expr", - /* 366 */ "xx_common_expr ::= xx_common_expr BITWISE_XOR xx_common_expr", - /* 367 */ "xx_common_expr ::= xx_common_expr BITWISE_SHIFTLEFT xx_common_expr", - /* 368 */ "xx_common_expr ::= xx_common_expr BITWISE_SHIFTRIGHT xx_common_expr", - /* 369 */ "xx_common_expr ::= xx_common_expr INSTANCEOF xx_common_expr", - /* 370 */ "xx_common_expr ::= xx_common_expr INCLUSIVE_RANGE xx_common_expr", - /* 371 */ "xx_common_expr ::= xx_common_expr EXCLUSIVE_RANGE xx_common_expr", - /* 372 */ "xx_fetch_expr ::= FETCH IDENTIFIER COMMA xx_common_expr", - /* 373 */ "xx_common_expr ::= xx_fetch_expr", - /* 374 */ "xx_common_expr ::= TYPEOF xx_common_expr", - /* 375 */ "xx_common_expr ::= IDENTIFIER", - /* 376 */ "xx_common_expr ::= INTEGER", - /* 377 */ "xx_common_expr ::= STRING", - /* 378 */ "xx_common_expr ::= ISTRING", - /* 379 */ "xx_common_expr ::= CHAR", - /* 380 */ "xx_common_expr ::= DOUBLE", - /* 381 */ "xx_common_expr ::= NULL", - /* 382 */ "xx_common_expr ::= TRUE", - /* 383 */ "xx_common_expr ::= FALSE", - /* 384 */ "xx_common_expr ::= CONSTANT", - /* 385 */ "xx_common_expr ::= SBRACKET_OPEN SBRACKET_CLOSE", - /* 386 */ "xx_common_expr ::= SBRACKET_OPEN xx_array_list SBRACKET_CLOSE", - /* 387 */ "xx_common_expr ::= NEW STATIC", - /* 388 */ "xx_common_expr ::= NEW STATIC PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 389 */ "xx_common_expr ::= NEW STATIC PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 390 */ "xx_common_expr ::= NEW IDENTIFIER", - /* 391 */ "xx_common_expr ::= NEW IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 392 */ "xx_common_expr ::= NEW IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 393 */ "xx_common_expr ::= NEW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE", - /* 394 */ "xx_common_expr ::= NEW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 395 */ "xx_common_expr ::= NEW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 396 */ "xx_common_expr ::= NEW xx_parameter_type PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 397 */ "xx_fcall_expr ::= IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 398 */ "xx_fcall_expr ::= IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 399 */ "xx_fcall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 400 */ "xx_fcall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 401 */ "xx_scall_expr ::= IDENTIFIER DOUBLECOLON IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 402 */ "xx_scall_expr ::= IDENTIFIER DOUBLECOLON IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 403 */ "xx_scall_expr ::= STATIC DOUBLECOLON IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 404 */ "xx_scall_expr ::= STATIC DOUBLECOLON IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 405 */ "xx_scall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE DOUBLECOLON IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 406 */ "xx_scall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE DOUBLECOLON IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 407 */ "xx_scall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE DOUBLECOLON BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 408 */ "xx_scall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE DOUBLECOLON BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 409 */ "xx_scall_expr ::= IDENTIFIER DOUBLECOLON BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 410 */ "xx_scall_expr ::= IDENTIFIER DOUBLECOLON BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 411 */ "xx_mcall_expr ::= xx_common_expr ARROW IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 412 */ "xx_mcall_expr ::= xx_common_expr ARROW IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 413 */ "xx_mcall_expr ::= xx_common_expr ARROW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 414 */ "xx_mcall_expr ::= xx_common_expr ARROW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 415 */ "xx_mcall_expr ::= xx_common_expr ARROW BRACKET_OPEN STRING BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 416 */ "xx_mcall_expr ::= xx_common_expr ARROW BRACKET_OPEN STRING BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 417 */ "xx_common_expr ::= xx_mcall_expr", - /* 418 */ "xx_common_expr ::= xx_scall_expr", - /* 419 */ "xx_common_expr ::= xx_fcall_expr", - /* 420 */ "xx_common_expr ::= xx_common_expr QUESTION xx_common_expr COLON xx_common_expr", - /* 421 */ "xx_common_expr ::= xx_common_expr QUESTION COLON xx_common_expr", - /* 422 */ "xx_call_parameters ::= xx_call_parameters COMMA xx_call_parameter", - /* 423 */ "xx_call_parameters ::= xx_call_parameter", - /* 424 */ "xx_call_parameter ::= xx_common_expr", - /* 425 */ "xx_call_parameter ::= IDENTIFIER COLON xx_common_expr", - /* 426 */ "xx_common_expr ::= FUNCTION PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 427 */ "xx_common_expr ::= FUNCTION PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 428 */ "xx_common_expr ::= FUNCTION PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 429 */ "xx_common_expr ::= FUNCTION PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 430 */ "xx_common_expr ::= IDENTIFIER DOUBLEARROW xx_common_expr", - /* 431 */ "xx_array_list ::= xx_array_list COMMA xx_array_item", - /* 432 */ "xx_array_list ::= xx_array_item", - /* 433 */ "xx_array_item ::= xx_array_key COLON xx_array_value", - /* 434 */ "xx_array_item ::= xx_array_value", - /* 435 */ "xx_array_key ::= xx_common_expr", - /* 436 */ "xx_array_value ::= xx_common_expr", - /* 437 */ "xx_literal_expr ::= INTEGER", - /* 438 */ "xx_literal_expr ::= CHAR", - /* 439 */ "xx_literal_expr ::= STRING", - /* 440 */ "xx_literal_expr ::= DOUBLE", - /* 441 */ "xx_literal_expr ::= NULL", - /* 442 */ "xx_literal_expr ::= FALSE", - /* 443 */ "xx_literal_expr ::= TRUE", - /* 444 */ "xx_literal_expr ::= IDENTIFIER DOUBLECOLON CONSTANT", - /* 445 */ "xx_literal_expr ::= CONSTANT", - /* 446 */ "xx_literal_expr ::= SBRACKET_OPEN SBRACKET_CLOSE", - /* 447 */ "xx_literal_expr ::= SBRACKET_OPEN xx_literal_array_list SBRACKET_CLOSE", - /* 448 */ "xx_literal_array_list ::= xx_literal_array_list COMMA xx_literal_array_item", - /* 449 */ "xx_literal_array_list ::= xx_literal_array_item", - /* 450 */ "xx_literal_array_item ::= xx_literal_array_key COLON xx_literal_array_value", - /* 451 */ "xx_literal_array_item ::= xx_literal_array_value", - /* 452 */ "xx_literal_array_key ::= IDENTIFIER", - /* 453 */ "xx_literal_array_key ::= STRING", - /* 454 */ "xx_literal_array_key ::= INTEGER", - /* 455 */ "xx_literal_array_value ::= xx_literal_expr", - /* 456 */ "xx_eval_expr ::= xx_common_expr", - /* 457 */ "xx_comment ::= COMMENT", - /* 458 */ "xx_cblock ::= CBLOCK", -}; -#endif /* NDEBUG */ - -/* -** This function returns the symbolic name associated with a token -** value. -*/ -const char *xx_TokenName(int tokenType){ -#ifndef NDEBUG - if( tokenType>0 && tokenType<(sizeof(yyTokenName)/sizeof(yyTokenName[0])) ){ - return yyTokenName[tokenType]; - }else{ - return "Unknown"; - } -#else - return ""; -#endif -} - -/* -** This function allocates a new parser. -** The only argument is a pointer to a function which works like -** malloc. -** -** Inputs: -** A pointer to the function used to allocate memory. -** -** Outputs: -** A pointer to a parser. This pointer is used in subsequent calls -** to xx_ and xx_Free. -*/ -void *xx_Alloc(void *(*mallocProc)(size_t)){ - yyParser *pParser; - pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); - if( pParser ){ - pParser->yyidx = -1; - } - return pParser; -} - -/* The following function deletes the value associated with a -** symbol. The symbol can be either a terminal or nonterminal. -** "yymajor" is the symbol code, and "yypminor" is a pointer to -** the value. -*/ -static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){ - switch( yymajor ){ - /* Here is inserted the actions which take place when a - ** terminal or non-terminal is destroyed. This can happen - ** when the symbol is popped from the stack during a - ** reduce or during error processing or when a parser is - ** being destroyed before it is finished parsing. - ** - ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used - ** inside the C code. - */ - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 24: - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 58: - case 59: - case 60: - case 61: - case 62: - case 63: - case 64: - case 65: - case 66: - case 67: - case 68: - case 69: - case 70: - case 71: - case 72: - case 73: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - case 80: - case 81: - case 82: - case 83: - case 84: - case 85: - case 86: - case 87: - case 88: - case 89: - case 90: - case 91: - case 92: - case 93: - case 94: - case 95: - case 96: - case 97: - case 98: - case 99: - case 100: - case 101: - case 102: - case 103: - case 104: - case 105: - case 106: - case 107: - case 108: - case 109: - case 110: - case 111: - case 112: - case 113: - case 114: - case 115: - case 116: - case 117: - case 118: - case 119: - case 120: - case 121: - case 122: - case 123: - case 124: - case 125: - case 126: -#line 83 "parser.php5.lemon" -{ - if ((yypminor->yy0)) { - if ((yypminor->yy0)->free_flag) { - efree((yypminor->yy0)->token); - } - efree((yypminor->yy0)); - } -} -#line 3719 "parser.php5.c" - break; - case 129: -#line 96 "parser.php5.lemon" -{ - //zval_ptr_dtor((yypminor->yy132)); - //efree((yypminor->yy132)); -} -#line 3727 "parser.php5.c" - break; - default: break; /* If no destructor action specified: do nothing */ - } -} - -/* -** Pop the parser's stack once. -** -** If there is a destructor routine associated with the token which -** is popped from the stack, then call it. -** -** Return the major token number for the symbol popped. -*/ -static int yy_pop_parser_stack(yyParser *pParser){ - YYCODETYPE yymajor; - yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; - - if( pParser->yyidx<0 ) return 0; -#ifndef NDEBUG - if( yyTraceFILE && pParser->yyidx>=0 ){ - fprintf(yyTraceFILE,"%sPopping %s\n", - yyTracePrompt, - yyTokenName[yytos->major]); - } -#endif - yymajor = yytos->major; - yy_destructor( yymajor, &yytos->minor); - pParser->yyidx--; - return yymajor; -} - -/* -** Deallocate and destroy a parser. Destructors are all called for -** all stack elements before shutting the parser down. -** -** Inputs: -**
    -**
  • A pointer to the parser. This should be a pointer -** obtained from xx_Alloc. -**
  • A pointer to a function used to reclaim memory obtained -** from malloc. -**
-*/ -void xx_Free( - void *p, /* The parser to be deleted */ - void (*freeProc)(void*) /* Function used to reclaim memory */ -){ - yyParser *pParser = (yyParser*)p; - if( pParser==0 ) return; - while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser); - (*freeProc)((void*)pParser); -} - -/* -** Find the appropriate action for a parser given the terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_shift_action( - yyParser *pParser, /* The parser */ - int iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - /* if( pParser->yyidx<0 ) return YY_NO_ACTION; */ - i = yy_shift_ofst[stateno]; - if( i==YY_SHIFT_USE_DFLT ){ - return yy_default[stateno]; - } - if( iLookAhead==YYNOCODE ){ - return YY_NO_ACTION; - } - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ -#ifdef YYFALLBACK - int iFallback; /* Fallback token */ - if( iLookAhead %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); - } -#endif - return yy_find_shift_action(pParser, iFallback); - } -#endif - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Find the appropriate action for a parser given the non-terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_reduce_action( - yyParser *pParser, /* The parser */ - int iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - i = yy_reduce_ofst[stateno]; - if( i==YY_REDUCE_USE_DFLT ){ - return yy_default[stateno]; - } - if( iLookAhead==YYNOCODE ){ - return YY_NO_ACTION; - } - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Perform a shift action. -*/ -static void yy_shift( - yyParser *yypParser, /* The parser to be shifted */ - int yyNewState, /* The new state to shift in */ - int yyMajor, /* The major token to shift in */ - YYMINORTYPE *yypMinor /* Pointer ot the minor token to shift in */ -){ - yyStackEntry *yytos; - yypParser->yyidx++; - if( yypParser->yyidx>=YYSTACKDEPTH ){ - xx_ARG_FETCH; - yypParser->yyidx--; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will execute if the parser - ** stack every overflows */ - xx_ARG_STORE; /* Suppress warning about unused %extra_argument var */ - return; - } - yytos = &yypParser->yystack[yypParser->yyidx]; - yytos->stateno = yyNewState; - yytos->major = yyMajor; - yytos->minor = *yypMinor; -#ifndef NDEBUG - if( yyTraceFILE && yypParser->yyidx>0 ){ - int i; - fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState); - fprintf(yyTraceFILE,"%sStack:",yyTracePrompt); - for(i=1; i<=yypParser->yyidx; i++) - fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); - fprintf(yyTraceFILE,"\n"); - } -#endif -} - -/* The following table contains information about every rule that -** is used during the reduce. -*/ -static struct { - YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ - unsigned char nrhs; /* Number of right-hand side symbols in the rule */ -} yyRuleInfo[] = { - { 128, 1 }, - { 129, 1 }, - { 130, 2 }, - { 130, 1 }, - { 131, 1 }, - { 131, 1 }, - { 131, 1 }, - { 131, 1 }, - { 131, 1 }, - { 131, 1 }, - { 131, 1 }, - { 132, 3 }, - { 132, 3 }, - { 139, 3 }, - { 139, 1 }, - { 133, 1 }, - { 133, 3 }, - { 134, 8 }, - { 134, 7 }, - { 134, 9 }, - { 134, 8 }, - { 134, 9 }, - { 134, 10 }, - { 134, 6 }, - { 134, 5 }, - { 134, 7 }, - { 134, 6 }, - { 134, 7 }, - { 134, 8 }, - { 136, 3 }, - { 136, 5 }, - { 135, 3 }, - { 135, 5 }, - { 135, 5 }, - { 135, 7 }, - { 135, 4 }, - { 135, 6 }, - { 135, 6 }, - { 135, 8 }, - { 135, 4 }, - { 135, 6 }, - { 135, 6 }, - { 145, 2 }, - { 145, 3 }, - { 144, 3 }, - { 144, 1 }, - { 147, 1 }, - { 143, 2 }, - { 143, 3 }, - { 146, 1 }, - { 146, 1 }, - { 146, 1 }, - { 146, 2 }, - { 146, 2 }, - { 146, 2 }, - { 146, 2 }, - { 146, 3 }, - { 146, 3 }, - { 148, 1 }, - { 148, 1 }, - { 148, 2 }, - { 149, 2 }, - { 149, 1 }, - { 153, 4 }, - { 153, 3 }, - { 153, 6 }, - { 153, 5 }, - { 153, 5 }, - { 153, 4 }, - { 153, 7 }, - { 153, 6 }, - { 156, 2 }, - { 156, 3 }, - { 157, 3 }, - { 157, 1 }, - { 158, 1 }, - { 158, 2 }, - { 150, 2 }, - { 150, 1 }, - { 151, 2 }, - { 151, 1 }, - { 152, 2 }, - { 152, 1 }, - { 159, 6 }, - { 159, 5 }, - { 159, 6 }, - { 159, 5 }, - { 160, 7 }, - { 160, 6 }, - { 160, 8 }, - { 160, 7 }, - { 160, 8 }, - { 160, 9 }, - { 160, 8 }, - { 160, 7 }, - { 160, 9 }, - { 160, 8 }, - { 160, 9 }, - { 160, 10 }, - { 160, 9 }, - { 160, 8 }, - { 160, 10 }, - { 160, 9 }, - { 160, 10 }, - { 160, 11 }, - { 160, 10 }, - { 160, 9 }, - { 160, 11 }, - { 160, 10 }, - { 160, 11 }, - { 160, 12 }, - { 161, 8 }, - { 161, 9 }, - { 161, 9 }, - { 161, 10 }, - { 161, 6 }, - { 161, 7 }, - { 161, 7 }, - { 161, 8 }, - { 154, 2 }, - { 154, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 140, 1 }, - { 140, 1 }, - { 163, 3 }, - { 163, 1 }, - { 164, 1 }, - { 164, 1 }, - { 164, 1 }, - { 164, 2 }, - { 164, 1 }, - { 164, 1 }, - { 141, 3 }, - { 141, 1 }, - { 168, 1 }, - { 168, 2 }, - { 168, 2 }, - { 168, 3 }, - { 168, 2 }, - { 168, 3 }, - { 168, 3 }, - { 168, 4 }, - { 168, 3 }, - { 168, 4 }, - { 168, 4 }, - { 168, 5 }, - { 168, 2 }, - { 168, 3 }, - { 168, 3 }, - { 168, 4 }, - { 168, 3 }, - { 168, 4 }, - { 168, 4 }, - { 168, 5 }, - { 168, 4 }, - { 168, 5 }, - { 168, 5 }, - { 168, 6 }, - { 168, 5 }, - { 168, 6 }, - { 168, 6 }, - { 168, 7 }, - { 168, 4 }, - { 168, 5 }, - { 168, 5 }, - { 168, 6 }, - { 166, 3 }, - { 167, 5 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 142, 2 }, - { 142, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 190, 1 }, - { 183, 2 }, - { 184, 2 }, - { 171, 4 }, - { 171, 5 }, - { 171, 7 }, - { 171, 8 }, - { 171, 5 }, - { 171, 6 }, - { 171, 9 }, - { 171, 10 }, - { 171, 8 }, - { 171, 9 }, - { 171, 8 }, - { 192, 2 }, - { 192, 1 }, - { 193, 4 }, - { 193, 5 }, - { 188, 4 }, - { 188, 5 }, - { 194, 2 }, - { 194, 1 }, - { 195, 3 }, - { 195, 4 }, - { 195, 3 }, - { 172, 3 }, - { 172, 4 }, - { 185, 4 }, - { 185, 5 }, - { 186, 6 }, - { 186, 7 }, - { 187, 3 }, - { 187, 4 }, - { 187, 5 }, - { 196, 2 }, - { 196, 1 }, - { 197, 5 }, - { 197, 4 }, - { 197, 6 }, - { 197, 7 }, - { 198, 3 }, - { 198, 1 }, - { 199, 1 }, - { 189, 7 }, - { 189, 6 }, - { 189, 8 }, - { 189, 9 }, - { 189, 8 }, - { 189, 10 }, - { 170, 3 }, - { 201, 3 }, - { 201, 1 }, - { 203, 1 }, - { 203, 1 }, - { 203, 1 }, - { 203, 1 }, - { 203, 1 }, - { 203, 1 }, - { 203, 1 }, - { 202, 3 }, - { 202, 5 }, - { 202, 7 }, - { 202, 7 }, - { 202, 7 }, - { 202, 6 }, - { 202, 8 }, - { 202, 5 }, - { 202, 7 }, - { 202, 6 }, - { 202, 8 }, - { 202, 5 }, - { 202, 4 }, - { 202, 6 }, - { 205, 2 }, - { 205, 1 }, - { 206, 3 }, - { 202, 4 }, - { 202, 4 }, - { 202, 2 }, - { 202, 2 }, - { 202, 5 }, - { 202, 5 }, - { 207, 1 }, - { 173, 3 }, - { 208, 3 }, - { 208, 1 }, - { 209, 1 }, - { 178, 2 }, - { 177, 2 }, - { 179, 2 }, - { 176, 2 }, - { 174, 3 }, - { 174, 2 }, - { 175, 3 }, - { 180, 3 }, - { 181, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 214, 3 }, - { 214, 1 }, - { 215, 1 }, - { 215, 3 }, - { 204, 1 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 4 }, - { 200, 4 }, - { 200, 3 }, - { 200, 5 }, - { 200, 5 }, - { 200, 3 }, - { 200, 3 }, - { 200, 4 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 213, 4 }, - { 200, 1 }, - { 200, 2 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 2 }, - { 200, 3 }, - { 200, 2 }, - { 200, 4 }, - { 200, 5 }, - { 200, 2 }, - { 200, 4 }, - { 200, 5 }, - { 200, 4 }, - { 200, 6 }, - { 200, 7 }, - { 200, 5 }, - { 211, 4 }, - { 211, 3 }, - { 211, 6 }, - { 211, 5 }, - { 212, 5 }, - { 212, 6 }, - { 212, 6 }, - { 212, 5 }, - { 212, 7 }, - { 212, 8 }, - { 212, 9 }, - { 212, 10 }, - { 212, 7 }, - { 212, 8 }, - { 210, 6 }, - { 210, 5 }, - { 210, 8 }, - { 210, 7 }, - { 210, 8 }, - { 210, 7 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 5 }, - { 200, 4 }, - { 217, 3 }, - { 217, 1 }, - { 218, 1 }, - { 218, 3 }, - { 200, 5 }, - { 200, 6 }, - { 200, 6 }, - { 200, 7 }, - { 200, 3 }, - { 216, 3 }, - { 216, 1 }, - { 219, 3 }, - { 219, 1 }, - { 220, 1 }, - { 221, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 3 }, - { 155, 1 }, - { 155, 2 }, - { 155, 3 }, - { 222, 3 }, - { 222, 1 }, - { 223, 3 }, - { 223, 1 }, - { 224, 1 }, - { 224, 1 }, - { 224, 1 }, - { 225, 1 }, - { 191, 1 }, - { 137, 1 }, - { 138, 1 }, -}; - -static void yy_accept(yyParser*); /* Forward Declaration */ - -/* -** Perform a reduce action and the shift that must immediately -** follow the reduce. -*/ -static void yy_reduce( - yyParser *yypParser, /* The parser */ - int yyruleno /* Number of the rule by which to reduce */ -){ - int yygoto; /* The next state */ - int yyact; /* The next action */ - YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ - yyStackEntry *yymsp; /* The top of the parser's stack */ - int yysize; /* Amount to pop the stack */ - xx_ARG_FETCH; - yymsp = &yypParser->yystack[yypParser->yyidx]; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno>=0 - && yyruleno - ** { ... } // User supplied code - ** #line - ** break; - */ - case 0: -#line 92 "parser.php5.lemon" -{ - status->ret = yymsp[0].minor.yy132; -} -#line 4403 "parser.php5.c" - break; - case 1: - case 4: - case 5: - case 7: - case 8: - case 9: - case 10: - case 193: - case 194: - case 195: - case 196: - case 197: - case 198: - case 199: - case 200: - case 201: - case 202: - case 203: - case 204: - case 205: - case 206: - case 207: - case 208: - case 209: - case 210: - case 211: - case 212: - case 213: - case 214: - case 215: - case 298: - case 327: - case 373: - case 417: - case 418: - case 419: - case 435: - case 436: - case 455: - case 456: -#line 101 "parser.php5.lemon" -{ - yygotominor.yy132 = yymsp[0].minor.yy132; -} -#line 4449 "parser.php5.c" - break; - case 2: - case 61: - case 77: - case 79: - case 81: - case 119: - case 191: - case 230: - case 236: - case 250: - case 289: -#line 105 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_list(yymsp[-1].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); -} -#line 4466 "parser.php5.c" - break; - case 3: - case 14: - case 45: - case 62: - case 74: - case 78: - case 80: - case 82: - case 120: - case 134: - case 142: - case 192: - case 231: - case 237: - case 251: - case 257: - case 267: - case 290: - case 301: - case 324: - case 423: - case 432: - case 449: -#line 109 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_list(NULL, yymsp[0].minor.yy132, status->scanner_state); -} -#line 4495 "parser.php5.c" - break; - case 6: -#line 121 "parser.php5.lemon" -{ - yygotominor.yy132 = yymsp[0].minor.yy132; -} -#line 4502 "parser.php5.c" - break; - case 11: -#line 141 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_namespace(yymsp[-1].minor.yy0, status->scanner_state); - yy_destructor(48,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4511 "parser.php5.c" - break; - case 12: -#line 145 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_use_aliases(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(51,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4520 "parser.php5.c" - break; - case 13: - case 44: - case 73: - case 141: - case 266: - case 300: - case 323: - case 422: - case 431: - case 448: -#line 149 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_list(yymsp[-2].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(7,&yymsp[-1].minor); -} -#line 4537 "parser.php5.c" - break; - case 15: -#line 157 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_use_aliases_item(yymsp[0].minor.yy0, NULL, status->scanner_state); -} -#line 4544 "parser.php5.c" - break; - case 16: -#line 161 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_use_aliases_item(yymsp[-2].minor.yy0, yymsp[0].minor.yy0, status->scanner_state); - yy_destructor(52,&yymsp[-1].minor); -} -#line 4552 "parser.php5.c" - break; - case 17: -#line 168 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-6].minor.yy0, NULL, NULL, NULL, yymsp[-2].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4565 "parser.php5.c" - break; - case 18: -#line 173 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-5].minor.yy0, NULL, NULL, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4577 "parser.php5.c" - break; - case 19: -#line 178 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-7].minor.yy0, yymsp[-5].minor.yy132, NULL, NULL, yymsp[-2].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4590 "parser.php5.c" - break; - case 20: -#line 183 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-6].minor.yy0, yymsp[-4].minor.yy132, NULL, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4602 "parser.php5.c" - break; - case 21: -#line 188 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-7].minor.yy0, NULL, yymsp[-1].minor.yy132, NULL, yymsp[-3].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4615 "parser.php5.c" - break; - case 22: -#line 193 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-8].minor.yy0, yymsp[-6].minor.yy132, yymsp[-1].minor.yy132, NULL, yymsp[-3].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-9].minor); - yy_destructor(54,&yymsp[-7].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4628 "parser.php5.c" - break; - case 23: -#line 198 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-4].minor.yy0, NULL, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4640 "parser.php5.c" - break; - case 24: -#line 203 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-3].minor.yy0, NULL, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4651 "parser.php5.c" - break; - case 25: -#line 208 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-5].minor.yy0, yymsp[-3].minor.yy132, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4663 "parser.php5.c" - break; - case 26: -#line 213 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-4].minor.yy0, yymsp[-2].minor.yy132, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4674 "parser.php5.c" - break; - case 27: -#line 218 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4686 "parser.php5.c" - break; - case 28: -#line 223 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_function(yymsp[-6].minor.yy0, yymsp[-4].minor.yy132, yymsp[-1].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4698 "parser.php5.c" - break; - case 29: -#line 227 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_interface(yymsp[-1].minor.yy0, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(57,&yymsp[-2].minor); -} -#line 4706 "parser.php5.c" - break; - case 30: -#line 231 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_interface(yymsp[-3].minor.yy0, yymsp[0].minor.yy132, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(57,&yymsp[-4].minor); - yy_destructor(58,&yymsp[-2].minor); -} -#line 4715 "parser.php5.c" - break; - case 31: -#line 235 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class(yymsp[-1].minor.yy0, yymsp[0].minor.yy132, 0, 0, NULL, NULL, status->scanner_state); - yy_destructor(59,&yymsp[-2].minor); -} -#line 4723 "parser.php5.c" - break; - case 32: -#line 239 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class(yymsp[-3].minor.yy0, yymsp[0].minor.yy132, 0, 0, yymsp[-1].minor.yy0, NULL, status->scanner_state); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(58,&yymsp[-2].minor); -} -#line 4732 "parser.php5.c" - break; - case 33: -#line 243 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class(yymsp[-3].minor.yy0, yymsp[0].minor.yy132, 0, 0, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(60,&yymsp[-2].minor); -} -#line 4741 "parser.php5.c" - break; - case 34: -#line 247 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class(yymsp[-5].minor.yy0, yymsp[0].minor.yy132, 0, 0, yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(59,&yymsp[-6].minor); - yy_destructor(58,&yymsp[-4].minor); - yy_destructor(60,&yymsp[-2].minor); -} -#line 4751 "parser.php5.c" - break; - case 35: -#line 251 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class(yymsp[-1].minor.yy0, yymsp[0].minor.yy132, 1, 0, NULL, NULL, status->scanner_state); - yy_destructor(61,&yymsp[-3].minor); - yy_destructor(59,&yymsp[-2].minor); -} -#line 4760 "parser.php5.c" - break; - case 36: -#line 255 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class(yymsp[-3].minor.yy0, yymsp[0].minor.yy132, 1, 0, yymsp[-1].minor.yy0, NULL, status->scanner_state); - yy_destructor(61,&yymsp[-5].minor); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(58,&yymsp[-2].minor); -} -#line 4770 "parser.php5.c" - break; - case 37: -#line 259 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class(yymsp[-3].minor.yy0, yymsp[0].minor.yy132, 1, 0, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(61,&yymsp[-5].minor); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(60,&yymsp[-2].minor); -} -#line 4780 "parser.php5.c" - break; - case 38: -#line 263 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class(yymsp[-5].minor.yy0, yymsp[0].minor.yy132, 1, 0, yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(61,&yymsp[-7].minor); - yy_destructor(59,&yymsp[-6].minor); - yy_destructor(58,&yymsp[-4].minor); - yy_destructor(60,&yymsp[-2].minor); -} -#line 4791 "parser.php5.c" - break; - case 39: -#line 267 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class(yymsp[-1].minor.yy0, yymsp[0].minor.yy132, 0, 1, NULL, NULL, status->scanner_state); - yy_destructor(62,&yymsp[-3].minor); - yy_destructor(59,&yymsp[-2].minor); -} -#line 4800 "parser.php5.c" - break; - case 40: -#line 271 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class(yymsp[-3].minor.yy0, yymsp[0].minor.yy132, 0, 1, yymsp[-1].minor.yy0, NULL, status->scanner_state); - yy_destructor(62,&yymsp[-5].minor); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(58,&yymsp[-2].minor); -} -#line 4810 "parser.php5.c" - break; - case 41: -#line 275 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class(yymsp[-3].minor.yy0, yymsp[0].minor.yy132, 0, 1, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(62,&yymsp[-5].minor); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(60,&yymsp[-2].minor); -} -#line 4820 "parser.php5.c" - break; - case 42: - case 71: -#line 279 "parser.php5.lemon" -{ - yygotominor.yy132 = NULL; - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4830 "parser.php5.c" - break; - case 43: - case 72: -#line 283 "parser.php5.lemon" -{ - yygotominor.yy132 = yymsp[-1].minor.yy132; - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4840 "parser.php5.c" - break; - case 46: - case 258: - case 375: - case 452: -#line 295 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_IDENTIFIER, yymsp[0].minor.yy0, status->scanner_state); -} -#line 4850 "parser.php5.c" - break; - case 47: -#line 299 "parser.php5.lemon" -{ - yygotominor.yy132 = NULL; - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4859 "parser.php5.c" - break; - case 48: -#line 303 "parser.php5.lemon" -{ - yygotominor.yy132 = yymsp[-1].minor.yy132; - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4868 "parser.php5.c" - break; - case 49: -#line 307 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_definition(yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); -} -#line 4875 "parser.php5.c" - break; - case 50: -#line 311 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_definition(NULL, NULL, yymsp[0].minor.yy132, status->scanner_state); -} -#line 4882 "parser.php5.c" - break; - case 51: -#line 315 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_definition(NULL, yymsp[0].minor.yy132, NULL, status->scanner_state); -} -#line 4889 "parser.php5.c" - break; - case 52: -#line 319 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_definition(yymsp[-1].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); -} -#line 4896 "parser.php5.c" - break; - case 53: -#line 323 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_definition(yymsp[-1].minor.yy132, NULL, yymsp[0].minor.yy132, status->scanner_state); -} -#line 4903 "parser.php5.c" - break; - case 54: -#line 327 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_definition(yymsp[0].minor.yy132, NULL, yymsp[-1].minor.yy132, status->scanner_state); -} -#line 4910 "parser.php5.c" - break; - case 55: -#line 331 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_definition(NULL, yymsp[0].minor.yy132, yymsp[-1].minor.yy132, status->scanner_state); -} -#line 4917 "parser.php5.c" - break; - case 56: -#line 335 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_definition(yymsp[-2].minor.yy132, yymsp[0].minor.yy132, yymsp[-1].minor.yy132, status->scanner_state); -} -#line 4924 "parser.php5.c" - break; - case 57: -#line 339 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_definition(yymsp[-1].minor.yy132, yymsp[0].minor.yy132, yymsp[-2].minor.yy132, status->scanner_state); -} -#line 4931 "parser.php5.c" - break; - case 58: -#line 343 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_interface_definition(NULL, yymsp[0].minor.yy132, status->scanner_state); -} -#line 4938 "parser.php5.c" - break; - case 59: -#line 347 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_interface_definition(yymsp[0].minor.yy132, NULL, status->scanner_state); -} -#line 4945 "parser.php5.c" - break; - case 60: -#line 351 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_interface_definition(yymsp[0].minor.yy132, yymsp[-1].minor.yy132, status->scanner_state); -} -#line 4952 "parser.php5.c" - break; - case 63: -#line 364 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_property(yymsp[-2].minor.yy132, yymsp[-1].minor.yy0, NULL, yymsp[-3].minor.yy0, NULL, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 4960 "parser.php5.c" - break; - case 64: -#line 368 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_property(yymsp[-2].minor.yy132, yymsp[-1].minor.yy0, NULL, NULL, NULL, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 4968 "parser.php5.c" - break; - case 65: -#line 372 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_property(yymsp[-4].minor.yy132, yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, yymsp[-5].minor.yy0, NULL, status->scanner_state); - yy_destructor(64,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4977 "parser.php5.c" - break; - case 66: -#line 376 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_property(yymsp[-4].minor.yy132, yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(64,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4986 "parser.php5.c" - break; - case 67: -#line 380 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_property(yymsp[-3].minor.yy132, yymsp[-2].minor.yy0, NULL, yymsp[-4].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 4994 "parser.php5.c" - break; - case 68: -#line 384 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_property(yymsp[-3].minor.yy132, yymsp[-2].minor.yy0, NULL, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 5002 "parser.php5.c" - break; - case 69: -#line 388 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_property(yymsp[-5].minor.yy132, yymsp[-4].minor.yy0, yymsp[-2].minor.yy132, yymsp[-6].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(64,&yymsp[-3].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5011 "parser.php5.c" - break; - case 70: -#line 392 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_property(yymsp[-5].minor.yy132, yymsp[-4].minor.yy0, yymsp[-2].minor.yy132, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(64,&yymsp[-3].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5020 "parser.php5.c" - break; - case 75: -#line 412 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_property_shortcut(NULL, yymsp[0].minor.yy0, status->scanner_state); -} -#line 5027 "parser.php5.c" - break; - case 76: -#line 416 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_property_shortcut(yymsp[-1].minor.yy0, yymsp[0].minor.yy0, status->scanner_state); -} -#line 5034 "parser.php5.c" - break; - case 83: - case 85: -#line 445 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_const(yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, yymsp[-5].minor.yy0, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(64,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5045 "parser.php5.c" - break; - case 84: - case 86: -#line 449 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_const(yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, NULL, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(64,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5056 "parser.php5.c" - break; - case 87: -#line 464 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-6].minor.yy132, yymsp[-4].minor.yy0, NULL, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5068 "parser.php5.c" - break; - case 88: - case 115: -#line 469 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-5].minor.yy132, yymsp[-3].minor.yy0, NULL, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5080 "parser.php5.c" - break; - case 89: -#line 474 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-7].minor.yy132, yymsp[-5].minor.yy0, yymsp[-3].minor.yy132, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5092 "parser.php5.c" - break; - case 90: - case 116: -#line 479 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-6].minor.yy132, yymsp[-4].minor.yy0, yymsp[-2].minor.yy132, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5104 "parser.php5.c" - break; - case 91: -#line 484 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-7].minor.yy132, yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5116 "parser.php5.c" - break; - case 92: -#line 488 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-8].minor.yy132, yymsp[-6].minor.yy0, yymsp[-4].minor.yy132, yymsp[-1].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5128 "parser.php5.c" - break; - case 93: -#line 492 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-6].minor.yy132, yymsp[-4].minor.yy0, NULL, NULL, yymsp[-7].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5140 "parser.php5.c" - break; - case 94: - case 117: -#line 496 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-5].minor.yy132, yymsp[-3].minor.yy0, NULL, NULL, yymsp[-6].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5152 "parser.php5.c" - break; - case 95: -#line 500 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-7].minor.yy132, yymsp[-5].minor.yy0, yymsp[-3].minor.yy132, NULL, yymsp[-8].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5164 "parser.php5.c" - break; - case 96: - case 118: -#line 504 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-6].minor.yy132, yymsp[-4].minor.yy0, yymsp[-2].minor.yy132, NULL, yymsp[-7].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5176 "parser.php5.c" - break; - case 97: -#line 508 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-7].minor.yy132, yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy132, yymsp[-8].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5188 "parser.php5.c" - break; - case 98: -#line 512 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-8].minor.yy132, yymsp[-6].minor.yy0, yymsp[-4].minor.yy132, yymsp[-1].minor.yy132, yymsp[-9].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5200 "parser.php5.c" - break; - case 99: -#line 516 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-8].minor.yy132, yymsp[-6].minor.yy0, NULL, NULL, NULL, yymsp[-2].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5213 "parser.php5.c" - break; - case 100: - case 111: -#line 520 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-7].minor.yy132, yymsp[-5].minor.yy0, NULL, NULL, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5226 "parser.php5.c" - break; - case 101: -#line 524 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-9].minor.yy132, yymsp[-7].minor.yy0, yymsp[-5].minor.yy132, NULL, NULL, yymsp[-2].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5239 "parser.php5.c" - break; - case 102: - case 112: -#line 528 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-8].minor.yy132, yymsp[-6].minor.yy0, yymsp[-4].minor.yy132, NULL, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5252 "parser.php5.c" - break; - case 103: -#line 532 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-9].minor.yy132, yymsp[-7].minor.yy0, NULL, yymsp[-1].minor.yy132, NULL, yymsp[-3].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5265 "parser.php5.c" - break; - case 104: -#line 536 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-10].minor.yy132, yymsp[-8].minor.yy0, yymsp[-6].minor.yy132, yymsp[-1].minor.yy132, NULL, yymsp[-3].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-9].minor); - yy_destructor(54,&yymsp[-7].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5278 "parser.php5.c" - break; - case 105: -#line 540 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-8].minor.yy132, yymsp[-6].minor.yy0, NULL, NULL, yymsp[-9].minor.yy0, yymsp[-2].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5291 "parser.php5.c" - break; - case 106: - case 113: -#line 544 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-7].minor.yy132, yymsp[-5].minor.yy0, NULL, NULL, yymsp[-8].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5304 "parser.php5.c" - break; - case 107: -#line 548 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-9].minor.yy132, yymsp[-7].minor.yy0, yymsp[-5].minor.yy132, NULL, yymsp[-10].minor.yy0, yymsp[-2].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5317 "parser.php5.c" - break; - case 108: - case 114: -#line 552 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-8].minor.yy132, yymsp[-6].minor.yy0, yymsp[-4].minor.yy132, NULL, yymsp[-9].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5330 "parser.php5.c" - break; - case 109: -#line 556 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-9].minor.yy132, yymsp[-7].minor.yy0, NULL, yymsp[-1].minor.yy132, yymsp[-10].minor.yy0, yymsp[-3].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5343 "parser.php5.c" - break; - case 110: -#line 560 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_class_method(yymsp[-10].minor.yy132, yymsp[-8].minor.yy0, yymsp[-6].minor.yy132, yymsp[-1].minor.yy132, yymsp[-11].minor.yy0, yymsp[-3].minor.yy132, status->scanner_state); - yy_destructor(53,&yymsp[-9].minor); - yy_destructor(54,&yymsp[-7].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5356 "parser.php5.c" - break; - case 121: -#line 606 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("internal"); - yy_destructor(1,&yymsp[0].minor); -} -#line 5364 "parser.php5.c" - break; - case 122: -#line 610 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("public"); - yy_destructor(2,&yymsp[0].minor); -} -#line 5372 "parser.php5.c" - break; - case 123: -#line 614 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("protected"); - yy_destructor(3,&yymsp[0].minor); -} -#line 5380 "parser.php5.c" - break; - case 124: -#line 618 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("private"); - yy_destructor(5,&yymsp[0].minor); -} -#line 5388 "parser.php5.c" - break; - case 125: -#line 622 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("static"); - yy_destructor(4,&yymsp[0].minor); -} -#line 5396 "parser.php5.c" - break; - case 126: -#line 626 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("scoped"); - yy_destructor(6,&yymsp[0].minor); -} -#line 5404 "parser.php5.c" - break; - case 127: -#line 630 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("inline"); - yy_destructor(67,&yymsp[0].minor); -} -#line 5412 "parser.php5.c" - break; - case 128: -#line 634 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("deprecated"); - yy_destructor(68,&yymsp[0].minor); -} -#line 5420 "parser.php5.c" - break; - case 129: -#line 638 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("abstract"); - yy_destructor(61,&yymsp[0].minor); -} -#line 5428 "parser.php5.c" - break; - case 130: -#line 642 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("final"); - yy_destructor(62,&yymsp[0].minor); -} -#line 5436 "parser.php5.c" - break; - case 131: -#line 647 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_return_type(1, NULL, status->scanner_state); - yy_destructor(69,&yymsp[0].minor); -} -#line 5444 "parser.php5.c" - break; - case 132: -#line 651 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_return_type(0, yymsp[0].minor.yy132, status->scanner_state); -} -#line 5451 "parser.php5.c" - break; - case 133: - case 256: -#line 655 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_list(yymsp[-2].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(16,&yymsp[-1].minor); -} -#line 5460 "parser.php5.c" - break; - case 135: -#line 663 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_return_type_item(yymsp[0].minor.yy132, NULL, 0, 0, status->scanner_state); -} -#line 5467 "parser.php5.c" - break; - case 136: -#line 667 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_return_type_item(xx_ret_type(XX_T_TYPE_NULL), NULL, 0, 0, status->scanner_state); - yy_destructor(70,&yymsp[0].minor); -} -#line 5475 "parser.php5.c" - break; - case 137: -#line 671 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_return_type_item(xx_ret_type(XX_T_TYPE_THIS), NULL, 0, 0, status->scanner_state); - yy_destructor(71,&yymsp[0].minor); -} -#line 5483 "parser.php5.c" - break; - case 138: -#line 675 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_return_type_item(yymsp[-1].minor.yy132, NULL, 1, 0, status->scanner_state); - yy_destructor(42,&yymsp[0].minor); -} -#line 5491 "parser.php5.c" - break; - case 139: -#line 679 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_return_type_item(NULL, yymsp[0].minor.yy132, 0, 0, status->scanner_state); -} -#line 5498 "parser.php5.c" - break; - case 140: -#line 683 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_return_type_item(NULL, yymsp[0].minor.yy132, 0, 1, status->scanner_state); -} -#line 5505 "parser.php5.c" - break; - case 143: -#line 699 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, NULL, NULL, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); -} -#line 5512 "parser.php5.c" - break; - case 144: -#line 704 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, NULL, NULL, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5520 "parser.php5.c" - break; - case 145: -#line 709 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, NULL, NULL, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-1].minor); -} -#line 5528 "parser.php5.c" - break; - case 146: -#line 714 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, NULL, NULL, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-2].minor); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5537 "parser.php5.c" - break; - case 147: -#line 719 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, yymsp[-1].minor.yy132, NULL, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); -} -#line 5544 "parser.php5.c" - break; - case 148: -#line 724 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, yymsp[-2].minor.yy132, NULL, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5552 "parser.php5.c" - break; - case 149: -#line 729 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, yymsp[-1].minor.yy132, NULL, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-2].minor); -} -#line 5560 "parser.php5.c" - break; - case 150: -#line 734 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, yymsp[-2].minor.yy132, NULL, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-3].minor); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5569 "parser.php5.c" - break; - case 151: -#line 739 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, yymsp[-2].minor.yy132, NULL, yymsp[0].minor.yy0, NULL, 1, 0, status->scanner_state); - yy_destructor(42,&yymsp[-1].minor); -} -#line 5577 "parser.php5.c" - break; - case 152: -#line 744 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, yymsp[-3].minor.yy132, NULL, yymsp[0].minor.yy0, NULL, 1, 1, status->scanner_state); - yy_destructor(42,&yymsp[-2].minor); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5586 "parser.php5.c" - break; - case 153: -#line 749 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, yymsp[-2].minor.yy132, NULL, yymsp[0].minor.yy0, NULL, 1, 0, status->scanner_state); - yy_destructor(65,&yymsp[-3].minor); - yy_destructor(42,&yymsp[-1].minor); -} -#line 5595 "parser.php5.c" - break; - case 154: -#line 754 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, yymsp[-3].minor.yy132, NULL, yymsp[0].minor.yy0, NULL, 1, 1, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(42,&yymsp[-2].minor); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5605 "parser.php5.c" - break; - case 155: -#line 759 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, NULL, yymsp[-1].minor.yy132, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); -} -#line 5612 "parser.php5.c" - break; - case 156: -#line 764 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, NULL, yymsp[-2].minor.yy132, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5620 "parser.php5.c" - break; - case 157: -#line 769 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, NULL, yymsp[-1].minor.yy132, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-2].minor); -} -#line 5628 "parser.php5.c" - break; - case 158: -#line 774 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, NULL, yymsp[-2].minor.yy132, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-3].minor); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5637 "parser.php5.c" - break; - case 159: -#line 779 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, NULL, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 0, status->scanner_state); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5645 "parser.php5.c" - break; - case 160: -#line 784 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, NULL, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5654 "parser.php5.c" - break; - case 161: -#line 789 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, NULL, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5663 "parser.php5.c" - break; - case 162: -#line 794 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, NULL, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5673 "parser.php5.c" - break; - case 163: -#line 799 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, yymsp[-3].minor.yy132, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 0, status->scanner_state); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5681 "parser.php5.c" - break; - case 164: -#line 804 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, yymsp[-4].minor.yy132, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5690 "parser.php5.c" - break; - case 165: -#line 809 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, yymsp[-3].minor.yy132, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5699 "parser.php5.c" - break; - case 166: -#line 814 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, yymsp[-4].minor.yy132, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-5].minor); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5709 "parser.php5.c" - break; - case 167: -#line 819 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, yymsp[-4].minor.yy132, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 1, 0, status->scanner_state); - yy_destructor(42,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5718 "parser.php5.c" - break; - case 168: -#line 824 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, yymsp[-5].minor.yy132, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 1, 1, status->scanner_state); - yy_destructor(42,&yymsp[-4].minor); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5728 "parser.php5.c" - break; - case 169: -#line 829 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, yymsp[-4].minor.yy132, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 1, 0, status->scanner_state); - yy_destructor(65,&yymsp[-5].minor); - yy_destructor(42,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5738 "parser.php5.c" - break; - case 170: -#line 834 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, yymsp[-5].minor.yy132, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 1, 1, status->scanner_state); - yy_destructor(65,&yymsp[-6].minor); - yy_destructor(42,&yymsp[-4].minor); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5749 "parser.php5.c" - break; - case 171: -#line 839 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, NULL, yymsp[-3].minor.yy132, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 0, status->scanner_state); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5757 "parser.php5.c" - break; - case 172: -#line 844 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(0, NULL, yymsp[-4].minor.yy132, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5766 "parser.php5.c" - break; - case 173: -#line 849 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, NULL, yymsp[-3].minor.yy132, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5775 "parser.php5.c" - break; - case 174: -#line 854 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_parameter(1, NULL, yymsp[-4].minor.yy132, yymsp[-2].minor.yy0, yymsp[0].minor.yy132, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-5].minor); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5785 "parser.php5.c" - break; - case 175: -#line 859 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_IDENTIFIER, yymsp[-1].minor.yy0, status->scanner_state); - yy_destructor(22,&yymsp[-2].minor); - yy_destructor(23,&yymsp[0].minor); -} -#line 5794 "parser.php5.c" - break; - case 176: -#line 863 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_IDENTIFIER, yymsp[-3].minor.yy0, status->scanner_state); - yy_destructor(22,&yymsp[-4].minor); - yy_destructor(46,&yymsp[-2].minor); - yy_destructor(72,&yymsp[-1].minor); - yy_destructor(23,&yymsp[0].minor); -} -#line 5805 "parser.php5.c" - break; - case 177: -#line 867 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_INTEGER); - yy_destructor(73,&yymsp[0].minor); -} -#line 5813 "parser.php5.c" - break; - case 178: -#line 871 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_UINTEGER); - yy_destructor(74,&yymsp[0].minor); -} -#line 5821 "parser.php5.c" - break; - case 179: -#line 875 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_LONG); - yy_destructor(75,&yymsp[0].minor); -} -#line 5829 "parser.php5.c" - break; - case 180: -#line 879 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_ULONG); - yy_destructor(76,&yymsp[0].minor); -} -#line 5837 "parser.php5.c" - break; - case 181: -#line 883 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_CHAR); - yy_destructor(77,&yymsp[0].minor); -} -#line 5845 "parser.php5.c" - break; - case 182: -#line 887 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_UCHAR); - yy_destructor(78,&yymsp[0].minor); -} -#line 5853 "parser.php5.c" - break; - case 183: -#line 891 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_DOUBLE); - yy_destructor(79,&yymsp[0].minor); -} -#line 5861 "parser.php5.c" - break; - case 184: -#line 895 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_BOOL); - yy_destructor(80,&yymsp[0].minor); -} -#line 5869 "parser.php5.c" - break; - case 185: -#line 899 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_STRING); - yy_destructor(81,&yymsp[0].minor); -} -#line 5877 "parser.php5.c" - break; - case 186: -#line 903 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_ARRAY); - yy_destructor(82,&yymsp[0].minor); -} -#line 5885 "parser.php5.c" - break; - case 187: -#line 907 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_VAR); - yy_destructor(83,&yymsp[0].minor); -} -#line 5893 "parser.php5.c" - break; - case 188: -#line 911 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_CALLABLE); - yy_destructor(84,&yymsp[0].minor); -} -#line 5901 "parser.php5.c" - break; - case 189: -#line 915 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_RESOURCE); - yy_destructor(85,&yymsp[0].minor); -} -#line 5909 "parser.php5.c" - break; - case 190: -#line 919 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_type(XX_TYPE_OBJECT); - yy_destructor(86,&yymsp[0].minor); -} -#line 5917 "parser.php5.c" - break; - case 216: -#line 1025 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_empty_statement(status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 5925 "parser.php5.c" - break; - case 217: -#line 1029 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_break_statement(status->scanner_state); - yy_destructor(87,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5934 "parser.php5.c" - break; - case 218: -#line 1033 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_continue_statement(status->scanner_state); - yy_destructor(88,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5943 "parser.php5.c" - break; - case 219: -#line 1038 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-2].minor.yy132, NULL, NULL, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5953 "parser.php5.c" - break; - case 220: -#line 1043 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-3].minor.yy132, NULL, NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(89,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[-1].minor); -} -#line 5963 "parser.php5.c" - break; - case 221: -#line 1048 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-5].minor.yy132, NULL, NULL, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(90,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5976 "parser.php5.c" - break; - case 222: -#line 1053 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-6].minor.yy132, NULL, yymsp[-3].minor.yy132, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-7].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-4].minor); - yy_destructor(90,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5989 "parser.php5.c" - break; - case 223: -#line 1058 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-3].minor.yy132, yymsp[-1].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5999 "parser.php5.c" - break; - case 224: -#line 1063 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-4].minor.yy132, yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-3].minor); - yy_destructor(56,&yymsp[-1].minor); -} -#line 6009 "parser.php5.c" - break; - case 225: -#line 1068 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-7].minor.yy132, yymsp[-5].minor.yy132, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(89,&yymsp[-8].minor); - yy_destructor(55,&yymsp[-6].minor); - yy_destructor(56,&yymsp[-4].minor); - yy_destructor(90,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6022 "parser.php5.c" - break; - case 226: -#line 1073 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-8].minor.yy132, yymsp[-6].minor.yy132, yymsp[-4].minor.yy132, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(89,&yymsp[-9].minor); - yy_destructor(55,&yymsp[-7].minor); - yy_destructor(56,&yymsp[-5].minor); - yy_destructor(90,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6035 "parser.php5.c" - break; - case 227: -#line 1078 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-6].minor.yy132, yymsp[-4].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-7].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(90,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6048 "parser.php5.c" - break; - case 228: -#line 1083 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-7].minor.yy132, yymsp[-5].minor.yy132, yymsp[-3].minor.yy132, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-8].minor); - yy_destructor(55,&yymsp[-6].minor); - yy_destructor(56,&yymsp[-4].minor); - yy_destructor(90,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6061 "parser.php5.c" - break; - case 229: -#line 1088 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-6].minor.yy132, NULL, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(89,&yymsp[-7].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-4].minor); - yy_destructor(90,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6074 "parser.php5.c" - break; - case 232: -#line 1101 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-2].minor.yy132, NULL, NULL, NULL, status->scanner_state); - yy_destructor(91,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6084 "parser.php5.c" - break; - case 233: -#line 1106 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_if_statement(yymsp[-3].minor.yy132, yymsp[-1].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(91,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6094 "parser.php5.c" - break; - case 234: -#line 1110 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_switch_statement(yymsp[-2].minor.yy132, NULL, status->scanner_state); - yy_destructor(92,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6104 "parser.php5.c" - break; - case 235: -#line 1114 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_switch_statement(yymsp[-3].minor.yy132, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(92,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6114 "parser.php5.c" - break; - case 238: -#line 1126 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_case_clause(yymsp[-1].minor.yy132, NULL, status->scanner_state); - yy_destructor(93,&yymsp[-2].minor); - yy_destructor(94,&yymsp[0].minor); -} -#line 6123 "parser.php5.c" - break; - case 239: -#line 1130 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_case_clause(yymsp[-2].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(93,&yymsp[-3].minor); - yy_destructor(94,&yymsp[-1].minor); -} -#line 6132 "parser.php5.c" - break; - case 240: -#line 1134 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_case_clause(NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(95,&yymsp[-2].minor); - yy_destructor(94,&yymsp[-1].minor); -} -#line 6141 "parser.php5.c" - break; - case 241: -#line 1138 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_loop_statement(NULL, status->scanner_state); - yy_destructor(96,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6151 "parser.php5.c" - break; - case 242: -#line 1142 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_loop_statement(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(96,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6161 "parser.php5.c" - break; - case 243: -#line 1146 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_while_statement(yymsp[-2].minor.yy132, NULL, status->scanner_state); - yy_destructor(97,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6171 "parser.php5.c" - break; - case 244: -#line 1150 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_while_statement(yymsp[-3].minor.yy132, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(97,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6181 "parser.php5.c" - break; - case 245: -#line 1154 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_do_while_statement(yymsp[-1].minor.yy132, NULL, status->scanner_state); - yy_destructor(98,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(97,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6193 "parser.php5.c" - break; - case 246: -#line 1158 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_do_while_statement(yymsp[-1].minor.yy132, yymsp[-4].minor.yy132, status->scanner_state); - yy_destructor(98,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(97,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6205 "parser.php5.c" - break; - case 247: -#line 1162 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_try_catch_statement(NULL, NULL, status->scanner_state); - yy_destructor(99,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6215 "parser.php5.c" - break; - case 248: -#line 1166 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_try_catch_statement(yymsp[-1].minor.yy132, NULL, status->scanner_state); - yy_destructor(99,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6225 "parser.php5.c" - break; - case 249: -#line 1170 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_try_catch_statement(yymsp[-2].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(99,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-3].minor); - yy_destructor(56,&yymsp[-1].minor); -} -#line 6235 "parser.php5.c" - break; - case 252: -#line 1182 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_catch_statement(yymsp[-3].minor.yy132, NULL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(100,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6245 "parser.php5.c" - break; - case 253: -#line 1186 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_catch_statement(yymsp[-2].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(100,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6255 "parser.php5.c" - break; - case 254: -#line 1190 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_catch_statement(yymsp[-4].minor.yy132, xx_ret_literal(XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state), NULL, status->scanner_state); - yy_destructor(100,&yymsp[-5].minor); - yy_destructor(7,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6266 "parser.php5.c" - break; - case 255: -#line 1194 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_catch_statement(yymsp[-5].minor.yy132, xx_ret_literal(XX_T_IDENTIFIER, yymsp[-3].minor.yy0, status->scanner_state), yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(100,&yymsp[-6].minor); - yy_destructor(7,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6277 "parser.php5.c" - break; - case 259: -#line 1210 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_for_statement(yymsp[-3].minor.yy132, NULL, yymsp[-5].minor.yy0, 0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(101,&yymsp[-6].minor); - yy_destructor(102,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6288 "parser.php5.c" - break; - case 260: -#line 1214 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_for_statement(yymsp[-2].minor.yy132, NULL, yymsp[-4].minor.yy0, 0, NULL, status->scanner_state); - yy_destructor(101,&yymsp[-5].minor); - yy_destructor(102,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6299 "parser.php5.c" - break; - case 261: -#line 1218 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_for_statement(yymsp[-3].minor.yy132, NULL, yymsp[-6].minor.yy0, 1, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(101,&yymsp[-7].minor); - yy_destructor(102,&yymsp[-5].minor); - yy_destructor(103,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6311 "parser.php5.c" - break; - case 262: -#line 1222 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_for_statement(yymsp[-3].minor.yy132, yymsp[-7].minor.yy0, yymsp[-5].minor.yy0, 0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(101,&yymsp[-8].minor); - yy_destructor(7,&yymsp[-6].minor); - yy_destructor(102,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6323 "parser.php5.c" - break; - case 263: -#line 1226 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_for_statement(yymsp[-2].minor.yy132, yymsp[-6].minor.yy0, yymsp[-4].minor.yy0, 0, NULL, status->scanner_state); - yy_destructor(101,&yymsp[-7].minor); - yy_destructor(7,&yymsp[-5].minor); - yy_destructor(102,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6335 "parser.php5.c" - break; - case 264: -#line 1230 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_for_statement(yymsp[-3].minor.yy132, yymsp[-8].minor.yy0, yymsp[-6].minor.yy0, 1, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(101,&yymsp[-9].minor); - yy_destructor(7,&yymsp[-7].minor); - yy_destructor(102,&yymsp[-5].minor); - yy_destructor(103,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6348 "parser.php5.c" - break; - case 265: -#line 1234 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_statement(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(104,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6357 "parser.php5.c" - break; - case 268: -#line 1247 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("assign"); - yy_destructor(64,&yymsp[0].minor); -} -#line 6365 "parser.php5.c" - break; - case 269: -#line 1252 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("add-assign"); - yy_destructor(105,&yymsp[0].minor); -} -#line 6373 "parser.php5.c" - break; - case 270: -#line 1257 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("sub-assign"); - yy_destructor(106,&yymsp[0].minor); -} -#line 6381 "parser.php5.c" - break; - case 271: -#line 1262 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("mul-assign"); - yy_destructor(107,&yymsp[0].minor); -} -#line 6389 "parser.php5.c" - break; - case 272: -#line 1267 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("div-assign"); - yy_destructor(108,&yymsp[0].minor); -} -#line 6397 "parser.php5.c" - break; - case 273: -#line 1272 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("concat-assign"); - yy_destructor(109,&yymsp[0].minor); -} -#line 6405 "parser.php5.c" - break; - case 274: -#line 1277 "parser.php5.lemon" -{ - yygotominor.yy132 = parser_get_string("mod-assign"); - yy_destructor(110,&yymsp[0].minor); -} -#line 6413 "parser.php5.c" - break; - case 275: -#line 1282 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("variable", yymsp[-1].minor.yy132, yymsp[-2].minor.yy0, NULL, NULL, yymsp[0].minor.yy132, status->scanner_state); -} -#line 6420 "parser.php5.c" - break; - case 276: -#line 1287 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("object-property", yymsp[-1].minor.yy132, yymsp[-4].minor.yy0, yymsp[-2].minor.yy0, NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(47,&yymsp[-3].minor); -} -#line 6428 "parser.php5.c" - break; - case 277: -#line 1292 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("variable-dynamic-object-property", yymsp[-1].minor.yy132, yymsp[-6].minor.yy0, yymsp[-3].minor.yy0, NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(47,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); -} -#line 6438 "parser.php5.c" - break; - case 278: -#line 1297 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("string-dynamic-object-property", yymsp[-1].minor.yy132, yymsp[-6].minor.yy0, yymsp[-3].minor.yy0, NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(47,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); -} -#line 6448 "parser.php5.c" - break; - case 279: -#line 1302 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("object-property-append", yymsp[-1].minor.yy132, yymsp[-6].minor.yy0, yymsp[-4].minor.yy0, NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(47,&yymsp[-5].minor); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6458 "parser.php5.c" - break; - case 280: -#line 1307 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("object-property-array-index", yymsp[-1].minor.yy132, yymsp[-5].minor.yy0, yymsp[-3].minor.yy0, yymsp[-2].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(47,&yymsp[-4].minor); -} -#line 6466 "parser.php5.c" - break; - case 281: -#line 1311 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("object-property-array-index-append", yymsp[-1].minor.yy132, yymsp[-7].minor.yy0, yymsp[-5].minor.yy0, yymsp[-4].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(47,&yymsp[-6].minor); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6476 "parser.php5.c" - break; - case 282: -#line 1316 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("static-property", yymsp[-1].minor.yy132, yymsp[-4].minor.yy0, yymsp[-2].minor.yy0, NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(112,&yymsp[-3].minor); -} -#line 6484 "parser.php5.c" - break; - case 283: -#line 1321 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("static-property-append", yymsp[-1].minor.yy132, yymsp[-6].minor.yy0, yymsp[-4].minor.yy0, NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(112,&yymsp[-5].minor); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6494 "parser.php5.c" - break; - case 284: -#line 1326 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("static-property-array-index", yymsp[-1].minor.yy132, yymsp[-5].minor.yy0, yymsp[-3].minor.yy0, yymsp[-2].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(112,&yymsp[-4].minor); -} -#line 6502 "parser.php5.c" - break; - case 285: -#line 1331 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("static-property-array-index-append", yymsp[-1].minor.yy132, yymsp[-7].minor.yy0, yymsp[-5].minor.yy0, yymsp[-4].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(112,&yymsp[-6].minor); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6512 "parser.php5.c" - break; - case 286: -#line 1336 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("variable-append", yymsp[-1].minor.yy132, yymsp[-4].minor.yy0, NULL, NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6521 "parser.php5.c" - break; - case 287: -#line 1341 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("array-index", yymsp[-1].minor.yy132, yymsp[-3].minor.yy0, NULL, yymsp[-2].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); -} -#line 6528 "parser.php5.c" - break; - case 288: -#line 1346 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("array-index-append", yymsp[-1].minor.yy132, yymsp[-5].minor.yy0, NULL, yymsp[-4].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6537 "parser.php5.c" - break; - case 291: -#line 1358 "parser.php5.lemon" -{ - yygotominor.yy132 = yymsp[-1].minor.yy132; - yy_destructor(46,&yymsp[-2].minor); - yy_destructor(72,&yymsp[0].minor); -} -#line 6546 "parser.php5.c" - break; - case 292: -#line 1363 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("object-property-incr", NULL, yymsp[-3].minor.yy0, yymsp[-1].minor.yy0, NULL, NULL, status->scanner_state); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(113,&yymsp[0].minor); -} -#line 6555 "parser.php5.c" - break; - case 293: -#line 1368 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("object-property-decr", NULL, yymsp[-3].minor.yy0, yymsp[-1].minor.yy0, NULL, NULL, status->scanner_state); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(114,&yymsp[0].minor); -} -#line 6564 "parser.php5.c" - break; - case 294: -#line 1373 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("incr", NULL, yymsp[-1].minor.yy0, NULL, NULL, NULL, status->scanner_state); - yy_destructor(113,&yymsp[0].minor); -} -#line 6572 "parser.php5.c" - break; - case 295: -#line 1378 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("decr", NULL, yymsp[-1].minor.yy0, NULL, NULL, NULL, status->scanner_state); - yy_destructor(114,&yymsp[0].minor); -} -#line 6580 "parser.php5.c" - break; - case 296: -#line 1383 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("dynamic-variable", yymsp[-1].minor.yy132, yymsp[-3].minor.yy0, NULL, NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); -} -#line 6589 "parser.php5.c" - break; - case 297: -#line 1388 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_let_assignment("dynamic-variable-string", yymsp[-1].minor.yy132, yymsp[-3].minor.yy0, NULL, NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); -} -#line 6598 "parser.php5.c" - break; - case 299: -#line 1396 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_echo_statement(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(115,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6607 "parser.php5.c" - break; - case 302: -#line 1408 "parser.php5.lemon" -{ - yygotominor.yy132 = yymsp[0].minor.yy132;; -} -#line 6614 "parser.php5.c" - break; - case 303: -#line 1413 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_mcall_statement(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 6622 "parser.php5.c" - break; - case 304: -#line 1418 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_fcall_statement(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 6630 "parser.php5.c" - break; - case 305: -#line 1423 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_scall_statement(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 6638 "parser.php5.c" - break; - case 306: -#line 1428 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_fetch_statement(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 6646 "parser.php5.c" - break; - case 307: -#line 1433 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_return_statement(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(116,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6655 "parser.php5.c" - break; - case 308: -#line 1438 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_return_statement(NULL, status->scanner_state); - yy_destructor(116,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6664 "parser.php5.c" - break; - case 309: -#line 1443 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_require_statement(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(8,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6673 "parser.php5.c" - break; - case 310: -#line 1448 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_unset_statement(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(117,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6682 "parser.php5.c" - break; - case 311: -#line 1453 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_throw_exception(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(118,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6691 "parser.php5.c" - break; - case 312: -#line 1457 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_statement(XX_T_TYPE_INTEGER, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(73,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6700 "parser.php5.c" - break; - case 313: -#line 1461 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_statement(XX_T_TYPE_UINTEGER, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(74,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6709 "parser.php5.c" - break; - case 314: -#line 1465 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_statement(XX_T_TYPE_CHAR, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(77,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6718 "parser.php5.c" - break; - case 315: -#line 1469 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_statement(XX_T_TYPE_UCHAR, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(78,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6727 "parser.php5.c" - break; - case 316: -#line 1473 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_statement(XX_T_TYPE_LONG, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(75,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6736 "parser.php5.c" - break; - case 317: -#line 1477 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_statement(XX_T_TYPE_ULONG, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(76,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6745 "parser.php5.c" - break; - case 318: -#line 1481 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_statement(XX_T_TYPE_DOUBLE, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(79,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6754 "parser.php5.c" - break; - case 319: -#line 1485 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_statement(XX_T_TYPE_STRING, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(81,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6763 "parser.php5.c" - break; - case 320: -#line 1489 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_statement(XX_T_TYPE_BOOL, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(80,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6772 "parser.php5.c" - break; - case 321: -#line 1493 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_statement(XX_T_TYPE_VAR, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(83,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6781 "parser.php5.c" - break; - case 322: -#line 1497 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_statement(XX_T_TYPE_ARRAY, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(82,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6790 "parser.php5.c" - break; - case 325: -#line 1509 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_variable(yymsp[0].minor.yy0, NULL, status->scanner_state); -} -#line 6797 "parser.php5.c" - break; - case 326: -#line 1513 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_declare_variable(yymsp[-2].minor.yy0, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(64,&yymsp[-1].minor); -} -#line 6805 "parser.php5.c" - break; - case 328: -#line 1521 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("reference", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(44,&yymsp[-1].minor); -} -#line 6813 "parser.php5.c" - break; - case 329: -#line 1525 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("not", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(42,&yymsp[-1].minor); -} -#line 6821 "parser.php5.c" - break; - case 330: -#line 1530 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("bitwise_not", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(43,&yymsp[-1].minor); -} -#line 6829 "parser.php5.c" - break; - case 331: -#line 1534 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("minus", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(29,&yymsp[-1].minor); -} -#line 6837 "parser.php5.c" - break; - case 332: -#line 1538 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("plus", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(119,&yymsp[-1].minor); -} -#line 6845 "parser.php5.c" - break; - case 333: -#line 1542 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("isset", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(34,&yymsp[-1].minor); -} -#line 6853 "parser.php5.c" - break; - case 334: -#line 1546 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("require", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(8,&yymsp[-1].minor); -} -#line 6861 "parser.php5.c" - break; - case 335: -#line 1550 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("clone", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(40,&yymsp[-1].minor); -} -#line 6869 "parser.php5.c" - break; - case 336: -#line 1554 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("empty", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(36,&yymsp[-1].minor); -} -#line 6877 "parser.php5.c" - break; - case 337: -#line 1558 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("likely", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(11,&yymsp[-1].minor); -} -#line 6885 "parser.php5.c" - break; - case 338: -#line 1562 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("unlikely", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(12,&yymsp[-1].minor); -} -#line 6893 "parser.php5.c" - break; - case 339: -#line 1566 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("equals", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(20,&yymsp[-1].minor); -} -#line 6901 "parser.php5.c" - break; - case 340: -#line 1570 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("not-equals", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(27,&yymsp[-1].minor); -} -#line 6909 "parser.php5.c" - break; - case 341: -#line 1574 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("identical", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(21,&yymsp[-1].minor); -} -#line 6917 "parser.php5.c" - break; - case 342: -#line 1578 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("not-identical", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(26,&yymsp[-1].minor); -} -#line 6925 "parser.php5.c" - break; - case 343: -#line 1582 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("less", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(22,&yymsp[-1].minor); -} -#line 6933 "parser.php5.c" - break; - case 344: -#line 1586 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("greater", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(23,&yymsp[-1].minor); -} -#line 6941 "parser.php5.c" - break; - case 345: -#line 1590 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("less-equal", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(24,&yymsp[-1].minor); -} -#line 6949 "parser.php5.c" - break; - case 346: -#line 1594 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("greater-equal", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(25,&yymsp[-1].minor); -} -#line 6957 "parser.php5.c" - break; - case 347: -#line 1598 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("list", yymsp[-1].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 6966 "parser.php5.c" - break; - case 348: -#line 1602 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("cast", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-1].minor); -} -#line 6975 "parser.php5.c" - break; - case 349: -#line 1606 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("type-hint", xx_ret_literal(XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state), yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(22,&yymsp[-3].minor); - yy_destructor(23,&yymsp[-1].minor); -} -#line 6984 "parser.php5.c" - break; - case 350: -#line 1610 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("property-access", yymsp[-2].minor.yy132, xx_ret_literal(XX_T_IDENTIFIER, yymsp[0].minor.yy0, status->scanner_state), NULL, status->scanner_state); - yy_destructor(47,&yymsp[-1].minor); -} -#line 6992 "parser.php5.c" - break; - case 351: -#line 1614 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("property-dynamic-access", yymsp[-4].minor.yy132, xx_ret_literal(XX_T_IDENTIFIER, yymsp[-1].minor.yy0, status->scanner_state), NULL, status->scanner_state); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7002 "parser.php5.c" - break; - case 352: -#line 1618 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("property-string-access", yymsp[-4].minor.yy132, xx_ret_literal(XX_T_STRING, yymsp[-1].minor.yy0, status->scanner_state), NULL, status->scanner_state); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7012 "parser.php5.c" - break; - case 353: -#line 1622 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("static-property-access", xx_ret_literal(XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state), xx_ret_literal(XX_T_IDENTIFIER, yymsp[0].minor.yy0, status->scanner_state), NULL, status->scanner_state); - yy_destructor(112,&yymsp[-1].minor); -} -#line 7020 "parser.php5.c" - break; - case 354: - case 444: -#line 1626 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("static-constant-access", xx_ret_literal(XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state), xx_ret_literal(XX_T_IDENTIFIER, yymsp[0].minor.yy0, status->scanner_state), NULL, status->scanner_state); - yy_destructor(112,&yymsp[-1].minor); -} -#line 7029 "parser.php5.c" - break; - case 355: -#line 1635 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("array-access", yymsp[-3].minor.yy132, yymsp[-1].minor.yy132, NULL, status->scanner_state); - yy_destructor(46,&yymsp[-2].minor); - yy_destructor(72,&yymsp[0].minor); -} -#line 7038 "parser.php5.c" - break; - case 356: -#line 1640 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("add", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(28,&yymsp[-1].minor); -} -#line 7046 "parser.php5.c" - break; - case 357: -#line 1645 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("sub", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(29,&yymsp[-1].minor); -} -#line 7054 "parser.php5.c" - break; - case 358: -#line 1650 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("mul", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(31,&yymsp[-1].minor); -} -#line 7062 "parser.php5.c" - break; - case 359: -#line 1655 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("div", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(32,&yymsp[-1].minor); -} -#line 7070 "parser.php5.c" - break; - case 360: -#line 1660 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("mod", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(33,&yymsp[-1].minor); -} -#line 7078 "parser.php5.c" - break; - case 361: -#line 1665 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("concat", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(30,&yymsp[-1].minor); -} -#line 7086 "parser.php5.c" - break; - case 362: -#line 1670 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("and", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(14,&yymsp[-1].minor); -} -#line 7094 "parser.php5.c" - break; - case 363: -#line 1675 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("or", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(13,&yymsp[-1].minor); -} -#line 7102 "parser.php5.c" - break; - case 364: -#line 1680 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("bitwise_or", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(16,&yymsp[-1].minor); -} -#line 7110 "parser.php5.c" - break; - case 365: -#line 1685 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("bitwise_and", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(44,&yymsp[-1].minor); -} -#line 7118 "parser.php5.c" - break; - case 366: -#line 1690 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("bitwise_xor", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(17,&yymsp[-1].minor); -} -#line 7126 "parser.php5.c" - break; - case 367: -#line 1695 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("bitwise_shiftleft", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(18,&yymsp[-1].minor); -} -#line 7134 "parser.php5.c" - break; - case 368: -#line 1700 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("bitwise_shiftright", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(19,&yymsp[-1].minor); -} -#line 7142 "parser.php5.c" - break; - case 369: -#line 1705 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("instanceof", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(15,&yymsp[-1].minor); -} -#line 7150 "parser.php5.c" - break; - case 370: -#line 1710 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("irange", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(37,&yymsp[-1].minor); -} -#line 7158 "parser.php5.c" - break; - case 371: -#line 1715 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("erange", yymsp[-2].minor.yy132, yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(38,&yymsp[-1].minor); -} -#line 7166 "parser.php5.c" - break; - case 372: -#line 1720 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("fetch", xx_ret_literal(XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state), yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(35,&yymsp[-3].minor); - yy_destructor(7,&yymsp[-1].minor); -} -#line 7175 "parser.php5.c" - break; - case 374: -#line 1730 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("typeof", yymsp[0].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(39,&yymsp[-1].minor); -} -#line 7183 "parser.php5.c" - break; - case 376: - case 437: - case 454: -#line 1740 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_INTEGER, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7192 "parser.php5.c" - break; - case 377: - case 439: - case 453: -#line 1745 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_STRING, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7201 "parser.php5.c" - break; - case 378: -#line 1750 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_ISTRING, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7208 "parser.php5.c" - break; - case 379: - case 438: -#line 1755 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_CHAR, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7216 "parser.php5.c" - break; - case 380: - case 440: -#line 1760 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_DOUBLE, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7224 "parser.php5.c" - break; - case 381: - case 441: -#line 1765 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_NULL, NULL, status->scanner_state); - yy_destructor(70,&yymsp[0].minor); -} -#line 7233 "parser.php5.c" - break; - case 382: - case 443: -#line 1770 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_TRUE, NULL, status->scanner_state); - yy_destructor(124,&yymsp[0].minor); -} -#line 7242 "parser.php5.c" - break; - case 383: - case 442: -#line 1775 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_FALSE, NULL, status->scanner_state); - yy_destructor(125,&yymsp[0].minor); -} -#line 7251 "parser.php5.c" - break; - case 384: - case 445: -#line 1780 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_literal(XX_T_CONSTANT, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7259 "parser.php5.c" - break; - case 385: - case 446: -#line 1785 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("empty-array", NULL, NULL, NULL, status->scanner_state); - yy_destructor(46,&yymsp[-1].minor); - yy_destructor(72,&yymsp[0].minor); -} -#line 7269 "parser.php5.c" - break; - case 386: - case 447: -#line 1790 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("array", yymsp[-1].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(46,&yymsp[-2].minor); - yy_destructor(72,&yymsp[0].minor); -} -#line 7279 "parser.php5.c" - break; - case 387: -#line 1795 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_new_static_instance(NULL, status->scanner_state); - yy_destructor(41,&yymsp[-1].minor); - yy_destructor(4,&yymsp[0].minor); -} -#line 7288 "parser.php5.c" - break; - case 388: -#line 1800 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_new_static_instance(NULL, status->scanner_state); - yy_destructor(41,&yymsp[-3].minor); - yy_destructor(4,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7299 "parser.php5.c" - break; - case 389: -#line 1805 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_new_static_instance(yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(41,&yymsp[-4].minor); - yy_destructor(4,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7310 "parser.php5.c" - break; - case 390: -#line 1810 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_new_instance(0, yymsp[0].minor.yy0, NULL, status->scanner_state); - yy_destructor(41,&yymsp[-1].minor); -} -#line 7318 "parser.php5.c" - break; - case 391: -#line 1815 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_new_instance(0, yymsp[-2].minor.yy0, NULL, status->scanner_state); - yy_destructor(41,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7328 "parser.php5.c" - break; - case 392: -#line 1820 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_new_instance(0, yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(41,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7338 "parser.php5.c" - break; - case 393: -#line 1825 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_new_instance(1, yymsp[-1].minor.yy0, NULL, status->scanner_state); - yy_destructor(41,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7348 "parser.php5.c" - break; - case 394: -#line 1830 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_new_instance(1, yymsp[-3].minor.yy0, NULL, status->scanner_state); - yy_destructor(41,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7360 "parser.php5.c" - break; - case 395: -#line 1835 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_new_instance(1, yymsp[-4].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(41,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7372 "parser.php5.c" - break; - case 396: -#line 1840 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_new_instance_type(yymsp[-3].minor.yy132, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(41,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7382 "parser.php5.c" - break; - case 397: -#line 1845 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_fcall(1, yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7391 "parser.php5.c" - break; - case 398: -#line 1850 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_fcall(1, yymsp[-2].minor.yy0, NULL, status->scanner_state); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7400 "parser.php5.c" - break; - case 399: -#line 1855 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_fcall(2, yymsp[-4].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7411 "parser.php5.c" - break; - case 400: -#line 1860 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_fcall(2, yymsp[-3].minor.yy0, NULL, status->scanner_state); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7422 "parser.php5.c" - break; - case 401: -#line 1865 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_scall(0, yymsp[-4].minor.yy0->token, 0, yymsp[-2].minor.yy0, NULL, status->scanner_state); - efree(yymsp[-4].minor.yy0->token); - efree(yymsp[-4].minor.yy0); - yy_destructor(112,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7434 "parser.php5.c" - break; - case 402: -#line 1872 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_scall(0, yymsp[-5].minor.yy0->token, 0, yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - efree(yymsp[-5].minor.yy0->token); - efree(yymsp[-5].minor.yy0); - yy_destructor(112,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7446 "parser.php5.c" - break; - case 403: -#line 1879 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_scall(0, "static", 0, yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(4,&yymsp[-5].minor); - yy_destructor(112,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7457 "parser.php5.c" - break; - case 404: -#line 1884 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_scall(0, "static", 0, yymsp[-2].minor.yy0, NULL, status->scanner_state); - yy_destructor(4,&yymsp[-4].minor); - yy_destructor(112,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7468 "parser.php5.c" - break; - case 405: -#line 1889 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_scall(1, yymsp[-5].minor.yy0->token, 0, yymsp[-2].minor.yy0, NULL, status->scanner_state); - efree(yymsp[-5].minor.yy0->token); - efree(yymsp[-5].minor.yy0); - yy_destructor(55,&yymsp[-6].minor); - yy_destructor(56,&yymsp[-4].minor); - yy_destructor(112,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7482 "parser.php5.c" - break; - case 406: -#line 1896 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_scall(1, yymsp[-6].minor.yy0->token, 0, yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - efree(yymsp[-6].minor.yy0->token); - efree(yymsp[-6].minor.yy0); - yy_destructor(55,&yymsp[-7].minor); - yy_destructor(56,&yymsp[-5].minor); - yy_destructor(112,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7496 "parser.php5.c" - break; - case 407: -#line 1903 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_scall(1, yymsp[-7].minor.yy0->token, 1, yymsp[-3].minor.yy0, NULL, status->scanner_state); - efree(yymsp[-7].minor.yy0->token); - efree(yymsp[-7].minor.yy0); - yy_destructor(55,&yymsp[-8].minor); - yy_destructor(56,&yymsp[-6].minor); - yy_destructor(112,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7512 "parser.php5.c" - break; - case 408: -#line 1910 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_scall(1, yymsp[-8].minor.yy0->token, 1, yymsp[-4].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - efree(yymsp[-8].minor.yy0->token); - efree(yymsp[-8].minor.yy0); - yy_destructor(55,&yymsp[-9].minor); - yy_destructor(56,&yymsp[-7].minor); - yy_destructor(112,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7528 "parser.php5.c" - break; - case 409: -#line 1917 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_scall(0, yymsp[-6].minor.yy0->token, 1, yymsp[-3].minor.yy0, NULL, status->scanner_state); - efree(yymsp[-6].minor.yy0->token); - efree(yymsp[-6].minor.yy0); - yy_destructor(112,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7542 "parser.php5.c" - break; - case 410: -#line 1924 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_scall(0, yymsp[-7].minor.yy0->token, 1, yymsp[-4].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - efree(yymsp[-7].minor.yy0->token); - efree(yymsp[-7].minor.yy0); - yy_destructor(112,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7556 "parser.php5.c" - break; - case 411: -#line 1931 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_mcall(1, yymsp[-5].minor.yy132, yymsp[-3].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7566 "parser.php5.c" - break; - case 412: -#line 1936 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_mcall(1, yymsp[-4].minor.yy132, yymsp[-2].minor.yy0, NULL, status->scanner_state); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7576 "parser.php5.c" - break; - case 413: -#line 1941 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_mcall(2, yymsp[-7].minor.yy132, yymsp[-4].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(47,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7588 "parser.php5.c" - break; - case 414: -#line 1946 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_mcall(2, yymsp[-6].minor.yy132, yymsp[-3].minor.yy0, NULL, status->scanner_state); - yy_destructor(47,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7600 "parser.php5.c" - break; - case 415: -#line 1951 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_mcall(3, yymsp[-7].minor.yy132, yymsp[-4].minor.yy0, yymsp[-1].minor.yy132, status->scanner_state); - yy_destructor(47,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7612 "parser.php5.c" - break; - case 416: -#line 1956 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_mcall(3, yymsp[-6].minor.yy132, yymsp[-3].minor.yy0, NULL, status->scanner_state); - yy_destructor(47,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7624 "parser.php5.c" - break; - case 420: -#line 1976 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("ternary", yymsp[-4].minor.yy132, yymsp[-2].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(10,&yymsp[-3].minor); - yy_destructor(94,&yymsp[-1].minor); -} -#line 7633 "parser.php5.c" - break; - case 421: -#line 1981 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("short-ternary", yymsp[-3].minor.yy132, NULL, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(10,&yymsp[-2].minor); - yy_destructor(94,&yymsp[-1].minor); -} -#line 7642 "parser.php5.c" - break; - case 424: -#line 1994 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_call_parameter(NULL, yymsp[0].minor.yy132, status->scanner_state); -} -#line 7649 "parser.php5.c" - break; - case 425: -#line 1999 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_call_parameter(yymsp[-2].minor.yy0, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(94,&yymsp[-1].minor); -} -#line 7657 "parser.php5.c" - break; - case 426: -#line 2004 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("closure", NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7669 "parser.php5.c" - break; - case 427: -#line 2009 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("closure", NULL, yymsp[-1].minor.yy132, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7681 "parser.php5.c" - break; - case 428: -#line 2014 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("closure", yymsp[-3].minor.yy132, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7693 "parser.php5.c" - break; - case 429: -#line 2019 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("closure", yymsp[-4].minor.yy132, yymsp[-1].minor.yy132, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7705 "parser.php5.c" - break; - case 430: -#line 2024 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_expr("closure-arrow", xx_ret_literal(XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state), yymsp[0].minor.yy132, NULL, status->scanner_state); - yy_destructor(9,&yymsp[-1].minor); -} -#line 7713 "parser.php5.c" - break; - case 433: - case 450: -#line 2036 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_array_item(yymsp[-2].minor.yy132, yymsp[0].minor.yy132, status->scanner_state); - yy_destructor(94,&yymsp[-1].minor); -} -#line 7722 "parser.php5.c" - break; - case 434: - case 451: -#line 2040 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_array_item(NULL, yymsp[0].minor.yy132, status->scanner_state); -} -#line 7730 "parser.php5.c" - break; - case 457: -#line 2133 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_comment(yymsp[0].minor.yy0, status->scanner_state); -} -#line 7737 "parser.php5.c" - break; - case 458: -#line 2137 "parser.php5.lemon" -{ - yygotominor.yy132 = xx_ret_cblock(yymsp[0].minor.yy0, status->scanner_state); -} -#line 7744 "parser.php5.c" - break; - }; - yygoto = yyRuleInfo[yyruleno].lhs; - yysize = yyRuleInfo[yyruleno].nrhs; - yypParser->yyidx -= yysize; - yyact = yy_find_reduce_action(yypParser,yygoto); - if( yyact < YYNSTATE ){ - yy_shift(yypParser,yyact,yygoto,&yygotominor); - }else if( yyact == YYNSTATE + YYNRULE + 1 ){ - yy_accept(yypParser); - } -} - -/* -** The following code executes when the parse fails -*/ -static void yy_parse_failed( - yyParser *yypParser /* The parser */ -){ - xx_ARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser fails */ - xx_ARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following code executes when a syntax error first occurs. -*/ -static void yy_syntax_error( - yyParser *yypParser, /* The parser */ - int yymajor, /* The major type of the error token */ - YYMINORTYPE yyminor /* The minor type of the error token */ -){ - xx_ARG_FETCH; -#define TOKEN (yyminor.yy0) -#line 62 "parser.php5.lemon" - - - zval *syntax_error = parser_array_init(status->scanner_state); - - parser_add_str(syntax_error, "type", "error"); - - if (status->scanner_state->start_length) { - parser_add_str(syntax_error, "message", "Syntax error"); - } else { - parser_add_str(syntax_error, "message", "Unexpected EOF"); - } - - parser_add_str(syntax_error, "file", status->scanner_state->active_file); - parser_add_int(syntax_error, "line", status->scanner_state->active_line); - parser_add_int(syntax_error, "char", status->scanner_state->active_char); - - status->status = XX_PARSING_FAILED; - - status->ret = syntax_error; - -#line 7807 "parser.php5.c" - xx_ARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following is executed when the parser accepts -*/ -static void yy_accept( - yyParser *yypParser /* The parser */ -){ - xx_ARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser accepts */ - xx_ARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* The main parser program. -** The first argument is a pointer to a structure obtained from -** "xx_Alloc" which describes the current state of the parser. -** The second argument is the major token number. The third is -** the minor token. The fourth optional argument is whatever the -** user wants (and specified in the grammar) and is available for -** use by the action routines. -** -** Inputs: -**
    -**
  • A pointer to the parser (an opaque structure.) -**
  • The major token number. -**
  • The minor token number. -**
  • An option argument of a grammar-specified type. -**
-** -** Outputs: -** None. -*/ -void xx_( - void *yyp, /* The parser */ - int yymajor, /* The major token code number */ - xx_TOKENTYPE yyminor /* The value for the token */ - xx_ARG_PDECL /* Optional %extra_argument parameter */ -){ - YYMINORTYPE yyminorunion; - int yyact; /* The parser action. */ - int yyendofinput; /* True if we are at the end of input */ - int yyerrorhit = 0; /* True if yymajor has invoked an error */ - yyParser *yypParser; /* The parser */ - - /* (re)initialize the parser, if necessary */ - yypParser = (yyParser*)yyp; - if( yypParser->yyidx<0 ){ - if( yymajor==0 ) return; - yypParser->yyidx = 0; - yypParser->yyerrcnt = -1; - yypParser->yystack[0].stateno = 0; - yypParser->yystack[0].major = 0; - } - yyminorunion.yy0 = yyminor; - yyendofinput = (yymajor==0); - xx_ARG_STORE; - -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); - } -#endif - - do{ - yyact = yy_find_shift_action(yypParser,yymajor); - if( yyactyyerrcnt--; - if( yyendofinput && yypParser->yyidx>=0 ){ - yymajor = 0; - }else{ - yymajor = YYNOCODE; - } - }else if( yyact < YYNSTATE + YYNRULE ){ - yy_reduce(yypParser,yyact-YYNSTATE); - }else if( yyact == YY_ERROR_ACTION ){ - int yymx; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); - } -#endif -#ifdef YYERRORSYMBOL - /* A syntax error has occurred. - ** The response to an error depends upon whether or not the - ** grammar defines an error token "ERROR". - ** - ** This is what we do if the grammar does define ERROR: - ** - ** * Call the %syntax_error function. - ** - ** * Begin popping the stack until we enter a state where - ** it is legal to shift the error symbol, then shift - ** the error symbol. - ** - ** * Set the error count to three. - ** - ** * Begin accepting and shifting new tokens. No new error - ** processing will occur until three tokens have been - ** shifted successfully. - ** - */ - if( yypParser->yyerrcnt<0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yymx = yypParser->yystack[yypParser->yyidx].major; - if( yymx==YYERRORSYMBOL || yyerrorhit ){ -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sDiscard input token %s\n", - yyTracePrompt,yyTokenName[yymajor]); - } -#endif - yy_destructor(yymajor,&yyminorunion); - yymajor = YYNOCODE; - }else{ - while( - yypParser->yyidx >= 0 && - yymx != YYERRORSYMBOL && - (yyact = yy_find_shift_action(yypParser,YYERRORSYMBOL)) >= YYNSTATE - ){ - yy_pop_parser_stack(yypParser); - } - if( yypParser->yyidx < 0 || yymajor==0 ){ - yy_destructor(yymajor,&yyminorunion); - yy_parse_failed(yypParser); - yymajor = YYNOCODE; - }else if( yymx!=YYERRORSYMBOL ){ - YYMINORTYPE u2; - u2.YYERRSYMDT = 0; - yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2); - } - } - yypParser->yyerrcnt = 3; - yyerrorhit = 1; -#else /* YYERRORSYMBOL is not defined */ - /* This is what we do if the grammar does not define ERROR: - ** - ** * Report an error message, and throw away the input token. - ** - ** * If the input token is $, then fail the parse. - ** - ** As before, subsequent error messages are suppressed until - ** three input tokens have been successfully shifted. - */ - if( yypParser->yyerrcnt<=0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yypParser->yyerrcnt = 3; - yy_destructor(yymajor,&yyminorunion); - if( yyendofinput ){ - yy_parse_failed(yypParser); - } - yymajor = YYNOCODE; -#endif - }else{ - yy_accept(yypParser); - yymajor = YYNOCODE; - } - }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); - return; -} diff --git a/parser/parser/parser.php5.h b/parser/parser/parser.php5.h deleted file mode 100644 index 2c5dfb0ecf..0000000000 --- a/parser/parser/parser.php5.h +++ /dev/null @@ -1,126 +0,0 @@ -#define XX_INTERNAL 1 -#define XX_PUBLIC 2 -#define XX_PROTECTED 3 -#define XX_STATIC 4 -#define XX_PRIVATE 5 -#define XX_SCOPED 6 -#define XX_COMMA 7 -#define XX_REQUIRE 8 -#define XX_DOUBLEARROW 9 -#define XX_QUESTION 10 -#define XX_LIKELY 11 -#define XX_UNLIKELY 12 -#define XX_OR 13 -#define XX_AND 14 -#define XX_INSTANCEOF 15 -#define XX_BITWISE_OR 16 -#define XX_BITWISE_XOR 17 -#define XX_BITWISE_SHIFTLEFT 18 -#define XX_BITWISE_SHIFTRIGHT 19 -#define XX_EQUALS 20 -#define XX_IDENTICAL 21 -#define XX_LESS 22 -#define XX_GREATER 23 -#define XX_LESSEQUAL 24 -#define XX_GREATEREQUAL 25 -#define XX_NOTIDENTICAL 26 -#define XX_NOTEQUALS 27 -#define XX_ADD 28 -#define XX_SUB 29 -#define XX_CONCAT 30 -#define XX_MUL 31 -#define XX_DIV 32 -#define XX_MOD 33 -#define XX_ISSET 34 -#define XX_FETCH 35 -#define XX_EMPTY 36 -#define XX_INCLUSIVE_RANGE 37 -#define XX_EXCLUSIVE_RANGE 38 -#define XX_TYPEOF 39 -#define XX_CLONE 40 -#define XX_NEW 41 -#define XX_NOT 42 -#define XX_BITWISE_NOT 43 -#define XX_BITWISE_AND 44 -#define XX_PARENTHESES_CLOSE 45 -#define XX_SBRACKET_OPEN 46 -#define XX_ARROW 47 -#define XX_NAMESPACE 48 -#define XX_IDENTIFIER 49 -#define XX_DOTCOMMA 50 -#define XX_USE 51 -#define XX_AS 52 -#define XX_FUNCTION 53 -#define XX_PARENTHESES_OPEN 54 -#define XX_BRACKET_OPEN 55 -#define XX_BRACKET_CLOSE 56 -#define XX_INTERFACE 57 -#define XX_EXTENDS 58 -#define XX_CLASS 59 -#define XX_IMPLEMENTS 60 -#define XX_ABSTRACT 61 -#define XX_FINAL 62 -#define XX_COMMENT 63 -#define XX_ASSIGN 64 -#define XX_CONST 65 -#define XX_CONSTANT 66 -#define XX_INLINE 67 -#define XX_DEPRECATED 68 -#define XX_VOID 69 -#define XX_NULL 70 -#define XX_THIS 71 -#define XX_SBRACKET_CLOSE 72 -#define XX_TYPE_INTEGER 73 -#define XX_TYPE_UINTEGER 74 -#define XX_TYPE_LONG 75 -#define XX_TYPE_ULONG 76 -#define XX_TYPE_CHAR 77 -#define XX_TYPE_UCHAR 78 -#define XX_TYPE_DOUBLE 79 -#define XX_TYPE_BOOL 80 -#define XX_TYPE_STRING 81 -#define XX_TYPE_ARRAY 82 -#define XX_TYPE_VAR 83 -#define XX_TYPE_CALLABLE 84 -#define XX_TYPE_RESOURCE 85 -#define XX_TYPE_OBJECT 86 -#define XX_BREAK 87 -#define XX_CONTINUE 88 -#define XX_IF 89 -#define XX_ELSE 90 -#define XX_ELSEIF 91 -#define XX_SWITCH 92 -#define XX_CASE 93 -#define XX_COLON 94 -#define XX_DEFAULT 95 -#define XX_LOOP 96 -#define XX_WHILE 97 -#define XX_DO 98 -#define XX_TRY 99 -#define XX_CATCH 100 -#define XX_FOR 101 -#define XX_IN 102 -#define XX_REVERSE 103 -#define XX_LET 104 -#define XX_ADDASSIGN 105 -#define XX_SUBASSIGN 106 -#define XX_MULASSIGN 107 -#define XX_DIVASSIGN 108 -#define XX_CONCATASSIGN 109 -#define XX_MODASSIGN 110 -#define XX_STRING 111 -#define XX_DOUBLECOLON 112 -#define XX_INCR 113 -#define XX_DECR 114 -#define XX_ECHO 115 -#define XX_RETURN 116 -#define XX_UNSET 117 -#define XX_THROW 118 -#define XX_PLUS 119 -#define XX_INTEGER 120 -#define XX_ISTRING 121 -#define XX_CHAR 122 -#define XX_DOUBLE 123 -#define XX_TRUE 124 -#define XX_FALSE 125 -#define XX_CBLOCK 126 diff --git a/parser/parser/parser.php5.inc.h b/parser/parser/parser.php5.inc.h deleted file mode 100644 index 155d6142b5..0000000000 --- a/parser/parser/parser.php5.inc.h +++ /dev/null @@ -1,1278 +0,0 @@ - -#include -#include "string.h" -#include "parser.php5.h" -#include "xx.h" -#include "scanner.h" -#include "Zend/zend_variables.h" - -#define SL(str) ZEND_STRL(str) - -static zval *parser_array_init(xx_scanner_state *state) { - zval *t; - MAKE_STD_ZVAL(t); - array_init(t); - return t; -} - -static void parser_add_str(zval *arr, const char *key, const char *val) { - zval *tmp; - MAKE_STD_ZVAL(tmp); - ZVAL_STRING(tmp, val, 1); - zend_hash_add(Z_ARRVAL_P(arr), key, strlen(key) + 1, (void **)&tmp, sizeof(zval *), NULL); -} - -static void parser_add_str_free(zval *arr, const char *key, char *val) { - zval *tmp; - MAKE_STD_ZVAL(tmp); - ZVAL_STRING(tmp, val, 1); - zend_hash_add(Z_ARRVAL_P(arr), key, strlen(key) + 1, (void **)&tmp, sizeof(zval *), NULL); - efree(val); -} - -static void parser_add_int(zval *arr, const char *key, int i) { - zval *tmp; - MAKE_STD_ZVAL(tmp); - ZVAL_LONG(tmp, i); - zend_hash_add(Z_ARRVAL_P(arr), key, strlen(key) + 1, (void **)&tmp, sizeof(zval *), NULL); -} - -static void parser_add_zval(zval *arr, const char *key, zval *zv) { - zend_hash_add(Z_ARRVAL_P(arr), key, strlen(key) + 1, (void **)&zv, sizeof(zval *), NULL); -} - -static void parser_array_append(zval *arr, zval *zv) { - add_next_index_zval(arr, zv); -} - -static zval *parser_get_string(const char *str) { - zval *tmp; - ALLOC_INIT_ZVAL(tmp); - ZVAL_STRING(tmp, str, 1); - return tmp; -} - -static zval *xx_ret_literal(int type, xx_parser_token *T, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - switch (type) { - - case XX_T_CONSTANT: - parser_add_str(ret, "type", "constant"); - break; - - case XX_T_IDENTIFIER: - parser_add_str(ret, "type", "variable"); - break; - - case XX_T_INTEGER: - parser_add_str(ret, "type", "int"); - break; - - case XX_T_DOUBLE: - parser_add_str(ret, "type", "double"); - break; - - case XX_T_NULL: - parser_add_str(ret, "type", "null"); - break; - - case XX_T_STRING: - parser_add_str(ret, "type", "string"); - break; - - case XX_T_ISTRING: - parser_add_str(ret, "type", "istring"); - break; - - case XX_T_CHAR: - parser_add_str(ret, "type", "char"); - break; - - default: - if (type == XX_T_TRUE) { - parser_add_str(ret, "type", "bool"); - parser_add_str(ret, "value", "true"); - } else { - if (type == XX_T_FALSE) { - parser_add_str(ret, "type", "bool"); - parser_add_str(ret, "value", "false"); - } else { - fprintf(stderr, "literal??\n"); - } - } - } - - if (T) { - parser_add_str_free(ret, "value", T->token); - efree(T); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_expr(const char *type, zval *left, zval *right, zval *extra, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", type); - - if (left) { - parser_add_zval(ret, "left", left); - } - if (right) { - parser_add_zval(ret, "right", right); - } - if (extra) { - parser_add_zval(ret, "extra", extra); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_array_item(zval *key, zval *value, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - if (key) { - parser_add_zval(ret, "key", key); - } - parser_add_zval(ret, "value", value); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_namespace(xx_parser_token *T, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "namespace"); - parser_add_str_free(ret, "name", T->token); - efree(T); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_use_aliases(zval *use_aliases_list, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "use"); - parser_add_zval(ret, "aliases", use_aliases_list); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_use_aliases_item(xx_parser_token *T, xx_parser_token *A, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str_free(ret, "name", T->token); - efree(T); - - if (A) { - parser_add_str_free(ret, "alias", A->token); - efree(A); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_function(xx_parser_token *T, zval *parameters, - zval *statements, xx_parser_token *D, zval *return_type, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "function"); - parser_add_str_free(ret, "name", T->token); - efree(T); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - if (D) { - parser_add_str_free(ret, "docblock", D->token); - efree(D); - } - - if (return_type) { - parser_add_zval(ret, "return-type", return_type); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->method_line); - parser_add_int(ret, "char", state->method_char); - - return ret; -} - -static zval *xx_ret_class(xx_parser_token *T, zval *class_definition, int is_abstract, int is_final, - xx_parser_token *E, zval *I, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "class"); - parser_add_str_free(ret, "name", T->token); - efree(T); - - parser_add_int(ret, "abstract", is_abstract); - parser_add_int(ret, "final", is_final); - - if (E) { - parser_add_str_free(ret, "extends", E->token); - efree(E); - } - - if (I) { - parser_add_zval(ret, "implements", I); - } - - if (class_definition) { - parser_add_zval(ret, "definition", class_definition); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->class_line); - parser_add_int(ret, "char", state->class_char); - - return ret; -} - -static zval *xx_ret_interface(xx_parser_token *T, zval *interface_definition, zval *extends_list, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "interface"); - parser_add_str_free(ret, "name", T->token); - efree(T); - - if (extends_list) { - parser_add_zval(ret, "extends", extends_list); - } - - if (interface_definition) { - parser_add_zval(ret, "definition", interface_definition); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->class_line); - parser_add_int(ret, "char", state->class_char); - - return ret; -} - -static zval *xx_ret_class_definition(zval *properties, zval *methods, zval *constants, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - if (properties) { - parser_add_zval(ret, "properties", properties); - } - if (methods) { - parser_add_zval(ret, "methods", methods); - } - if (constants) { - parser_add_zval(ret, "constants", constants); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->class_line); - parser_add_int(ret, "char", state->class_char); - - return ret; -} - -static zval *xx_ret_interface_definition(zval *methods, zval *constants, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - if (methods) { - parser_add_zval(ret, "methods", methods); - } - if (constants) { - parser_add_zval(ret, "constants", constants); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_class_property(zval *visibility, xx_parser_token *T, - zval *default_value, xx_parser_token *D, zval *shortcuts, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_zval(ret, "visibility", visibility); - parser_add_str(ret, "type", "property"); - - parser_add_str_free(ret, "name", T->token); - efree(T); - - if (default_value) { - parser_add_zval(ret, "default", default_value); - } - - if (D) { - parser_add_str_free(ret, "docblock", D->token); - efree(D); - } - - if (shortcuts) { - parser_add_zval(ret, "shortcuts", shortcuts); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_property_shortcut(xx_parser_token *C, xx_parser_token *D, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "shortcut"); - if (C) { - parser_add_str_free(ret, "docblock", C->token); - efree(C); - } - - parser_add_str_free(ret, "name", D->token); - efree(D); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_class_const(xx_parser_token *T, zval *default_value, xx_parser_token *D, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "const"); - parser_add_str_free(ret, "name", T->token); - efree(T); - - parser_add_zval(ret, "default", default_value); - - if (D) { - parser_add_str_free(ret, "docblock", D->token); - efree(D); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_class_method(zval *visibility, xx_parser_token *T, zval *parameters, - zval *statements, xx_parser_token *D, zval *return_type, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_zval(ret, "visibility", visibility); - parser_add_str(ret, "type", "method"); - - parser_add_str_free(ret, "name", T->token); - efree(T); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - if (D) { - parser_add_str_free(ret, "docblock", D->token); - efree(D); - } - - if (return_type) { - parser_add_zval(ret, "return-type", return_type); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->method_line); - parser_add_int(ret, "last-line", state->active_line); - parser_add_int(ret, "char", state->method_char); - - return ret; -} - -static zval *xx_ret_parameter(int const_param, zval *type, zval *cast, xx_parser_token *N, zval *default_value, - int mandatory, int reference, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "parameter"); - parser_add_str_free(ret, "name", N->token); - efree(N); - - parser_add_int(ret, "const", const_param); - - if (type) { - parser_add_zval(ret, "data-type", type); - parser_add_int(ret, "mandatory", mandatory); - } else { - parser_add_str(ret, "data-type", "variable"); - parser_add_int(ret, "mandatory", 0); - } - - if (cast) { - parser_add_zval(ret, "cast", cast); - } - if (default_value) { - parser_add_zval(ret, "default", default_value); - } - - parser_add_int(ret, "reference", reference); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_return_type(int is_void, zval *return_type_list, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "return-type"); - - if (return_type_list) { - parser_add_zval(ret, "list", return_type_list); - } - - parser_add_int(ret, "void", is_void); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_return_type_item(zval *type, zval *cast, int mandatory, int collection, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "return-type-parameter"); - - if (type) { - parser_add_zval(ret, "data-type", type); - parser_add_int(ret, "mandatory", mandatory); - } - - if (cast) { - parser_add_zval(ret, "cast", cast); - parser_add_int(ret, "collection", collection); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_type(int type) -{ - switch (type) { - case XX_TYPE_INTEGER: - return parser_get_string("int"); - - case XX_TYPE_UINTEGER: - return parser_get_string("uint"); - - case XX_TYPE_DOUBLE: - return parser_get_string("double"); - - case XX_TYPE_BOOL: - return parser_get_string("bool"); - - case XX_TYPE_LONG: - return parser_get_string("long"); - - case XX_TYPE_ULONG: - return parser_get_string("ulong"); - - case XX_TYPE_STRING: - return parser_get_string("string"); - - case XX_TYPE_CHAR: - return parser_get_string("char"); - - case XX_TYPE_ARRAY: - return parser_get_string("array"); - - case XX_TYPE_VAR: - return parser_get_string("variable"); - - case XX_TYPE_CALLABLE: - return parser_get_string("callable"); - - case XX_TYPE_RESOURCE: - return parser_get_string("resource"); - - case XX_TYPE_OBJECT: - return parser_get_string("object"); - - case XX_T_TYPE_NULL: - return parser_get_string("null"); - - case XX_T_TYPE_THIS: - return parser_get_string("this"); - - default: - fprintf(stderr, "unknown type?\n"); - } - - return parser_get_string("unknown"); -} - -static zval *xx_ret_list(zval *list_left, zval *list_right, xx_scanner_state *state) -{ - zval *ret; - HashTable *ht; - HashPosition pos; - zval **ppzv; - - ret = parser_array_init(state); - - if (list_left) { - if (Z_TYPE_P(list_left) == IS_ARRAY) { - ht = Z_ARRVAL_P(list_left); - zend_hash_internal_pointer_reset_ex(ht, &pos); - while (zend_hash_get_current_data_ex(ht, (void**)&ppzv, &pos) == SUCCESS) { - Z_ADDREF_PP(ppzv); - parser_array_append(ret, *ppzv); - zend_hash_move_forward_ex(ht, &pos); - } - zval_ptr_dtor(&list_left); - } else { - parser_array_append(ret, list_left); - } - } - - parser_array_append(ret, list_right); - - return ret; -} - -static zval *xx_ret_let_statement(zval *assignments, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "let"); - parser_add_zval(ret, "assignments", assignments); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_let_assignment(char *type, zval *operator, xx_parser_token *V, xx_parser_token *P, zval *index_expr, zval *expr, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "assign-type", type); - if (operator) { - parser_add_zval(ret, "operator", operator); - } - - parser_add_str_free(ret, "variable", V->token); - efree(V); - - if (P) { - parser_add_str_free(ret, "property", P->token); - efree(P); - } - if (index_expr) { - parser_add_zval(ret, "index-expr", index_expr); - } - if (expr) { - parser_add_zval(ret, "expr", expr); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_if_statement(zval *expr, zval *statements, zval *elseif_statements, zval *else_statements, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "if"); - parser_add_zval(ret, "expr", expr); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - if (elseif_statements) { - parser_add_zval(ret, "elseif_statements", elseif_statements); - } - - if (else_statements) { - parser_add_zval(ret, "else_statements", else_statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_switch_statement(zval *expr, zval *clauses, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "switch"); - parser_add_zval(ret, "expr", expr); - - if (clauses) { - parser_add_zval(ret, "clauses", clauses); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_case_clause(zval *expr, zval *statements, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - if (expr) { - parser_add_str(ret, "type", "case"); - parser_add_zval(ret, "expr", expr); - } else { - parser_add_str(ret, "type", "default"); - } - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_while_statement(zval *expr, zval *statements, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "while"); - parser_add_zval(ret, "expr", expr); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_do_while_statement(zval *expr, zval *statements, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "do-while"); - parser_add_zval(ret, "expr", expr); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_try_catch_statement(zval *statements, zval *catches, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "try-catch"); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - if (catches) { - parser_add_zval(ret, "catches", catches); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_catch_statement(zval *classes, zval *variable, zval *statements, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - if (classes) { - parser_add_zval(ret, "classes", classes); - } - - if (variable) { - parser_add_zval(ret, "variable", variable); - } - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_for_statement(zval *expr, xx_parser_token *K, xx_parser_token *V, int reverse, zval *statements, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "for"); - parser_add_zval(ret, "expr", expr); - - if (K) { - parser_add_str_free(ret, "key", K->token); - efree(K); - } - - if (V) { - parser_add_str_free(ret, "value", V->token); - efree(V); - } - - parser_add_int(ret, "reverse", reverse); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_loop_statement(zval *statements, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "loop"); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_empty_statement(xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "empty"); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_break_statement(xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "break"); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_continue_statement(xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "continue"); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_echo_statement(zval *expressions, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "echo"); - parser_add_zval(ret, "expressions", expressions); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_return_statement(zval *expr, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "return"); - if (expr) { - parser_add_zval(ret, "expr", expr); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_require_statement(zval *expr, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "require"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_fetch_statement(zval *expr, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "fetch"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_fcall_statement(zval *expr, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "fcall"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_mcall_statement(zval *expr, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "mcall"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_scall_statement(zval *expr, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "scall"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_unset_statement(zval *expr, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "unset"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_declare_statement(int type, zval *variables, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "declare"); - - switch (type) { - - case XX_T_TYPE_INTEGER: - parser_add_str(ret, "data-type", "int"); - break; - - case XX_T_TYPE_UINTEGER: - parser_add_str(ret, "data-type", "uint"); - break; - - case XX_T_TYPE_LONG: - parser_add_str(ret, "data-type", "long"); - break; - - case XX_T_TYPE_ULONG: - parser_add_str(ret, "data-type", "ulong"); - break; - - case XX_T_TYPE_CHAR: - parser_add_str(ret, "data-type", "char"); - break; - - case XX_T_TYPE_UCHAR: - parser_add_str(ret, "data-type", "uchar"); - break; - - case XX_T_TYPE_DOUBLE: - parser_add_str(ret, "data-type", "double"); - break; - - case XX_T_TYPE_BOOL: - parser_add_str(ret, "data-type", "bool"); - break; - - case XX_T_TYPE_STRING: - parser_add_str(ret, "data-type", "string"); - break; - - case XX_T_TYPE_ARRAY: - parser_add_str(ret, "data-type", "array"); - break; - - case XX_T_TYPE_VAR: - parser_add_str(ret, "data-type", "variable"); - break; - - case XX_T_TYPE_CALLABLE: - parser_add_str(ret, "data-type", "callable"); - break; - - case XX_T_TYPE_RESOURCE: - parser_add_str(ret, "data-type", "resource"); - break; - - case XX_T_TYPE_OBJECT: - parser_add_str(ret, "data-type", "object"); - break; - - default: - fprintf(stderr, "err 2?\n"); - } - - parser_add_zval(ret, "variables", variables); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_declare_variable(xx_parser_token *T, zval *expr, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str_free(ret, "variable", T->token); - efree(T); - - if (expr) { - parser_add_zval(ret, "expr", expr); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_new_static_instance(zval *parameters, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "new"); - parser_add_str(ret, "class", "static"); - parser_add_int(ret, "dynamic", 0); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_new_instance(int dynamic, xx_parser_token *T, zval *parameters, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "new"); - - parser_add_str_free(ret, "class", T->token); - efree(T); - - parser_add_int(ret, "dynamic", dynamic); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_new_instance_type(zval *type, zval *parameters, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "new-type"); - parser_add_zval(ret, "internal-type", type); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_throw_exception(zval *expr, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "throw"); - if (expr) { - parser_add_zval(ret, "expr", expr); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_fcall(int type, xx_parser_token *F, zval *parameters, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "fcall"); - - parser_add_str_free(ret, "name", F->token); - efree(F); - - parser_add_int(ret, "call-type", type); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_mcall(int type, zval *O, xx_parser_token *M, zval *parameters, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "mcall"); - parser_add_zval(ret, "variable", O); - - parser_add_str_free(ret, "name", M->token); - efree(M); - - parser_add_int(ret, "call-type", type); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_scall(int dynamic_class, char *class_name, int dynamic_method, xx_parser_token *M, zval *parameters, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "scall"); - parser_add_int(ret, "dynamic-class", dynamic_class); - parser_add_str(ret, "class", class_name); - parser_add_int(ret, "dynamic", dynamic_method); - - parser_add_str_free(ret, "name", M->token); - efree(M); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_call_parameter(xx_parser_token *N, zval *parameter, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - if (N) { - parser_add_str_free(ret, "name", N->token); - efree(N); - } - - parser_add_zval(ret, "parameter", parameter); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_comment(xx_parser_token *T, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "comment"); - - parser_add_str_free(ret, "value", T->token); - efree(T); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} - -static zval *xx_ret_cblock(xx_parser_token *T, xx_scanner_state *state) -{ - zval *ret = parser_array_init(state); - - parser_add_str(ret, "type", "cblock"); - - parser_add_str_free(ret, "value", T->token); - efree(T); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); - - return ret; -} diff --git a/parser/parser/parser.php5.lemon b/parser/parser/parser.php5.lemon deleted file mode 100644 index f2518de68f..0000000000 --- a/parser/parser/parser.php5.lemon +++ /dev/null @@ -1,2139 +0,0 @@ - -/* - +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | - | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | - +--------------------------------------------------------------------------+ -*/ - -/** - * Zephir parser - * - * This parser is intended to produce a better and safe code generation - * rather than full expresiveness - */ - -%token_prefix XX_ -%token_type {xx_parser_token*} -%default_type {zval*} -%extra_argument {xx_parser_status *status} -%name xx_ - -%left INTERNAL PUBLIC PROTECTED STATIC PRIVATE SCOPED . - -%left COMMA . -%right REQUIRE . -%right DOUBLEARROW . -%right QUESTION . -%right LIKELY UNLIKELY . -%left OR . -%left AND . -%left INSTANCEOF . -%left BITWISE_OR BITWISE_XOR BITWISE_SHIFTLEFT BITWISE_SHIFTRIGHT . -%left EQUALS IDENTICAL LESS GREATER LESSEQUAL GREATEREQUAL NOTIDENTICAL NOTEQUALS . -%left ADD SUB CONCAT . -%left MUL DIV MOD . -%right ISSET FETCH EMPTY . -%left INCLUSIVE_RANGE EXCLUSIVE_RANGE . -%right TYPEOF . -%right CLONE . -%right NEW . -%right NOT . -%right BITWISE_NOT . -%left BITWISE_AND . -%right PARENTHESES_CLOSE . -%right SBRACKET_OPEN . -%right ARROW . - -%include { -#include "parser.php5.inc.h" -} - -%syntax_error { - - zval *syntax_error = parser_array_init(status->scanner_state); - - parser_add_str(syntax_error, "type", "error"); - - if (status->scanner_state->start_length) { - parser_add_str(syntax_error, "message", "Syntax error"); - } else { - parser_add_str(syntax_error, "message", "Unexpected EOF"); - } - - parser_add_str(syntax_error, "file", status->scanner_state->active_file); - parser_add_int(syntax_error, "line", status->scanner_state->active_line); - parser_add_int(syntax_error, "char", status->scanner_state->active_char); - - status->status = XX_PARSING_FAILED; - - status->ret = syntax_error; -} - -%token_destructor { - if ($$) { - if ($$->free_flag) { - efree($$->token); - } - efree($$); - } -} - -program ::= xx_language(Q) . { - status->ret = Q; -} - -%destructor xx_language { - //zval_ptr_dtor($$); - //efree($$); -} - -xx_language(R) ::= xx_top_statement_list(L) . { - R = L; -} - -xx_top_statement_list(R) ::= xx_top_statement_list(L) xx_top_statement(T) . { - R = xx_ret_list(L, T, status->scanner_state); -} - -xx_top_statement_list(R) ::= xx_top_statement(T) . { - R = xx_ret_list(NULL, T, status->scanner_state); -} - -xx_top_statement(R) ::= xx_namespace_def(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_use_aliases(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_function_def(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_class_def(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_interface_def(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_comment(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_cblock(T) . { - R = T; -} - -xx_namespace_def(R) ::= NAMESPACE IDENTIFIER(I) DOTCOMMA . { - R = xx_ret_namespace(I, status->scanner_state); -} - -xx_namespace_def(R) ::= USE xx_use_aliases_list(L) DOTCOMMA . { - R = xx_ret_use_aliases(L, status->scanner_state); -} - -xx_use_aliases_list(R) ::= xx_use_aliases_list(L) COMMA xx_use_aliases(U) . { - R = xx_ret_list(L, U, status->scanner_state); -} - -xx_use_aliases_list(R) ::= xx_use_aliases(U) . { - R = xx_ret_list(NULL, U, status->scanner_state); -} - -xx_use_aliases(R) ::= IDENTIFIER(I) . { - R = xx_ret_use_aliases_item(I, NULL, status->scanner_state); -} - -xx_use_aliases(R) ::= IDENTIFIER(I) AS IDENTIFIER(A) . { - R = xx_ret_use_aliases_item(I, A, status->scanner_state); -} - -/** (global method) function definition */ - -/** FUNCTION() -> xx_method_return_type { } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_function(I, NULL, NULL, NULL, T, status->scanner_state); -} - -/** FUNCTION() -> xx_method_return_type; */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - R = xx_ret_function(I, NULL, NULL, NULL, T, status->scanner_state); -} - -/** FUNCTION(xx_parameter_list) -> xx_method_return_type { } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_function(I, L, NULL, NULL, T, status->scanner_state); -} - -/** FUNCTION(xx_parameter_list) -> xx_method_return_type; */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - R = xx_ret_function(I, L, NULL, NULL, T, status->scanner_state); -} - -/** FUNCTION() -> xx_method_return_type { xx_statement_list } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_function(I, NULL, S, NULL, T, status->scanner_state); -} - -/** FUNCTION(xx_parameter_list) -> xx_method_return_type { xx_statement_list } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_function(I, L, S, NULL, T, status->scanner_state); -} - -/** FUNCTION () {} */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_function(I, NULL, NULL, NULL, NULL, status->scanner_state); -} - -/** FUNCTION (); */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA . { - R = xx_ret_function(I, NULL, NULL, NULL, NULL, status->scanner_state); -} - -/** FUNCTION (xx_parameter_list) {} */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_function(I, L, NULL, NULL, NULL, status->scanner_state); -} - -/** FUNCTION (xx_parameter_list); */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE DOTCOMMA . { - R = xx_ret_function(I, L, NULL, NULL, NULL, status->scanner_state); -} - -/** FUNCTION () { xx_statement_list } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_function(I, NULL, S, NULL, NULL, status->scanner_state); -} - -/** FUNCTION (xx_parameter_list) { xx_statement_list } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_function(I, L, S, NULL, NULL, status->scanner_state); -} - -xx_interface_def(R) ::= INTERFACE IDENTIFIER(I) xx_interface_body(B) . { - R = xx_ret_interface(I, B, NULL, status->scanner_state); -} - -xx_interface_def(R) ::= INTERFACE IDENTIFIER(I) EXTENDS xx_implements_list(L) xx_interface_body(B) . { - R = xx_ret_interface(I, B, L, status->scanner_state); -} - -xx_class_def(R) ::= CLASS IDENTIFIER(I) xx_class_body(B) . { - R = xx_ret_class(I, B, 0, 0, NULL, NULL, status->scanner_state); -} - -xx_class_def(R) ::= CLASS IDENTIFIER(I) EXTENDS IDENTIFIER(E) xx_class_body(B) . { - R = xx_ret_class(I, B, 0, 0, E, NULL, status->scanner_state); -} - -xx_class_def(R) ::= CLASS IDENTIFIER(I) IMPLEMENTS xx_implements_list(L) xx_class_body(B) . { - R = xx_ret_class(I, B, 0, 0, NULL, L, status->scanner_state); -} - -xx_class_def(R) ::= CLASS IDENTIFIER(I) EXTENDS IDENTIFIER(E) IMPLEMENTS xx_implements_list(L) xx_class_body(B) . { - R = xx_ret_class(I, B, 0, 0, E, L, status->scanner_state); -} - -xx_class_def(R) ::= ABSTRACT CLASS IDENTIFIER(I) xx_class_body(B) . { - R = xx_ret_class(I, B, 1, 0, NULL, NULL, status->scanner_state); -} - -xx_class_def(R) ::= ABSTRACT CLASS IDENTIFIER(I) EXTENDS IDENTIFIER(E) xx_class_body(B) . { - R = xx_ret_class(I, B, 1, 0, E, NULL, status->scanner_state); -} - -xx_class_def(R) ::= ABSTRACT CLASS IDENTIFIER(I) IMPLEMENTS xx_implements_list(L) xx_class_body(B) . { - R = xx_ret_class(I, B, 1, 0, NULL, L, status->scanner_state); -} - -xx_class_def(R) ::= ABSTRACT CLASS IDENTIFIER(I) EXTENDS IDENTIFIER(E) IMPLEMENTS xx_implements_list(L) xx_class_body(B) . { - R = xx_ret_class(I, B, 1, 0, E, L, status->scanner_state); -} - -xx_class_def(R) ::= FINAL CLASS IDENTIFIER(I) xx_class_body(B) . { - R = xx_ret_class(I, B, 0, 1, NULL, NULL, status->scanner_state); -} - -xx_class_def(R) ::= FINAL CLASS IDENTIFIER(I) EXTENDS IDENTIFIER(E) xx_class_body(B) . { - R = xx_ret_class(I, B, 0, 1, E, NULL, status->scanner_state); -} - -xx_class_def(R) ::= FINAL CLASS IDENTIFIER(I) IMPLEMENTS xx_implements_list(L) xx_class_body(B) . { - R = xx_ret_class(I, B, 0, 1, NULL, L, status->scanner_state); -} - -xx_class_body(R) ::= BRACKET_OPEN BRACKET_CLOSE . { - R = NULL; -} - -xx_class_body(R) ::= BRACKET_OPEN xx_class_definition(C) BRACKET_CLOSE . { - R = C; -} - -xx_implements_list(R) ::= xx_implements_list(L) COMMA xx_implements(I) . { - R = xx_ret_list(L, I, status->scanner_state); -} - -xx_implements_list(R) ::= xx_implements(I) . { - R = xx_ret_list(NULL, I, status->scanner_state); -} - -xx_implements(R) ::= IDENTIFIER(I) . { - R = xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state); -} - -xx_interface_body(R) ::= BRACKET_OPEN BRACKET_CLOSE . { - R = NULL; -} - -xx_interface_body(R) ::= BRACKET_OPEN xx_interface_definition(D) BRACKET_CLOSE . { - R = D; -} - -xx_class_definition(R) ::= xx_class_properties_definition(C) . { - R = xx_ret_class_definition(C, NULL, NULL, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_consts_definition(C) . { - R = xx_ret_class_definition(NULL, NULL, C, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_methods_definition(M) . { - R = xx_ret_class_definition(NULL, M, NULL, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_properties_definition(C) xx_class_methods_definition(M) . { - R = xx_ret_class_definition(C, M, NULL, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_properties_definition(C) xx_class_consts_definition(K) . { - R = xx_ret_class_definition(C, NULL, K, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_consts_definition(K) xx_class_properties_definition(C) . { - R = xx_ret_class_definition(C, NULL, K, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_consts_definition(K) xx_class_methods_definition(M) . { - R = xx_ret_class_definition(NULL, M, K, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_properties_definition(C) xx_class_consts_definition(K) xx_class_methods_definition(M) . { - R = xx_ret_class_definition(C, M, K, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_consts_definition(K) xx_class_properties_definition(C) xx_class_methods_definition(M) . { - R = xx_ret_class_definition(C, M, K, status->scanner_state); -} - -xx_interface_definition(R) ::= xx_class_consts_definition(C) . { - R = xx_ret_interface_definition(NULL, C, status->scanner_state); -} - -xx_interface_definition(R) ::= xx_interface_methods_definition(M) . { - R = xx_ret_interface_definition(M, NULL, status->scanner_state); -} - -xx_interface_definition(R) ::= xx_class_consts_definition(C) xx_interface_methods_definition(M) . { - R = xx_ret_interface_definition(M, C, status->scanner_state); -} - -xx_class_properties_definition(R) ::= xx_class_properties_definition(L) xx_class_property_definition(P) . { - R = xx_ret_list(L, P, status->scanner_state); -} - -xx_class_properties_definition(R) ::= xx_class_property_definition(P) . { - R = xx_ret_list(NULL, P, status->scanner_state); -} - -/* property definition */ -xx_class_property_definition(R) ::= COMMENT(C) xx_visibility_list(V) IDENTIFIER(I) DOTCOMMA . { - R = xx_ret_class_property(V, I, NULL, C, NULL, status->scanner_state); -} - -xx_class_property_definition(R) ::= xx_visibility_list(V) IDENTIFIER(I) DOTCOMMA . { - R = xx_ret_class_property(V, I, NULL, NULL, NULL, status->scanner_state); -} - -xx_class_property_definition(R) ::= COMMENT(C) xx_visibility_list(V) IDENTIFIER(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - R = xx_ret_class_property(V, I, E, C, NULL, status->scanner_state); -} - -xx_class_property_definition(R) ::= xx_visibility_list(V) IDENTIFIER(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - R = xx_ret_class_property(V, I, E, NULL, NULL, status->scanner_state); -} - -xx_class_property_definition(R) ::= COMMENT(C) xx_visibility_list(V) IDENTIFIER(I) xx_class_property_shortcuts(S) DOTCOMMA . { - R = xx_ret_class_property(V, I, NULL, C, S, status->scanner_state); -} - -xx_class_property_definition(R) ::= xx_visibility_list(V) IDENTIFIER(I) xx_class_property_shortcuts(S) DOTCOMMA . { - R = xx_ret_class_property(V, I, NULL, NULL, S, status->scanner_state); -} - -xx_class_property_definition(R) ::= COMMENT(C) xx_visibility_list(V) IDENTIFIER(I) ASSIGN xx_literal_expr(E) xx_class_property_shortcuts(S) DOTCOMMA . { - R = xx_ret_class_property(V, I, E, C, S, status->scanner_state); -} - -xx_class_property_definition(R) ::= xx_visibility_list(V) IDENTIFIER(I) ASSIGN xx_literal_expr(E) xx_class_property_shortcuts(S) DOTCOMMA . { - R = xx_ret_class_property(V, I, E, NULL, S, status->scanner_state); -} - -xx_class_property_shortcuts(R) ::= BRACKET_OPEN BRACKET_CLOSE . { - R = NULL; -} - -xx_class_property_shortcuts(R) ::= BRACKET_OPEN xx_class_property_shortcuts_list(L) BRACKET_CLOSE . { - R = L; -} - -xx_class_property_shortcuts_list(R) ::= xx_class_property_shortcuts_list(L) COMMA xx_class_property_shortcut(S) . { - R = xx_ret_list(L, S, status->scanner_state); -} - -xx_class_property_shortcuts_list(R) ::= xx_class_property_shortcut(S) . { - R = xx_ret_list(NULL, S, status->scanner_state); -} - -xx_class_property_shortcut(R) ::= IDENTIFIER(D) . { - R = xx_ret_property_shortcut(NULL, D, status->scanner_state); -} - -xx_class_property_shortcut(R) ::= COMMENT(C) IDENTIFIER(D) . { - R = xx_ret_property_shortcut(C, D, status->scanner_state); -} - -/* constants definition */ -xx_class_consts_definition(R) ::= xx_class_consts_definition(L) xx_class_const_definition(K) . { - R = xx_ret_list(L, K, status->scanner_state); -} - -xx_class_consts_definition(R) ::= xx_class_const_definition(K) . { - R = xx_ret_list(NULL, K, status->scanner_state); -} - -xx_class_methods_definition(R) ::= xx_class_methods_definition(L) xx_class_method_definition(P) . { - R = xx_ret_list(L, P, status->scanner_state); -} - -xx_class_methods_definition(R) ::= xx_class_method_definition(P) . { - R = xx_ret_list(NULL, P, status->scanner_state); -} - -xx_interface_methods_definition(R) ::= xx_interface_methods_definition(L) xx_interface_method_definition(P) . { - R = xx_ret_list(L, P, status->scanner_state); -} - -xx_interface_methods_definition(R) ::= xx_interface_method_definition(P) . { - R = xx_ret_list(NULL, P, status->scanner_state); -} - -xx_class_const_definition(R) ::= COMMENT(C) CONST CONSTANT(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - R = xx_ret_class_const(I, E, C, status->scanner_state); -} - -xx_class_const_definition(R) ::= CONST CONSTANT(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - R = xx_ret_class_const(I, E, NULL, status->scanner_state); -} - -xx_class_const_definition(R) ::= COMMENT(C) CONST IDENTIFIER(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - R = xx_ret_class_const(I, E, C, status->scanner_state); -} - -xx_class_const_definition(R) ::= CONST IDENTIFIER(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - R = xx_ret_class_const(I, E, NULL, status->scanner_state); -} - -/** method definition */ - -/** xx_visibility_list FUNCTION (xx_parameter_list) {} */ -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, NULL, NULL, NULL, NULL, status->scanner_state); -} - -/** xx_visibility_list FUNCTION (xx_parameter_list); */ -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA . { - R = xx_ret_class_method(V, I, NULL, NULL, NULL, NULL, status->scanner_state); -} - -/** xx_visibility_list FUNCTION (xx_parameter_list) {} */ -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, L, NULL, NULL, NULL, status->scanner_state); -} - -/** xx_visibility_list FUNCTION (xx_parameter_list); */ -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE DOTCOMMA . { - R = xx_ret_class_method(V, I, L, NULL, NULL, NULL, status->scanner_state); -} - -/** xx_visibility_list FUNCTION () { xx_statement_list } */ -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, NULL, S, NULL, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, L, S, NULL, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, NULL, NULL, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA . { - R = xx_ret_class_method(V, I, NULL, NULL, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, L, NULL, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE DOTCOMMA . { - R = xx_ret_class_method(V, I, L, NULL, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, NULL, S, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, L, S, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, NULL, NULL, NULL, T, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - R = xx_ret_class_method(V, I, NULL, NULL, NULL, T, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, L, NULL, NULL, T, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - R = xx_ret_class_method(V, I, L, NULL, NULL, T, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, NULL, S, NULL, T, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, L, S, NULL, T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, NULL, NULL, C, T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - R = xx_ret_class_method(V, I, NULL, NULL, C, T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, L, NULL, C, T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - R = xx_ret_class_method(V, I, L, NULL, C, T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, NULL, S, C, T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_class_method(V, I, L, S, C, T, status->scanner_state); -} - -/* method definition */ -xx_interface_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - R = xx_ret_class_method(V, I, NULL, NULL, NULL, T, status->scanner_state); -} - -xx_interface_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - R = xx_ret_class_method(V, I, L, NULL, NULL, T, status->scanner_state); -} - -xx_interface_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - R = xx_ret_class_method(V, I, NULL, NULL, C, T, status->scanner_state); -} - -xx_interface_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - R = xx_ret_class_method(V, I, L, NULL, C, T, status->scanner_state); -} - -xx_interface_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA . { - R = xx_ret_class_method(V, I, NULL, NULL, NULL, NULL, status->scanner_state); -} - -xx_interface_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE DOTCOMMA . { - R = xx_ret_class_method(V, I, L, NULL, NULL, NULL, status->scanner_state); -} - -xx_interface_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA . { - R = xx_ret_class_method(V, I, NULL, NULL, C, NULL, status->scanner_state); -} - -xx_interface_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE DOTCOMMA . { - R = xx_ret_class_method(V, I, L, NULL, C, NULL, status->scanner_state); -} - -/* visibility and modifiers */ -xx_visibility_list(R) ::= xx_visibility_list(L) xx_visibility(K) . { - R = xx_ret_list(L, K, status->scanner_state); -} - -xx_visibility_list(R) ::= xx_visibility(K) . { - R = xx_ret_list(NULL, K, status->scanner_state); -} - -xx_visibility(R) ::= INTERNAL . { - R = parser_get_string("internal"); -} - -xx_visibility(R) ::= PUBLIC . { - R = parser_get_string("public"); -} - -xx_visibility(R) ::= PROTECTED . { - R = parser_get_string("protected"); -} - -xx_visibility(R) ::= PRIVATE. { - R = parser_get_string("private"); -} - -xx_visibility(R) ::= STATIC . { - R = parser_get_string("static"); -} - -xx_visibility(R) ::= SCOPED . { - R = parser_get_string("scoped"); -} - -xx_visibility(R) ::= INLINE . { - R = parser_get_string("inline"); -} - -xx_visibility(R) ::= DEPRECATED . { - R = parser_get_string("deprecated"); -} - -xx_visibility(R) ::= ABSTRACT . { - R = parser_get_string("abstract"); -} - -xx_visibility(R) ::= FINAL . { - R = parser_get_string("final"); -} - -/* return type */ -xx_method_return_type(R) ::= VOID . { - R = xx_ret_return_type(1, NULL, status->scanner_state); -} - -xx_method_return_type(R) ::= xx_method_return_type_list(L) . { - R = xx_ret_return_type(0, L, status->scanner_state); -} - -xx_method_return_type_list(R) ::= xx_method_return_type_list(L) BITWISE_OR xx_method_return_type_item(I) . { - R = xx_ret_list(L, I, status->scanner_state); -} - -xx_method_return_type_list(R) ::= xx_method_return_type_item(I) . { - R = xx_ret_list(NULL, I, status->scanner_state); -} - -xx_method_return_type_item(R) ::= xx_parameter_type(T) . { - R = xx_ret_return_type_item(T, NULL, 0, 0, status->scanner_state); -} - -xx_method_return_type_item(R) ::= NULL . { - R = xx_ret_return_type_item(xx_ret_type(XX_T_TYPE_NULL), NULL, 0, 0, status->scanner_state); -} - -xx_method_return_type_item(R) ::= THIS . { - R = xx_ret_return_type_item(xx_ret_type(XX_T_TYPE_THIS), NULL, 0, 0, status->scanner_state); -} - -xx_method_return_type_item(R) ::= xx_parameter_type(T) NOT . { - R = xx_ret_return_type_item(T, NULL, 1, 0, status->scanner_state); -} - -xx_method_return_type_item(R) ::= xx_parameter_cast(T) . { - R = xx_ret_return_type_item(NULL, T, 0, 0, status->scanner_state); -} - -xx_method_return_type_item(R) ::= xx_parameter_cast_collection(T) . { - R = xx_ret_return_type_item(NULL, T, 0, 1, status->scanner_state); -} - -/* parameters list */ -xx_parameter_list(R) ::= xx_parameter_list(L) COMMA xx_parameter(P) . { - R = xx_ret_list(L, P, status->scanner_state); -} - -xx_parameter_list(R) ::= xx_parameter(P) . { - R = xx_ret_list(NULL, P, status->scanner_state); -} - -/* xx_parameter_list */ - -// a -xx_parameter(R) ::= IDENTIFIER(I) . { - R = xx_ret_parameter(0, NULL, NULL, I, NULL, 0, 0, status->scanner_state); -} - -// &a -xx_parameter(R) ::= BITWISE_AND IDENTIFIER(I) . { - R = xx_ret_parameter(0, NULL, NULL, I, NULL, 0, 1, status->scanner_state); -} - -// const a -xx_parameter(R) ::= CONST IDENTIFIER(I) . { - R = xx_ret_parameter(1, NULL, NULL, I, NULL, 0, 0, status->scanner_state); -} - -// const &a -xx_parameter(R) ::= CONST BITWISE_AND IDENTIFIER(I) . { - R = xx_ret_parameter(1, NULL, NULL, I, NULL, 0, 1, status->scanner_state); -} - -// type a -xx_parameter(R) ::= xx_parameter_type(T) IDENTIFIER(I) . { - R = xx_ret_parameter(0, T, NULL, I, NULL, 0, 0, status->scanner_state); -} - -// type &a -xx_parameter(R) ::= xx_parameter_type(T) BITWISE_AND IDENTIFIER(I) . { - R = xx_ret_parameter(0, T, NULL, I, NULL, 0, 1, status->scanner_state); -} - -// const type a -xx_parameter(R) ::= CONST xx_parameter_type(T) IDENTIFIER(I) . { - R = xx_ret_parameter(1, T, NULL, I, NULL, 0, 0, status->scanner_state); -} - -// const type &a -xx_parameter(R) ::= CONST xx_parameter_type(T) BITWISE_AND IDENTIFIER(I) . { - R = xx_ret_parameter(1, T, NULL, I, NULL, 0, 1, status->scanner_state); -} - -// type! a -xx_parameter(R) ::= xx_parameter_type(T) NOT IDENTIFIER(I) . { - R = xx_ret_parameter(0, T, NULL, I, NULL, 1, 0, status->scanner_state); -} - -// type! &a -xx_parameter(R) ::= xx_parameter_type(T) NOT BITWISE_AND IDENTIFIER(I) . { - R = xx_ret_parameter(0, T, NULL, I, NULL, 1, 1, status->scanner_state); -} - -// const type! a -xx_parameter(R) ::= CONST xx_parameter_type(T) NOT IDENTIFIER(I) . { - R = xx_ret_parameter(1, T, NULL, I, NULL, 1, 0, status->scanner_state); -} - -// const type! &a -xx_parameter(R) ::= CONST xx_parameter_type(T) NOT BITWISE_AND IDENTIFIER(I) . { - R = xx_ret_parameter(1, T, NULL, I, NULL, 1, 1, status->scanner_state); -} - -// a -xx_parameter(R) ::= xx_parameter_cast(C) IDENTIFIER(I) . { - R = xx_ret_parameter(0, NULL, C, I, NULL, 0, 0, status->scanner_state); -} - -// &a -xx_parameter(R) ::= xx_parameter_cast(C) BITWISE_AND IDENTIFIER(I) . { - R = xx_ret_parameter(0, NULL, C, I, NULL, 0, 1, status->scanner_state); -} - -// const a -xx_parameter(R) ::= CONST xx_parameter_cast(C) IDENTIFIER(I) . { - R = xx_ret_parameter(1, NULL, C, I, NULL, 0, 0, status->scanner_state); -} - -// const &a -xx_parameter(R) ::= CONST xx_parameter_cast(C) BITWISE_AND IDENTIFIER(I) . { - R = xx_ret_parameter(1, NULL, C, I, NULL, 0, 1, status->scanner_state); -} - -// a = default_value -xx_parameter(R) ::= IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(0, NULL, NULL, I, E, 0, 0, status->scanner_state); -} - -// &a = default_value -xx_parameter(R) ::= BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(0, NULL, NULL, I, E, 0, 1, status->scanner_state); -} - -// const a = default_value -xx_parameter(R) ::= CONST IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(1, NULL, NULL, I, E, 0, 0, status->scanner_state); -} - -// const &a = default_value -xx_parameter(R) ::= CONST BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(1, NULL, NULL, I, E, 0, 1, status->scanner_state); -} - -// type a = default_value -xx_parameter(R) ::= xx_parameter_type(T) IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(0, T, NULL, I, E, 0, 0, status->scanner_state); -} - -// type &a = default_value -xx_parameter(R) ::= xx_parameter_type(T) BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(0, T, NULL, I, E, 0, 1, status->scanner_state); -} - -// const type a = default_value -xx_parameter(R) ::= CONST xx_parameter_type(T) IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(1, T, NULL, I, E, 0, 0, status->scanner_state); -} - -// const type &a = default_value -xx_parameter(R) ::= CONST xx_parameter_type(T) BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(1, T, NULL, I, E, 0, 1, status->scanner_state); -} - -// type! a = default_value -xx_parameter(R) ::= xx_parameter_type(T) NOT IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(0, T, NULL, I, E, 1, 0, status->scanner_state); -} - -// type! &a = default_value -xx_parameter(R) ::= xx_parameter_type(T) NOT BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(0, T, NULL, I, E, 1, 1, status->scanner_state); -} - -// const type! a = default_value -xx_parameter(R) ::= CONST xx_parameter_type(T) NOT IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(1, T, NULL, I, E, 1, 0, status->scanner_state); -} - -// const type! &a = default_value -xx_parameter(R) ::= CONST xx_parameter_type(T) NOT BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(1, T, NULL, I, E, 1, 1, status->scanner_state); -} - -// a = default_value -xx_parameter(R) ::= xx_parameter_cast(C) IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(0, NULL, C, I, E, 0, 0, status->scanner_state); -} - -// &a = default_value -xx_parameter(R) ::= xx_parameter_cast(C) BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(0, NULL, C, I, E, 0, 1, status->scanner_state); -} - -// const a = default_value -xx_parameter(R) ::= CONST xx_parameter_cast(C) IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(1, NULL, C, I, E, 0, 0, status->scanner_state); -} - -// const &a = default_value -xx_parameter(R) ::= CONST xx_parameter_cast(C) BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - R = xx_ret_parameter(1, NULL, C, I, E, 0, 1, status->scanner_state); -} - -/* xx_parameter_cast */ -xx_parameter_cast(R) ::= LESS IDENTIFIER(I) GREATER . { - R = xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state); -} - -xx_parameter_cast_collection(R) ::= LESS IDENTIFIER(I) SBRACKET_OPEN SBRACKET_CLOSE GREATER . { - R = xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state); -} - -xx_parameter_type(R) ::= TYPE_INTEGER . { - R = xx_ret_type(XX_TYPE_INTEGER); -} - -xx_parameter_type(R) ::= TYPE_UINTEGER . { - R = xx_ret_type(XX_TYPE_UINTEGER); -} - -xx_parameter_type(R) ::= TYPE_LONG . { - R = xx_ret_type(XX_TYPE_LONG); -} - -xx_parameter_type(R) ::= TYPE_ULONG . { - R = xx_ret_type(XX_TYPE_ULONG); -} - -xx_parameter_type(R) ::= TYPE_CHAR . { - R = xx_ret_type(XX_TYPE_CHAR); -} - -xx_parameter_type(R) ::= TYPE_UCHAR . { - R = xx_ret_type(XX_TYPE_UCHAR); -} - -xx_parameter_type(R) ::= TYPE_DOUBLE . { - R = xx_ret_type(XX_TYPE_DOUBLE); -} - -xx_parameter_type(R) ::= TYPE_BOOL . { - R = xx_ret_type(XX_TYPE_BOOL); -} - -xx_parameter_type(R) ::= TYPE_STRING . { - R = xx_ret_type(XX_TYPE_STRING); -} - -xx_parameter_type(R) ::= TYPE_ARRAY . { - R = xx_ret_type(XX_TYPE_ARRAY); -} - -xx_parameter_type(R) ::= TYPE_VAR . { - R = xx_ret_type(XX_TYPE_VAR); -} - -xx_parameter_type(R) ::= TYPE_CALLABLE . { - R = xx_ret_type(XX_TYPE_CALLABLE); -} - -xx_parameter_type(R) ::= TYPE_RESOURCE . { - R = xx_ret_type(XX_TYPE_RESOURCE); -} - -xx_parameter_type(R) ::= TYPE_OBJECT . { - R = xx_ret_type(XX_TYPE_OBJECT); -} - -xx_statement_list(R) ::= xx_statement_list(L) xx_statement(S) . { - R = xx_ret_list(L, S, status->scanner_state); -} - -xx_statement_list(R) ::= xx_statement(S) . { - R = xx_ret_list(NULL, S, status->scanner_state); -} - -xx_statement(R) ::= xx_cblock(S) . { - R = S; -} - -xx_statement(R) ::= xx_let_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_if_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_loop_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_echo_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_return_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_require_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_fetch_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_fcall_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_mcall_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_scall_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_unset_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_throw_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_declare_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_break_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_continue_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_while_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_do_while_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_try_catch_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_switch_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_for_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_comment(S) . { - R = S; -} - - - -xx_statement(R) ::= xx_empty_statement(S) . { - R = S; -} - -xx_empty_statement(R) ::= DOTCOMMA . { - R = xx_ret_empty_statement(status->scanner_state); -} - -xx_break_statement(R) ::= BREAK DOTCOMMA . { - R = xx_ret_break_statement(status->scanner_state); -} - -xx_continue_statement(R) ::= CONTINUE DOTCOMMA . { - R = xx_ret_continue_statement(status->scanner_state); -} - -/* if(a) {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_if_statement(E, NULL, NULL, NULL, status->scanner_state); -} - -/* if(a) {} elseif(b) {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE xx_elseif_statements(L) . { - R = xx_ret_if_statement(E, NULL, NULL, L, status->scanner_state); -} - -/* if(a) {} else {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE ELSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_if_statement(E, NULL, NULL, NULL, status->scanner_state); -} - -/* if(a) {} elseif(b) {} else {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE xx_elseif_statements(L) ELSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_if_statement(E, NULL, L, NULL, status->scanner_state); -} - -/* if(a) {...} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_if_statement(E, L, NULL, NULL, status->scanner_state); -} - -/* if(a) {...} elseif(b) {...} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE xx_elseif_statements(S) . { - R = xx_ret_if_statement(E, L, S, NULL, status->scanner_state); -} - -/* if(a) {...} else {...} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE ELSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_if_statement(E, L, NULL, S, status->scanner_state); -} - -/* if(a) {...} elseif(b) {...} else {...} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE xx_elseif_statements(ES) ELSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_if_statement(E, L, ES, S, status->scanner_state); -} - -/* if(a) {...} else {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE ELSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_if_statement(E, L, NULL, NULL, status->scanner_state); -} - -/* if(a) {...} elseif(b) {} else {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE xx_elseif_statements(S) ELSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_if_statement(E, L, S, NULL, status->scanner_state); -} - -/* if(a) {} else {...} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE ELSE BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_if_statement(E, NULL, NULL, L, status->scanner_state); -} - -xx_elseif_statements(R) ::= xx_elseif_statements(C) xx_elseif_statement(K) . { - R = xx_ret_list(C, K, status->scanner_state); -} - -xx_elseif_statements(R) ::= xx_elseif_statement(K) . { - R = xx_ret_list(NULL, K, status->scanner_state); -} - -/* elseif(b) {} */ -xx_elseif_statement(R) ::= ELSEIF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_if_statement(E, NULL, NULL, NULL, status->scanner_state); -} - -/* elseif(b) {...} */ -xx_elseif_statement(R) ::= ELSEIF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_if_statement(E, L, NULL, NULL, status->scanner_state); -} - -xx_switch_statement(R) ::= SWITCH xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_switch_statement(E, NULL, status->scanner_state); -} - -xx_switch_statement(R) ::= SWITCH xx_eval_expr(E) BRACKET_OPEN xx_case_clauses(C) BRACKET_CLOSE . { - R = xx_ret_switch_statement(E, C, status->scanner_state); -} - -xx_case_clauses(R) ::= xx_case_clauses(C) xx_case_clause(K) . { - R = xx_ret_list(C, K, status->scanner_state); -} - -xx_case_clauses(R) ::= xx_case_clause(K) . { - R = xx_ret_list(NULL, K, status->scanner_state); -} - -xx_case_clause(R) ::= CASE xx_eval_expr(E) COLON . { - R = xx_ret_case_clause(E, NULL, status->scanner_state); -} - -xx_case_clause(R) ::= CASE xx_eval_expr(E) COLON xx_statement_list(L) . { - R = xx_ret_case_clause(E, L, status->scanner_state); -} - -xx_case_clause(R) ::= DEFAULT COLON xx_statement_list(L) . { - R = xx_ret_case_clause(NULL, L, status->scanner_state); -} - -xx_loop_statement(R) ::= LOOP BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_loop_statement(NULL, status->scanner_state); -} - -xx_loop_statement(R) ::= LOOP BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_loop_statement(L, status->scanner_state); -} - -xx_while_statement(R) ::= WHILE xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_while_statement(E, NULL, status->scanner_state); -} - -xx_while_statement(R) ::= WHILE xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_while_statement(E, L, status->scanner_state); -} - -xx_do_while_statement(R) ::= DO BRACKET_OPEN BRACKET_CLOSE WHILE xx_eval_expr(E) DOTCOMMA . { - R = xx_ret_do_while_statement(E, NULL, status->scanner_state); -} - -xx_do_while_statement(R) ::= DO BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE WHILE xx_eval_expr(E) DOTCOMMA . { - R = xx_ret_do_while_statement(E, L, status->scanner_state); -} - -xx_try_catch_statement(R) ::= TRY BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_try_catch_statement(NULL, NULL, status->scanner_state); -} - -xx_try_catch_statement(R) ::= TRY BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_try_catch_statement(L, NULL, status->scanner_state); -} - -xx_try_catch_statement(R) ::= TRY BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE xx_catch_statement_list(C) . { - R = xx_ret_try_catch_statement(L, C, status->scanner_state); -} - -xx_catch_statement_list(R) ::= xx_catch_statement_list(L) xx_catch_statement(C) . { - R = xx_ret_list(L, C, status->scanner_state); -} - -xx_catch_statement_list(R) ::= xx_catch_statement(C) . { - R = xx_ret_list(NULL, C, status->scanner_state); -} - -xx_catch_statement(R) ::= CATCH xx_catch_classes_list(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_catch_statement(E, NULL, L, status->scanner_state); -} - -xx_catch_statement(R) ::= CATCH xx_catch_classes_list(E) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_catch_statement(E, NULL, NULL, status->scanner_state); -} - -xx_catch_statement(R) ::= CATCH xx_catch_classes_list(E) COMMA IDENTIFIER(V) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_catch_statement(E, xx_ret_literal(XX_T_IDENTIFIER, V, status->scanner_state), NULL, status->scanner_state); -} - -xx_catch_statement(R) ::= CATCH xx_catch_classes_list(E) COMMA IDENTIFIER(V) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_catch_statement(E, xx_ret_literal(XX_T_IDENTIFIER, V, status->scanner_state), L, status->scanner_state); -} - -xx_catch_classes_list(R) ::= xx_catch_classes_list(L) BITWISE_OR xx_catch_class(C) . { - R = xx_ret_list(L, C, status->scanner_state); -} - -xx_catch_classes_list(R) ::= xx_catch_class(C) . { - R = xx_ret_list(NULL, C, status->scanner_state); -} - -xx_catch_class(R) ::= IDENTIFIER(C) . { - R = xx_ret_literal(XX_T_IDENTIFIER, C, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(V) IN xx_common_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_for_statement(E, NULL, V, 0, L, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(V) IN xx_common_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_for_statement(E, NULL, V, 0, NULL, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(V) IN REVERSE xx_common_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_for_statement(E, NULL, V, 1, L, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(K) COMMA IDENTIFIER(V) IN xx_common_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_for_statement(E, K, V, 0, L, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(K) COMMA IDENTIFIER(V) IN xx_common_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_for_statement(E, K, V, 0, NULL, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(K) COMMA IDENTIFIER(V) IN REVERSE xx_common_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - R = xx_ret_for_statement(E, K, V, 1, L, status->scanner_state); -} - -xx_let_statement(R) ::= LET xx_let_assignments(A) DOTCOMMA . { - R = xx_ret_let_statement(A, status->scanner_state); -} - -xx_let_assignments(R) ::= xx_let_assignments(L) COMMA xx_let_assignment(A) . { - R = xx_ret_list(L, A, status->scanner_state); -} - -xx_let_assignments(R) ::= xx_let_assignment(A) . { - R = xx_ret_list(NULL, A, status->scanner_state); -} - -// = -xx_assignment_operator(R) ::= ASSIGN . { - R = parser_get_string("assign"); -} - -// += -xx_assignment_operator(R) ::= ADDASSIGN . { - R = parser_get_string("add-assign"); -} - -// -= -xx_assignment_operator(R) ::= SUBASSIGN . { - R = parser_get_string("sub-assign"); -} - -// *= -xx_assignment_operator(R) ::= MULASSIGN . { - R = parser_get_string("mul-assign"); -} - -// /= -xx_assignment_operator(R) ::= DIVASSIGN . { - R = parser_get_string("div-assign"); -} - -// .= -xx_assignment_operator(R) ::= CONCATASSIGN . { - R = parser_get_string("concat-assign"); -} - -// %= -xx_assignment_operator(R) ::= MODASSIGN . { - R = parser_get_string("mod-assign"); -} - -/* y = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(I) xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("variable", O, I, NULL, NULL, E, status->scanner_state); -} - -/* y->x = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("object-property", O, D, I, NULL, E, status->scanner_state); -} - -/* y->{x} = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("variable-dynamic-object-property", O, D, I, NULL, E, status->scanner_state); -} - -/* y->{"x"} = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW BRACKET_OPEN STRING(S) BRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("string-dynamic-object-property", O, D, S, NULL, E, status->scanner_state); -} - -/* y->x[] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("object-property-append", O, D, I, NULL, E, status->scanner_state); -} - -/* y->x[z][] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) xx_array_offset_list(X) xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("object-property-array-index", O, D, I, X, E, status->scanner_state); -} - -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) xx_array_offset_list(X) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("object-property-array-index-append", O, D, I, X, E, status->scanner_state); -} - -/* y::x = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) DOUBLECOLON IDENTIFIER(I) xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("static-property", O, D, I, NULL, E, status->scanner_state); -} - -/* y::x[] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) DOUBLECOLON IDENTIFIER(I) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("static-property-append", O, D, I, NULL, E, status->scanner_state); -} - -/* y::x[z] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) DOUBLECOLON IDENTIFIER(I) xx_array_offset_list(X) xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("static-property-array-index", O, D, I, X, E, status->scanner_state); -} - -/* y::x[z][] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) DOUBLECOLON IDENTIFIER(I) xx_array_offset_list(X) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("static-property-array-index-append", O, D, I, X, E, status->scanner_state); -} - -/* y[] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(I) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("variable-append", O, I, NULL, NULL, E, status->scanner_state); -} - -/* y[x] = {expr} | y[x][z] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) xx_array_offset_list(A) xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("array-index", O, D, NULL, A, E, status->scanner_state); -} - -/* y[x][] = {expr} | y[x][z][] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) xx_array_offset_list(A) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("array-index-append", O, D, NULL, A, E, status->scanner_state); -} - -xx_array_offset_list(R) ::= xx_array_offset_list(L) xx_array_offset(O) . { - R = xx_ret_list(L, O, status->scanner_state); -} - -xx_array_offset_list(R) ::= xx_array_offset(O) . { - R = xx_ret_list(NULL, O, status->scanner_state); -} - -xx_array_offset(R) ::= SBRACKET_OPEN xx_index_expr(I) SBRACKET_CLOSE . { - R = I; -} - -/* t->y++ */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) INCR . { - R = xx_ret_let_assignment("object-property-incr", NULL, D, I, NULL, NULL, status->scanner_state); -} - -/* t->y-- */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) DECR . { - R = xx_ret_let_assignment("object-property-decr", NULL, D, I, NULL, NULL, status->scanner_state); -} - -/* y++ */ -xx_let_assignment(R) ::= IDENTIFIER(I) INCR . { - R = xx_ret_let_assignment("incr", NULL, I, NULL, NULL, NULL, status->scanner_state); -} - -/* y-- */ -xx_let_assignment(R) ::= IDENTIFIER(I) DECR . { - R = xx_ret_let_assignment("decr", NULL, I, NULL, NULL, NULL, status->scanner_state); -} - -/* {y} = {expr} */ -xx_let_assignment(R) ::= BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("dynamic-variable", O, I, NULL, NULL, E, status->scanner_state); -} - -/* {"y"} = {expr} */ -xx_let_assignment(R) ::= BRACKET_OPEN STRING(S) BRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - R = xx_ret_let_assignment("dynamic-variable-string", O, S, NULL, NULL, E, status->scanner_state); -} - -xx_index_expr(R) ::= xx_common_expr(E) . { - R = E; -} - -xx_echo_statement(R) ::= ECHO xx_echo_expressions(E) DOTCOMMA . { - R = xx_ret_echo_statement(E, status->scanner_state); -} - -xx_echo_expressions(R) ::= xx_echo_expressions(L) COMMA xx_echo_expression(A) . { - R = xx_ret_list(L, A, status->scanner_state); -} - -xx_echo_expressions(R) ::= xx_echo_expression(A) . { - R = xx_ret_list(NULL, A, status->scanner_state); -} - -xx_echo_expression(R) ::= xx_common_expr(E) . { - R = E;; -} - -/* mcall statement */ -xx_mcall_statement(R) ::= xx_mcall_expr(E) DOTCOMMA . { - R = xx_ret_mcall_statement(E, status->scanner_state); -} - -/* fcall statement */ -xx_fcall_statement(R) ::= xx_fcall_expr(E) DOTCOMMA . { - R = xx_ret_fcall_statement(E, status->scanner_state); -} - -/* scall statement */ -xx_scall_statement(R) ::= xx_scall_expr(E) DOTCOMMA . { - R = xx_ret_scall_statement(E, status->scanner_state); -} - -/* fetch statement */ -xx_fetch_statement(R) ::= xx_fetch_expr(E) DOTCOMMA . { - R = xx_ret_fetch_statement(E, status->scanner_state); -} - -/* return statement */ -xx_return_statement(R) ::= RETURN xx_common_expr(E) DOTCOMMA . { - R = xx_ret_return_statement(E, status->scanner_state); -} - -/* return statement */ -xx_return_statement(R) ::= RETURN DOTCOMMA . { - R = xx_ret_return_statement(NULL, status->scanner_state); -} - -/* require statement */ -xx_require_statement(R) ::= REQUIRE xx_common_expr(E) DOTCOMMA . { - R = xx_ret_require_statement(E, status->scanner_state); -} - -/* unset {expr} */ -xx_unset_statement(R) ::= UNSET xx_common_expr(E) DOTCOMMA . { - R = xx_ret_unset_statement(E, status->scanner_state); -} - -/* throw {expr} */ -xx_throw_statement(R) ::= THROW xx_common_expr(E) DOTCOMMA . { - R = xx_ret_throw_exception(E, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_INTEGER xx_declare_variable_list(L) DOTCOMMA . { - R = xx_ret_declare_statement(XX_T_TYPE_INTEGER, L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_UINTEGER xx_declare_variable_list(L) DOTCOMMA . { - R = xx_ret_declare_statement(XX_T_TYPE_UINTEGER, L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_CHAR xx_declare_variable_list(L) DOTCOMMA . { - R = xx_ret_declare_statement(XX_T_TYPE_CHAR, L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_UCHAR xx_declare_variable_list(L) DOTCOMMA . { - R = xx_ret_declare_statement(XX_T_TYPE_UCHAR, L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_LONG xx_declare_variable_list(L) DOTCOMMA . { - R = xx_ret_declare_statement(XX_T_TYPE_LONG, L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_ULONG xx_declare_variable_list(L) DOTCOMMA . { - R = xx_ret_declare_statement(XX_T_TYPE_ULONG, L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_DOUBLE xx_declare_variable_list(L) DOTCOMMA . { - R = xx_ret_declare_statement(XX_T_TYPE_DOUBLE, L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_STRING xx_declare_variable_list(L) DOTCOMMA . { - R = xx_ret_declare_statement(XX_T_TYPE_STRING, L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_BOOL xx_declare_variable_list(L) DOTCOMMA . { - R = xx_ret_declare_statement(XX_T_TYPE_BOOL, L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_VAR xx_declare_variable_list(L) DOTCOMMA . { - R = xx_ret_declare_statement(XX_T_TYPE_VAR, L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_ARRAY xx_declare_variable_list(L) DOTCOMMA . { - R = xx_ret_declare_statement(XX_T_TYPE_ARRAY, L, status->scanner_state); -} - -xx_declare_variable_list(R) ::= xx_declare_variable_list(L) COMMA xx_declare_variable(V) . { - R = xx_ret_list(L, V, status->scanner_state); -} - -xx_declare_variable_list(R) ::= xx_declare_variable(V) . { - R = xx_ret_list(NULL, V, status->scanner_state); -} - -xx_declare_variable(R) ::= IDENTIFIER(I) . { - R = xx_ret_declare_variable(I, NULL, status->scanner_state); -} - -xx_declare_variable(R) ::= IDENTIFIER(I) ASSIGN xx_common_expr(E) . { - R = xx_ret_declare_variable(I, E, status->scanner_state); -} - -xx_assign_expr(R) ::= xx_common_expr(E) . { - R = E; -} - -xx_common_expr(R) ::= BITWISE_AND xx_common_expr(O1) . { - R = xx_ret_expr("reference", O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= NOT xx_common_expr(O1) . { - R = xx_ret_expr("not", O1, NULL, NULL, status->scanner_state); -} - -/* ~a */ -xx_common_expr(R) ::= BITWISE_NOT xx_common_expr(O1) . { - R = xx_ret_expr("bitwise_not", O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= SUB xx_common_expr(O1) . [NOT] { - R = xx_ret_expr("minus", O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= PLUS xx_common_expr(O1) . [NOT] { - R = xx_ret_expr("plus", O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= ISSET xx_common_expr(O1) . { - R = xx_ret_expr("isset", O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= REQUIRE xx_common_expr(O1) . { - R = xx_ret_expr("require", O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= CLONE xx_common_expr(O1) . { - R = xx_ret_expr("clone", O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= EMPTY xx_common_expr(O1) . { - R = xx_ret_expr("empty", O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= LIKELY xx_common_expr(O1) . { - R = xx_ret_expr("likely", O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= UNLIKELY xx_common_expr(O1) . { - R = xx_ret_expr("unlikely", O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) EQUALS xx_common_expr(O2) . { - R = xx_ret_expr("equals", O1, O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) NOTEQUALS xx_common_expr(O2) . { - R = xx_ret_expr("not-equals", O1, O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) IDENTICAL xx_common_expr(O2) . { - R = xx_ret_expr("identical", O1, O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) NOTIDENTICAL xx_common_expr(O2) . { - R = xx_ret_expr("not-identical", O1, O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) LESS xx_common_expr(O2) . { - R = xx_ret_expr("less", O1, O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) GREATER xx_common_expr(O2) . { - R = xx_ret_expr("greater", O1, O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) LESSEQUAL xx_common_expr(O2) . { - R = xx_ret_expr("less-equal", O1, O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) GREATEREQUAL xx_common_expr(O2) . { - R = xx_ret_expr("greater-equal", O1, O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= PARENTHESES_OPEN xx_common_expr(O1) PARENTHESES_CLOSE . { - R = xx_ret_expr("list", O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= PARENTHESES_OPEN xx_parameter_type(O1) PARENTHESES_CLOSE xx_common_expr(O2) . { - R = xx_ret_expr("cast", O1, O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= LESS IDENTIFIER(I) GREATER xx_common_expr(O2) . { - R = xx_ret_expr("type-hint", xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state), O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(V) ARROW IDENTIFIER(I) . { - R = xx_ret_expr("property-access", V, xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state), NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(V) ARROW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE . { - R = xx_ret_expr("property-dynamic-access", V, xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state), NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(V) ARROW BRACKET_OPEN STRING(S) BRACKET_CLOSE . { - R = xx_ret_expr("property-string-access", V, xx_ret_literal(XX_T_STRING, S, status->scanner_state), NULL, status->scanner_state); -} - -xx_common_expr(R) ::= IDENTIFIER(V) DOUBLECOLON IDENTIFIER(I) . { - R = xx_ret_expr("static-property-access", xx_ret_literal(XX_T_IDENTIFIER, V, status->scanner_state), xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state), NULL, status->scanner_state); -} - -xx_common_expr(R) ::= IDENTIFIER(V) DOUBLECOLON CONSTANT(I) . { - R = xx_ret_expr("static-constant-access", xx_ret_literal(XX_T_IDENTIFIER, V, status->scanner_state), xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state), NULL, status->scanner_state); -} - -/* y = v[expr] */ -/*xx_common_expr(R) ::= IDENTIFIER(V) SBRACKET_OPEN xx_common_expr(I) SBRACKET_CLOSE . { - R = xx_ret_expr("array-access", xx_ret_literal(XX_T_IDENTIFIER, V, status->scanner_state), I, NULL, status->scanner_state); -}*/ - -xx_common_expr(R) ::= xx_common_expr(V) SBRACKET_OPEN xx_common_expr(I) SBRACKET_CLOSE . { - R = xx_ret_expr("array-access", V, I, NULL, status->scanner_state); -} - -/* y = a + b */ -xx_common_expr(R) ::= xx_common_expr(O1) ADD xx_common_expr(O2) . { - R = xx_ret_expr("add", O1, O2, NULL, status->scanner_state); -} - -/* y = a - b */ -xx_common_expr(R) ::= xx_common_expr(O1) SUB xx_common_expr(O2) . { - R = xx_ret_expr("sub", O1, O2, NULL, status->scanner_state); -} - -/* y = a * b */ -xx_common_expr(R) ::= xx_common_expr(O1) MUL xx_common_expr(O2) . { - R = xx_ret_expr("mul", O1, O2, NULL, status->scanner_state); -} - -/* y = a / b */ -xx_common_expr(R) ::= xx_common_expr(O1) DIV xx_common_expr(O2) . { - R = xx_ret_expr("div", O1, O2, NULL, status->scanner_state); -} - -/* y = a % b */ -xx_common_expr(R) ::= xx_common_expr(O1) MOD xx_common_expr(O2) . { - R = xx_ret_expr("mod", O1, O2, NULL, status->scanner_state); -} - -/* y = a . b */ -xx_common_expr(R) ::= xx_common_expr(O1) CONCAT xx_common_expr(O2) . { - R = xx_ret_expr("concat", O1, O2, NULL, status->scanner_state); -} - -/* y = a && b */ -xx_common_expr(R) ::= xx_common_expr(O1) AND xx_common_expr(O2) . { - R = xx_ret_expr("and", O1, O2, NULL, status->scanner_state); -} - -/* y = a || b */ -xx_common_expr(R) ::= xx_common_expr(O1) OR xx_common_expr(O2) . { - R = xx_ret_expr("or", O1, O2, NULL, status->scanner_state); -} - -/* y = a | b */ -xx_common_expr(R) ::= xx_common_expr(O1) BITWISE_OR xx_common_expr(O2) . { - R = xx_ret_expr("bitwise_or", O1, O2, NULL, status->scanner_state); -} - -/* y = a & b */ -xx_common_expr(R) ::= xx_common_expr(O1) BITWISE_AND xx_common_expr(O2) . [BITWISE_OR] { - R = xx_ret_expr("bitwise_and", O1, O2, NULL, status->scanner_state); -} - -/* y = a ^ b */ -xx_common_expr(R) ::= xx_common_expr(O1) BITWISE_XOR xx_common_expr(O2) . { - R = xx_ret_expr("bitwise_xor", O1, O2, NULL, status->scanner_state); -} - -/* y = a << b */ -xx_common_expr(R) ::= xx_common_expr(O1) BITWISE_SHIFTLEFT xx_common_expr(O2) . { - R = xx_ret_expr("bitwise_shiftleft", O1, O2, NULL, status->scanner_state); -} - -/* y = a >> b */ -xx_common_expr(R) ::= xx_common_expr(O1) BITWISE_SHIFTRIGHT xx_common_expr(O2) . { - R = xx_ret_expr("bitwise_shiftright", O1, O2, NULL, status->scanner_state); -} - -/* y = a instanceof b */ -xx_common_expr(R) ::= xx_common_expr(O1) INSTANCEOF xx_common_expr(O2) . { - R = xx_ret_expr("instanceof", O1, O2, NULL, status->scanner_state); -} - -/* y = a .. b */ -xx_common_expr(R) ::= xx_common_expr(O1) INCLUSIVE_RANGE xx_common_expr(O2) . { - R = xx_ret_expr("irange", O1, O2, NULL, status->scanner_state); -} - -/* y = a ... b */ -xx_common_expr(R) ::= xx_common_expr(O1) EXCLUSIVE_RANGE xx_common_expr(O2) . { - R = xx_ret_expr("erange", O1, O2, NULL, status->scanner_state); -} - -/* y = fetch x, z[k] */ -xx_fetch_expr(R) ::= FETCH IDENTIFIER(O1) COMMA xx_common_expr(O2) . { - R = xx_ret_expr("fetch", xx_ret_literal(XX_T_IDENTIFIER, O1, status->scanner_state), O2, NULL, status->scanner_state); -} - -/* y = fetch x, z[k] */ -xx_common_expr(R) ::= xx_fetch_expr(E) . { - R = E; -} - -/* y = typeof b */ -xx_common_expr(R) ::= TYPEOF xx_common_expr(O1) . { - R = xx_ret_expr("typeof", O1, NULL, NULL, status->scanner_state); -} - -/* y = x */ -xx_common_expr(R) ::= IDENTIFIER(I) . { - R = xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state); -} - -/* y = 100 */ -xx_common_expr(R) ::= INTEGER(I) . { - R = xx_ret_literal(XX_T_INTEGER, I, status->scanner_state); -} - -/* y = "hello" */ -xx_common_expr(R) ::= STRING(S) . { - R = xx_ret_literal(XX_T_STRING, S, status->scanner_state); -} - -/* y = ~"hello" */ -xx_common_expr(R) ::= ISTRING(S) . { - R = xx_ret_literal(XX_T_ISTRING, S, status->scanner_state); -} - -/* y = 'h' */ -xx_common_expr(R) ::= CHAR(S) . { - R = xx_ret_literal(XX_T_CHAR, S, status->scanner_state); -} - -/* y = 12.5 */ -xx_common_expr(R) ::= DOUBLE(D) . { - R = xx_ret_literal(XX_T_DOUBLE, D, status->scanner_state); -} - -/* y = null */ -xx_common_expr(R) ::= NULL . { - R = xx_ret_literal(XX_T_NULL, NULL, status->scanner_state); -} - -/* y = false */ -xx_common_expr(R) ::= TRUE . { - R = xx_ret_literal(XX_T_TRUE, NULL, status->scanner_state); -} - -/* y = false */ -xx_common_expr(R) ::= FALSE . { - R = xx_ret_literal(XX_T_FALSE, NULL, status->scanner_state); -} - -/* y = XX */ -xx_common_expr(R) ::= CONSTANT(I) . { - R = xx_ret_literal(XX_T_CONSTANT, I, status->scanner_state); -} - -/* y = [] */ -xx_common_expr(R) ::= SBRACKET_OPEN SBRACKET_CLOSE . { - R = xx_ret_expr("empty-array", NULL, NULL, NULL, status->scanner_state); -} - -/* y = [1, 2, 3] */ -xx_common_expr(R) ::= SBRACKET_OPEN xx_array_list(L) SBRACKET_CLOSE . { - R = xx_ret_expr("array", L, NULL, NULL, status->scanner_state); -} - -/* y = new static */ -xx_common_expr(R) ::= NEW STATIC . { - R = xx_ret_new_static_instance(NULL, status->scanner_state); -} - -/* y = new static() */ -xx_common_expr(R) ::= NEW STATIC PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_new_static_instance(NULL, status->scanner_state); -} - -/* y = new static(false, x) */ -xx_common_expr(R) ::= NEW STATIC PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_new_static_instance(P, status->scanner_state); -} - -/* y = new MyClass */ -xx_common_expr(R) ::= NEW IDENTIFIER(I) . { - R = xx_ret_new_instance(0, I, NULL, status->scanner_state); -} - -/* y = new MyClass() */ -xx_common_expr(R) ::= NEW IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_new_instance(0, I, NULL, status->scanner_state); -} - -/* y = new MyClass(false, x) */ -xx_common_expr(R) ::= NEW IDENTIFIER(I) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_new_instance(0, I, P, status->scanner_state); -} - -/* y = new {MyClass} */ -xx_common_expr(R) ::= NEW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE . { - R = xx_ret_new_instance(1, I, NULL, status->scanner_state); -} - -/* y = new {MyClass}() */ -xx_common_expr(R) ::= NEW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_new_instance(1, I, NULL, status->scanner_state); -} - -/* y = new {MyClass}(false, x) */ -xx_common_expr(R) ::= NEW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_new_instance(1, I, P, status->scanner_state); -} - -/* y = new array() */ -xx_common_expr(R) ::= NEW xx_parameter_type(T) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_new_instance_type(T, P, status->scanner_state); -} - -/* y = f(false, x) */ -xx_fcall_expr(R) ::= IDENTIFIER(I) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_fcall(1, I, P, status->scanner_state); -} - -/* y = f() */ -xx_fcall_expr(R) ::= IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_fcall(1, I, NULL, status->scanner_state); -} - -/* y = {f}(false, x) */ -xx_fcall_expr(R) ::= BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_fcall(2, I, P, status->scanner_state); -} - -/* y = {f}() */ -xx_fcall_expr(R) ::= BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_fcall(2, I, NULL, status->scanner_state); -} - -/* o::m() */ -xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_scall(0, O->token, 0, M, NULL, status->scanner_state); - efree(O->token); - efree(O); -} - -/* o::m(false, x) */ -xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_scall(0, O->token, 0, M, P, status->scanner_state); - efree(O->token); - efree(O); -} - -/* static::m(false, x) */ -xx_scall_expr(R) ::= STATIC DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_scall(0, "static", 0, M, P, status->scanner_state); -} - -/* static::m() */ -xx_scall_expr(R) ::= STATIC DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_scall(0, "static", 0, M, NULL, status->scanner_state); -} - -/* {o}::m() */ -xx_scall_expr(R) ::= BRACKET_OPEN IDENTIFIER(O) BRACKET_CLOSE DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_scall(1, O->token, 0, M, NULL, status->scanner_state); - efree(O->token); - efree(O); -} - -/* {o}::m(false, x) */ -xx_scall_expr(R) ::= BRACKET_OPEN IDENTIFIER(O) BRACKET_CLOSE DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_scall(1, O->token, 0, M, P, status->scanner_state); - efree(O->token); - efree(O); -} - -/* {o}::{m}() */ -xx_scall_expr(R) ::= BRACKET_OPEN IDENTIFIER(O) BRACKET_CLOSE DOUBLECOLON BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_scall(1, O->token, 1, M, NULL, status->scanner_state); - efree(O->token); - efree(O); -} - -/* {o}::{m}(false, x) */ -xx_scall_expr(R) ::= BRACKET_OPEN IDENTIFIER(O) BRACKET_CLOSE DOUBLECOLON BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_scall(1, O->token, 1, M, P, status->scanner_state); - efree(O->token); - efree(O); -} - -/* o::{m}() */ -xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_scall(0, O->token, 1, M, NULL, status->scanner_state); - efree(O->token); - efree(O); -} - -/* o::{m}(false, x) */ -xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_scall(0, O->token, 1, M, P, status->scanner_state); - efree(O->token); - efree(O); -} - -/* o->m(false, x) */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_mcall(1, O, M, P, status->scanner_state); -} - -/* o->m() */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW IDENTIFIER(M) PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_mcall(1, O, M, NULL, status->scanner_state); -} - -/* o->{m}(false, x) */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_mcall(2, O, M, P, status->scanner_state); -} - -/* o->{m}() */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_mcall(2, O, M, NULL, status->scanner_state); -} - -/* o->{"m"}(false, x) */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW BRACKET_OPEN STRING(S) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - R = xx_ret_mcall(3, O, S, P, status->scanner_state); -} - -/* o->{"m"}() */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW BRACKET_OPEN STRING(S) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - R = xx_ret_mcall(3, O, S, NULL, status->scanner_state); -} - -/* y = o->m(false, x) or y = o->m() */ -xx_common_expr(R) ::= xx_mcall_expr(E) . { - R = E; -} - -/* y = o::m(false, x) or y = o::m() */ -xx_common_expr(R) ::= xx_scall_expr(E) . { - R = E; -} - -/* f() or f(1, 2, 3) */ -xx_common_expr(R) ::= xx_fcall_expr(E) . { - R = E; -} - -/* a ? b : c */ -xx_common_expr(R) ::= xx_common_expr(O1) QUESTION xx_common_expr(O2) COLON xx_common_expr(O3) . { - R = xx_ret_expr("ternary", O1, O2, O3, status->scanner_state); -} - -/* a ?: b */ -xx_common_expr(R) ::= xx_common_expr(O1) QUESTION COLON xx_common_expr(O3) . { - R = xx_ret_expr("short-ternary", O1, NULL, O3, status->scanner_state); -} - -xx_call_parameters(R) ::= xx_call_parameters(L) COMMA xx_call_parameter(P) . { - R = xx_ret_list(L, P, status->scanner_state); -} - -xx_call_parameters(R) ::= xx_call_parameter(P) . { - R = xx_ret_list(NULL, P, status->scanner_state); -} - -/* func(expr) */ -xx_call_parameter(R) ::= xx_common_expr(E) . { - R = xx_ret_call_parameter(NULL, E, status->scanner_state); -} - -/* func(name: expr) */ -xx_call_parameter(R) ::= IDENTIFIER(I) COLON xx_common_expr(E) . { - R = xx_ret_call_parameter(I, E, status->scanner_state); -} - -/** empty closure function () { } **/ -xx_common_expr(R) ::= FUNCTION PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_expr("closure", NULL, NULL, NULL, status->scanner_state); -} - -/** function() { ... }*/ -xx_common_expr(R) ::= FUNCTION PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_expr("closure", NULL, S, NULL, status->scanner_state); -} - -/** function(a, b, c) { }*/ -xx_common_expr(R) ::= FUNCTION PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - R = xx_ret_expr("closure", L, NULL, NULL, status->scanner_state); -} - -/** function(a, b, c) { ... }*/ -xx_common_expr(R) ::= FUNCTION PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - R = xx_ret_expr("closure", L, S, NULL, status->scanner_state); -} - -/** x => x + 1 */ -xx_common_expr(R) ::= IDENTIFIER(I) DOUBLEARROW xx_common_expr(E) . { - R = xx_ret_expr("closure-arrow", xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state), E, NULL, status->scanner_state); -} - -xx_array_list(R) ::= xx_array_list(L) COMMA xx_array_item(I) . { - R = xx_ret_list(L, I, status->scanner_state); -} - -xx_array_list(R) ::= xx_array_item(I) . { - R = xx_ret_list(NULL, I, status->scanner_state); -} - -xx_array_item(R) ::= xx_array_key(K) COLON xx_array_value(V) . { - R = xx_ret_array_item(K, V, status->scanner_state); -} - -xx_array_item(R) ::= xx_array_value(V) . { - R = xx_ret_array_item(NULL, V, status->scanner_state); -} - -xx_array_key(R) ::= xx_common_expr(E) . { - R = E; -} - -xx_array_value(R) ::= xx_common_expr(E) . { - R = E; -} - -/** xx_literal_expr */ -xx_literal_expr(R) ::= INTEGER(I) . { - R = xx_ret_literal(XX_T_INTEGER, I, status->scanner_state); -} - -xx_literal_expr(R) ::= CHAR(C) . { - R = xx_ret_literal(XX_T_CHAR, C, status->scanner_state); -} - -xx_literal_expr(R) ::= STRING(S) . { - R = xx_ret_literal(XX_T_STRING, S, status->scanner_state); -} - -xx_literal_expr(R) ::= DOUBLE(D) . { - R = xx_ret_literal(XX_T_DOUBLE, D, status->scanner_state); -} - -xx_literal_expr(R) ::= NULL . { - R = xx_ret_literal(XX_T_NULL, NULL, status->scanner_state); -} - -xx_literal_expr(R) ::= FALSE . { - R = xx_ret_literal(XX_T_FALSE, NULL, status->scanner_state); -} - -xx_literal_expr(R) ::= TRUE . { - R = xx_ret_literal(XX_T_TRUE, NULL, status->scanner_state); -} - -xx_literal_expr(R) ::= IDENTIFIER(V) DOUBLECOLON CONSTANT(I) . { - R = xx_ret_expr("static-constant-access", xx_ret_literal(XX_T_IDENTIFIER, V, status->scanner_state), xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state), NULL, status->scanner_state); -} - -xx_literal_expr(R) ::= CONSTANT(I) . { - R = xx_ret_literal(XX_T_CONSTANT, I, status->scanner_state); -} - -xx_literal_expr(R) ::= SBRACKET_OPEN SBRACKET_CLOSE . { - R = xx_ret_expr("empty-array", NULL, NULL, NULL, status->scanner_state); -} - -xx_literal_expr(R) ::= SBRACKET_OPEN xx_literal_array_list(L) SBRACKET_CLOSE . { - R = xx_ret_expr("array", L, NULL, NULL, status->scanner_state); -} - -xx_literal_array_list(R) ::= xx_literal_array_list(L) COMMA xx_literal_array_item(I) . { - R = xx_ret_list(L, I, status->scanner_state); -} - -xx_literal_array_list(R) ::= xx_literal_array_item(I) . { - R = xx_ret_list(NULL, I, status->scanner_state); -} - -xx_literal_array_item(R) ::= xx_literal_array_key(K) COLON xx_literal_array_value(V) . { - R = xx_ret_array_item(K, V, status->scanner_state); -} - -xx_literal_array_item(R) ::= xx_literal_array_value(V) . { - R = xx_ret_array_item(NULL, V, status->scanner_state); -} - -xx_literal_array_key(R) ::= IDENTIFIER(I) . { - R = xx_ret_literal(XX_T_IDENTIFIER, I, status->scanner_state); -} - -xx_literal_array_key(R) ::= STRING(S) . { - R = xx_ret_literal(XX_T_STRING, S, status->scanner_state); -} - -xx_literal_array_key(R) ::= INTEGER(I) . { - R = xx_ret_literal(XX_T_INTEGER, I, status->scanner_state); -} - -xx_literal_array_value(R) ::= xx_literal_expr(E) . { - R = E; -} - -xx_eval_expr(R) ::= xx_common_expr(E) . { - R = E; -} - -xx_comment(R) ::= COMMENT(C) . { - R = xx_ret_comment(C, status->scanner_state); -} - -xx_cblock(R) ::= CBLOCK(C) . { - R = xx_ret_cblock(C, status->scanner_state); -} diff --git a/parser/parser/parser.php7.c b/parser/parser/parser.php7.c deleted file mode 100644 index b41c35ebaf..0000000000 --- a/parser/parser/parser.php7.c +++ /dev/null @@ -1,8021 +0,0 @@ -/** The author disclaims copyright to this source code. -*/ -/* First off, code is include which follows the "include" declaration -** in the input file. */ -#include -#line 58 "parser.php7.lemon" - -#include "parser.php7.inc.h" - -#line 11 "parser.php7.c" -/* Next is all token values, in a form suitable for use by makeheaders. -** This section will be null unless lemon is run with the -m switch. -*/ -/* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ -/* Make sure the INTERFACE macro is defined. -*/ -#ifndef INTERFACE -# define INTERFACE 1 -#endif -/* The next thing included is series of defines which control -** various aspects of the generated parser. -** YYCODETYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 terminals -** and nonterminals. "int" is used otherwise. -** YYNOCODE is a number of type YYCODETYPE which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. -** YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** YYACTIONTYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 rules and -** states combined. "int" is used otherwise. -** xx_TOKENTYPE is the data type used for minor tokens given -** directly to the parser from the tokenizer. -** YYMINORTYPE is the data type used for all minor tokens. -** This is typically a union of many types, one of -** which is xx_TOKENTYPE. The entry in the union -** for base tokens is called "yy0". -** YYSTACKDEPTH is the maximum depth of the parser's stack. -** xx_ARG_SDECL A static variable declaration for the %extra_argument -** xx_ARG_PDECL A parameter declaration for the %extra_argument -** xx_ARG_STORE Code to store %extra_argument into yypParser -** xx_ARG_FETCH Code to extract %extra_argument from yypParser -** YYNSTATE the combined number of states. -** YYNRULE the number of rules in the grammar -** YYERRORSYMBOL is the code number of the error symbol. If not -** defined, then do no error processing. -*/ -#define YYCODETYPE unsigned char -#define YYNOCODE 227 -#define YYACTIONTYPE unsigned short int -#define xx_TOKENTYPE xx_parser_token* -typedef union { - xx_TOKENTYPE yy0; - zval yy250; - int yy453; -} YYMINORTYPE; -#define YYSTACKDEPTH 100 -#define xx_ARG_SDECL xx_parser_status *status; -#define xx_ARG_PDECL ,xx_parser_status *status -#define xx_ARG_FETCH xx_parser_status *status = yypParser->status -#define xx_ARG_STORE yypParser->status = status -#define YYNSTATE 947 -#define YYNRULE 459 -#define YYERRORSYMBOL 127 -#define YYERRSYMDT yy453 -#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) -#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) -#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) - -/* Next are that tables used to determine what action to take based on the -** current state and lookahead token. These tables are used to implement -** functions that take a state number and lookahead value and return an -** action integer. -** -** Suppose the action integer is N. Then the action is determined as -** follows -** -** 0 <= N < YYNSTATE Shift N. That is, push the lookahead -** token onto the stack and goto state N. -** -** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. -** -** N == YYNSTATE+YYNRULE A syntax error has occurred. -** -** N == YYNSTATE+YYNRULE+1 The parser accepts its input. -** -** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused -** slots in the yy_action[] table. -** -** The action table is constructed as a single large table named yy_action[]. -** Given state S and lookahead X, the action is computed as -** -** yy_action[ yy_shift_ofst[S] + X ] -** -** If the index value yy_shift_ofst[S]+X is out of range or if the value -** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] -** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table -** and that yy_default[S] should be used instead. -** -** The formula above is for computing the action when the lookahead is -** a terminal symbol. If the lookahead is a non-terminal (as occurs after -** a reduce action) then the yy_reduce_ofst[] array is used in place of -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of -** YY_SHIFT_USE_DFLT. -** -** The following are the tables generated in this section: -** -** yy_action[] A single table containing all actions. -** yy_lookahead[] A table containing the lookahead for each entry in -** yy_action. Used to detect hash collisions. -** yy_shift_ofst[] For each state, the offset into yy_action for -** shifting terminals. -** yy_reduce_ofst[] For each state, the offset into yy_action for -** shifting non-terminals after a reduce. -** yy_default[] Default action for each state. -*/ -static YYACTIONTYPE yy_action[] = { - /* 0 */ 236, 947, 603, 151, 469, 130, 125, 128, 131, 731, - /* 10 */ 133, 135, 143, 137, 139, 141, 730, 773, 189, 161, - /* 20 */ 163, 683, 684, 688, 689, 108, 151, 22, 130, 125, - /* 30 */ 114, 200, 123, 15, 541, 205, 120, 222, 102, 105, - /* 40 */ 99, 603, 216, 547, 217, 193, 57, 199, 404, 247, - /* 50 */ 169, 229, 30, 885, 243, 245, 244, 204, 891, 518, - /* 60 */ 219, 12, 215, 597, 592, 596, 212, 886, 228, 478, - /* 70 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 80 */ 161, 163, 355, 58, 60, 62, 199, 151, 72, 130, - /* 90 */ 125, 197, 83, 87, 92, 347, 378, 358, 431, 400, - /* 100 */ 365, 243, 245, 244, 204, 194, 227, 208, 620, 246, - /* 110 */ 408, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 120 */ 213, 214, 519, 236, 663, 657, 601, 469, 17, 809, - /* 130 */ 128, 131, 811, 913, 919, 807, 918, 903, 801, 197, - /* 140 */ 920, 189, 796, 879, 194, 773, 67, 668, 108, 243, - /* 150 */ 245, 244, 204, 114, 200, 123, 606, 246, 205, 120, - /* 160 */ 222, 102, 105, 99, 195, 216, 1399, 217, 193, 57, - /* 170 */ 609, 16, 247, 169, 229, 32, 897, 243, 245, 244, - /* 180 */ 204, 608, 518, 892, 263, 215, 591, 592, 596, 212, - /* 190 */ 898, 13, 478, 487, 496, 499, 490, 493, 502, 508, - /* 200 */ 505, 514, 511, 68, 657, 278, 58, 60, 62, 232, - /* 210 */ 75, 72, 76, 654, 197, 83, 87, 92, 347, 383, - /* 220 */ 358, 392, 400, 365, 243, 245, 244, 204, 441, 77, - /* 230 */ 208, 598, 246, 278, 450, 465, 472, 475, 111, 207, - /* 240 */ 209, 210, 211, 213, 214, 519, 236, 79, 19, 651, - /* 250 */ 469, 130, 125, 128, 131, 3, 4, 5, 6, 7, - /* 260 */ 8, 9, 10, 301, 189, 297, 79, 561, 651, 18, - /* 270 */ 294, 108, 271, 280, 275, 279, 114, 200, 123, 221, - /* 280 */ 273, 205, 120, 222, 102, 105, 99, 126, 216, 197, - /* 290 */ 445, 193, 57, 623, 228, 247, 169, 229, 669, 243, - /* 300 */ 245, 244, 204, 277, 679, 518, 226, 246, 215, 29, - /* 310 */ 320, 336, 212, 251, 278, 478, 487, 496, 499, 490, - /* 320 */ 493, 502, 508, 505, 514, 511, 729, 20, 731, 58, - /* 330 */ 60, 62, 234, 774, 72, 775, 773, 197, 83, 87, - /* 340 */ 92, 347, 25, 358, 220, 272, 365, 243, 245, 244, - /* 350 */ 204, 293, 309, 208, 233, 246, 21, 450, 465, 472, - /* 360 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 370 */ 527, 27, 703, 469, 700, 714, 128, 131, 197, 696, - /* 380 */ 710, 371, 274, 275, 279, 351, 551, 189, 243, 245, - /* 390 */ 244, 204, 305, 24, 108, 240, 246, 302, 228, 114, - /* 400 */ 200, 123, 354, 550, 205, 120, 222, 102, 105, 99, - /* 410 */ 328, 216, 324, 250, 193, 57, 368, 321, 247, 169, - /* 420 */ 229, 66, 372, 373, 374, 375, 376, 377, 518, 313, - /* 430 */ 414, 215, 420, 400, 310, 212, 241, 59, 478, 487, - /* 440 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 370, - /* 450 */ 814, 344, 58, 60, 62, 440, 813, 72, 773, 367, - /* 460 */ 197, 83, 87, 92, 347, 360, 358, 366, 449, 365, - /* 470 */ 243, 245, 244, 204, 332, 61, 208, 565, 246, 329, - /* 480 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 490 */ 214, 519, 236, 455, 64, 393, 469, 453, 399, 128, - /* 500 */ 131, 451, 456, 243, 245, 244, 204, 481, 197, 807, - /* 510 */ 189, 228, 927, 421, 933, 656, 399, 108, 243, 245, - /* 520 */ 244, 204, 114, 200, 123, 572, 246, 205, 120, 222, - /* 530 */ 102, 105, 99, 382, 216, 197, 228, 193, 57, 403, - /* 540 */ 452, 247, 169, 229, 655, 243, 245, 244, 204, 566, - /* 550 */ 480, 518, 578, 246, 215, 340, 432, 69, 212, 399, - /* 560 */ 337, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 570 */ 514, 511, 562, 701, 573, 58, 60, 62, 567, 915, - /* 580 */ 72, 881, 903, 74, 83, 87, 92, 347, 879, 358, - /* 590 */ 773, 78, 365, 824, 479, 486, 823, 320, 336, 208, - /* 600 */ 555, 819, 81, 450, 465, 472, 475, 111, 207, 209, - /* 610 */ 210, 211, 213, 214, 519, 236, 481, 877, 812, 469, - /* 620 */ 881, 903, 128, 131, 197, 807, 796, 879, 940, 773, - /* 630 */ 943, 488, 486, 189, 243, 245, 244, 204, 84, 481, - /* 640 */ 108, 585, 246, 491, 486, 114, 200, 123, 494, 486, - /* 650 */ 205, 120, 222, 102, 105, 99, 721, 216, 197, 489, - /* 660 */ 193, 57, 481, 228, 247, 169, 229, 71, 243, 245, - /* 670 */ 244, 204, 674, 657, 518, 589, 246, 215, 497, 486, - /* 680 */ 89, 212, 492, 228, 478, 487, 496, 499, 490, 493, - /* 690 */ 502, 508, 505, 514, 511, 500, 486, 905, 58, 60, - /* 700 */ 62, 579, 891, 72, 724, 495, 197, 83, 87, 92, - /* 710 */ 347, 906, 358, 503, 486, 365, 243, 245, 244, 204, - /* 720 */ 93, 586, 208, 614, 246, 319, 450, 465, 472, 475, - /* 730 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 914, - /* 740 */ 96, 917, 469, 918, 903, 128, 131, 197, 692, 774, - /* 750 */ 879, 98, 773, 481, 506, 486, 189, 243, 245, 244, - /* 760 */ 204, 127, 481, 108, 627, 246, 509, 486, 114, 200, - /* 770 */ 123, 512, 486, 205, 120, 222, 102, 105, 99, 624, - /* 780 */ 216, 197, 481, 193, 57, 481, 481, 247, 169, 229, - /* 790 */ 650, 243, 245, 244, 204, 187, 498, 518, 633, 246, - /* 800 */ 215, 515, 486, 724, 212, 507, 718, 478, 487, 496, - /* 810 */ 499, 490, 493, 502, 508, 505, 514, 511, 721, 249, - /* 820 */ 481, 58, 60, 62, 196, 501, 72, 481, 504, 510, - /* 830 */ 83, 87, 92, 347, 719, 358, 228, 797, 365, 838, - /* 840 */ 758, 630, 837, 320, 336, 208, 555, 833, 773, 450, - /* 850 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 860 */ 519, 236, 191, 513, 856, 469, 807, 855, 128, 131, - /* 870 */ 516, 726, 851, 728, 590, 795, 709, 731, 202, 189, - /* 880 */ 870, 705, 796, 869, 775, 773, 108, 228, 865, 190, - /* 890 */ 228, 114, 200, 123, 740, 63, 205, 120, 222, 102, - /* 900 */ 105, 99, 201, 216, 644, 228, 193, 57, 587, 228, - /* 910 */ 247, 169, 229, 86, 243, 245, 244, 204, 320, 336, - /* 920 */ 518, 555, 228, 215, 782, 599, 228, 212, 607, 231, - /* 930 */ 478, 487, 496, 499, 490, 493, 502, 508, 505, 514, - /* 940 */ 511, 778, 767, 615, 58, 60, 62, 621, 250, 72, - /* 950 */ 670, 668, 807, 83, 87, 92, 347, 804, 358, 230, - /* 960 */ 628, 365, 671, 657, 634, 186, 320, 336, 208, 555, - /* 970 */ 250, 28, 450, 465, 472, 475, 111, 207, 209, 210, - /* 980 */ 211, 213, 214, 519, 236, 224, 702, 736, 469, 237, - /* 990 */ 739, 128, 131, 100, 681, 695, 684, 688, 689, 846, - /* 1000 */ 184, 238, 189, 243, 245, 244, 204, 773, 741, 108, - /* 1010 */ 243, 245, 244, 204, 114, 200, 123, 831, 73, 205, - /* 1020 */ 120, 222, 102, 105, 99, 742, 216, 644, 745, 193, - /* 1030 */ 57, 897, 250, 247, 169, 229, 649, 243, 245, 244, - /* 1040 */ 204, 320, 336, 518, 555, 898, 215, 239, 763, 805, - /* 1050 */ 212, 766, 797, 478, 487, 496, 499, 490, 493, 502, - /* 1060 */ 508, 505, 514, 511, 248, 863, 791, 58, 60, 62, - /* 1070 */ 768, 769, 72, 253, 772, 254, 83, 87, 92, 347, - /* 1080 */ 830, 358, 250, 787, 365, 826, 250, 263, 844, 320, - /* 1090 */ 336, 208, 555, 840, 264, 450, 465, 472, 475, 111, - /* 1100 */ 207, 209, 210, 211, 213, 214, 519, 236, 80, 1401, - /* 1110 */ 878, 469, 1400, 814, 128, 131, 276, 644, 774, 879, - /* 1120 */ 832, 773, 893, 900, 864, 189, 883, 243, 245, 244, - /* 1130 */ 204, 862, 108, 282, 773, 876, 858, 114, 200, 123, - /* 1140 */ 872, 88, 205, 120, 222, 102, 105, 99, 895, 216, - /* 1150 */ 644, 921, 193, 57, 797, 283, 247, 169, 229, 91, - /* 1160 */ 243, 245, 244, 204, 287, 888, 518, 807, 284, 215, - /* 1170 */ 891, 931, 930, 212, 797, 288, 478, 487, 496, 499, - /* 1180 */ 490, 493, 502, 508, 505, 514, 511, 291, 908, 97, - /* 1190 */ 58, 60, 62, 891, 290, 72, 292, 894, 644, 83, - /* 1200 */ 87, 92, 347, 934, 358, 296, 797, 365, 243, 245, - /* 1210 */ 244, 204, 944, 295, 208, 797, 298, 299, 450, 465, - /* 1220 */ 472, 475, 111, 207, 209, 210, 211, 213, 214, 519, - /* 1230 */ 236, 197, 300, 303, 469, 304, 306, 128, 131, 307, - /* 1240 */ 391, 243, 245, 244, 204, 308, 311, 389, 189, 574, - /* 1250 */ 243, 245, 244, 204, 312, 108, 314, 315, 318, 316, - /* 1260 */ 114, 200, 123, 319, 322, 205, 120, 222, 102, 105, - /* 1270 */ 99, 323, 216, 380, 325, 193, 57, 379, 326, 247, - /* 1280 */ 169, 229, 645, 243, 245, 244, 204, 327, 330, 518, - /* 1290 */ 331, 333, 215, 334, 335, 338, 212, 339, 341, 478, - /* 1300 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 1310 */ 342, 343, 345, 58, 60, 62, 348, 353, 72, 352, - /* 1320 */ 549, 359, 83, 87, 92, 347, 369, 358, 387, 397, - /* 1330 */ 365, 390, 405, 406, 409, 413, 410, 208, 442, 418, - /* 1340 */ 425, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 1350 */ 213, 214, 519, 236, 380, 429, 446, 469, 384, 458, - /* 1360 */ 128, 131, 436, 455, 243, 245, 244, 204, 443, 447, - /* 1370 */ 460, 189, 454, 243, 245, 244, 204, 462, 108, 464, - /* 1380 */ 483, 484, 528, 114, 200, 123, 482, 542, 205, 120, - /* 1390 */ 222, 102, 105, 99, 529, 216, 380, 543, 193, 57, - /* 1400 */ 388, 548, 247, 169, 229, 95, 243, 245, 244, 204, - /* 1410 */ 557, 563, 518, 568, 569, 215, 570, 576, 581, 212, - /* 1420 */ 583, 582, 478, 487, 496, 499, 490, 493, 502, 508, - /* 1430 */ 505, 514, 511, 588, 593, 647, 58, 60, 62, 610, - /* 1440 */ 611, 72, 612, 625, 644, 83, 87, 92, 347, 626, - /* 1450 */ 358, 632, 631, 365, 243, 245, 244, 204, 646, 648, - /* 1460 */ 208, 659, 652, 673, 450, 465, 472, 475, 111, 207, - /* 1470 */ 209, 210, 211, 213, 214, 519, 236, 380, 664, 672, - /* 1480 */ 469, 394, 675, 128, 131, 643, 682, 243, 245, 244, - /* 1490 */ 204, 685, 691, 693, 189, 243, 245, 244, 204, 694, - /* 1500 */ 716, 108, 717, 723, 727, 746, 114, 200, 123, 733, - /* 1510 */ 734, 205, 120, 222, 102, 105, 99, 720, 216, 380, - /* 1520 */ 722, 193, 57, 398, 738, 247, 169, 229, 554, 243, - /* 1530 */ 245, 244, 204, 744, 760, 518, 761, 765, 215, 771, - /* 1540 */ 780, 779, 212, 781, 783, 478, 487, 496, 499, 490, - /* 1550 */ 493, 502, 508, 505, 514, 511, 784, 785, 658, 58, - /* 1560 */ 60, 62, 788, 790, 72, 789, 792, 644, 83, 87, - /* 1570 */ 92, 347, 793, 358, 794, 799, 365, 243, 245, 244, - /* 1580 */ 204, 800, 802, 208, 803, 806, 810, 450, 465, 472, - /* 1590 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 1600 */ 380, 816, 817, 469, 407, 848, 128, 131, 103, 849, - /* 1610 */ 243, 245, 244, 204, 901, 889, 887, 189, 243, 245, - /* 1620 */ 244, 204, 890, 1018, 108, 1019, 896, 899, 907, 114, - /* 1630 */ 200, 123, 902, 910, 205, 120, 222, 102, 105, 99, - /* 1640 */ 911, 216, 380, 912, 193, 57, 411, 909, 247, 169, - /* 1650 */ 229, 553, 243, 245, 244, 204, 922, 924, 518, 925, - /* 1660 */ 926, 215, 929, 928, 932, 212, 935, 937, 478, 487, - /* 1670 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 938, - /* 1680 */ 939, 941, 58, 60, 62, 942, 807, 72, 945, 687, - /* 1690 */ 642, 83, 87, 92, 347, 687, 358, 687, 687, 365, - /* 1700 */ 243, 245, 244, 204, 687, 687, 208, 687, 687, 687, - /* 1710 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 1720 */ 214, 519, 236, 380, 687, 687, 469, 415, 687, 128, - /* 1730 */ 131, 106, 687, 243, 245, 244, 204, 687, 687, 687, - /* 1740 */ 189, 243, 245, 244, 204, 687, 687, 108, 687, 687, - /* 1750 */ 687, 687, 114, 200, 123, 687, 687, 205, 120, 222, - /* 1760 */ 102, 105, 99, 687, 216, 380, 687, 193, 57, 419, - /* 1770 */ 687, 247, 169, 229, 552, 243, 245, 244, 204, 687, - /* 1780 */ 687, 518, 687, 687, 215, 687, 687, 687, 212, 687, - /* 1790 */ 687, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 1800 */ 514, 511, 687, 687, 687, 58, 60, 62, 687, 687, - /* 1810 */ 72, 687, 687, 641, 83, 87, 92, 347, 687, 358, - /* 1820 */ 687, 687, 365, 243, 245, 244, 204, 687, 687, 208, - /* 1830 */ 687, 687, 687, 450, 465, 472, 475, 111, 207, 209, - /* 1840 */ 210, 211, 213, 214, 519, 236, 380, 687, 687, 469, - /* 1850 */ 422, 687, 128, 131, 109, 687, 243, 245, 244, 204, - /* 1860 */ 687, 687, 687, 189, 243, 245, 244, 204, 687, 687, - /* 1870 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 1880 */ 205, 120, 222, 102, 105, 99, 687, 216, 380, 687, - /* 1890 */ 193, 57, 426, 687, 247, 169, 229, 350, 243, 245, - /* 1900 */ 244, 204, 687, 687, 518, 687, 687, 215, 687, 687, - /* 1910 */ 687, 212, 687, 687, 478, 487, 496, 499, 490, 493, - /* 1920 */ 502, 508, 505, 514, 511, 687, 687, 687, 58, 60, - /* 1930 */ 62, 687, 687, 72, 687, 687, 640, 83, 87, 92, - /* 1940 */ 347, 687, 358, 687, 687, 365, 243, 245, 244, 204, - /* 1950 */ 687, 687, 208, 687, 687, 687, 450, 465, 472, 475, - /* 1960 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 380, - /* 1970 */ 687, 687, 469, 430, 687, 128, 131, 112, 687, 243, - /* 1980 */ 245, 244, 204, 687, 687, 687, 189, 243, 245, 244, - /* 1990 */ 204, 687, 687, 108, 687, 687, 687, 687, 114, 200, - /* 2000 */ 123, 687, 687, 205, 120, 222, 102, 105, 99, 687, - /* 2010 */ 216, 380, 687, 193, 57, 433, 687, 247, 169, 229, - /* 2020 */ 540, 243, 245, 244, 204, 687, 687, 518, 687, 687, - /* 2030 */ 215, 687, 687, 687, 212, 687, 687, 478, 487, 496, - /* 2040 */ 499, 490, 493, 502, 508, 505, 514, 511, 687, 687, - /* 2050 */ 687, 58, 60, 62, 687, 687, 72, 687, 687, 639, - /* 2060 */ 83, 87, 92, 347, 687, 358, 687, 687, 365, 243, - /* 2070 */ 245, 244, 204, 687, 687, 208, 687, 687, 687, 450, - /* 2080 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 2090 */ 519, 236, 380, 687, 687, 469, 437, 687, 128, 131, - /* 2100 */ 115, 687, 243, 245, 244, 204, 687, 687, 687, 189, - /* 2110 */ 243, 245, 244, 204, 687, 687, 108, 687, 687, 687, - /* 2120 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 2130 */ 105, 99, 687, 216, 380, 687, 193, 57, 444, 687, - /* 2140 */ 247, 169, 229, 357, 243, 245, 244, 204, 687, 687, - /* 2150 */ 518, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 2160 */ 478, 487, 496, 499, 490, 493, 502, 508, 505, 514, - /* 2170 */ 511, 687, 687, 687, 58, 60, 62, 687, 687, 72, - /* 2180 */ 687, 687, 638, 83, 87, 92, 347, 687, 358, 687, - /* 2190 */ 687, 365, 243, 245, 244, 204, 687, 687, 208, 687, - /* 2200 */ 687, 687, 450, 465, 472, 475, 111, 207, 209, 210, - /* 2210 */ 211, 213, 214, 519, 236, 380, 687, 687, 469, 448, - /* 2220 */ 687, 128, 131, 118, 687, 243, 245, 244, 204, 687, - /* 2230 */ 687, 687, 189, 243, 245, 244, 204, 687, 687, 108, - /* 2240 */ 687, 687, 687, 687, 114, 200, 123, 687, 687, 205, - /* 2250 */ 120, 222, 102, 105, 99, 687, 216, 594, 687, 193, - /* 2260 */ 57, 687, 687, 247, 169, 229, 521, 243, 245, 244, - /* 2270 */ 204, 687, 687, 518, 687, 687, 215, 687, 595, 687, - /* 2280 */ 212, 687, 687, 478, 487, 496, 499, 490, 493, 502, - /* 2290 */ 508, 505, 514, 511, 687, 687, 687, 58, 60, 62, - /* 2300 */ 687, 687, 72, 687, 687, 637, 83, 87, 92, 347, - /* 2310 */ 687, 358, 687, 687, 365, 243, 245, 244, 204, 687, - /* 2320 */ 687, 208, 687, 687, 704, 450, 465, 472, 475, 111, - /* 2330 */ 207, 209, 210, 211, 213, 214, 519, 236, 687, 687, - /* 2340 */ 687, 469, 687, 687, 128, 131, 121, 681, 695, 684, - /* 2350 */ 688, 689, 687, 687, 687, 189, 243, 245, 244, 204, - /* 2360 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 2370 */ 687, 687, 205, 120, 222, 102, 105, 99, 687, 216, - /* 2380 */ 636, 687, 193, 57, 687, 687, 247, 169, 229, 364, - /* 2390 */ 243, 245, 244, 204, 687, 687, 518, 687, 687, 215, - /* 2400 */ 687, 687, 687, 212, 687, 687, 478, 487, 496, 499, - /* 2410 */ 490, 493, 502, 508, 505, 514, 511, 687, 687, 687, - /* 2420 */ 58, 60, 62, 687, 687, 72, 687, 687, 124, 83, - /* 2430 */ 87, 92, 347, 687, 358, 687, 687, 365, 243, 245, - /* 2440 */ 244, 204, 687, 687, 208, 687, 687, 737, 450, 465, - /* 2450 */ 472, 475, 111, 207, 209, 210, 211, 213, 214, 519, - /* 2460 */ 236, 687, 687, 687, 469, 687, 687, 128, 131, 129, - /* 2470 */ 681, 695, 684, 688, 689, 687, 687, 687, 189, 243, - /* 2480 */ 245, 244, 204, 687, 687, 108, 687, 687, 687, 687, - /* 2490 */ 114, 200, 123, 687, 687, 205, 120, 222, 102, 105, - /* 2500 */ 99, 687, 216, 618, 687, 193, 57, 687, 687, 247, - /* 2510 */ 169, 229, 526, 243, 245, 244, 204, 687, 687, 518, - /* 2520 */ 687, 687, 215, 687, 687, 687, 212, 687, 687, 478, - /* 2530 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 2540 */ 687, 687, 687, 58, 60, 62, 687, 687, 72, 687, - /* 2550 */ 687, 132, 83, 87, 92, 347, 687, 358, 687, 687, - /* 2560 */ 365, 243, 245, 244, 204, 687, 687, 208, 687, 687, - /* 2570 */ 743, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 2580 */ 213, 214, 519, 236, 687, 687, 687, 469, 687, 687, - /* 2590 */ 128, 131, 134, 681, 695, 684, 688, 689, 687, 687, - /* 2600 */ 687, 189, 243, 245, 244, 204, 687, 687, 108, 687, - /* 2610 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 2620 */ 222, 102, 105, 99, 687, 216, 136, 687, 193, 57, - /* 2630 */ 687, 687, 247, 169, 229, 534, 243, 245, 244, 204, - /* 2640 */ 687, 687, 518, 687, 687, 215, 687, 687, 687, 212, - /* 2650 */ 687, 687, 478, 487, 496, 499, 490, 493, 502, 508, - /* 2660 */ 505, 514, 511, 687, 687, 687, 58, 60, 62, 687, - /* 2670 */ 687, 72, 687, 687, 138, 83, 87, 92, 347, 687, - /* 2680 */ 358, 687, 687, 365, 243, 245, 244, 204, 687, 687, - /* 2690 */ 208, 687, 687, 764, 450, 465, 472, 475, 111, 207, - /* 2700 */ 209, 210, 211, 213, 214, 519, 236, 687, 687, 687, - /* 2710 */ 469, 687, 687, 128, 131, 140, 681, 695, 684, 688, - /* 2720 */ 689, 687, 687, 687, 189, 243, 245, 244, 204, 687, - /* 2730 */ 687, 108, 687, 687, 687, 687, 114, 200, 123, 687, - /* 2740 */ 687, 205, 120, 222, 102, 105, 99, 687, 216, 142, - /* 2750 */ 687, 193, 57, 687, 687, 247, 169, 229, 533, 243, - /* 2760 */ 245, 244, 204, 687, 687, 518, 687, 687, 215, 687, - /* 2770 */ 687, 687, 212, 687, 687, 478, 487, 496, 499, 490, - /* 2780 */ 493, 502, 508, 505, 514, 511, 687, 687, 687, 58, - /* 2790 */ 60, 62, 687, 687, 72, 687, 687, 144, 83, 87, - /* 2800 */ 92, 347, 687, 358, 687, 687, 365, 243, 245, 244, - /* 2810 */ 204, 687, 687, 208, 687, 687, 770, 450, 465, 472, - /* 2820 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 2830 */ 687, 687, 687, 469, 687, 687, 128, 131, 146, 681, - /* 2840 */ 695, 684, 688, 689, 687, 687, 687, 189, 243, 245, - /* 2850 */ 244, 204, 687, 687, 108, 687, 687, 687, 687, 114, - /* 2860 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 2870 */ 687, 216, 148, 687, 193, 57, 687, 687, 247, 169, - /* 2880 */ 229, 539, 243, 245, 244, 204, 687, 687, 518, 687, - /* 2890 */ 687, 215, 687, 687, 687, 212, 687, 687, 478, 487, - /* 2900 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 687, - /* 2910 */ 687, 687, 58, 60, 62, 687, 687, 72, 687, 687, - /* 2920 */ 150, 83, 87, 92, 347, 687, 358, 687, 687, 365, - /* 2930 */ 243, 245, 244, 204, 687, 687, 208, 687, 687, 825, - /* 2940 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 2950 */ 214, 519, 236, 687, 687, 687, 469, 687, 687, 128, - /* 2960 */ 131, 152, 681, 695, 684, 688, 689, 687, 687, 687, - /* 2970 */ 189, 243, 245, 244, 204, 687, 687, 108, 687, 687, - /* 2980 */ 687, 687, 114, 200, 123, 687, 687, 205, 120, 222, - /* 2990 */ 102, 105, 99, 687, 216, 154, 687, 193, 57, 687, - /* 3000 */ 687, 247, 169, 229, 546, 243, 245, 244, 204, 687, - /* 3010 */ 687, 518, 687, 687, 215, 687, 687, 687, 212, 687, - /* 3020 */ 687, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 3030 */ 514, 511, 687, 687, 687, 58, 60, 62, 687, 687, - /* 3040 */ 72, 687, 687, 156, 83, 87, 92, 347, 687, 358, - /* 3050 */ 687, 687, 365, 243, 245, 244, 204, 687, 687, 208, - /* 3060 */ 687, 687, 839, 450, 465, 472, 475, 111, 207, 209, - /* 3070 */ 210, 211, 213, 214, 519, 236, 687, 687, 687, 469, - /* 3080 */ 687, 687, 128, 131, 158, 681, 695, 684, 688, 689, - /* 3090 */ 687, 687, 687, 189, 243, 245, 244, 204, 687, 687, - /* 3100 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 3110 */ 205, 120, 222, 102, 105, 99, 687, 216, 160, 687, - /* 3120 */ 193, 57, 687, 687, 247, 169, 229, 545, 243, 245, - /* 3130 */ 244, 204, 687, 687, 518, 687, 687, 215, 687, 687, - /* 3140 */ 687, 212, 687, 687, 478, 487, 496, 499, 490, 493, - /* 3150 */ 502, 508, 505, 514, 511, 687, 687, 687, 58, 60, - /* 3160 */ 62, 687, 687, 72, 687, 687, 162, 83, 87, 92, - /* 3170 */ 347, 687, 358, 687, 687, 365, 243, 245, 244, 204, - /* 3180 */ 687, 687, 208, 687, 687, 857, 450, 465, 472, 475, - /* 3190 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 687, - /* 3200 */ 687, 687, 469, 687, 687, 128, 131, 164, 681, 695, - /* 3210 */ 684, 688, 689, 687, 687, 687, 189, 243, 245, 244, - /* 3220 */ 204, 687, 687, 108, 687, 687, 687, 687, 114, 200, - /* 3230 */ 123, 687, 687, 205, 120, 222, 102, 105, 99, 687, - /* 3240 */ 216, 166, 687, 193, 57, 687, 687, 247, 169, 229, - /* 3250 */ 560, 243, 245, 244, 204, 687, 687, 518, 687, 687, - /* 3260 */ 215, 687, 687, 687, 212, 687, 687, 478, 487, 496, - /* 3270 */ 499, 490, 493, 502, 508, 505, 514, 511, 687, 687, - /* 3280 */ 687, 58, 60, 62, 687, 687, 72, 687, 687, 168, - /* 3290 */ 83, 87, 92, 347, 687, 358, 687, 687, 365, 243, - /* 3300 */ 245, 244, 204, 687, 687, 208, 687, 687, 871, 450, - /* 3310 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 3320 */ 519, 236, 687, 687, 687, 469, 687, 687, 128, 131, - /* 3330 */ 188, 681, 695, 684, 688, 689, 687, 687, 687, 189, - /* 3340 */ 243, 245, 244, 204, 687, 687, 108, 687, 687, 687, - /* 3350 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 3360 */ 105, 99, 687, 216, 192, 687, 193, 57, 687, 687, - /* 3370 */ 247, 169, 229, 559, 243, 245, 244, 204, 687, 687, - /* 3380 */ 518, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 3390 */ 478, 487, 496, 499, 490, 493, 502, 508, 505, 514, - /* 3400 */ 511, 687, 687, 687, 58, 60, 62, 687, 687, 72, - /* 3410 */ 687, 687, 203, 83, 87, 92, 347, 687, 358, 687, - /* 3420 */ 687, 365, 243, 245, 244, 204, 687, 687, 208, 687, - /* 3430 */ 687, 687, 450, 465, 472, 475, 111, 207, 209, 210, - /* 3440 */ 211, 213, 214, 519, 236, 206, 687, 687, 469, 687, - /* 3450 */ 687, 128, 131, 361, 687, 243, 245, 244, 204, 687, - /* 3460 */ 687, 687, 189, 243, 245, 244, 204, 687, 687, 108, - /* 3470 */ 687, 687, 687, 687, 114, 200, 123, 687, 687, 205, - /* 3480 */ 120, 222, 102, 105, 99, 687, 216, 466, 687, 193, - /* 3490 */ 57, 687, 687, 247, 169, 229, 662, 243, 245, 244, - /* 3500 */ 204, 687, 687, 518, 687, 687, 215, 687, 687, 687, - /* 3510 */ 212, 687, 687, 478, 487, 496, 499, 490, 493, 502, - /* 3520 */ 508, 505, 514, 511, 687, 687, 687, 58, 60, 62, - /* 3530 */ 687, 687, 72, 687, 687, 470, 83, 87, 92, 347, - /* 3540 */ 687, 358, 687, 687, 365, 243, 245, 244, 204, 687, - /* 3550 */ 687, 208, 687, 687, 687, 450, 465, 472, 475, 111, - /* 3560 */ 207, 209, 210, 211, 213, 214, 519, 236, 473, 687, - /* 3570 */ 687, 469, 687, 687, 128, 131, 476, 687, 243, 245, - /* 3580 */ 244, 204, 687, 687, 687, 189, 243, 245, 244, 204, - /* 3590 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 3600 */ 687, 687, 205, 120, 222, 102, 105, 99, 687, 216, - /* 3610 */ 485, 687, 193, 57, 687, 687, 247, 169, 229, 661, - /* 3620 */ 243, 245, 244, 204, 687, 687, 518, 687, 687, 215, - /* 3630 */ 687, 687, 687, 212, 687, 687, 478, 487, 496, 499, - /* 3640 */ 490, 493, 502, 508, 505, 514, 511, 687, 687, 687, - /* 3650 */ 58, 60, 62, 687, 687, 72, 687, 687, 523, 83, - /* 3660 */ 87, 92, 347, 687, 358, 687, 687, 365, 243, 245, - /* 3670 */ 244, 204, 687, 687, 208, 687, 687, 687, 450, 465, - /* 3680 */ 472, 475, 111, 207, 209, 210, 211, 213, 214, 519, - /* 3690 */ 236, 530, 687, 687, 469, 687, 687, 128, 131, 536, - /* 3700 */ 687, 243, 245, 244, 204, 687, 687, 687, 189, 243, - /* 3710 */ 245, 244, 204, 687, 687, 108, 687, 687, 687, 687, - /* 3720 */ 114, 200, 123, 687, 687, 205, 120, 222, 102, 105, - /* 3730 */ 99, 687, 216, 602, 687, 193, 57, 687, 687, 247, - /* 3740 */ 169, 229, 667, 243, 245, 244, 204, 687, 687, 518, - /* 3750 */ 687, 687, 215, 687, 687, 687, 212, 687, 687, 478, - /* 3760 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 3770 */ 687, 687, 687, 58, 60, 62, 687, 687, 72, 687, - /* 3780 */ 687, 604, 83, 87, 92, 347, 687, 358, 687, 687, - /* 3790 */ 365, 243, 245, 244, 204, 687, 687, 208, 687, 687, - /* 3800 */ 687, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 3810 */ 213, 214, 519, 236, 617, 687, 687, 469, 687, 687, - /* 3820 */ 128, 131, 687, 687, 243, 245, 244, 204, 687, 687, - /* 3830 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 3840 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 3850 */ 222, 102, 105, 99, 687, 216, 687, 687, 193, 57, - /* 3860 */ 687, 687, 247, 169, 229, 666, 687, 687, 687, 687, - /* 3870 */ 687, 687, 518, 687, 687, 215, 687, 687, 687, 212, - /* 3880 */ 687, 687, 478, 487, 496, 499, 490, 493, 502, 508, - /* 3890 */ 505, 514, 511, 687, 687, 687, 58, 60, 62, 687, - /* 3900 */ 687, 72, 687, 687, 687, 83, 87, 92, 347, 687, - /* 3910 */ 358, 687, 687, 365, 687, 687, 687, 687, 687, 687, - /* 3920 */ 208, 687, 687, 687, 450, 465, 472, 475, 111, 207, - /* 3930 */ 209, 210, 211, 213, 214, 519, 236, 687, 687, 687, - /* 3940 */ 469, 687, 687, 128, 131, 687, 687, 687, 687, 687, - /* 3950 */ 687, 687, 687, 687, 189, 687, 687, 687, 687, 687, - /* 3960 */ 687, 108, 687, 687, 687, 687, 114, 200, 123, 687, - /* 3970 */ 687, 205, 120, 222, 102, 105, 99, 687, 216, 687, - /* 3980 */ 687, 193, 57, 687, 687, 247, 169, 229, 678, 687, - /* 3990 */ 687, 687, 687, 687, 687, 518, 687, 687, 215, 687, - /* 4000 */ 687, 687, 212, 687, 687, 478, 487, 496, 499, 490, - /* 4010 */ 493, 502, 508, 505, 514, 511, 687, 687, 687, 58, - /* 4020 */ 60, 62, 687, 687, 72, 687, 687, 687, 83, 87, - /* 4030 */ 92, 347, 687, 358, 687, 687, 365, 687, 687, 687, - /* 4040 */ 687, 687, 687, 208, 687, 687, 687, 450, 465, 472, - /* 4050 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 4060 */ 687, 687, 687, 469, 687, 687, 128, 131, 687, 687, - /* 4070 */ 687, 687, 687, 687, 687, 687, 687, 189, 687, 687, - /* 4080 */ 687, 687, 687, 687, 108, 687, 687, 687, 687, 114, - /* 4090 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 4100 */ 687, 216, 687, 687, 193, 57, 687, 687, 247, 169, - /* 4110 */ 229, 677, 687, 687, 687, 687, 687, 687, 518, 687, - /* 4120 */ 687, 215, 687, 687, 687, 212, 687, 687, 478, 487, - /* 4130 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 687, - /* 4140 */ 687, 687, 58, 60, 62, 687, 687, 72, 687, 687, - /* 4150 */ 687, 83, 87, 92, 347, 687, 358, 687, 687, 365, - /* 4160 */ 687, 687, 687, 687, 687, 687, 208, 687, 687, 687, - /* 4170 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 4180 */ 214, 519, 236, 687, 687, 687, 469, 687, 687, 128, - /* 4190 */ 131, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 4200 */ 189, 687, 687, 687, 687, 687, 687, 108, 687, 687, - /* 4210 */ 687, 687, 114, 200, 123, 687, 687, 205, 120, 222, - /* 4220 */ 102, 105, 99, 687, 216, 687, 687, 193, 57, 687, - /* 4230 */ 687, 247, 169, 229, 697, 687, 687, 687, 687, 687, - /* 4240 */ 687, 518, 687, 687, 215, 687, 687, 687, 212, 687, - /* 4250 */ 687, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 4260 */ 514, 511, 687, 687, 687, 58, 60, 62, 687, 687, - /* 4270 */ 72, 687, 687, 687, 83, 87, 92, 347, 687, 358, - /* 4280 */ 687, 687, 365, 687, 687, 687, 687, 687, 687, 208, - /* 4290 */ 687, 687, 687, 450, 465, 472, 475, 111, 207, 209, - /* 4300 */ 210, 211, 213, 214, 519, 236, 687, 687, 687, 469, - /* 4310 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 4320 */ 687, 687, 687, 189, 687, 687, 687, 687, 687, 687, - /* 4330 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 4340 */ 205, 120, 222, 102, 105, 99, 687, 216, 687, 687, - /* 4350 */ 193, 57, 687, 687, 247, 169, 229, 699, 687, 687, - /* 4360 */ 687, 687, 687, 687, 518, 687, 687, 215, 687, 687, - /* 4370 */ 687, 212, 687, 687, 478, 487, 496, 499, 490, 493, - /* 4380 */ 502, 508, 505, 514, 511, 687, 687, 687, 58, 60, - /* 4390 */ 62, 687, 687, 72, 687, 687, 687, 83, 87, 92, - /* 4400 */ 347, 687, 358, 687, 687, 365, 687, 687, 687, 687, - /* 4410 */ 687, 687, 208, 687, 687, 687, 450, 465, 472, 475, - /* 4420 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 687, - /* 4430 */ 687, 687, 469, 687, 687, 128, 131, 687, 687, 687, - /* 4440 */ 687, 687, 687, 687, 687, 687, 189, 687, 687, 687, - /* 4450 */ 687, 687, 687, 108, 687, 687, 687, 687, 114, 200, - /* 4460 */ 123, 687, 687, 205, 120, 222, 102, 105, 99, 687, - /* 4470 */ 216, 687, 687, 193, 57, 687, 687, 247, 169, 229, - /* 4480 */ 706, 687, 687, 687, 687, 687, 687, 518, 687, 687, - /* 4490 */ 215, 687, 687, 687, 212, 687, 687, 478, 487, 496, - /* 4500 */ 499, 490, 493, 502, 508, 505, 514, 511, 687, 687, - /* 4510 */ 687, 58, 60, 62, 687, 687, 72, 687, 687, 687, - /* 4520 */ 83, 87, 92, 347, 687, 358, 687, 687, 365, 687, - /* 4530 */ 687, 687, 687, 687, 687, 208, 687, 687, 687, 450, - /* 4540 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 4550 */ 519, 236, 687, 687, 687, 469, 687, 687, 128, 131, - /* 4560 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 189, - /* 4570 */ 687, 687, 687, 687, 687, 687, 108, 687, 687, 687, - /* 4580 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 4590 */ 105, 99, 687, 216, 687, 687, 193, 57, 687, 687, - /* 4600 */ 247, 169, 229, 708, 687, 687, 687, 687, 687, 687, - /* 4610 */ 518, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 4620 */ 478, 487, 496, 499, 490, 493, 502, 508, 505, 514, - /* 4630 */ 511, 687, 687, 687, 58, 60, 62, 687, 687, 72, - /* 4640 */ 687, 687, 687, 83, 87, 92, 347, 687, 358, 687, - /* 4650 */ 687, 365, 687, 687, 687, 687, 687, 687, 208, 687, - /* 4660 */ 687, 687, 450, 465, 472, 475, 111, 207, 209, 210, - /* 4670 */ 211, 213, 214, 519, 236, 687, 687, 687, 469, 687, - /* 4680 */ 687, 128, 131, 687, 687, 687, 687, 687, 687, 687, - /* 4690 */ 687, 687, 189, 687, 687, 687, 687, 687, 687, 108, - /* 4700 */ 687, 687, 687, 687, 114, 200, 123, 687, 687, 205, - /* 4710 */ 120, 222, 102, 105, 99, 687, 216, 687, 687, 193, - /* 4720 */ 57, 687, 687, 247, 169, 229, 711, 687, 687, 687, - /* 4730 */ 687, 687, 687, 518, 687, 687, 215, 687, 687, 687, - /* 4740 */ 212, 687, 687, 478, 487, 496, 499, 490, 493, 502, - /* 4750 */ 508, 505, 514, 511, 687, 687, 687, 58, 60, 62, - /* 4760 */ 687, 687, 72, 687, 687, 687, 83, 87, 92, 347, - /* 4770 */ 687, 358, 687, 687, 365, 687, 687, 687, 687, 687, - /* 4780 */ 687, 208, 687, 687, 687, 450, 465, 472, 475, 111, - /* 4790 */ 207, 209, 210, 211, 213, 214, 519, 236, 687, 687, - /* 4800 */ 687, 469, 687, 687, 128, 131, 687, 687, 687, 687, - /* 4810 */ 687, 687, 687, 687, 687, 189, 687, 687, 687, 687, - /* 4820 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 4830 */ 687, 687, 205, 120, 222, 102, 105, 99, 687, 216, - /* 4840 */ 687, 687, 193, 57, 687, 687, 247, 169, 229, 713, - /* 4850 */ 687, 687, 687, 687, 687, 687, 518, 687, 687, 215, - /* 4860 */ 687, 687, 687, 212, 687, 687, 478, 487, 496, 499, - /* 4870 */ 490, 493, 502, 508, 505, 514, 511, 687, 687, 687, - /* 4880 */ 58, 60, 62, 687, 687, 72, 687, 687, 687, 83, - /* 4890 */ 87, 92, 347, 687, 358, 687, 687, 365, 687, 687, - /* 4900 */ 687, 687, 687, 687, 208, 687, 687, 687, 450, 465, - /* 4910 */ 472, 475, 111, 207, 209, 210, 211, 213, 214, 519, - /* 4920 */ 236, 687, 687, 687, 469, 687, 687, 128, 131, 687, - /* 4930 */ 687, 687, 687, 687, 687, 687, 687, 687, 189, 687, - /* 4940 */ 687, 687, 687, 687, 687, 108, 687, 687, 687, 687, - /* 4950 */ 114, 200, 123, 687, 687, 205, 120, 222, 102, 105, - /* 4960 */ 99, 687, 216, 687, 687, 193, 57, 687, 687, 247, - /* 4970 */ 169, 229, 820, 687, 687, 687, 687, 687, 687, 518, - /* 4980 */ 687, 687, 215, 687, 687, 687, 212, 687, 687, 478, - /* 4990 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 5000 */ 687, 687, 687, 58, 60, 62, 687, 687, 72, 687, - /* 5010 */ 687, 687, 83, 87, 92, 347, 687, 358, 687, 687, - /* 5020 */ 365, 687, 687, 687, 687, 687, 687, 208, 687, 687, - /* 5030 */ 687, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 5040 */ 213, 214, 519, 236, 687, 687, 687, 469, 687, 687, - /* 5050 */ 128, 131, 687, 687, 687, 687, 687, 687, 687, 687, - /* 5060 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 5070 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 5080 */ 222, 102, 105, 99, 687, 216, 687, 687, 193, 57, - /* 5090 */ 687, 687, 247, 169, 229, 822, 687, 687, 687, 687, - /* 5100 */ 687, 687, 518, 687, 687, 215, 687, 687, 687, 212, - /* 5110 */ 687, 687, 478, 487, 496, 499, 490, 493, 502, 508, - /* 5120 */ 505, 514, 511, 687, 687, 687, 58, 60, 62, 687, - /* 5130 */ 687, 72, 687, 687, 687, 83, 87, 92, 347, 687, - /* 5140 */ 358, 687, 687, 365, 687, 687, 687, 687, 687, 687, - /* 5150 */ 208, 687, 687, 687, 450, 465, 472, 475, 111, 207, - /* 5160 */ 209, 210, 211, 213, 214, 519, 236, 687, 687, 687, - /* 5170 */ 469, 687, 687, 128, 131, 687, 687, 687, 687, 687, - /* 5180 */ 687, 687, 687, 687, 189, 687, 687, 687, 687, 687, - /* 5190 */ 687, 108, 687, 687, 687, 687, 114, 200, 123, 687, - /* 5200 */ 687, 205, 120, 222, 102, 105, 99, 687, 216, 687, - /* 5210 */ 687, 193, 57, 687, 687, 247, 169, 229, 827, 687, - /* 5220 */ 687, 687, 687, 687, 687, 518, 687, 687, 215, 687, - /* 5230 */ 687, 687, 212, 687, 687, 478, 487, 496, 499, 490, - /* 5240 */ 493, 502, 508, 505, 514, 511, 687, 687, 687, 58, - /* 5250 */ 60, 62, 687, 687, 72, 687, 687, 687, 83, 87, - /* 5260 */ 92, 347, 687, 358, 687, 687, 365, 687, 687, 687, - /* 5270 */ 687, 687, 687, 208, 687, 687, 687, 450, 465, 472, - /* 5280 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 5290 */ 687, 687, 687, 469, 687, 687, 128, 131, 687, 687, - /* 5300 */ 687, 687, 687, 687, 687, 687, 687, 189, 687, 687, - /* 5310 */ 687, 687, 687, 687, 108, 687, 687, 687, 687, 114, - /* 5320 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 5330 */ 687, 216, 687, 687, 193, 57, 687, 687, 247, 169, - /* 5340 */ 229, 829, 687, 687, 687, 687, 687, 687, 518, 687, - /* 5350 */ 687, 215, 687, 687, 687, 212, 687, 687, 478, 487, - /* 5360 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 687, - /* 5370 */ 687, 687, 58, 60, 62, 687, 687, 72, 687, 687, - /* 5380 */ 687, 83, 87, 92, 347, 687, 358, 687, 687, 365, - /* 5390 */ 687, 687, 687, 687, 687, 687, 208, 687, 687, 687, - /* 5400 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 5410 */ 214, 519, 236, 687, 687, 687, 469, 687, 687, 128, - /* 5420 */ 131, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 5430 */ 189, 687, 687, 687, 687, 687, 687, 108, 687, 687, - /* 5440 */ 687, 687, 114, 200, 123, 687, 687, 205, 120, 222, - /* 5450 */ 102, 105, 99, 687, 216, 687, 687, 193, 57, 687, - /* 5460 */ 687, 247, 169, 229, 834, 687, 687, 687, 687, 687, - /* 5470 */ 687, 518, 687, 687, 215, 687, 687, 687, 212, 687, - /* 5480 */ 687, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 5490 */ 514, 511, 687, 687, 687, 58, 60, 62, 687, 687, - /* 5500 */ 72, 687, 687, 687, 83, 87, 92, 347, 687, 358, - /* 5510 */ 687, 687, 365, 687, 687, 687, 687, 687, 687, 208, - /* 5520 */ 687, 687, 687, 450, 465, 472, 475, 111, 207, 209, - /* 5530 */ 210, 211, 213, 214, 519, 236, 687, 687, 687, 469, - /* 5540 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 5550 */ 687, 687, 687, 189, 687, 687, 687, 687, 687, 687, - /* 5560 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 5570 */ 205, 120, 222, 102, 105, 99, 687, 216, 687, 687, - /* 5580 */ 193, 57, 687, 687, 247, 169, 229, 836, 687, 687, - /* 5590 */ 687, 687, 687, 687, 518, 687, 687, 215, 687, 687, - /* 5600 */ 687, 212, 687, 687, 478, 487, 496, 499, 490, 493, - /* 5610 */ 502, 508, 505, 514, 511, 687, 687, 687, 58, 60, - /* 5620 */ 62, 687, 687, 72, 687, 687, 687, 83, 87, 92, - /* 5630 */ 347, 687, 358, 687, 687, 365, 687, 687, 687, 687, - /* 5640 */ 687, 687, 208, 687, 687, 687, 450, 465, 472, 475, - /* 5650 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 687, - /* 5660 */ 687, 687, 469, 687, 687, 128, 131, 687, 687, 687, - /* 5670 */ 687, 687, 687, 687, 687, 687, 189, 687, 687, 687, - /* 5680 */ 687, 687, 687, 108, 687, 687, 687, 687, 114, 200, - /* 5690 */ 123, 687, 687, 205, 120, 222, 102, 105, 99, 687, - /* 5700 */ 216, 687, 687, 193, 57, 687, 687, 247, 169, 229, - /* 5710 */ 841, 687, 687, 687, 687, 687, 687, 518, 687, 687, - /* 5720 */ 215, 687, 687, 687, 212, 687, 687, 478, 487, 496, - /* 5730 */ 499, 490, 493, 502, 508, 505, 514, 511, 687, 687, - /* 5740 */ 687, 58, 60, 62, 687, 687, 72, 687, 687, 687, - /* 5750 */ 83, 87, 92, 347, 687, 358, 687, 687, 365, 687, - /* 5760 */ 687, 687, 687, 687, 687, 208, 687, 687, 687, 450, - /* 5770 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 5780 */ 519, 236, 687, 687, 687, 469, 687, 687, 128, 131, - /* 5790 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 189, - /* 5800 */ 687, 687, 687, 687, 687, 687, 108, 687, 687, 687, - /* 5810 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 5820 */ 105, 99, 687, 216, 687, 687, 193, 57, 687, 687, - /* 5830 */ 247, 169, 229, 843, 687, 687, 687, 687, 687, 687, - /* 5840 */ 518, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 5850 */ 478, 487, 496, 499, 490, 493, 502, 508, 505, 514, - /* 5860 */ 511, 687, 687, 687, 58, 60, 62, 687, 687, 72, - /* 5870 */ 687, 687, 687, 83, 87, 92, 347, 687, 358, 687, - /* 5880 */ 687, 365, 687, 687, 687, 687, 687, 687, 208, 687, - /* 5890 */ 687, 687, 450, 465, 472, 475, 111, 207, 209, 210, - /* 5900 */ 211, 213, 214, 519, 236, 687, 687, 687, 469, 687, - /* 5910 */ 687, 128, 131, 687, 687, 687, 687, 687, 687, 687, - /* 5920 */ 687, 687, 189, 687, 687, 687, 687, 687, 687, 108, - /* 5930 */ 687, 687, 687, 687, 114, 200, 123, 687, 687, 205, - /* 5940 */ 120, 222, 102, 105, 99, 687, 216, 687, 687, 193, - /* 5950 */ 57, 687, 687, 247, 169, 229, 852, 687, 687, 687, - /* 5960 */ 687, 687, 687, 518, 687, 687, 215, 687, 687, 687, - /* 5970 */ 212, 687, 687, 478, 487, 496, 499, 490, 493, 502, - /* 5980 */ 508, 505, 514, 511, 687, 687, 687, 58, 60, 62, - /* 5990 */ 687, 687, 72, 687, 687, 687, 83, 87, 92, 347, - /* 6000 */ 687, 358, 687, 687, 365, 687, 687, 687, 687, 687, - /* 6010 */ 687, 208, 687, 687, 687, 450, 465, 472, 475, 111, - /* 6020 */ 207, 209, 210, 211, 213, 214, 519, 236, 687, 687, - /* 6030 */ 687, 469, 687, 687, 128, 131, 687, 687, 687, 687, - /* 6040 */ 687, 687, 687, 687, 687, 189, 687, 687, 687, 687, - /* 6050 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 6060 */ 687, 687, 205, 120, 222, 102, 105, 99, 687, 216, - /* 6070 */ 687, 687, 193, 57, 687, 687, 247, 169, 229, 854, - /* 6080 */ 687, 687, 687, 687, 687, 687, 518, 687, 687, 215, - /* 6090 */ 687, 687, 687, 212, 687, 687, 478, 487, 496, 499, - /* 6100 */ 490, 493, 502, 508, 505, 514, 511, 687, 687, 687, - /* 6110 */ 58, 60, 62, 687, 687, 72, 687, 687, 687, 83, - /* 6120 */ 87, 92, 347, 687, 358, 687, 687, 365, 687, 687, - /* 6130 */ 687, 687, 687, 687, 208, 687, 687, 687, 450, 465, - /* 6140 */ 472, 475, 111, 207, 209, 210, 211, 213, 214, 519, - /* 6150 */ 236, 687, 687, 687, 469, 687, 687, 128, 131, 687, - /* 6160 */ 687, 687, 687, 687, 687, 687, 687, 687, 189, 687, - /* 6170 */ 687, 687, 687, 687, 687, 108, 687, 687, 687, 687, - /* 6180 */ 114, 200, 123, 687, 687, 205, 120, 222, 102, 105, - /* 6190 */ 99, 687, 216, 687, 687, 193, 57, 687, 687, 247, - /* 6200 */ 169, 229, 859, 687, 687, 687, 687, 687, 687, 518, - /* 6210 */ 687, 687, 215, 687, 687, 687, 212, 687, 687, 478, - /* 6220 */ 487, 496, 499, 490, 493, 502, 508, 505, 514, 511, - /* 6230 */ 687, 687, 687, 58, 60, 62, 687, 687, 72, 687, - /* 6240 */ 687, 687, 83, 87, 92, 347, 687, 358, 687, 687, - /* 6250 */ 365, 687, 687, 687, 687, 687, 687, 208, 687, 687, - /* 6260 */ 687, 450, 465, 472, 475, 111, 207, 209, 210, 211, - /* 6270 */ 213, 214, 519, 236, 687, 687, 687, 469, 687, 687, - /* 6280 */ 128, 131, 687, 687, 687, 687, 687, 687, 687, 687, - /* 6290 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 6300 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 6310 */ 222, 102, 105, 99, 687, 216, 687, 687, 193, 57, - /* 6320 */ 687, 687, 247, 169, 229, 861, 687, 687, 687, 687, - /* 6330 */ 687, 687, 518, 687, 687, 215, 687, 687, 687, 212, - /* 6340 */ 687, 687, 478, 487, 496, 499, 490, 493, 502, 508, - /* 6350 */ 505, 514, 511, 687, 687, 687, 58, 60, 62, 687, - /* 6360 */ 687, 72, 687, 687, 687, 83, 87, 92, 347, 687, - /* 6370 */ 358, 687, 687, 365, 687, 687, 687, 687, 687, 687, - /* 6380 */ 208, 687, 687, 687, 450, 465, 472, 475, 111, 207, - /* 6390 */ 209, 210, 211, 213, 214, 519, 236, 687, 687, 687, - /* 6400 */ 469, 687, 687, 128, 131, 687, 687, 687, 687, 687, - /* 6410 */ 687, 687, 687, 687, 189, 687, 687, 687, 687, 687, - /* 6420 */ 687, 108, 687, 687, 687, 687, 114, 200, 123, 687, - /* 6430 */ 687, 205, 120, 222, 102, 105, 99, 687, 216, 687, - /* 6440 */ 687, 193, 57, 687, 687, 247, 169, 229, 866, 687, - /* 6450 */ 687, 687, 687, 687, 687, 518, 687, 687, 215, 687, - /* 6460 */ 687, 687, 212, 687, 687, 478, 487, 496, 499, 490, - /* 6470 */ 493, 502, 508, 505, 514, 511, 687, 687, 687, 58, - /* 6480 */ 60, 62, 687, 687, 72, 687, 687, 687, 83, 87, - /* 6490 */ 92, 347, 687, 358, 687, 687, 365, 687, 687, 687, - /* 6500 */ 687, 687, 687, 208, 687, 687, 687, 450, 465, 472, - /* 6510 */ 475, 111, 207, 209, 210, 211, 213, 214, 519, 236, - /* 6520 */ 687, 687, 687, 469, 687, 687, 128, 131, 687, 687, - /* 6530 */ 687, 687, 687, 687, 687, 687, 687, 189, 687, 687, - /* 6540 */ 687, 687, 687, 687, 108, 687, 687, 687, 687, 114, - /* 6550 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 6560 */ 687, 216, 687, 687, 193, 57, 687, 687, 247, 169, - /* 6570 */ 229, 868, 687, 687, 687, 687, 687, 687, 518, 687, - /* 6580 */ 687, 215, 687, 687, 687, 212, 687, 687, 478, 487, - /* 6590 */ 496, 499, 490, 493, 502, 508, 505, 514, 511, 687, - /* 6600 */ 687, 687, 58, 60, 62, 687, 687, 72, 687, 687, - /* 6610 */ 687, 83, 87, 92, 347, 687, 358, 687, 687, 365, - /* 6620 */ 687, 687, 687, 687, 687, 687, 208, 687, 687, 687, - /* 6630 */ 450, 465, 472, 475, 111, 207, 209, 210, 211, 213, - /* 6640 */ 214, 519, 236, 687, 687, 687, 469, 687, 687, 128, - /* 6650 */ 131, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 6660 */ 189, 687, 687, 687, 687, 687, 687, 108, 687, 687, - /* 6670 */ 687, 687, 114, 200, 123, 687, 687, 205, 120, 222, - /* 6680 */ 102, 105, 99, 687, 216, 687, 687, 193, 57, 687, - /* 6690 */ 687, 247, 169, 229, 873, 687, 687, 687, 687, 687, - /* 6700 */ 687, 518, 687, 687, 215, 687, 687, 687, 212, 687, - /* 6710 */ 687, 478, 487, 496, 499, 490, 493, 502, 508, 505, - /* 6720 */ 514, 511, 687, 687, 687, 58, 60, 62, 687, 687, - /* 6730 */ 72, 687, 687, 687, 83, 87, 92, 347, 687, 358, - /* 6740 */ 687, 687, 365, 687, 687, 687, 687, 687, 687, 208, - /* 6750 */ 687, 687, 687, 450, 465, 472, 475, 111, 207, 209, - /* 6760 */ 210, 211, 213, 214, 519, 236, 687, 687, 687, 469, - /* 6770 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 6780 */ 687, 687, 687, 189, 687, 687, 687, 687, 687, 687, - /* 6790 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 6800 */ 205, 120, 222, 102, 105, 99, 687, 216, 687, 687, - /* 6810 */ 193, 57, 687, 687, 247, 169, 229, 875, 687, 687, - /* 6820 */ 687, 687, 687, 687, 518, 687, 687, 215, 687, 687, - /* 6830 */ 687, 212, 687, 687, 478, 487, 496, 499, 490, 493, - /* 6840 */ 502, 508, 505, 514, 511, 687, 687, 687, 58, 60, - /* 6850 */ 62, 687, 687, 72, 687, 687, 687, 83, 87, 92, - /* 6860 */ 347, 687, 358, 687, 687, 365, 687, 687, 687, 687, - /* 6870 */ 687, 687, 208, 687, 687, 687, 450, 465, 472, 475, - /* 6880 */ 111, 207, 209, 210, 211, 213, 214, 519, 236, 687, - /* 6890 */ 687, 687, 469, 687, 687, 128, 131, 687, 687, 687, - /* 6900 */ 687, 687, 687, 687, 687, 687, 189, 687, 687, 687, - /* 6910 */ 687, 687, 687, 108, 687, 687, 687, 687, 114, 200, - /* 6920 */ 123, 687, 687, 205, 120, 222, 102, 105, 99, 687, - /* 6930 */ 216, 687, 687, 193, 57, 687, 687, 247, 169, 229, - /* 6940 */ 687, 687, 687, 687, 687, 687, 687, 518, 687, 687, - /* 6950 */ 215, 687, 687, 687, 212, 687, 687, 478, 487, 496, - /* 6960 */ 499, 490, 493, 502, 508, 505, 514, 511, 687, 687, - /* 6970 */ 687, 58, 60, 62, 687, 687, 72, 687, 687, 687, - /* 6980 */ 83, 87, 92, 347, 687, 358, 687, 687, 365, 687, - /* 6990 */ 687, 687, 687, 687, 687, 208, 687, 687, 687, 450, - /* 7000 */ 465, 472, 475, 111, 207, 209, 210, 211, 213, 214, - /* 7010 */ 519, 236, 687, 687, 687, 117, 687, 687, 128, 131, - /* 7020 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 189, - /* 7030 */ 687, 687, 687, 687, 687, 687, 108, 687, 687, 687, - /* 7040 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 7050 */ 105, 99, 687, 216, 687, 687, 193, 687, 687, 687, - /* 7060 */ 247, 169, 229, 687, 687, 687, 687, 687, 687, 687, - /* 7070 */ 687, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 7080 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 7090 */ 180, 181, 182, 183, 149, 153, 155, 157, 101, 107, - /* 7100 */ 113, 116, 119, 122, 110, 104, 133, 135, 143, 137, - /* 7110 */ 139, 141, 687, 687, 687, 161, 163, 687, 208, 687, - /* 7120 */ 687, 687, 151, 687, 130, 125, 111, 207, 209, 210, - /* 7130 */ 211, 213, 214, 236, 687, 687, 687, 117, 687, 687, - /* 7140 */ 128, 131, 747, 748, 749, 751, 750, 752, 687, 687, - /* 7150 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 7160 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 7170 */ 222, 102, 105, 99, 622, 216, 687, 687, 198, 687, - /* 7180 */ 687, 687, 247, 169, 229, 687, 687, 687, 687, 687, - /* 7190 */ 687, 687, 687, 687, 687, 215, 687, 725, 687, 212, - /* 7200 */ 687, 687, 755, 756, 776, 687, 786, 687, 753, 754, - /* 7210 */ 165, 687, 687, 147, 145, 159, 149, 153, 155, 157, - /* 7220 */ 101, 107, 113, 116, 119, 122, 110, 104, 133, 135, - /* 7230 */ 143, 137, 139, 141, 687, 687, 687, 161, 163, 687, - /* 7240 */ 208, 687, 687, 687, 151, 185, 130, 125, 111, 207, - /* 7250 */ 209, 210, 211, 213, 214, 236, 687, 687, 687, 117, - /* 7260 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 7270 */ 687, 687, 687, 189, 687, 687, 317, 687, 687, 687, - /* 7280 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 7290 */ 205, 120, 222, 102, 105, 99, 317, 216, 281, 26, - /* 7300 */ 193, 687, 687, 252, 247, 169, 229, 687, 687, 687, - /* 7310 */ 687, 687, 687, 687, 687, 687, 687, 215, 289, 285, - /* 7320 */ 687, 212, 687, 286, 687, 687, 687, 170, 171, 172, - /* 7330 */ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - /* 7340 */ 183, 687, 687, 687, 687, 616, 687, 170, 171, 172, - /* 7350 */ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - /* 7360 */ 183, 687, 208, 687, 747, 748, 749, 751, 750, 752, - /* 7370 */ 111, 207, 209, 210, 211, 213, 214, 236, 687, 687, - /* 7380 */ 687, 117, 687, 687, 128, 131, 747, 748, 749, 751, - /* 7390 */ 750, 752, 687, 687, 687, 189, 687, 687, 687, 687, - /* 7400 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 7410 */ 687, 687, 205, 120, 222, 102, 105, 99, 605, 216, - /* 7420 */ 687, 687, 198, 687, 755, 756, 247, 169, 229, 687, - /* 7430 */ 753, 754, 687, 687, 687, 687, 687, 687, 687, 215, - /* 7440 */ 687, 1005, 687, 212, 687, 687, 755, 756, 776, 687, - /* 7450 */ 786, 687, 753, 754, 165, 687, 687, 147, 145, 159, - /* 7460 */ 149, 153, 155, 157, 101, 107, 113, 116, 119, 122, - /* 7470 */ 110, 104, 133, 135, 143, 137, 139, 141, 687, 687, - /* 7480 */ 687, 161, 163, 687, 208, 687, 687, 687, 151, 687, - /* 7490 */ 130, 125, 111, 207, 209, 210, 211, 213, 214, 236, - /* 7500 */ 687, 687, 687, 117, 687, 687, 128, 131, 747, 748, - /* 7510 */ 749, 751, 750, 752, 687, 687, 1245, 189, 687, 687, - /* 7520 */ 687, 687, 687, 687, 108, 687, 687, 687, 687, 114, - /* 7530 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 7540 */ 600, 216, 687, 687, 198, 687, 687, 687, 247, 169, - /* 7550 */ 229, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 7560 */ 687, 215, 687, 808, 687, 212, 687, 687, 755, 756, - /* 7570 */ 882, 687, 786, 687, 753, 754, 165, 687, 687, 147, - /* 7580 */ 145, 159, 149, 153, 155, 157, 101, 107, 113, 116, - /* 7590 */ 119, 122, 110, 104, 133, 135, 143, 137, 139, 141, - /* 7600 */ 687, 687, 687, 161, 163, 687, 208, 687, 687, 687, - /* 7610 */ 151, 687, 130, 125, 111, 207, 209, 210, 211, 213, - /* 7620 */ 214, 236, 687, 687, 687, 117, 687, 687, 128, 131, - /* 7630 */ 747, 748, 749, 751, 750, 752, 687, 687, 619, 189, - /* 7640 */ 687, 687, 687, 687, 687, 687, 108, 687, 687, 687, - /* 7650 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 7660 */ 105, 99, 687, 216, 687, 687, 193, 687, 687, 687, - /* 7670 */ 247, 169, 229, 687, 687, 687, 687, 687, 687, 687, - /* 7680 */ 687, 687, 687, 215, 687, 996, 687, 212, 687, 218, - /* 7690 */ 755, 756, 882, 687, 786, 687, 753, 754, 165, 687, - /* 7700 */ 687, 147, 145, 159, 149, 153, 155, 157, 101, 107, - /* 7710 */ 113, 116, 119, 122, 110, 104, 133, 135, 143, 137, - /* 7720 */ 139, 141, 687, 687, 687, 161, 163, 687, 208, 687, - /* 7730 */ 687, 687, 151, 687, 130, 125, 111, 207, 209, 210, - /* 7740 */ 211, 213, 214, 236, 687, 687, 687, 117, 687, 687, - /* 7750 */ 128, 131, 747, 748, 749, 751, 750, 752, 687, 687, - /* 7760 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 7770 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 7780 */ 222, 102, 105, 99, 225, 216, 687, 687, 198, 687, - /* 7790 */ 687, 687, 247, 169, 229, 687, 687, 687, 687, 687, - /* 7800 */ 687, 687, 687, 687, 687, 215, 687, 1000, 687, 212, - /* 7810 */ 687, 687, 755, 756, 880, 687, 786, 687, 753, 754, - /* 7820 */ 687, 687, 687, 147, 145, 159, 149, 153, 155, 157, - /* 7830 */ 101, 107, 113, 116, 119, 122, 110, 104, 133, 135, - /* 7840 */ 143, 137, 139, 141, 687, 687, 687, 161, 163, 687, - /* 7850 */ 208, 687, 687, 687, 151, 687, 130, 125, 111, 207, - /* 7860 */ 209, 210, 211, 213, 214, 236, 687, 687, 687, 117, - /* 7870 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 7880 */ 687, 690, 687, 189, 687, 687, 687, 687, 687, 687, - /* 7890 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 7900 */ 205, 120, 222, 102, 105, 99, 235, 216, 687, 687, - /* 7910 */ 198, 687, 687, 687, 247, 169, 229, 687, 687, 687, - /* 7920 */ 687, 687, 687, 687, 687, 687, 687, 215, 680, 686, - /* 7930 */ 687, 212, 170, 171, 172, 173, 174, 175, 176, 177, - /* 7940 */ 178, 179, 180, 181, 182, 183, 145, 159, 149, 153, - /* 7950 */ 155, 157, 101, 107, 113, 116, 119, 122, 110, 104, - /* 7960 */ 133, 135, 143, 137, 139, 141, 687, 687, 687, 161, - /* 7970 */ 163, 687, 208, 687, 687, 687, 151, 687, 130, 125, - /* 7980 */ 111, 207, 209, 210, 211, 213, 214, 236, 687, 687, - /* 7990 */ 687, 117, 687, 687, 128, 131, 687, 687, 687, 687, - /* 8000 */ 687, 687, 687, 687, 687, 189, 687, 687, 687, 687, - /* 8010 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 8020 */ 687, 687, 205, 120, 222, 102, 105, 99, 242, 216, - /* 8030 */ 687, 687, 198, 687, 687, 687, 247, 169, 229, 687, - /* 8040 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 215, - /* 8050 */ 687, 687, 687, 212, 159, 149, 153, 155, 157, 101, - /* 8060 */ 107, 113, 116, 119, 122, 110, 104, 133, 135, 143, - /* 8070 */ 137, 139, 141, 687, 687, 687, 161, 163, 687, 687, - /* 8080 */ 687, 687, 687, 151, 687, 130, 125, 687, 687, 687, - /* 8090 */ 687, 687, 687, 687, 208, 687, 687, 687, 687, 687, - /* 8100 */ 687, 687, 111, 207, 209, 210, 211, 213, 214, 236, - /* 8110 */ 687, 687, 687, 117, 687, 687, 128, 131, 687, 687, - /* 8120 */ 687, 687, 687, 687, 687, 687, 687, 189, 687, 687, - /* 8130 */ 687, 687, 687, 266, 108, 687, 262, 687, 687, 114, - /* 8140 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 8150 */ 687, 216, 687, 265, 193, 687, 687, 259, 247, 169, - /* 8160 */ 229, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 8170 */ 687, 215, 687, 687, 687, 212, 687, 687, 687, 101, - /* 8180 */ 107, 113, 116, 119, 122, 110, 104, 133, 135, 143, - /* 8190 */ 137, 139, 141, 687, 687, 687, 161, 163, 257, 687, - /* 8200 */ 687, 687, 687, 151, 687, 130, 125, 255, 522, 256, - /* 8210 */ 258, 261, 260, 236, 687, 687, 208, 117, 687, 687, - /* 8220 */ 128, 131, 687, 687, 111, 207, 209, 210, 211, 213, - /* 8230 */ 214, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 8240 */ 687, 687, 687, 114, 200, 123, 687, 317, 205, 120, - /* 8250 */ 222, 102, 105, 99, 687, 216, 687, 687, 193, 687, - /* 8260 */ 687, 687, 247, 169, 229, 687, 687, 687, 687, 281, - /* 8270 */ 556, 687, 687, 266, 252, 215, 269, 687, 687, 212, - /* 8280 */ 687, 386, 687, 687, 687, 687, 687, 687, 687, 687, - /* 8290 */ 285, 687, 687, 265, 687, 687, 687, 259, 170, 171, - /* 8300 */ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - /* 8310 */ 182, 183, 11, 19, 687, 14, 687, 23, 687, 687, - /* 8320 */ 208, 715, 687, 798, 687, 923, 936, 518, 111, 207, - /* 8330 */ 209, 210, 211, 213, 214, 236, 687, 687, 268, 117, - /* 8340 */ 687, 687, 128, 131, 687, 687, 687, 267, 687, 256, - /* 8350 */ 258, 261, 260, 189, 687, 687, 317, 687, 687, 687, - /* 8360 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 8370 */ 205, 120, 222, 102, 105, 99, 690, 216, 281, 735, - /* 8380 */ 193, 687, 687, 252, 247, 169, 229, 687, 687, 687, - /* 8390 */ 519, 687, 687, 687, 687, 687, 687, 215, 687, 285, - /* 8400 */ 687, 212, 687, 396, 687, 687, 687, 170, 171, 172, - /* 8410 */ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - /* 8420 */ 183, 687, 687, 687, 686, 687, 687, 170, 171, 172, - /* 8430 */ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - /* 8440 */ 183, 687, 208, 687, 687, 687, 687, 687, 687, 687, - /* 8450 */ 111, 207, 209, 210, 211, 213, 214, 236, 687, 687, - /* 8460 */ 687, 117, 687, 687, 128, 131, 687, 687, 687, 687, - /* 8470 */ 687, 687, 687, 687, 687, 189, 687, 687, 317, 687, - /* 8480 */ 687, 687, 108, 687, 687, 427, 381, 114, 200, 123, - /* 8490 */ 687, 687, 205, 120, 222, 102, 105, 99, 385, 216, - /* 8500 */ 281, 762, 193, 371, 687, 252, 247, 169, 229, 687, - /* 8510 */ 687, 687, 687, 687, 687, 687, 371, 687, 687, 215, - /* 8520 */ 687, 285, 687, 212, 687, 417, 687, 687, 687, 170, - /* 8530 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 8540 */ 181, 182, 183, 687, 372, 373, 374, 375, 376, 377, - /* 8550 */ 687, 412, 438, 439, 687, 687, 687, 372, 373, 374, - /* 8560 */ 375, 376, 377, 687, 208, 401, 402, 687, 687, 687, - /* 8570 */ 687, 687, 111, 207, 209, 210, 211, 213, 214, 236, - /* 8580 */ 687, 687, 687, 117, 687, 687, 128, 131, 687, 687, - /* 8590 */ 687, 687, 137, 139, 141, 687, 687, 189, 161, 163, - /* 8600 */ 317, 687, 687, 687, 108, 151, 687, 130, 125, 114, - /* 8610 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 8620 */ 395, 216, 281, 818, 193, 687, 687, 252, 247, 169, - /* 8630 */ 229, 687, 687, 687, 687, 687, 687, 687, 371, 687, - /* 8640 */ 687, 215, 687, 285, 687, 212, 687, 424, 687, 687, - /* 8650 */ 687, 170, 171, 172, 173, 174, 175, 176, 177, 178, - /* 8660 */ 179, 180, 181, 182, 183, 1407, 1, 2, 946, 4, - /* 8670 */ 5, 6, 7, 8, 9, 10, 687, 687, 687, 372, - /* 8680 */ 373, 374, 375, 376, 377, 687, 208, 687, 687, 687, - /* 8690 */ 687, 687, 687, 687, 111, 207, 209, 210, 211, 213, - /* 8700 */ 214, 236, 687, 687, 687, 117, 687, 687, 128, 131, - /* 8710 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 189, - /* 8720 */ 687, 687, 317, 687, 687, 687, 108, 687, 687, 416, - /* 8730 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 8740 */ 105, 99, 423, 216, 281, 850, 193, 371, 687, 252, - /* 8750 */ 247, 169, 229, 687, 687, 687, 687, 687, 687, 687, - /* 8760 */ 371, 687, 687, 215, 687, 285, 687, 212, 687, 428, - /* 8770 */ 687, 687, 687, 170, 171, 172, 173, 174, 175, 176, - /* 8780 */ 177, 178, 179, 180, 181, 182, 183, 687, 372, 373, - /* 8790 */ 374, 375, 376, 377, 687, 687, 687, 687, 687, 687, - /* 8800 */ 687, 372, 373, 374, 375, 376, 377, 687, 208, 687, - /* 8810 */ 687, 687, 687, 687, 687, 687, 111, 207, 209, 210, - /* 8820 */ 211, 213, 214, 236, 687, 687, 687, 117, 687, 687, - /* 8830 */ 128, 131, 687, 687, 687, 687, 687, 687, 687, 687, - /* 8840 */ 687, 189, 687, 687, 317, 687, 687, 687, 108, 687, - /* 8850 */ 687, 434, 687, 114, 200, 123, 687, 687, 205, 120, - /* 8860 */ 222, 102, 105, 99, 687, 216, 281, 687, 193, 371, - /* 8870 */ 687, 252, 247, 169, 229, 687, 687, 687, 687, 687, - /* 8880 */ 687, 687, 687, 687, 687, 215, 687, 285, 687, 212, - /* 8890 */ 687, 435, 687, 687, 687, 170, 171, 172, 173, 174, - /* 8900 */ 175, 176, 177, 178, 179, 180, 181, 182, 183, 687, - /* 8910 */ 372, 373, 374, 375, 376, 377, 687, 687, 687, 687, - /* 8920 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 8930 */ 208, 687, 687, 687, 687, 687, 687, 687, 111, 207, - /* 8940 */ 209, 210, 211, 213, 214, 236, 687, 223, 687, 117, - /* 8950 */ 687, 687, 128, 131, 687, 687, 687, 687, 687, 687, - /* 8960 */ 687, 687, 687, 189, 687, 687, 687, 687, 687, 687, - /* 8970 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 8980 */ 205, 120, 222, 102, 105, 99, 687, 216, 948, 687, - /* 8990 */ 193, 468, 575, 687, 247, 169, 229, 687, 580, 687, - /* 9000 */ 687, 687, 687, 687, 687, 687, 687, 215, 687, 687, - /* 9010 */ 687, 212, 687, 687, 687, 687, 170, 171, 172, 173, - /* 9020 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 9030 */ 687, 687, 687, 687, 687, 687, 11, 19, 687, 14, - /* 9040 */ 687, 23, 687, 687, 687, 715, 687, 798, 687, 923, - /* 9050 */ 936, 518, 208, 687, 687, 687, 687, 687, 687, 687, - /* 9060 */ 111, 207, 209, 210, 211, 213, 214, 236, 687, 687, - /* 9070 */ 266, 117, 687, 269, 128, 131, 747, 748, 749, 751, - /* 9080 */ 750, 752, 687, 687, 687, 189, 687, 687, 687, 687, - /* 9090 */ 265, 687, 108, 687, 259, 687, 270, 114, 200, 123, - /* 9100 */ 687, 687, 205, 120, 222, 102, 105, 99, 687, 216, - /* 9110 */ 687, 687, 193, 687, 519, 687, 247, 169, 229, 687, - /* 9120 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 215, - /* 9130 */ 687, 997, 687, 212, 687, 268, 755, 756, 882, 687, - /* 9140 */ 786, 687, 753, 754, 267, 687, 256, 258, 261, 260, - /* 9150 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9160 */ 687, 687, 687, 687, 687, 687, 535, 687, 687, 687, - /* 9170 */ 687, 236, 687, 687, 208, 117, 687, 687, 128, 131, - /* 9180 */ 687, 687, 111, 207, 209, 210, 211, 213, 214, 189, - /* 9190 */ 747, 748, 749, 751, 750, 752, 108, 687, 687, 687, - /* 9200 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 9210 */ 105, 99, 564, 216, 687, 687, 198, 687, 687, 687, - /* 9220 */ 247, 169, 229, 687, 687, 687, 687, 687, 687, 687, - /* 9230 */ 687, 687, 687, 215, 687, 687, 687, 212, 687, 687, - /* 9240 */ 687, 687, 687, 687, 687, 1007, 687, 687, 687, 687, - /* 9250 */ 755, 756, 757, 687, 687, 687, 753, 754, 687, 687, - /* 9260 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9270 */ 687, 687, 687, 687, 687, 687, 687, 687, 208, 687, - /* 9280 */ 687, 687, 687, 687, 687, 687, 111, 207, 209, 210, - /* 9290 */ 211, 213, 214, 236, 687, 687, 687, 117, 687, 687, - /* 9300 */ 128, 131, 747, 748, 749, 751, 750, 752, 687, 687, - /* 9310 */ 687, 189, 687, 687, 687, 687, 687, 687, 108, 687, - /* 9320 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 9330 */ 222, 102, 105, 99, 571, 216, 687, 687, 198, 687, - /* 9340 */ 687, 687, 247, 169, 229, 687, 687, 687, 687, 687, - /* 9350 */ 687, 687, 687, 687, 687, 215, 687, 1006, 687, 212, - /* 9360 */ 687, 687, 755, 756, 757, 687, 687, 687, 753, 754, - /* 9370 */ 747, 748, 749, 751, 750, 752, 687, 687, 687, 687, - /* 9380 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9390 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9400 */ 208, 687, 687, 687, 687, 687, 687, 687, 111, 207, - /* 9410 */ 209, 210, 211, 213, 214, 236, 687, 687, 687, 117, - /* 9420 */ 687, 687, 128, 131, 687, 999, 687, 687, 687, 687, - /* 9430 */ 755, 756, 845, 189, 687, 687, 753, 754, 687, 687, - /* 9440 */ 108, 687, 687, 687, 687, 114, 200, 123, 687, 687, - /* 9450 */ 205, 120, 222, 102, 105, 99, 577, 216, 687, 687, - /* 9460 */ 198, 687, 687, 687, 247, 169, 229, 687, 687, 687, - /* 9470 */ 687, 687, 687, 687, 687, 687, 687, 215, 687, 687, - /* 9480 */ 687, 212, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9490 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9500 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9510 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9520 */ 687, 687, 208, 687, 687, 687, 687, 687, 687, 687, - /* 9530 */ 111, 207, 209, 210, 211, 213, 214, 236, 687, 687, - /* 9540 */ 687, 117, 687, 687, 128, 131, 747, 748, 749, 751, - /* 9550 */ 750, 752, 687, 687, 687, 189, 687, 687, 687, 687, - /* 9560 */ 687, 687, 108, 687, 687, 687, 687, 114, 200, 123, - /* 9570 */ 687, 687, 205, 120, 222, 102, 105, 99, 584, 216, - /* 9580 */ 687, 687, 198, 687, 687, 687, 247, 169, 229, 687, - /* 9590 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 215, - /* 9600 */ 687, 1003, 687, 212, 687, 687, 755, 756, 845, 687, - /* 9610 */ 687, 687, 753, 754, 747, 748, 749, 751, 750, 752, - /* 9620 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9630 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9640 */ 687, 687, 687, 687, 208, 687, 687, 687, 687, 687, - /* 9650 */ 687, 687, 111, 207, 209, 210, 211, 213, 214, 236, - /* 9660 */ 687, 687, 687, 117, 687, 687, 128, 131, 747, 748, - /* 9670 */ 749, 751, 750, 752, 755, 756, 687, 189, 777, 687, - /* 9680 */ 753, 754, 687, 687, 108, 687, 687, 687, 687, 114, - /* 9690 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 9700 */ 613, 216, 687, 687, 198, 687, 687, 687, 247, 169, - /* 9710 */ 229, 687, 687, 687, 687, 687, 884, 687, 687, 687, - /* 9720 */ 847, 215, 687, 687, 687, 212, 687, 687, 755, 756, - /* 9730 */ 687, 687, 687, 687, 753, 754, 687, 687, 687, 687, - /* 9740 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9750 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9760 */ 687, 687, 687, 687, 687, 687, 208, 687, 687, 687, - /* 9770 */ 687, 687, 687, 687, 111, 207, 209, 210, 211, 213, - /* 9780 */ 214, 236, 687, 687, 687, 117, 687, 687, 128, 131, - /* 9790 */ 747, 748, 749, 751, 750, 752, 687, 687, 687, 189, - /* 9800 */ 687, 687, 687, 687, 687, 687, 108, 687, 687, 687, - /* 9810 */ 687, 114, 200, 123, 687, 687, 205, 120, 222, 102, - /* 9820 */ 105, 99, 629, 216, 687, 687, 198, 687, 687, 687, - /* 9830 */ 247, 169, 229, 687, 687, 687, 687, 687, 904, 687, - /* 9840 */ 687, 687, 815, 215, 687, 687, 687, 212, 687, 687, - /* 9850 */ 755, 756, 687, 687, 687, 687, 753, 754, 747, 748, - /* 9860 */ 749, 751, 750, 752, 687, 687, 687, 687, 687, 687, - /* 9870 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9880 */ 687, 687, 687, 687, 687, 687, 687, 687, 208, 687, - /* 9890 */ 687, 687, 687, 687, 687, 687, 111, 207, 209, 210, - /* 9900 */ 211, 213, 214, 236, 687, 687, 687, 117, 687, 687, - /* 9910 */ 128, 131, 687, 1001, 687, 687, 687, 687, 755, 756, - /* 9920 */ 916, 189, 687, 687, 753, 754, 687, 687, 108, 687, - /* 9930 */ 687, 687, 687, 114, 200, 123, 687, 687, 205, 120, - /* 9940 */ 222, 102, 105, 99, 635, 216, 687, 687, 198, 687, - /* 9950 */ 687, 687, 247, 169, 229, 687, 687, 687, 687, 687, - /* 9960 */ 687, 687, 687, 687, 687, 215, 687, 687, 687, 212, - /* 9970 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 9980 */ 165, 687, 687, 147, 145, 159, 149, 153, 155, 157, - /* 9990 */ 101, 107, 113, 116, 119, 122, 110, 104, 133, 135, - /* 10000 */ 143, 137, 139, 141, 687, 687, 687, 161, 163, 687, - /* 10010 */ 208, 687, 687, 687, 151, 687, 130, 125, 111, 207, - /* 10020 */ 209, 210, 211, 213, 214, 362, 55, 34, 687, 687, - /* 10030 */ 687, 31, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10040 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10050 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 10060 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 10070 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 10080 */ 236, 687, 687, 687, 117, 687, 687, 128, 131, 517, - /* 10090 */ 747, 748, 749, 751, 750, 752, 687, 687, 189, 457, - /* 10100 */ 459, 461, 463, 687, 687, 108, 687, 687, 687, 687, - /* 10110 */ 114, 200, 123, 687, 687, 205, 120, 222, 102, 105, - /* 10120 */ 99, 687, 216, 687, 687, 193, 687, 687, 687, 247, - /* 10130 */ 169, 229, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10140 */ 687, 687, 215, 687, 687, 1004, 212, 687, 687, 687, - /* 10150 */ 755, 756, 845, 687, 687, 687, 753, 754, 747, 748, - /* 10160 */ 749, 751, 750, 752, 687, 687, 687, 687, 687, 687, - /* 10170 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10180 */ 687, 687, 687, 687, 687, 687, 687, 208, 687, 687, - /* 10190 */ 687, 687, 687, 687, 687, 111, 207, 209, 210, 211, - /* 10200 */ 213, 214, 55, 34, 687, 687, 687, 65, 687, 687, - /* 10210 */ 687, 687, 687, 1002, 687, 687, 687, 687, 755, 756, - /* 10220 */ 845, 687, 687, 687, 753, 754, 687, 687, 687, 687, - /* 10230 */ 687, 687, 687, 687, 520, 35, 36, 37, 38, 39, - /* 10240 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - /* 10250 */ 50, 51, 52, 53, 54, 56, 55, 34, 687, 687, - /* 10260 */ 687, 70, 687, 687, 687, 517, 687, 687, 687, 687, - /* 10270 */ 687, 687, 687, 687, 687, 457, 459, 461, 463, 687, - /* 10280 */ 747, 748, 749, 751, 750, 752, 687, 687, 520, 35, - /* 10290 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 10300 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 10310 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 517, - /* 10320 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 457, - /* 10330 */ 459, 461, 463, 55, 34, 998, 687, 687, 82, 687, - /* 10340 */ 755, 756, 845, 687, 687, 687, 753, 754, 687, 687, - /* 10350 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10360 */ 687, 687, 687, 687, 687, 520, 35, 36, 37, 38, - /* 10370 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 10380 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 10390 */ 687, 687, 85, 687, 687, 687, 517, 687, 687, 687, - /* 10400 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 10410 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 10420 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 10430 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 10440 */ 56, 55, 34, 687, 687, 687, 90, 687, 687, 687, - /* 10450 */ 517, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10460 */ 457, 459, 461, 463, 687, 687, 687, 687, 687, 687, - /* 10470 */ 687, 687, 687, 520, 35, 36, 37, 38, 39, 40, - /* 10480 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - /* 10490 */ 51, 52, 53, 54, 56, 687, 687, 687, 687, 687, - /* 10500 */ 687, 687, 687, 687, 517, 55, 34, 687, 687, 687, - /* 10510 */ 94, 687, 687, 687, 457, 459, 461, 463, 687, 687, - /* 10520 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10530 */ 687, 687, 687, 687, 687, 687, 687, 520, 35, 36, - /* 10540 */ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - /* 10550 */ 47, 48, 49, 50, 51, 52, 53, 54, 56, 236, - /* 10560 */ 687, 687, 687, 117, 687, 687, 128, 131, 517, 687, - /* 10570 */ 687, 687, 687, 687, 687, 687, 687, 189, 457, 459, - /* 10580 */ 461, 463, 687, 687, 108, 687, 687, 687, 687, 114, - /* 10590 */ 200, 123, 687, 687, 205, 120, 222, 102, 105, 99, - /* 10600 */ 687, 216, 687, 687, 198, 687, 687, 687, 247, 169, - /* 10610 */ 229, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10620 */ 687, 215, 687, 687, 687, 212, 687, 687, 687, 687, - /* 10630 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10640 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10650 */ 687, 687, 55, 34, 687, 687, 687, 346, 687, 687, - /* 10660 */ 687, 687, 687, 687, 687, 687, 208, 687, 687, 687, - /* 10670 */ 687, 687, 687, 687, 111, 207, 209, 210, 211, 213, - /* 10680 */ 214, 687, 687, 687, 520, 35, 36, 37, 38, 39, - /* 10690 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - /* 10700 */ 50, 51, 52, 53, 54, 56, 55, 34, 687, 687, - /* 10710 */ 687, 349, 687, 687, 687, 517, 687, 687, 687, 687, - /* 10720 */ 687, 687, 687, 687, 687, 457, 459, 461, 463, 687, - /* 10730 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 10740 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 10750 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 10760 */ 687, 687, 687, 55, 34, 687, 687, 687, 356, 517, - /* 10770 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 457, - /* 10780 */ 459, 461, 463, 687, 687, 687, 687, 687, 687, 687, - /* 10790 */ 687, 687, 687, 687, 687, 520, 35, 36, 37, 38, - /* 10800 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 10810 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 10820 */ 687, 687, 363, 687, 687, 687, 517, 687, 687, 687, - /* 10830 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 10840 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 10850 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 10860 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 10870 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 10880 */ 517, 525, 687, 687, 687, 687, 687, 687, 687, 687, - /* 10890 */ 457, 459, 461, 463, 747, 748, 749, 751, 750, 752, - /* 10900 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 10910 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 10920 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 10930 */ 687, 687, 687, 55, 34, 687, 687, 687, 532, 517, - /* 10940 */ 687, 687, 687, 687, 687, 687, 732, 687, 687, 457, - /* 10950 */ 459, 461, 463, 687, 755, 756, 687, 687, 687, 687, - /* 10960 */ 753, 754, 687, 687, 687, 520, 35, 36, 37, 38, - /* 10970 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 10980 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 10990 */ 687, 687, 538, 687, 687, 687, 517, 687, 687, 687, - /* 11000 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11010 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11020 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11030 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11040 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11050 */ 517, 544, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11060 */ 457, 459, 461, 463, 747, 748, 749, 751, 750, 752, - /* 11070 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11080 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11090 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11100 */ 687, 687, 687, 55, 34, 687, 687, 687, 558, 517, - /* 11110 */ 687, 687, 687, 687, 687, 687, 759, 687, 687, 457, - /* 11120 */ 459, 461, 463, 687, 755, 756, 687, 687, 687, 687, - /* 11130 */ 753, 754, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11140 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 11150 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 11160 */ 687, 687, 653, 687, 687, 687, 517, 687, 687, 687, - /* 11170 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11180 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11190 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11200 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11210 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11220 */ 517, 660, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11230 */ 457, 459, 461, 463, 747, 748, 749, 751, 750, 752, - /* 11240 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11250 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11260 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11270 */ 687, 687, 687, 55, 34, 687, 687, 687, 665, 517, - /* 11280 */ 687, 687, 687, 687, 687, 687, 815, 687, 687, 457, - /* 11290 */ 459, 461, 463, 687, 755, 756, 687, 687, 687, 687, - /* 11300 */ 753, 754, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11310 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 11320 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 11330 */ 687, 687, 676, 687, 687, 687, 517, 687, 687, 687, - /* 11340 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11350 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11360 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11370 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11380 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11390 */ 517, 698, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11400 */ 457, 459, 461, 463, 747, 748, 749, 751, 750, 752, - /* 11410 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11420 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11430 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11440 */ 687, 687, 687, 55, 34, 687, 687, 687, 707, 517, - /* 11450 */ 687, 687, 687, 687, 687, 687, 847, 687, 687, 457, - /* 11460 */ 459, 461, 463, 687, 755, 756, 687, 687, 687, 687, - /* 11470 */ 753, 754, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11480 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 11490 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 11500 */ 687, 687, 712, 687, 687, 687, 517, 687, 687, 687, - /* 11510 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11520 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11530 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11540 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11550 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11560 */ 517, 821, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11570 */ 457, 459, 461, 463, 687, 687, 687, 687, 687, 687, - /* 11580 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11590 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11600 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11610 */ 687, 687, 687, 55, 34, 687, 687, 687, 828, 517, - /* 11620 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 457, - /* 11630 */ 459, 461, 463, 687, 687, 687, 687, 687, 687, 687, - /* 11640 */ 687, 687, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11650 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 11660 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 11670 */ 687, 687, 835, 687, 687, 687, 517, 687, 687, 687, - /* 11680 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11690 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11700 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11710 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11720 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11730 */ 517, 842, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11740 */ 457, 459, 461, 463, 687, 687, 687, 687, 687, 687, - /* 11750 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11760 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11770 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11780 */ 687, 687, 687, 55, 34, 687, 687, 687, 853, 517, - /* 11790 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 457, - /* 11800 */ 459, 461, 463, 687, 687, 687, 687, 687, 687, 687, - /* 11810 */ 687, 687, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11820 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 11830 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 11840 */ 687, 687, 860, 687, 687, 687, 517, 687, 687, 687, - /* 11850 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 11860 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 520, - /* 11870 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 11880 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 11890 */ 56, 687, 687, 687, 687, 687, 55, 34, 687, 687, - /* 11900 */ 517, 867, 687, 687, 687, 687, 687, 687, 687, 687, - /* 11910 */ 457, 459, 461, 463, 687, 687, 687, 687, 687, 687, - /* 11920 */ 687, 687, 687, 687, 687, 687, 687, 687, 520, 35, - /* 11930 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - /* 11940 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, - /* 11950 */ 687, 687, 687, 55, 34, 687, 687, 687, 874, 517, - /* 11960 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 457, - /* 11970 */ 459, 461, 463, 687, 687, 687, 687, 687, 687, 687, - /* 11980 */ 687, 687, 687, 687, 687, 520, 35, 36, 37, 38, - /* 11990 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 12000 */ 49, 50, 51, 52, 53, 54, 56, 55, 34, 687, - /* 12010 */ 687, 687, 687, 687, 687, 687, 517, 687, 687, 687, - /* 12020 */ 687, 687, 687, 687, 687, 687, 457, 459, 461, 463, - /* 12030 */ 687, 687, 687, 687, 687, 687, 687, 687, 687, 33, - /* 12040 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 12050 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 12060 */ 56, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 12070 */ 517, 687, 687, 687, 687, 687, 687, 687, 687, 687, - /* 12080 */ 457, 459, 461, 463, 687, 687, 687, 687, 687, 687, - /* 12090 */ 687, 165, 687, 687, 147, 145, 159, 149, 153, 155, - /* 12100 */ 157, 101, 107, 113, 116, 119, 122, 110, 104, 133, - /* 12110 */ 135, 143, 137, 139, 141, 687, 687, 687, 161, 163, - /* 12120 */ 687, 687, 687, 687, 687, 151, 687, 130, 125, 165, - /* 12130 */ 687, 687, 147, 145, 159, 149, 153, 155, 157, 101, - /* 12140 */ 107, 113, 116, 119, 122, 110, 104, 133, 135, 143, - /* 12150 */ 137, 139, 141, 687, 687, 687, 161, 163, 687, 687, - /* 12160 */ 687, 687, 687, 151, 687, 130, 125, 687, 687, 687, - /* 12170 */ 687, 687, 687, 687, 165, 167, 687, 147, 145, 159, - /* 12180 */ 149, 153, 155, 157, 101, 107, 113, 116, 119, 122, - /* 12190 */ 110, 104, 133, 135, 143, 137, 139, 141, 687, 687, - /* 12200 */ 687, 161, 163, 687, 687, 687, 687, 687, 151, 687, - /* 12210 */ 130, 125, 165, 1382, 467, 147, 145, 159, 149, 153, - /* 12220 */ 155, 157, 101, 107, 113, 116, 119, 122, 110, 104, - /* 12230 */ 133, 135, 143, 137, 139, 141, 687, 687, 687, 161, - /* 12240 */ 163, 687, 687, 687, 687, 687, 151, 687, 130, 125, - /* 12250 */ 165, 687, 471, 147, 145, 159, 149, 153, 155, 157, - /* 12260 */ 101, 107, 113, 116, 119, 122, 110, 104, 133, 135, - /* 12270 */ 143, 137, 139, 141, 687, 687, 687, 161, 163, 687, - /* 12280 */ 687, 687, 687, 687, 151, 687, 130, 125, 165, 687, - /* 12290 */ 474, 147, 145, 159, 149, 153, 155, 157, 101, 107, - /* 12300 */ 113, 116, 119, 122, 110, 104, 133, 135, 143, 137, - /* 12310 */ 139, 141, 687, 687, 687, 161, 163, 687, 687, 687, - /* 12320 */ 687, 687, 151, 687, 130, 125, 165, 687, 477, 147, - /* 12330 */ 145, 159, 149, 153, 155, 157, 101, 107, 113, 116, - /* 12340 */ 119, 122, 110, 104, 133, 135, 143, 137, 139, 141, - /* 12350 */ 687, 687, 687, 161, 163, 687, 687, 687, 687, 687, - /* 12360 */ 151, 687, 130, 125, 687, 687, 687, 687, 687, 687, - /* 12370 */ 687, 524, 687, 165, 687, 687, 147, 145, 159, 149, - /* 12380 */ 153, 155, 157, 101, 107, 113, 116, 119, 122, 110, - /* 12390 */ 104, 133, 135, 143, 137, 139, 141, 687, 687, 687, - /* 12400 */ 161, 163, 687, 687, 687, 687, 687, 151, 687, 130, - /* 12410 */ 125, 687, 687, 687, 687, 687, 687, 687, 531, 687, - /* 12420 */ 165, 687, 687, 147, 145, 159, 149, 153, 155, 157, - /* 12430 */ 101, 107, 113, 116, 119, 122, 110, 104, 133, 135, - /* 12440 */ 143, 137, 139, 141, 687, 687, 687, 161, 163, 687, - /* 12450 */ 687, 687, 687, 687, 151, 687, 130, 125, 687, 687, - /* 12460 */ 687, 687, 687, 687, 687, 537, -}; -static YYCODETYPE yy_lookahead[] = { - /* 0 */ 4, 0, 9, 44, 8, 46, 47, 11, 12, 154, - /* 10 */ 28, 29, 30, 31, 32, 33, 161, 162, 22, 37, - /* 20 */ 38, 164, 165, 166, 167, 29, 44, 133, 46, 47, - /* 30 */ 34, 35, 36, 139, 7, 39, 40, 41, 42, 43, - /* 40 */ 44, 9, 46, 16, 200, 49, 50, 54, 49, 53, - /* 50 */ 54, 55, 56, 50, 210, 211, 212, 213, 55, 63, - /* 60 */ 216, 49, 66, 219, 220, 221, 70, 64, 7, 73, - /* 70 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 80 */ 37, 38, 55, 87, 88, 89, 54, 44, 92, 46, - /* 90 */ 47, 200, 96, 97, 98, 99, 203, 101, 205, 206, - /* 100 */ 104, 210, 211, 212, 213, 112, 45, 111, 217, 218, - /* 110 */ 111, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 120 */ 124, 125, 126, 4, 90, 91, 94, 8, 7, 146, - /* 130 */ 11, 12, 149, 150, 151, 55, 153, 154, 58, 200, - /* 140 */ 60, 22, 159, 160, 112, 162, 192, 193, 29, 210, - /* 150 */ 211, 212, 213, 34, 35, 36, 217, 218, 39, 40, - /* 160 */ 41, 42, 43, 44, 49, 46, 94, 200, 49, 50, - /* 170 */ 55, 50, 53, 54, 55, 56, 49, 210, 211, 212, - /* 180 */ 213, 66, 63, 56, 112, 66, 219, 220, 221, 70, - /* 190 */ 63, 50, 73, 74, 75, 76, 77, 78, 79, 80, - /* 200 */ 81, 82, 83, 90, 91, 155, 87, 88, 89, 54, - /* 210 */ 56, 92, 194, 195, 200, 96, 97, 98, 99, 203, - /* 220 */ 101, 205, 206, 104, 210, 211, 212, 213, 49, 56, - /* 230 */ 111, 217, 218, 155, 115, 116, 117, 118, 119, 120, - /* 240 */ 121, 122, 123, 124, 125, 126, 4, 93, 49, 95, - /* 250 */ 8, 46, 47, 11, 12, 131, 132, 133, 134, 135, - /* 260 */ 136, 137, 138, 42, 22, 44, 93, 112, 95, 133, - /* 270 */ 49, 29, 222, 223, 224, 225, 34, 35, 36, 7, - /* 280 */ 7, 39, 40, 41, 42, 43, 44, 49, 46, 200, - /* 290 */ 111, 49, 50, 55, 7, 53, 54, 55, 56, 210, - /* 300 */ 211, 212, 213, 225, 50, 63, 217, 218, 66, 55, - /* 310 */ 165, 166, 70, 168, 155, 73, 74, 75, 76, 77, - /* 320 */ 78, 79, 80, 81, 82, 83, 152, 52, 154, 87, - /* 330 */ 88, 89, 45, 159, 92, 161, 162, 200, 96, 97, - /* 340 */ 98, 99, 54, 101, 72, 72, 104, 210, 211, 212, - /* 350 */ 213, 165, 166, 111, 217, 218, 49, 115, 116, 117, - /* 360 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 370 */ 7, 47, 47, 8, 50, 50, 11, 12, 200, 55, - /* 380 */ 55, 64, 223, 224, 225, 196, 197, 22, 210, 211, - /* 390 */ 212, 213, 44, 49, 29, 217, 218, 49, 7, 34, - /* 400 */ 35, 36, 198, 199, 39, 40, 41, 42, 43, 44, - /* 410 */ 42, 46, 44, 7, 49, 50, 7, 49, 53, 54, - /* 420 */ 55, 56, 105, 106, 107, 108, 109, 110, 63, 44, - /* 430 */ 203, 66, 205, 206, 49, 70, 45, 50, 73, 74, - /* 440 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 49, - /* 450 */ 154, 45, 87, 88, 89, 55, 160, 92, 162, 50, - /* 460 */ 200, 96, 97, 98, 99, 102, 101, 201, 202, 104, - /* 470 */ 210, 211, 212, 213, 44, 50, 111, 217, 218, 49, - /* 480 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 490 */ 125, 126, 4, 200, 55, 203, 8, 7, 206, 11, - /* 500 */ 12, 208, 209, 210, 211, 212, 213, 7, 200, 55, - /* 510 */ 22, 7, 58, 203, 60, 193, 206, 29, 210, 211, - /* 520 */ 212, 213, 34, 35, 36, 217, 218, 39, 40, 41, - /* 530 */ 42, 43, 44, 49, 46, 200, 7, 49, 50, 55, - /* 540 */ 50, 53, 54, 55, 56, 210, 211, 212, 213, 45, - /* 550 */ 50, 63, 217, 218, 66, 44, 203, 55, 70, 206, - /* 560 */ 49, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 570 */ 82, 83, 49, 141, 45, 87, 88, 89, 55, 151, - /* 580 */ 92, 153, 154, 55, 96, 97, 98, 99, 160, 101, - /* 590 */ 162, 195, 104, 47, 214, 215, 50, 165, 166, 111, - /* 600 */ 168, 55, 94, 115, 116, 117, 118, 119, 120, 121, - /* 610 */ 122, 123, 124, 125, 126, 4, 7, 150, 151, 8, - /* 620 */ 153, 154, 11, 12, 200, 55, 159, 160, 58, 162, - /* 630 */ 60, 214, 215, 22, 210, 211, 212, 213, 55, 7, - /* 640 */ 29, 217, 218, 214, 215, 34, 35, 36, 214, 215, - /* 650 */ 39, 40, 41, 42, 43, 44, 7, 46, 200, 50, - /* 660 */ 49, 50, 7, 7, 53, 54, 55, 56, 210, 211, - /* 670 */ 212, 213, 90, 91, 63, 217, 218, 66, 214, 215, - /* 680 */ 55, 70, 50, 7, 73, 74, 75, 76, 77, 78, - /* 690 */ 79, 80, 81, 82, 83, 214, 215, 50, 87, 88, - /* 700 */ 89, 45, 55, 92, 55, 50, 200, 96, 97, 98, - /* 710 */ 99, 64, 101, 214, 215, 104, 210, 211, 212, 213, - /* 720 */ 55, 45, 111, 217, 218, 23, 115, 116, 117, 118, - /* 730 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 149, - /* 740 */ 97, 151, 8, 153, 154, 11, 12, 200, 46, 159, - /* 750 */ 160, 50, 162, 7, 214, 215, 22, 210, 211, 212, - /* 760 */ 213, 54, 7, 29, 217, 218, 214, 215, 34, 35, - /* 770 */ 36, 214, 215, 39, 40, 41, 42, 43, 44, 49, - /* 780 */ 46, 200, 7, 49, 50, 7, 7, 53, 54, 55, - /* 790 */ 56, 210, 211, 212, 213, 45, 50, 63, 217, 218, - /* 800 */ 66, 214, 215, 55, 70, 50, 58, 73, 74, 75, - /* 810 */ 76, 77, 78, 79, 80, 81, 82, 83, 7, 141, - /* 820 */ 7, 87, 88, 89, 54, 50, 92, 7, 50, 50, - /* 830 */ 96, 97, 98, 99, 144, 101, 7, 147, 104, 47, - /* 840 */ 154, 111, 50, 165, 166, 111, 168, 55, 162, 115, - /* 850 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 860 */ 126, 4, 23, 50, 47, 8, 55, 50, 11, 12, - /* 870 */ 50, 148, 55, 150, 45, 152, 50, 154, 7, 22, - /* 880 */ 47, 55, 159, 50, 161, 162, 29, 7, 55, 49, - /* 890 */ 7, 34, 35, 36, 141, 191, 39, 40, 41, 42, - /* 900 */ 43, 44, 49, 46, 200, 7, 49, 50, 165, 7, - /* 910 */ 53, 54, 55, 56, 210, 211, 212, 213, 165, 166, - /* 920 */ 63, 168, 7, 66, 49, 45, 7, 70, 45, 56, - /* 930 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 940 */ 83, 66, 141, 45, 87, 88, 89, 45, 7, 92, - /* 950 */ 192, 193, 55, 96, 97, 98, 99, 60, 101, 49, - /* 960 */ 45, 104, 90, 91, 45, 165, 165, 166, 111, 168, - /* 970 */ 7, 140, 115, 116, 117, 118, 119, 120, 121, 122, - /* 980 */ 123, 124, 125, 126, 4, 54, 45, 47, 8, 112, - /* 990 */ 50, 11, 12, 200, 163, 164, 165, 166, 167, 154, - /* 1000 */ 200, 49, 22, 210, 211, 212, 213, 162, 45, 29, - /* 1010 */ 210, 211, 212, 213, 34, 35, 36, 141, 191, 39, - /* 1020 */ 40, 41, 42, 43, 44, 47, 46, 200, 50, 49, - /* 1030 */ 50, 49, 7, 53, 54, 55, 56, 210, 211, 212, - /* 1040 */ 213, 165, 166, 63, 168, 63, 66, 54, 47, 144, - /* 1050 */ 70, 50, 147, 73, 74, 75, 76, 77, 78, 79, - /* 1060 */ 80, 81, 82, 83, 54, 141, 49, 87, 88, 89, - /* 1070 */ 45, 47, 92, 64, 50, 155, 96, 97, 98, 99, - /* 1080 */ 50, 101, 7, 66, 104, 55, 7, 112, 50, 165, - /* 1090 */ 166, 111, 168, 55, 66, 115, 116, 117, 118, 119, - /* 1100 */ 120, 121, 122, 123, 124, 125, 126, 4, 191, 94, - /* 1110 */ 151, 8, 94, 154, 11, 12, 94, 200, 159, 160, - /* 1120 */ 45, 162, 157, 158, 45, 22, 154, 210, 211, 212, - /* 1130 */ 213, 50, 29, 49, 162, 50, 55, 34, 35, 36, - /* 1140 */ 55, 191, 39, 40, 41, 42, 43, 44, 7, 46, - /* 1150 */ 200, 144, 49, 50, 147, 64, 53, 54, 55, 56, - /* 1160 */ 210, 211, 212, 213, 64, 50, 63, 55, 155, 66, - /* 1170 */ 55, 144, 60, 70, 147, 155, 73, 74, 75, 76, - /* 1180 */ 77, 78, 79, 80, 81, 82, 83, 64, 50, 191, - /* 1190 */ 87, 88, 89, 55, 49, 92, 155, 56, 200, 96, - /* 1200 */ 97, 98, 99, 144, 101, 155, 147, 104, 210, 211, - /* 1210 */ 212, 213, 144, 64, 111, 147, 49, 64, 115, 116, - /* 1220 */ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - /* 1230 */ 4, 200, 155, 64, 8, 155, 49, 11, 12, 64, - /* 1240 */ 200, 210, 211, 212, 213, 155, 64, 207, 22, 218, - /* 1250 */ 210, 211, 212, 213, 155, 29, 49, 64, 49, 155, - /* 1260 */ 34, 35, 36, 23, 64, 39, 40, 41, 42, 43, - /* 1270 */ 44, 155, 46, 200, 49, 49, 50, 204, 64, 53, - /* 1280 */ 54, 55, 56, 210, 211, 212, 213, 155, 64, 63, - /* 1290 */ 155, 49, 66, 64, 155, 64, 70, 155, 49, 73, - /* 1300 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 1310 */ 64, 155, 55, 87, 88, 89, 55, 100, 92, 197, - /* 1320 */ 49, 49, 96, 97, 98, 99, 202, 101, 203, 203, - /* 1330 */ 104, 72, 56, 203, 56, 49, 203, 111, 56, 203, - /* 1340 */ 203, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 1350 */ 124, 125, 126, 4, 200, 203, 56, 8, 204, 50, - /* 1360 */ 11, 12, 203, 200, 210, 211, 212, 213, 203, 203, - /* 1370 */ 50, 22, 209, 210, 211, 212, 213, 50, 29, 50, - /* 1380 */ 49, 64, 49, 34, 35, 36, 215, 49, 39, 40, - /* 1390 */ 41, 42, 43, 44, 102, 46, 200, 55, 49, 50, - /* 1400 */ 204, 199, 53, 54, 55, 56, 210, 211, 212, 213, - /* 1410 */ 55, 54, 63, 49, 56, 66, 54, 54, 49, 70, - /* 1420 */ 54, 56, 73, 74, 75, 76, 77, 78, 79, 80, - /* 1430 */ 81, 82, 83, 54, 94, 191, 87, 88, 89, 49, - /* 1440 */ 56, 92, 54, 56, 200, 96, 97, 98, 99, 54, - /* 1450 */ 101, 54, 56, 104, 210, 211, 212, 213, 97, 50, - /* 1460 */ 111, 55, 94, 56, 115, 116, 117, 118, 119, 120, - /* 1470 */ 121, 122, 123, 124, 125, 126, 4, 200, 55, 55, - /* 1480 */ 8, 204, 55, 11, 12, 200, 16, 210, 211, 212, - /* 1490 */ 213, 42, 49, 72, 22, 210, 211, 212, 213, 23, - /* 1500 */ 49, 29, 143, 49, 56, 162, 34, 35, 36, 49, - /* 1510 */ 54, 39, 40, 41, 42, 43, 44, 143, 46, 200, - /* 1520 */ 147, 49, 50, 204, 50, 53, 54, 55, 56, 210, - /* 1530 */ 211, 212, 213, 50, 49, 63, 54, 50, 66, 50, - /* 1540 */ 155, 64, 70, 50, 64, 73, 74, 75, 76, 77, - /* 1550 */ 78, 79, 80, 81, 82, 83, 155, 50, 191, 87, - /* 1560 */ 88, 89, 64, 50, 92, 155, 64, 200, 96, 97, - /* 1570 */ 98, 99, 155, 101, 50, 49, 104, 210, 211, 212, - /* 1580 */ 213, 145, 49, 111, 145, 145, 56, 115, 116, 117, - /* 1590 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 1600 */ 200, 49, 54, 8, 204, 49, 11, 12, 200, 54, - /* 1610 */ 210, 211, 212, 213, 156, 156, 155, 22, 210, 211, - /* 1620 */ 212, 213, 50, 50, 29, 50, 158, 49, 155, 34, - /* 1630 */ 35, 36, 50, 50, 39, 40, 41, 42, 43, 44, - /* 1640 */ 156, 46, 200, 50, 49, 50, 204, 156, 53, 54, - /* 1650 */ 55, 56, 210, 211, 212, 213, 145, 59, 63, 49, - /* 1660 */ 145, 66, 145, 49, 145, 70, 145, 59, 73, 74, - /* 1670 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 49, - /* 1680 */ 145, 49, 87, 88, 89, 145, 55, 92, 145, 226, - /* 1690 */ 200, 96, 97, 98, 99, 226, 101, 226, 226, 104, - /* 1700 */ 210, 211, 212, 213, 226, 226, 111, 226, 226, 226, - /* 1710 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 1720 */ 125, 126, 4, 200, 226, 226, 8, 204, 226, 11, - /* 1730 */ 12, 200, 226, 210, 211, 212, 213, 226, 226, 226, - /* 1740 */ 22, 210, 211, 212, 213, 226, 226, 29, 226, 226, - /* 1750 */ 226, 226, 34, 35, 36, 226, 226, 39, 40, 41, - /* 1760 */ 42, 43, 44, 226, 46, 200, 226, 49, 50, 204, - /* 1770 */ 226, 53, 54, 55, 56, 210, 211, 212, 213, 226, - /* 1780 */ 226, 63, 226, 226, 66, 226, 226, 226, 70, 226, - /* 1790 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 1800 */ 82, 83, 226, 226, 226, 87, 88, 89, 226, 226, - /* 1810 */ 92, 226, 226, 200, 96, 97, 98, 99, 226, 101, - /* 1820 */ 226, 226, 104, 210, 211, 212, 213, 226, 226, 111, - /* 1830 */ 226, 226, 226, 115, 116, 117, 118, 119, 120, 121, - /* 1840 */ 122, 123, 124, 125, 126, 4, 200, 226, 226, 8, - /* 1850 */ 204, 226, 11, 12, 200, 226, 210, 211, 212, 213, - /* 1860 */ 226, 226, 226, 22, 210, 211, 212, 213, 226, 226, - /* 1870 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 1880 */ 39, 40, 41, 42, 43, 44, 226, 46, 200, 226, - /* 1890 */ 49, 50, 204, 226, 53, 54, 55, 56, 210, 211, - /* 1900 */ 212, 213, 226, 226, 63, 226, 226, 66, 226, 226, - /* 1910 */ 226, 70, 226, 226, 73, 74, 75, 76, 77, 78, - /* 1920 */ 79, 80, 81, 82, 83, 226, 226, 226, 87, 88, - /* 1930 */ 89, 226, 226, 92, 226, 226, 200, 96, 97, 98, - /* 1940 */ 99, 226, 101, 226, 226, 104, 210, 211, 212, 213, - /* 1950 */ 226, 226, 111, 226, 226, 226, 115, 116, 117, 118, - /* 1960 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 200, - /* 1970 */ 226, 226, 8, 204, 226, 11, 12, 200, 226, 210, - /* 1980 */ 211, 212, 213, 226, 226, 226, 22, 210, 211, 212, - /* 1990 */ 213, 226, 226, 29, 226, 226, 226, 226, 34, 35, - /* 2000 */ 36, 226, 226, 39, 40, 41, 42, 43, 44, 226, - /* 2010 */ 46, 200, 226, 49, 50, 204, 226, 53, 54, 55, - /* 2020 */ 56, 210, 211, 212, 213, 226, 226, 63, 226, 226, - /* 2030 */ 66, 226, 226, 226, 70, 226, 226, 73, 74, 75, - /* 2040 */ 76, 77, 78, 79, 80, 81, 82, 83, 226, 226, - /* 2050 */ 226, 87, 88, 89, 226, 226, 92, 226, 226, 200, - /* 2060 */ 96, 97, 98, 99, 226, 101, 226, 226, 104, 210, - /* 2070 */ 211, 212, 213, 226, 226, 111, 226, 226, 226, 115, - /* 2080 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 2090 */ 126, 4, 200, 226, 226, 8, 204, 226, 11, 12, - /* 2100 */ 200, 226, 210, 211, 212, 213, 226, 226, 226, 22, - /* 2110 */ 210, 211, 212, 213, 226, 226, 29, 226, 226, 226, - /* 2120 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 2130 */ 43, 44, 226, 46, 200, 226, 49, 50, 204, 226, - /* 2140 */ 53, 54, 55, 56, 210, 211, 212, 213, 226, 226, - /* 2150 */ 63, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 2160 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 2170 */ 83, 226, 226, 226, 87, 88, 89, 226, 226, 92, - /* 2180 */ 226, 226, 200, 96, 97, 98, 99, 226, 101, 226, - /* 2190 */ 226, 104, 210, 211, 212, 213, 226, 226, 111, 226, - /* 2200 */ 226, 226, 115, 116, 117, 118, 119, 120, 121, 122, - /* 2210 */ 123, 124, 125, 126, 4, 200, 226, 226, 8, 204, - /* 2220 */ 226, 11, 12, 200, 226, 210, 211, 212, 213, 226, - /* 2230 */ 226, 226, 22, 210, 211, 212, 213, 226, 226, 29, - /* 2240 */ 226, 226, 226, 226, 34, 35, 36, 226, 226, 39, - /* 2250 */ 40, 41, 42, 43, 44, 226, 46, 200, 226, 49, - /* 2260 */ 50, 226, 226, 53, 54, 55, 56, 210, 211, 212, - /* 2270 */ 213, 226, 226, 63, 226, 226, 66, 226, 221, 226, - /* 2280 */ 70, 226, 226, 73, 74, 75, 76, 77, 78, 79, - /* 2290 */ 80, 81, 82, 83, 226, 226, 226, 87, 88, 89, - /* 2300 */ 226, 226, 92, 226, 226, 200, 96, 97, 98, 99, - /* 2310 */ 226, 101, 226, 226, 104, 210, 211, 212, 213, 226, - /* 2320 */ 226, 111, 226, 226, 140, 115, 116, 117, 118, 119, - /* 2330 */ 120, 121, 122, 123, 124, 125, 126, 4, 226, 226, - /* 2340 */ 226, 8, 226, 226, 11, 12, 200, 163, 164, 165, - /* 2350 */ 166, 167, 226, 226, 226, 22, 210, 211, 212, 213, - /* 2360 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 2370 */ 226, 226, 39, 40, 41, 42, 43, 44, 226, 46, - /* 2380 */ 200, 226, 49, 50, 226, 226, 53, 54, 55, 56, - /* 2390 */ 210, 211, 212, 213, 226, 226, 63, 226, 226, 66, - /* 2400 */ 226, 226, 226, 70, 226, 226, 73, 74, 75, 76, - /* 2410 */ 77, 78, 79, 80, 81, 82, 83, 226, 226, 226, - /* 2420 */ 87, 88, 89, 226, 226, 92, 226, 226, 200, 96, - /* 2430 */ 97, 98, 99, 226, 101, 226, 226, 104, 210, 211, - /* 2440 */ 212, 213, 226, 226, 111, 226, 226, 140, 115, 116, - /* 2450 */ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - /* 2460 */ 4, 226, 226, 226, 8, 226, 226, 11, 12, 200, - /* 2470 */ 163, 164, 165, 166, 167, 226, 226, 226, 22, 210, - /* 2480 */ 211, 212, 213, 226, 226, 29, 226, 226, 226, 226, - /* 2490 */ 34, 35, 36, 226, 226, 39, 40, 41, 42, 43, - /* 2500 */ 44, 226, 46, 200, 226, 49, 50, 226, 226, 53, - /* 2510 */ 54, 55, 56, 210, 211, 212, 213, 226, 226, 63, - /* 2520 */ 226, 226, 66, 226, 226, 226, 70, 226, 226, 73, - /* 2530 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 2540 */ 226, 226, 226, 87, 88, 89, 226, 226, 92, 226, - /* 2550 */ 226, 200, 96, 97, 98, 99, 226, 101, 226, 226, - /* 2560 */ 104, 210, 211, 212, 213, 226, 226, 111, 226, 226, - /* 2570 */ 140, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 2580 */ 124, 125, 126, 4, 226, 226, 226, 8, 226, 226, - /* 2590 */ 11, 12, 200, 163, 164, 165, 166, 167, 226, 226, - /* 2600 */ 226, 22, 210, 211, 212, 213, 226, 226, 29, 226, - /* 2610 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 2620 */ 41, 42, 43, 44, 226, 46, 200, 226, 49, 50, - /* 2630 */ 226, 226, 53, 54, 55, 56, 210, 211, 212, 213, - /* 2640 */ 226, 226, 63, 226, 226, 66, 226, 226, 226, 70, - /* 2650 */ 226, 226, 73, 74, 75, 76, 77, 78, 79, 80, - /* 2660 */ 81, 82, 83, 226, 226, 226, 87, 88, 89, 226, - /* 2670 */ 226, 92, 226, 226, 200, 96, 97, 98, 99, 226, - /* 2680 */ 101, 226, 226, 104, 210, 211, 212, 213, 226, 226, - /* 2690 */ 111, 226, 226, 140, 115, 116, 117, 118, 119, 120, - /* 2700 */ 121, 122, 123, 124, 125, 126, 4, 226, 226, 226, - /* 2710 */ 8, 226, 226, 11, 12, 200, 163, 164, 165, 166, - /* 2720 */ 167, 226, 226, 226, 22, 210, 211, 212, 213, 226, - /* 2730 */ 226, 29, 226, 226, 226, 226, 34, 35, 36, 226, - /* 2740 */ 226, 39, 40, 41, 42, 43, 44, 226, 46, 200, - /* 2750 */ 226, 49, 50, 226, 226, 53, 54, 55, 56, 210, - /* 2760 */ 211, 212, 213, 226, 226, 63, 226, 226, 66, 226, - /* 2770 */ 226, 226, 70, 226, 226, 73, 74, 75, 76, 77, - /* 2780 */ 78, 79, 80, 81, 82, 83, 226, 226, 226, 87, - /* 2790 */ 88, 89, 226, 226, 92, 226, 226, 200, 96, 97, - /* 2800 */ 98, 99, 226, 101, 226, 226, 104, 210, 211, 212, - /* 2810 */ 213, 226, 226, 111, 226, 226, 140, 115, 116, 117, - /* 2820 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 2830 */ 226, 226, 226, 8, 226, 226, 11, 12, 200, 163, - /* 2840 */ 164, 165, 166, 167, 226, 226, 226, 22, 210, 211, - /* 2850 */ 212, 213, 226, 226, 29, 226, 226, 226, 226, 34, - /* 2860 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 2870 */ 226, 46, 200, 226, 49, 50, 226, 226, 53, 54, - /* 2880 */ 55, 56, 210, 211, 212, 213, 226, 226, 63, 226, - /* 2890 */ 226, 66, 226, 226, 226, 70, 226, 226, 73, 74, - /* 2900 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 226, - /* 2910 */ 226, 226, 87, 88, 89, 226, 226, 92, 226, 226, - /* 2920 */ 200, 96, 97, 98, 99, 226, 101, 226, 226, 104, - /* 2930 */ 210, 211, 212, 213, 226, 226, 111, 226, 226, 140, - /* 2940 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 2950 */ 125, 126, 4, 226, 226, 226, 8, 226, 226, 11, - /* 2960 */ 12, 200, 163, 164, 165, 166, 167, 226, 226, 226, - /* 2970 */ 22, 210, 211, 212, 213, 226, 226, 29, 226, 226, - /* 2980 */ 226, 226, 34, 35, 36, 226, 226, 39, 40, 41, - /* 2990 */ 42, 43, 44, 226, 46, 200, 226, 49, 50, 226, - /* 3000 */ 226, 53, 54, 55, 56, 210, 211, 212, 213, 226, - /* 3010 */ 226, 63, 226, 226, 66, 226, 226, 226, 70, 226, - /* 3020 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 3030 */ 82, 83, 226, 226, 226, 87, 88, 89, 226, 226, - /* 3040 */ 92, 226, 226, 200, 96, 97, 98, 99, 226, 101, - /* 3050 */ 226, 226, 104, 210, 211, 212, 213, 226, 226, 111, - /* 3060 */ 226, 226, 140, 115, 116, 117, 118, 119, 120, 121, - /* 3070 */ 122, 123, 124, 125, 126, 4, 226, 226, 226, 8, - /* 3080 */ 226, 226, 11, 12, 200, 163, 164, 165, 166, 167, - /* 3090 */ 226, 226, 226, 22, 210, 211, 212, 213, 226, 226, - /* 3100 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 3110 */ 39, 40, 41, 42, 43, 44, 226, 46, 200, 226, - /* 3120 */ 49, 50, 226, 226, 53, 54, 55, 56, 210, 211, - /* 3130 */ 212, 213, 226, 226, 63, 226, 226, 66, 226, 226, - /* 3140 */ 226, 70, 226, 226, 73, 74, 75, 76, 77, 78, - /* 3150 */ 79, 80, 81, 82, 83, 226, 226, 226, 87, 88, - /* 3160 */ 89, 226, 226, 92, 226, 226, 200, 96, 97, 98, - /* 3170 */ 99, 226, 101, 226, 226, 104, 210, 211, 212, 213, - /* 3180 */ 226, 226, 111, 226, 226, 140, 115, 116, 117, 118, - /* 3190 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 226, - /* 3200 */ 226, 226, 8, 226, 226, 11, 12, 200, 163, 164, - /* 3210 */ 165, 166, 167, 226, 226, 226, 22, 210, 211, 212, - /* 3220 */ 213, 226, 226, 29, 226, 226, 226, 226, 34, 35, - /* 3230 */ 36, 226, 226, 39, 40, 41, 42, 43, 44, 226, - /* 3240 */ 46, 200, 226, 49, 50, 226, 226, 53, 54, 55, - /* 3250 */ 56, 210, 211, 212, 213, 226, 226, 63, 226, 226, - /* 3260 */ 66, 226, 226, 226, 70, 226, 226, 73, 74, 75, - /* 3270 */ 76, 77, 78, 79, 80, 81, 82, 83, 226, 226, - /* 3280 */ 226, 87, 88, 89, 226, 226, 92, 226, 226, 200, - /* 3290 */ 96, 97, 98, 99, 226, 101, 226, 226, 104, 210, - /* 3300 */ 211, 212, 213, 226, 226, 111, 226, 226, 140, 115, - /* 3310 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 3320 */ 126, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 3330 */ 200, 163, 164, 165, 166, 167, 226, 226, 226, 22, - /* 3340 */ 210, 211, 212, 213, 226, 226, 29, 226, 226, 226, - /* 3350 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 3360 */ 43, 44, 226, 46, 200, 226, 49, 50, 226, 226, - /* 3370 */ 53, 54, 55, 56, 210, 211, 212, 213, 226, 226, - /* 3380 */ 63, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 3390 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 3400 */ 83, 226, 226, 226, 87, 88, 89, 226, 226, 92, - /* 3410 */ 226, 226, 200, 96, 97, 98, 99, 226, 101, 226, - /* 3420 */ 226, 104, 210, 211, 212, 213, 226, 226, 111, 226, - /* 3430 */ 226, 226, 115, 116, 117, 118, 119, 120, 121, 122, - /* 3440 */ 123, 124, 125, 126, 4, 200, 226, 226, 8, 226, - /* 3450 */ 226, 11, 12, 200, 226, 210, 211, 212, 213, 226, - /* 3460 */ 226, 226, 22, 210, 211, 212, 213, 226, 226, 29, - /* 3470 */ 226, 226, 226, 226, 34, 35, 36, 226, 226, 39, - /* 3480 */ 40, 41, 42, 43, 44, 226, 46, 200, 226, 49, - /* 3490 */ 50, 226, 226, 53, 54, 55, 56, 210, 211, 212, - /* 3500 */ 213, 226, 226, 63, 226, 226, 66, 226, 226, 226, - /* 3510 */ 70, 226, 226, 73, 74, 75, 76, 77, 78, 79, - /* 3520 */ 80, 81, 82, 83, 226, 226, 226, 87, 88, 89, - /* 3530 */ 226, 226, 92, 226, 226, 200, 96, 97, 98, 99, - /* 3540 */ 226, 101, 226, 226, 104, 210, 211, 212, 213, 226, - /* 3550 */ 226, 111, 226, 226, 226, 115, 116, 117, 118, 119, - /* 3560 */ 120, 121, 122, 123, 124, 125, 126, 4, 200, 226, - /* 3570 */ 226, 8, 226, 226, 11, 12, 200, 226, 210, 211, - /* 3580 */ 212, 213, 226, 226, 226, 22, 210, 211, 212, 213, - /* 3590 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 3600 */ 226, 226, 39, 40, 41, 42, 43, 44, 226, 46, - /* 3610 */ 200, 226, 49, 50, 226, 226, 53, 54, 55, 56, - /* 3620 */ 210, 211, 212, 213, 226, 226, 63, 226, 226, 66, - /* 3630 */ 226, 226, 226, 70, 226, 226, 73, 74, 75, 76, - /* 3640 */ 77, 78, 79, 80, 81, 82, 83, 226, 226, 226, - /* 3650 */ 87, 88, 89, 226, 226, 92, 226, 226, 200, 96, - /* 3660 */ 97, 98, 99, 226, 101, 226, 226, 104, 210, 211, - /* 3670 */ 212, 213, 226, 226, 111, 226, 226, 226, 115, 116, - /* 3680 */ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - /* 3690 */ 4, 200, 226, 226, 8, 226, 226, 11, 12, 200, - /* 3700 */ 226, 210, 211, 212, 213, 226, 226, 226, 22, 210, - /* 3710 */ 211, 212, 213, 226, 226, 29, 226, 226, 226, 226, - /* 3720 */ 34, 35, 36, 226, 226, 39, 40, 41, 42, 43, - /* 3730 */ 44, 226, 46, 200, 226, 49, 50, 226, 226, 53, - /* 3740 */ 54, 55, 56, 210, 211, 212, 213, 226, 226, 63, - /* 3750 */ 226, 226, 66, 226, 226, 226, 70, 226, 226, 73, - /* 3760 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 3770 */ 226, 226, 226, 87, 88, 89, 226, 226, 92, 226, - /* 3780 */ 226, 200, 96, 97, 98, 99, 226, 101, 226, 226, - /* 3790 */ 104, 210, 211, 212, 213, 226, 226, 111, 226, 226, - /* 3800 */ 226, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 3810 */ 124, 125, 126, 4, 200, 226, 226, 8, 226, 226, - /* 3820 */ 11, 12, 226, 226, 210, 211, 212, 213, 226, 226, - /* 3830 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 3840 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 3850 */ 41, 42, 43, 44, 226, 46, 226, 226, 49, 50, - /* 3860 */ 226, 226, 53, 54, 55, 56, 226, 226, 226, 226, - /* 3870 */ 226, 226, 63, 226, 226, 66, 226, 226, 226, 70, - /* 3880 */ 226, 226, 73, 74, 75, 76, 77, 78, 79, 80, - /* 3890 */ 81, 82, 83, 226, 226, 226, 87, 88, 89, 226, - /* 3900 */ 226, 92, 226, 226, 226, 96, 97, 98, 99, 226, - /* 3910 */ 101, 226, 226, 104, 226, 226, 226, 226, 226, 226, - /* 3920 */ 111, 226, 226, 226, 115, 116, 117, 118, 119, 120, - /* 3930 */ 121, 122, 123, 124, 125, 126, 4, 226, 226, 226, - /* 3940 */ 8, 226, 226, 11, 12, 226, 226, 226, 226, 226, - /* 3950 */ 226, 226, 226, 226, 22, 226, 226, 226, 226, 226, - /* 3960 */ 226, 29, 226, 226, 226, 226, 34, 35, 36, 226, - /* 3970 */ 226, 39, 40, 41, 42, 43, 44, 226, 46, 226, - /* 3980 */ 226, 49, 50, 226, 226, 53, 54, 55, 56, 226, - /* 3990 */ 226, 226, 226, 226, 226, 63, 226, 226, 66, 226, - /* 4000 */ 226, 226, 70, 226, 226, 73, 74, 75, 76, 77, - /* 4010 */ 78, 79, 80, 81, 82, 83, 226, 226, 226, 87, - /* 4020 */ 88, 89, 226, 226, 92, 226, 226, 226, 96, 97, - /* 4030 */ 98, 99, 226, 101, 226, 226, 104, 226, 226, 226, - /* 4040 */ 226, 226, 226, 111, 226, 226, 226, 115, 116, 117, - /* 4050 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 4060 */ 226, 226, 226, 8, 226, 226, 11, 12, 226, 226, - /* 4070 */ 226, 226, 226, 226, 226, 226, 226, 22, 226, 226, - /* 4080 */ 226, 226, 226, 226, 29, 226, 226, 226, 226, 34, - /* 4090 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 4100 */ 226, 46, 226, 226, 49, 50, 226, 226, 53, 54, - /* 4110 */ 55, 56, 226, 226, 226, 226, 226, 226, 63, 226, - /* 4120 */ 226, 66, 226, 226, 226, 70, 226, 226, 73, 74, - /* 4130 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 226, - /* 4140 */ 226, 226, 87, 88, 89, 226, 226, 92, 226, 226, - /* 4150 */ 226, 96, 97, 98, 99, 226, 101, 226, 226, 104, - /* 4160 */ 226, 226, 226, 226, 226, 226, 111, 226, 226, 226, - /* 4170 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 4180 */ 125, 126, 4, 226, 226, 226, 8, 226, 226, 11, - /* 4190 */ 12, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 4200 */ 22, 226, 226, 226, 226, 226, 226, 29, 226, 226, - /* 4210 */ 226, 226, 34, 35, 36, 226, 226, 39, 40, 41, - /* 4220 */ 42, 43, 44, 226, 46, 226, 226, 49, 50, 226, - /* 4230 */ 226, 53, 54, 55, 56, 226, 226, 226, 226, 226, - /* 4240 */ 226, 63, 226, 226, 66, 226, 226, 226, 70, 226, - /* 4250 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 4260 */ 82, 83, 226, 226, 226, 87, 88, 89, 226, 226, - /* 4270 */ 92, 226, 226, 226, 96, 97, 98, 99, 226, 101, - /* 4280 */ 226, 226, 104, 226, 226, 226, 226, 226, 226, 111, - /* 4290 */ 226, 226, 226, 115, 116, 117, 118, 119, 120, 121, - /* 4300 */ 122, 123, 124, 125, 126, 4, 226, 226, 226, 8, - /* 4310 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 4320 */ 226, 226, 226, 22, 226, 226, 226, 226, 226, 226, - /* 4330 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 4340 */ 39, 40, 41, 42, 43, 44, 226, 46, 226, 226, - /* 4350 */ 49, 50, 226, 226, 53, 54, 55, 56, 226, 226, - /* 4360 */ 226, 226, 226, 226, 63, 226, 226, 66, 226, 226, - /* 4370 */ 226, 70, 226, 226, 73, 74, 75, 76, 77, 78, - /* 4380 */ 79, 80, 81, 82, 83, 226, 226, 226, 87, 88, - /* 4390 */ 89, 226, 226, 92, 226, 226, 226, 96, 97, 98, - /* 4400 */ 99, 226, 101, 226, 226, 104, 226, 226, 226, 226, - /* 4410 */ 226, 226, 111, 226, 226, 226, 115, 116, 117, 118, - /* 4420 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 226, - /* 4430 */ 226, 226, 8, 226, 226, 11, 12, 226, 226, 226, - /* 4440 */ 226, 226, 226, 226, 226, 226, 22, 226, 226, 226, - /* 4450 */ 226, 226, 226, 29, 226, 226, 226, 226, 34, 35, - /* 4460 */ 36, 226, 226, 39, 40, 41, 42, 43, 44, 226, - /* 4470 */ 46, 226, 226, 49, 50, 226, 226, 53, 54, 55, - /* 4480 */ 56, 226, 226, 226, 226, 226, 226, 63, 226, 226, - /* 4490 */ 66, 226, 226, 226, 70, 226, 226, 73, 74, 75, - /* 4500 */ 76, 77, 78, 79, 80, 81, 82, 83, 226, 226, - /* 4510 */ 226, 87, 88, 89, 226, 226, 92, 226, 226, 226, - /* 4520 */ 96, 97, 98, 99, 226, 101, 226, 226, 104, 226, - /* 4530 */ 226, 226, 226, 226, 226, 111, 226, 226, 226, 115, - /* 4540 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 4550 */ 126, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 4560 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 22, - /* 4570 */ 226, 226, 226, 226, 226, 226, 29, 226, 226, 226, - /* 4580 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 4590 */ 43, 44, 226, 46, 226, 226, 49, 50, 226, 226, - /* 4600 */ 53, 54, 55, 56, 226, 226, 226, 226, 226, 226, - /* 4610 */ 63, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 4620 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 4630 */ 83, 226, 226, 226, 87, 88, 89, 226, 226, 92, - /* 4640 */ 226, 226, 226, 96, 97, 98, 99, 226, 101, 226, - /* 4650 */ 226, 104, 226, 226, 226, 226, 226, 226, 111, 226, - /* 4660 */ 226, 226, 115, 116, 117, 118, 119, 120, 121, 122, - /* 4670 */ 123, 124, 125, 126, 4, 226, 226, 226, 8, 226, - /* 4680 */ 226, 11, 12, 226, 226, 226, 226, 226, 226, 226, - /* 4690 */ 226, 226, 22, 226, 226, 226, 226, 226, 226, 29, - /* 4700 */ 226, 226, 226, 226, 34, 35, 36, 226, 226, 39, - /* 4710 */ 40, 41, 42, 43, 44, 226, 46, 226, 226, 49, - /* 4720 */ 50, 226, 226, 53, 54, 55, 56, 226, 226, 226, - /* 4730 */ 226, 226, 226, 63, 226, 226, 66, 226, 226, 226, - /* 4740 */ 70, 226, 226, 73, 74, 75, 76, 77, 78, 79, - /* 4750 */ 80, 81, 82, 83, 226, 226, 226, 87, 88, 89, - /* 4760 */ 226, 226, 92, 226, 226, 226, 96, 97, 98, 99, - /* 4770 */ 226, 101, 226, 226, 104, 226, 226, 226, 226, 226, - /* 4780 */ 226, 111, 226, 226, 226, 115, 116, 117, 118, 119, - /* 4790 */ 120, 121, 122, 123, 124, 125, 126, 4, 226, 226, - /* 4800 */ 226, 8, 226, 226, 11, 12, 226, 226, 226, 226, - /* 4810 */ 226, 226, 226, 226, 226, 22, 226, 226, 226, 226, - /* 4820 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 4830 */ 226, 226, 39, 40, 41, 42, 43, 44, 226, 46, - /* 4840 */ 226, 226, 49, 50, 226, 226, 53, 54, 55, 56, - /* 4850 */ 226, 226, 226, 226, 226, 226, 63, 226, 226, 66, - /* 4860 */ 226, 226, 226, 70, 226, 226, 73, 74, 75, 76, - /* 4870 */ 77, 78, 79, 80, 81, 82, 83, 226, 226, 226, - /* 4880 */ 87, 88, 89, 226, 226, 92, 226, 226, 226, 96, - /* 4890 */ 97, 98, 99, 226, 101, 226, 226, 104, 226, 226, - /* 4900 */ 226, 226, 226, 226, 111, 226, 226, 226, 115, 116, - /* 4910 */ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - /* 4920 */ 4, 226, 226, 226, 8, 226, 226, 11, 12, 226, - /* 4930 */ 226, 226, 226, 226, 226, 226, 226, 226, 22, 226, - /* 4940 */ 226, 226, 226, 226, 226, 29, 226, 226, 226, 226, - /* 4950 */ 34, 35, 36, 226, 226, 39, 40, 41, 42, 43, - /* 4960 */ 44, 226, 46, 226, 226, 49, 50, 226, 226, 53, - /* 4970 */ 54, 55, 56, 226, 226, 226, 226, 226, 226, 63, - /* 4980 */ 226, 226, 66, 226, 226, 226, 70, 226, 226, 73, - /* 4990 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 5000 */ 226, 226, 226, 87, 88, 89, 226, 226, 92, 226, - /* 5010 */ 226, 226, 96, 97, 98, 99, 226, 101, 226, 226, - /* 5020 */ 104, 226, 226, 226, 226, 226, 226, 111, 226, 226, - /* 5030 */ 226, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 5040 */ 124, 125, 126, 4, 226, 226, 226, 8, 226, 226, - /* 5050 */ 11, 12, 226, 226, 226, 226, 226, 226, 226, 226, - /* 5060 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 5070 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 5080 */ 41, 42, 43, 44, 226, 46, 226, 226, 49, 50, - /* 5090 */ 226, 226, 53, 54, 55, 56, 226, 226, 226, 226, - /* 5100 */ 226, 226, 63, 226, 226, 66, 226, 226, 226, 70, - /* 5110 */ 226, 226, 73, 74, 75, 76, 77, 78, 79, 80, - /* 5120 */ 81, 82, 83, 226, 226, 226, 87, 88, 89, 226, - /* 5130 */ 226, 92, 226, 226, 226, 96, 97, 98, 99, 226, - /* 5140 */ 101, 226, 226, 104, 226, 226, 226, 226, 226, 226, - /* 5150 */ 111, 226, 226, 226, 115, 116, 117, 118, 119, 120, - /* 5160 */ 121, 122, 123, 124, 125, 126, 4, 226, 226, 226, - /* 5170 */ 8, 226, 226, 11, 12, 226, 226, 226, 226, 226, - /* 5180 */ 226, 226, 226, 226, 22, 226, 226, 226, 226, 226, - /* 5190 */ 226, 29, 226, 226, 226, 226, 34, 35, 36, 226, - /* 5200 */ 226, 39, 40, 41, 42, 43, 44, 226, 46, 226, - /* 5210 */ 226, 49, 50, 226, 226, 53, 54, 55, 56, 226, - /* 5220 */ 226, 226, 226, 226, 226, 63, 226, 226, 66, 226, - /* 5230 */ 226, 226, 70, 226, 226, 73, 74, 75, 76, 77, - /* 5240 */ 78, 79, 80, 81, 82, 83, 226, 226, 226, 87, - /* 5250 */ 88, 89, 226, 226, 92, 226, 226, 226, 96, 97, - /* 5260 */ 98, 99, 226, 101, 226, 226, 104, 226, 226, 226, - /* 5270 */ 226, 226, 226, 111, 226, 226, 226, 115, 116, 117, - /* 5280 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 5290 */ 226, 226, 226, 8, 226, 226, 11, 12, 226, 226, - /* 5300 */ 226, 226, 226, 226, 226, 226, 226, 22, 226, 226, - /* 5310 */ 226, 226, 226, 226, 29, 226, 226, 226, 226, 34, - /* 5320 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 5330 */ 226, 46, 226, 226, 49, 50, 226, 226, 53, 54, - /* 5340 */ 55, 56, 226, 226, 226, 226, 226, 226, 63, 226, - /* 5350 */ 226, 66, 226, 226, 226, 70, 226, 226, 73, 74, - /* 5360 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 226, - /* 5370 */ 226, 226, 87, 88, 89, 226, 226, 92, 226, 226, - /* 5380 */ 226, 96, 97, 98, 99, 226, 101, 226, 226, 104, - /* 5390 */ 226, 226, 226, 226, 226, 226, 111, 226, 226, 226, - /* 5400 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 5410 */ 125, 126, 4, 226, 226, 226, 8, 226, 226, 11, - /* 5420 */ 12, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 5430 */ 22, 226, 226, 226, 226, 226, 226, 29, 226, 226, - /* 5440 */ 226, 226, 34, 35, 36, 226, 226, 39, 40, 41, - /* 5450 */ 42, 43, 44, 226, 46, 226, 226, 49, 50, 226, - /* 5460 */ 226, 53, 54, 55, 56, 226, 226, 226, 226, 226, - /* 5470 */ 226, 63, 226, 226, 66, 226, 226, 226, 70, 226, - /* 5480 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 5490 */ 82, 83, 226, 226, 226, 87, 88, 89, 226, 226, - /* 5500 */ 92, 226, 226, 226, 96, 97, 98, 99, 226, 101, - /* 5510 */ 226, 226, 104, 226, 226, 226, 226, 226, 226, 111, - /* 5520 */ 226, 226, 226, 115, 116, 117, 118, 119, 120, 121, - /* 5530 */ 122, 123, 124, 125, 126, 4, 226, 226, 226, 8, - /* 5540 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 5550 */ 226, 226, 226, 22, 226, 226, 226, 226, 226, 226, - /* 5560 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 5570 */ 39, 40, 41, 42, 43, 44, 226, 46, 226, 226, - /* 5580 */ 49, 50, 226, 226, 53, 54, 55, 56, 226, 226, - /* 5590 */ 226, 226, 226, 226, 63, 226, 226, 66, 226, 226, - /* 5600 */ 226, 70, 226, 226, 73, 74, 75, 76, 77, 78, - /* 5610 */ 79, 80, 81, 82, 83, 226, 226, 226, 87, 88, - /* 5620 */ 89, 226, 226, 92, 226, 226, 226, 96, 97, 98, - /* 5630 */ 99, 226, 101, 226, 226, 104, 226, 226, 226, 226, - /* 5640 */ 226, 226, 111, 226, 226, 226, 115, 116, 117, 118, - /* 5650 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 226, - /* 5660 */ 226, 226, 8, 226, 226, 11, 12, 226, 226, 226, - /* 5670 */ 226, 226, 226, 226, 226, 226, 22, 226, 226, 226, - /* 5680 */ 226, 226, 226, 29, 226, 226, 226, 226, 34, 35, - /* 5690 */ 36, 226, 226, 39, 40, 41, 42, 43, 44, 226, - /* 5700 */ 46, 226, 226, 49, 50, 226, 226, 53, 54, 55, - /* 5710 */ 56, 226, 226, 226, 226, 226, 226, 63, 226, 226, - /* 5720 */ 66, 226, 226, 226, 70, 226, 226, 73, 74, 75, - /* 5730 */ 76, 77, 78, 79, 80, 81, 82, 83, 226, 226, - /* 5740 */ 226, 87, 88, 89, 226, 226, 92, 226, 226, 226, - /* 5750 */ 96, 97, 98, 99, 226, 101, 226, 226, 104, 226, - /* 5760 */ 226, 226, 226, 226, 226, 111, 226, 226, 226, 115, - /* 5770 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 5780 */ 126, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 5790 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 22, - /* 5800 */ 226, 226, 226, 226, 226, 226, 29, 226, 226, 226, - /* 5810 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 5820 */ 43, 44, 226, 46, 226, 226, 49, 50, 226, 226, - /* 5830 */ 53, 54, 55, 56, 226, 226, 226, 226, 226, 226, - /* 5840 */ 63, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 5850 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 5860 */ 83, 226, 226, 226, 87, 88, 89, 226, 226, 92, - /* 5870 */ 226, 226, 226, 96, 97, 98, 99, 226, 101, 226, - /* 5880 */ 226, 104, 226, 226, 226, 226, 226, 226, 111, 226, - /* 5890 */ 226, 226, 115, 116, 117, 118, 119, 120, 121, 122, - /* 5900 */ 123, 124, 125, 126, 4, 226, 226, 226, 8, 226, - /* 5910 */ 226, 11, 12, 226, 226, 226, 226, 226, 226, 226, - /* 5920 */ 226, 226, 22, 226, 226, 226, 226, 226, 226, 29, - /* 5930 */ 226, 226, 226, 226, 34, 35, 36, 226, 226, 39, - /* 5940 */ 40, 41, 42, 43, 44, 226, 46, 226, 226, 49, - /* 5950 */ 50, 226, 226, 53, 54, 55, 56, 226, 226, 226, - /* 5960 */ 226, 226, 226, 63, 226, 226, 66, 226, 226, 226, - /* 5970 */ 70, 226, 226, 73, 74, 75, 76, 77, 78, 79, - /* 5980 */ 80, 81, 82, 83, 226, 226, 226, 87, 88, 89, - /* 5990 */ 226, 226, 92, 226, 226, 226, 96, 97, 98, 99, - /* 6000 */ 226, 101, 226, 226, 104, 226, 226, 226, 226, 226, - /* 6010 */ 226, 111, 226, 226, 226, 115, 116, 117, 118, 119, - /* 6020 */ 120, 121, 122, 123, 124, 125, 126, 4, 226, 226, - /* 6030 */ 226, 8, 226, 226, 11, 12, 226, 226, 226, 226, - /* 6040 */ 226, 226, 226, 226, 226, 22, 226, 226, 226, 226, - /* 6050 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 6060 */ 226, 226, 39, 40, 41, 42, 43, 44, 226, 46, - /* 6070 */ 226, 226, 49, 50, 226, 226, 53, 54, 55, 56, - /* 6080 */ 226, 226, 226, 226, 226, 226, 63, 226, 226, 66, - /* 6090 */ 226, 226, 226, 70, 226, 226, 73, 74, 75, 76, - /* 6100 */ 77, 78, 79, 80, 81, 82, 83, 226, 226, 226, - /* 6110 */ 87, 88, 89, 226, 226, 92, 226, 226, 226, 96, - /* 6120 */ 97, 98, 99, 226, 101, 226, 226, 104, 226, 226, - /* 6130 */ 226, 226, 226, 226, 111, 226, 226, 226, 115, 116, - /* 6140 */ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - /* 6150 */ 4, 226, 226, 226, 8, 226, 226, 11, 12, 226, - /* 6160 */ 226, 226, 226, 226, 226, 226, 226, 226, 22, 226, - /* 6170 */ 226, 226, 226, 226, 226, 29, 226, 226, 226, 226, - /* 6180 */ 34, 35, 36, 226, 226, 39, 40, 41, 42, 43, - /* 6190 */ 44, 226, 46, 226, 226, 49, 50, 226, 226, 53, - /* 6200 */ 54, 55, 56, 226, 226, 226, 226, 226, 226, 63, - /* 6210 */ 226, 226, 66, 226, 226, 226, 70, 226, 226, 73, - /* 6220 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 6230 */ 226, 226, 226, 87, 88, 89, 226, 226, 92, 226, - /* 6240 */ 226, 226, 96, 97, 98, 99, 226, 101, 226, 226, - /* 6250 */ 104, 226, 226, 226, 226, 226, 226, 111, 226, 226, - /* 6260 */ 226, 115, 116, 117, 118, 119, 120, 121, 122, 123, - /* 6270 */ 124, 125, 126, 4, 226, 226, 226, 8, 226, 226, - /* 6280 */ 11, 12, 226, 226, 226, 226, 226, 226, 226, 226, - /* 6290 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 6300 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 6310 */ 41, 42, 43, 44, 226, 46, 226, 226, 49, 50, - /* 6320 */ 226, 226, 53, 54, 55, 56, 226, 226, 226, 226, - /* 6330 */ 226, 226, 63, 226, 226, 66, 226, 226, 226, 70, - /* 6340 */ 226, 226, 73, 74, 75, 76, 77, 78, 79, 80, - /* 6350 */ 81, 82, 83, 226, 226, 226, 87, 88, 89, 226, - /* 6360 */ 226, 92, 226, 226, 226, 96, 97, 98, 99, 226, - /* 6370 */ 101, 226, 226, 104, 226, 226, 226, 226, 226, 226, - /* 6380 */ 111, 226, 226, 226, 115, 116, 117, 118, 119, 120, - /* 6390 */ 121, 122, 123, 124, 125, 126, 4, 226, 226, 226, - /* 6400 */ 8, 226, 226, 11, 12, 226, 226, 226, 226, 226, - /* 6410 */ 226, 226, 226, 226, 22, 226, 226, 226, 226, 226, - /* 6420 */ 226, 29, 226, 226, 226, 226, 34, 35, 36, 226, - /* 6430 */ 226, 39, 40, 41, 42, 43, 44, 226, 46, 226, - /* 6440 */ 226, 49, 50, 226, 226, 53, 54, 55, 56, 226, - /* 6450 */ 226, 226, 226, 226, 226, 63, 226, 226, 66, 226, - /* 6460 */ 226, 226, 70, 226, 226, 73, 74, 75, 76, 77, - /* 6470 */ 78, 79, 80, 81, 82, 83, 226, 226, 226, 87, - /* 6480 */ 88, 89, 226, 226, 92, 226, 226, 226, 96, 97, - /* 6490 */ 98, 99, 226, 101, 226, 226, 104, 226, 226, 226, - /* 6500 */ 226, 226, 226, 111, 226, 226, 226, 115, 116, 117, - /* 6510 */ 118, 119, 120, 121, 122, 123, 124, 125, 126, 4, - /* 6520 */ 226, 226, 226, 8, 226, 226, 11, 12, 226, 226, - /* 6530 */ 226, 226, 226, 226, 226, 226, 226, 22, 226, 226, - /* 6540 */ 226, 226, 226, 226, 29, 226, 226, 226, 226, 34, - /* 6550 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 6560 */ 226, 46, 226, 226, 49, 50, 226, 226, 53, 54, - /* 6570 */ 55, 56, 226, 226, 226, 226, 226, 226, 63, 226, - /* 6580 */ 226, 66, 226, 226, 226, 70, 226, 226, 73, 74, - /* 6590 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 226, - /* 6600 */ 226, 226, 87, 88, 89, 226, 226, 92, 226, 226, - /* 6610 */ 226, 96, 97, 98, 99, 226, 101, 226, 226, 104, - /* 6620 */ 226, 226, 226, 226, 226, 226, 111, 226, 226, 226, - /* 6630 */ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - /* 6640 */ 125, 126, 4, 226, 226, 226, 8, 226, 226, 11, - /* 6650 */ 12, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 6660 */ 22, 226, 226, 226, 226, 226, 226, 29, 226, 226, - /* 6670 */ 226, 226, 34, 35, 36, 226, 226, 39, 40, 41, - /* 6680 */ 42, 43, 44, 226, 46, 226, 226, 49, 50, 226, - /* 6690 */ 226, 53, 54, 55, 56, 226, 226, 226, 226, 226, - /* 6700 */ 226, 63, 226, 226, 66, 226, 226, 226, 70, 226, - /* 6710 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 6720 */ 82, 83, 226, 226, 226, 87, 88, 89, 226, 226, - /* 6730 */ 92, 226, 226, 226, 96, 97, 98, 99, 226, 101, - /* 6740 */ 226, 226, 104, 226, 226, 226, 226, 226, 226, 111, - /* 6750 */ 226, 226, 226, 115, 116, 117, 118, 119, 120, 121, - /* 6760 */ 122, 123, 124, 125, 126, 4, 226, 226, 226, 8, - /* 6770 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 6780 */ 226, 226, 226, 22, 226, 226, 226, 226, 226, 226, - /* 6790 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 6800 */ 39, 40, 41, 42, 43, 44, 226, 46, 226, 226, - /* 6810 */ 49, 50, 226, 226, 53, 54, 55, 56, 226, 226, - /* 6820 */ 226, 226, 226, 226, 63, 226, 226, 66, 226, 226, - /* 6830 */ 226, 70, 226, 226, 73, 74, 75, 76, 77, 78, - /* 6840 */ 79, 80, 81, 82, 83, 226, 226, 226, 87, 88, - /* 6850 */ 89, 226, 226, 92, 226, 226, 226, 96, 97, 98, - /* 6860 */ 99, 226, 101, 226, 226, 104, 226, 226, 226, 226, - /* 6870 */ 226, 226, 111, 226, 226, 226, 115, 116, 117, 118, - /* 6880 */ 119, 120, 121, 122, 123, 124, 125, 126, 4, 226, - /* 6890 */ 226, 226, 8, 226, 226, 11, 12, 226, 226, 226, - /* 6900 */ 226, 226, 226, 226, 226, 226, 22, 226, 226, 226, - /* 6910 */ 226, 226, 226, 29, 226, 226, 226, 226, 34, 35, - /* 6920 */ 36, 226, 226, 39, 40, 41, 42, 43, 44, 226, - /* 6930 */ 46, 226, 226, 49, 50, 226, 226, 53, 54, 55, - /* 6940 */ 226, 226, 226, 226, 226, 226, 226, 63, 226, 226, - /* 6950 */ 66, 226, 226, 226, 70, 226, 226, 73, 74, 75, - /* 6960 */ 76, 77, 78, 79, 80, 81, 82, 83, 226, 226, - /* 6970 */ 226, 87, 88, 89, 226, 226, 92, 226, 226, 226, - /* 6980 */ 96, 97, 98, 99, 226, 101, 226, 226, 104, 226, - /* 6990 */ 226, 226, 226, 226, 226, 111, 226, 226, 226, 115, - /* 7000 */ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - /* 7010 */ 126, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 7020 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 22, - /* 7030 */ 226, 226, 226, 226, 226, 226, 29, 226, 226, 226, - /* 7040 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 7050 */ 43, 44, 226, 46, 226, 226, 49, 226, 226, 226, - /* 7060 */ 53, 54, 55, 226, 226, 226, 226, 226, 226, 226, - /* 7070 */ 226, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 7080 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 7090 */ 83, 84, 85, 86, 16, 17, 18, 19, 20, 21, - /* 7100 */ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - /* 7110 */ 32, 33, 226, 226, 226, 37, 38, 226, 111, 226, - /* 7120 */ 226, 226, 44, 226, 46, 47, 119, 120, 121, 122, - /* 7130 */ 123, 124, 125, 4, 226, 226, 226, 8, 226, 226, - /* 7140 */ 11, 12, 1, 2, 3, 4, 5, 6, 226, 226, - /* 7150 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 7160 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 7170 */ 41, 42, 43, 44, 45, 46, 226, 226, 49, 226, - /* 7180 */ 226, 226, 53, 54, 55, 226, 226, 226, 226, 226, - /* 7190 */ 226, 226, 226, 226, 226, 66, 226, 56, 226, 70, - /* 7200 */ 226, 226, 61, 62, 63, 226, 65, 226, 67, 68, - /* 7210 */ 10, 226, 226, 13, 14, 15, 16, 17, 18, 19, - /* 7220 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - /* 7230 */ 30, 31, 32, 33, 226, 226, 226, 37, 38, 226, - /* 7240 */ 111, 226, 226, 226, 44, 45, 46, 47, 119, 120, - /* 7250 */ 121, 122, 123, 124, 125, 4, 226, 226, 226, 8, - /* 7260 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 7270 */ 226, 226, 226, 22, 226, 226, 22, 226, 226, 226, - /* 7280 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 7290 */ 39, 40, 41, 42, 43, 44, 22, 46, 44, 45, - /* 7300 */ 49, 226, 226, 49, 53, 54, 55, 226, 226, 226, - /* 7310 */ 226, 226, 226, 226, 226, 226, 226, 66, 44, 65, - /* 7320 */ 226, 70, 226, 49, 226, 226, 226, 73, 74, 75, - /* 7330 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 7340 */ 86, 226, 226, 226, 226, 94, 226, 73, 74, 75, - /* 7350 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 7360 */ 86, 226, 111, 226, 1, 2, 3, 4, 5, 6, - /* 7370 */ 119, 120, 121, 122, 123, 124, 125, 4, 226, 226, - /* 7380 */ 226, 8, 226, 226, 11, 12, 1, 2, 3, 4, - /* 7390 */ 5, 6, 226, 226, 226, 22, 226, 226, 226, 226, - /* 7400 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 7410 */ 226, 226, 39, 40, 41, 42, 43, 44, 45, 46, - /* 7420 */ 226, 226, 49, 226, 61, 62, 53, 54, 55, 226, - /* 7430 */ 67, 68, 226, 226, 226, 226, 226, 226, 226, 66, - /* 7440 */ 226, 56, 226, 70, 226, 226, 61, 62, 63, 226, - /* 7450 */ 65, 226, 67, 68, 10, 226, 226, 13, 14, 15, - /* 7460 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - /* 7470 */ 26, 27, 28, 29, 30, 31, 32, 33, 226, 226, - /* 7480 */ 226, 37, 38, 226, 111, 226, 226, 226, 44, 226, - /* 7490 */ 46, 47, 119, 120, 121, 122, 123, 124, 125, 4, - /* 7500 */ 226, 226, 226, 8, 226, 226, 11, 12, 1, 2, - /* 7510 */ 3, 4, 5, 6, 226, 226, 72, 22, 226, 226, - /* 7520 */ 226, 226, 226, 226, 29, 226, 226, 226, 226, 34, - /* 7530 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 7540 */ 45, 46, 226, 226, 49, 226, 226, 226, 53, 54, - /* 7550 */ 55, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 7560 */ 226, 66, 226, 56, 226, 70, 226, 226, 61, 62, - /* 7570 */ 63, 226, 65, 226, 67, 68, 10, 226, 226, 13, - /* 7580 */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - /* 7590 */ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - /* 7600 */ 226, 226, 226, 37, 38, 226, 111, 226, 226, 226, - /* 7610 */ 44, 226, 46, 47, 119, 120, 121, 122, 123, 124, - /* 7620 */ 125, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 7630 */ 1, 2, 3, 4, 5, 6, 226, 226, 72, 22, - /* 7640 */ 226, 226, 226, 226, 226, 226, 29, 226, 226, 226, - /* 7650 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 7660 */ 43, 44, 226, 46, 226, 226, 49, 226, 226, 226, - /* 7670 */ 53, 54, 55, 226, 226, 226, 226, 226, 226, 226, - /* 7680 */ 226, 226, 226, 66, 226, 56, 226, 70, 226, 72, - /* 7690 */ 61, 62, 63, 226, 65, 226, 67, 68, 10, 226, - /* 7700 */ 226, 13, 14, 15, 16, 17, 18, 19, 20, 21, - /* 7710 */ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - /* 7720 */ 32, 33, 226, 226, 226, 37, 38, 226, 111, 226, - /* 7730 */ 226, 226, 44, 226, 46, 47, 119, 120, 121, 122, - /* 7740 */ 123, 124, 125, 4, 226, 226, 226, 8, 226, 226, - /* 7750 */ 11, 12, 1, 2, 3, 4, 5, 6, 226, 226, - /* 7760 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 7770 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 7780 */ 41, 42, 43, 44, 45, 46, 226, 226, 49, 226, - /* 7790 */ 226, 226, 53, 54, 55, 226, 226, 226, 226, 226, - /* 7800 */ 226, 226, 226, 226, 226, 66, 226, 56, 226, 70, - /* 7810 */ 226, 226, 61, 62, 63, 226, 65, 226, 67, 68, - /* 7820 */ 226, 226, 226, 13, 14, 15, 16, 17, 18, 19, - /* 7830 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - /* 7840 */ 30, 31, 32, 33, 226, 226, 226, 37, 38, 226, - /* 7850 */ 111, 226, 226, 226, 44, 226, 46, 47, 119, 120, - /* 7860 */ 121, 122, 123, 124, 125, 4, 226, 226, 226, 8, - /* 7870 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 7880 */ 226, 22, 226, 22, 226, 226, 226, 226, 226, 226, - /* 7890 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 7900 */ 39, 40, 41, 42, 43, 44, 45, 46, 226, 226, - /* 7910 */ 49, 226, 226, 226, 53, 54, 55, 226, 226, 226, - /* 7920 */ 226, 226, 226, 226, 226, 226, 226, 66, 69, 70, - /* 7930 */ 71, 70, 73, 74, 75, 76, 77, 78, 79, 80, - /* 7940 */ 81, 82, 83, 84, 85, 86, 14, 15, 16, 17, - /* 7950 */ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - /* 7960 */ 28, 29, 30, 31, 32, 33, 226, 226, 226, 37, - /* 7970 */ 38, 226, 111, 226, 226, 226, 44, 226, 46, 47, - /* 7980 */ 119, 120, 121, 122, 123, 124, 125, 4, 226, 226, - /* 7990 */ 226, 8, 226, 226, 11, 12, 226, 226, 226, 226, - /* 8000 */ 226, 226, 226, 226, 226, 22, 226, 226, 226, 226, - /* 8010 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 8020 */ 226, 226, 39, 40, 41, 42, 43, 44, 45, 46, - /* 8030 */ 226, 226, 49, 226, 226, 226, 53, 54, 55, 226, - /* 8040 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 66, - /* 8050 */ 226, 226, 226, 70, 15, 16, 17, 18, 19, 20, - /* 8060 */ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - /* 8070 */ 31, 32, 33, 226, 226, 226, 37, 38, 226, 226, - /* 8080 */ 226, 226, 226, 44, 226, 46, 47, 226, 226, 226, - /* 8090 */ 226, 226, 226, 226, 111, 226, 226, 226, 226, 226, - /* 8100 */ 226, 226, 119, 120, 121, 122, 123, 124, 125, 4, - /* 8110 */ 226, 226, 226, 8, 226, 226, 11, 12, 226, 226, - /* 8120 */ 226, 226, 226, 226, 226, 226, 226, 22, 226, 226, - /* 8130 */ 226, 226, 226, 46, 29, 226, 49, 226, 226, 34, - /* 8140 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 8150 */ 226, 46, 226, 66, 49, 226, 226, 70, 53, 54, - /* 8160 */ 55, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 8170 */ 226, 66, 226, 226, 226, 70, 226, 226, 226, 20, - /* 8180 */ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - /* 8190 */ 31, 32, 33, 226, 226, 226, 37, 38, 111, 226, - /* 8200 */ 226, 226, 226, 44, 226, 46, 47, 120, 103, 122, - /* 8210 */ 123, 124, 125, 4, 226, 226, 111, 8, 226, 226, - /* 8220 */ 11, 12, 226, 226, 119, 120, 121, 122, 123, 124, - /* 8230 */ 125, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 8240 */ 226, 226, 226, 34, 35, 36, 226, 22, 39, 40, - /* 8250 */ 41, 42, 43, 44, 226, 46, 226, 226, 49, 226, - /* 8260 */ 226, 226, 53, 54, 55, 226, 226, 226, 226, 44, - /* 8270 */ 45, 226, 226, 46, 49, 66, 49, 226, 226, 70, - /* 8280 */ 226, 72, 226, 226, 226, 226, 226, 226, 226, 226, - /* 8290 */ 65, 226, 226, 66, 226, 226, 226, 70, 73, 74, - /* 8300 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - /* 8310 */ 85, 86, 48, 49, 226, 51, 226, 53, 226, 226, - /* 8320 */ 111, 57, 226, 59, 226, 61, 62, 63, 119, 120, - /* 8330 */ 121, 122, 123, 124, 125, 4, 226, 226, 111, 8, - /* 8340 */ 226, 226, 11, 12, 226, 226, 226, 120, 226, 122, - /* 8350 */ 123, 124, 125, 22, 226, 226, 22, 226, 226, 226, - /* 8360 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 8370 */ 39, 40, 41, 42, 43, 44, 22, 46, 44, 45, - /* 8380 */ 49, 226, 226, 49, 53, 54, 55, 226, 226, 226, - /* 8390 */ 126, 226, 226, 226, 226, 226, 226, 66, 226, 65, - /* 8400 */ 226, 70, 226, 72, 226, 226, 226, 73, 74, 75, - /* 8410 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 8420 */ 86, 226, 226, 226, 70, 71, 226, 73, 74, 75, - /* 8430 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 8440 */ 86, 226, 111, 226, 226, 226, 226, 226, 226, 226, - /* 8450 */ 119, 120, 121, 122, 123, 124, 125, 4, 226, 226, - /* 8460 */ 226, 8, 226, 226, 11, 12, 226, 226, 226, 226, - /* 8470 */ 226, 226, 226, 226, 226, 22, 226, 226, 22, 226, - /* 8480 */ 226, 226, 29, 226, 226, 46, 47, 34, 35, 36, - /* 8490 */ 226, 226, 39, 40, 41, 42, 43, 44, 46, 46, - /* 8500 */ 44, 45, 49, 64, 226, 49, 53, 54, 55, 226, - /* 8510 */ 226, 226, 226, 226, 226, 226, 64, 226, 226, 66, - /* 8520 */ 226, 65, 226, 70, 226, 72, 226, 226, 226, 73, - /* 8530 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 8540 */ 84, 85, 86, 226, 105, 106, 107, 108, 109, 110, - /* 8550 */ 226, 112, 113, 114, 226, 226, 226, 105, 106, 107, - /* 8560 */ 108, 109, 110, 226, 111, 113, 114, 226, 226, 226, - /* 8570 */ 226, 226, 119, 120, 121, 122, 123, 124, 125, 4, - /* 8580 */ 226, 226, 226, 8, 226, 226, 11, 12, 226, 226, - /* 8590 */ 226, 226, 31, 32, 33, 226, 226, 22, 37, 38, - /* 8600 */ 22, 226, 226, 226, 29, 44, 226, 46, 47, 34, - /* 8610 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 8620 */ 46, 46, 44, 45, 49, 226, 226, 49, 53, 54, - /* 8630 */ 55, 226, 226, 226, 226, 226, 226, 226, 64, 226, - /* 8640 */ 226, 66, 226, 65, 226, 70, 226, 72, 226, 226, - /* 8650 */ 226, 73, 74, 75, 76, 77, 78, 79, 80, 81, - /* 8660 */ 82, 83, 84, 85, 86, 128, 129, 130, 131, 132, - /* 8670 */ 133, 134, 135, 136, 137, 138, 226, 226, 226, 105, - /* 8680 */ 106, 107, 108, 109, 110, 226, 111, 226, 226, 226, - /* 8690 */ 226, 226, 226, 226, 119, 120, 121, 122, 123, 124, - /* 8700 */ 125, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 8710 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 22, - /* 8720 */ 226, 226, 22, 226, 226, 226, 29, 226, 226, 46, - /* 8730 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 8740 */ 43, 44, 46, 46, 44, 45, 49, 64, 226, 49, - /* 8750 */ 53, 54, 55, 226, 226, 226, 226, 226, 226, 226, - /* 8760 */ 64, 226, 226, 66, 226, 65, 226, 70, 226, 72, - /* 8770 */ 226, 226, 226, 73, 74, 75, 76, 77, 78, 79, - /* 8780 */ 80, 81, 82, 83, 84, 85, 86, 226, 105, 106, - /* 8790 */ 107, 108, 109, 110, 226, 226, 226, 226, 226, 226, - /* 8800 */ 226, 105, 106, 107, 108, 109, 110, 226, 111, 226, - /* 8810 */ 226, 226, 226, 226, 226, 226, 119, 120, 121, 122, - /* 8820 */ 123, 124, 125, 4, 226, 226, 226, 8, 226, 226, - /* 8830 */ 11, 12, 226, 226, 226, 226, 226, 226, 226, 226, - /* 8840 */ 226, 22, 226, 226, 22, 226, 226, 226, 29, 226, - /* 8850 */ 226, 46, 226, 34, 35, 36, 226, 226, 39, 40, - /* 8860 */ 41, 42, 43, 44, 226, 46, 44, 226, 49, 64, - /* 8870 */ 226, 49, 53, 54, 55, 226, 226, 226, 226, 226, - /* 8880 */ 226, 226, 226, 226, 226, 66, 226, 65, 226, 70, - /* 8890 */ 226, 72, 226, 226, 226, 73, 74, 75, 76, 77, - /* 8900 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 226, - /* 8910 */ 105, 106, 107, 108, 109, 110, 226, 226, 226, 226, - /* 8920 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 8930 */ 111, 226, 226, 226, 226, 226, 226, 226, 119, 120, - /* 8940 */ 121, 122, 123, 124, 125, 4, 226, 4, 226, 8, - /* 8950 */ 226, 226, 11, 12, 226, 226, 226, 226, 226, 226, - /* 8960 */ 226, 226, 226, 22, 226, 226, 226, 226, 226, 226, - /* 8970 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 8980 */ 39, 40, 41, 42, 43, 44, 226, 46, 0, 226, - /* 8990 */ 49, 50, 49, 226, 53, 54, 55, 226, 55, 226, - /* 9000 */ 226, 226, 226, 226, 226, 226, 226, 66, 226, 226, - /* 9010 */ 226, 70, 226, 226, 226, 226, 73, 74, 75, 76, - /* 9020 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - /* 9030 */ 226, 226, 226, 226, 226, 226, 48, 49, 226, 51, - /* 9040 */ 226, 53, 226, 226, 226, 57, 226, 59, 226, 61, - /* 9050 */ 62, 63, 111, 226, 226, 226, 226, 226, 226, 226, - /* 9060 */ 119, 120, 121, 122, 123, 124, 125, 4, 226, 226, - /* 9070 */ 46, 8, 226, 49, 11, 12, 1, 2, 3, 4, - /* 9080 */ 5, 6, 226, 226, 226, 22, 226, 226, 226, 226, - /* 9090 */ 66, 226, 29, 226, 70, 226, 72, 34, 35, 36, - /* 9100 */ 226, 226, 39, 40, 41, 42, 43, 44, 226, 46, - /* 9110 */ 226, 226, 49, 226, 126, 226, 53, 54, 55, 226, - /* 9120 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 66, - /* 9130 */ 226, 56, 226, 70, 226, 111, 61, 62, 63, 226, - /* 9140 */ 65, 226, 67, 68, 120, 226, 122, 123, 124, 125, - /* 9150 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9160 */ 226, 226, 226, 226, 226, 226, 103, 226, 226, 226, - /* 9170 */ 226, 4, 226, 226, 111, 8, 226, 226, 11, 12, - /* 9180 */ 226, 226, 119, 120, 121, 122, 123, 124, 125, 22, - /* 9190 */ 1, 2, 3, 4, 5, 6, 29, 226, 226, 226, - /* 9200 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 9210 */ 43, 44, 45, 46, 226, 226, 49, 226, 226, 226, - /* 9220 */ 53, 54, 55, 226, 226, 226, 226, 226, 226, 226, - /* 9230 */ 226, 226, 226, 66, 226, 226, 226, 70, 226, 226, - /* 9240 */ 226, 226, 226, 226, 226, 56, 226, 226, 226, 226, - /* 9250 */ 61, 62, 63, 226, 226, 226, 67, 68, 226, 226, - /* 9260 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9270 */ 226, 226, 226, 226, 226, 226, 226, 226, 111, 226, - /* 9280 */ 226, 226, 226, 226, 226, 226, 119, 120, 121, 122, - /* 9290 */ 123, 124, 125, 4, 226, 226, 226, 8, 226, 226, - /* 9300 */ 11, 12, 1, 2, 3, 4, 5, 6, 226, 226, - /* 9310 */ 226, 22, 226, 226, 226, 226, 226, 226, 29, 226, - /* 9320 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 9330 */ 41, 42, 43, 44, 45, 46, 226, 226, 49, 226, - /* 9340 */ 226, 226, 53, 54, 55, 226, 226, 226, 226, 226, - /* 9350 */ 226, 226, 226, 226, 226, 66, 226, 56, 226, 70, - /* 9360 */ 226, 226, 61, 62, 63, 226, 226, 226, 67, 68, - /* 9370 */ 1, 2, 3, 4, 5, 6, 226, 226, 226, 226, - /* 9380 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9390 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9400 */ 111, 226, 226, 226, 226, 226, 226, 226, 119, 120, - /* 9410 */ 121, 122, 123, 124, 125, 4, 226, 226, 226, 8, - /* 9420 */ 226, 226, 11, 12, 226, 56, 226, 226, 226, 226, - /* 9430 */ 61, 62, 63, 22, 226, 226, 67, 68, 226, 226, - /* 9440 */ 29, 226, 226, 226, 226, 34, 35, 36, 226, 226, - /* 9450 */ 39, 40, 41, 42, 43, 44, 45, 46, 226, 226, - /* 9460 */ 49, 226, 226, 226, 53, 54, 55, 226, 226, 226, - /* 9470 */ 226, 226, 226, 226, 226, 226, 226, 66, 226, 226, - /* 9480 */ 226, 70, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9490 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9500 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9510 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9520 */ 226, 226, 111, 226, 226, 226, 226, 226, 226, 226, - /* 9530 */ 119, 120, 121, 122, 123, 124, 125, 4, 226, 226, - /* 9540 */ 226, 8, 226, 226, 11, 12, 1, 2, 3, 4, - /* 9550 */ 5, 6, 226, 226, 226, 22, 226, 226, 226, 226, - /* 9560 */ 226, 226, 29, 226, 226, 226, 226, 34, 35, 36, - /* 9570 */ 226, 226, 39, 40, 41, 42, 43, 44, 45, 46, - /* 9580 */ 226, 226, 49, 226, 226, 226, 53, 54, 55, 226, - /* 9590 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 66, - /* 9600 */ 226, 56, 226, 70, 226, 226, 61, 62, 63, 226, - /* 9610 */ 226, 226, 67, 68, 1, 2, 3, 4, 5, 6, - /* 9620 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9630 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9640 */ 226, 226, 226, 226, 111, 226, 226, 226, 226, 226, - /* 9650 */ 226, 226, 119, 120, 121, 122, 123, 124, 125, 4, - /* 9660 */ 226, 226, 226, 8, 226, 226, 11, 12, 1, 2, - /* 9670 */ 3, 4, 5, 6, 61, 62, 226, 22, 65, 226, - /* 9680 */ 67, 68, 226, 226, 29, 226, 226, 226, 226, 34, - /* 9690 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 9700 */ 45, 46, 226, 226, 49, 226, 226, 226, 53, 54, - /* 9710 */ 55, 226, 226, 226, 226, 226, 49, 226, 226, 226, - /* 9720 */ 53, 66, 226, 226, 226, 70, 226, 226, 61, 62, - /* 9730 */ 226, 226, 226, 226, 67, 68, 226, 226, 226, 226, - /* 9740 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9750 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9760 */ 226, 226, 226, 226, 226, 226, 111, 226, 226, 226, - /* 9770 */ 226, 226, 226, 226, 119, 120, 121, 122, 123, 124, - /* 9780 */ 125, 4, 226, 226, 226, 8, 226, 226, 11, 12, - /* 9790 */ 1, 2, 3, 4, 5, 6, 226, 226, 226, 22, - /* 9800 */ 226, 226, 226, 226, 226, 226, 29, 226, 226, 226, - /* 9810 */ 226, 34, 35, 36, 226, 226, 39, 40, 41, 42, - /* 9820 */ 43, 44, 45, 46, 226, 226, 49, 226, 226, 226, - /* 9830 */ 53, 54, 55, 226, 226, 226, 226, 226, 49, 226, - /* 9840 */ 226, 226, 53, 66, 226, 226, 226, 70, 226, 226, - /* 9850 */ 61, 62, 226, 226, 226, 226, 67, 68, 1, 2, - /* 9860 */ 3, 4, 5, 6, 226, 226, 226, 226, 226, 226, - /* 9870 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9880 */ 226, 226, 226, 226, 226, 226, 226, 226, 111, 226, - /* 9890 */ 226, 226, 226, 226, 226, 226, 119, 120, 121, 122, - /* 9900 */ 123, 124, 125, 4, 226, 226, 226, 8, 226, 226, - /* 9910 */ 11, 12, 226, 56, 226, 226, 226, 226, 61, 62, - /* 9920 */ 63, 22, 226, 226, 67, 68, 226, 226, 29, 226, - /* 9930 */ 226, 226, 226, 34, 35, 36, 226, 226, 39, 40, - /* 9940 */ 41, 42, 43, 44, 45, 46, 226, 226, 49, 226, - /* 9950 */ 226, 226, 53, 54, 55, 226, 226, 226, 226, 226, - /* 9960 */ 226, 226, 226, 226, 226, 66, 226, 226, 226, 70, - /* 9970 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 9980 */ 10, 226, 226, 13, 14, 15, 16, 17, 18, 19, - /* 9990 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - /* 10000 */ 30, 31, 32, 33, 226, 226, 226, 37, 38, 226, - /* 10010 */ 111, 226, 226, 226, 44, 226, 46, 47, 119, 120, - /* 10020 */ 121, 122, 123, 124, 125, 55, 137, 138, 226, 226, - /* 10030 */ 226, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10040 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10050 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 10060 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 10070 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 10080 */ 4, 226, 226, 226, 8, 226, 226, 11, 12, 200, - /* 10090 */ 1, 2, 3, 4, 5, 6, 226, 226, 22, 210, - /* 10100 */ 211, 212, 213, 226, 226, 29, 226, 226, 226, 226, - /* 10110 */ 34, 35, 36, 226, 226, 39, 40, 41, 42, 43, - /* 10120 */ 44, 226, 46, 226, 226, 49, 226, 226, 226, 53, - /* 10130 */ 54, 55, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10140 */ 226, 226, 66, 226, 226, 56, 70, 226, 226, 226, - /* 10150 */ 61, 62, 63, 226, 226, 226, 67, 68, 1, 2, - /* 10160 */ 3, 4, 5, 6, 226, 226, 226, 226, 226, 226, - /* 10170 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10180 */ 226, 226, 226, 226, 226, 226, 226, 111, 226, 226, - /* 10190 */ 226, 226, 226, 226, 226, 119, 120, 121, 122, 123, - /* 10200 */ 124, 125, 137, 138, 226, 226, 226, 142, 226, 226, - /* 10210 */ 226, 226, 226, 56, 226, 226, 226, 226, 61, 62, - /* 10220 */ 63, 226, 226, 226, 67, 68, 226, 226, 226, 226, - /* 10230 */ 226, 226, 226, 226, 169, 170, 171, 172, 173, 174, - /* 10240 */ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - /* 10250 */ 185, 186, 187, 188, 189, 190, 137, 138, 226, 226, - /* 10260 */ 226, 142, 226, 226, 226, 200, 226, 226, 226, 226, - /* 10270 */ 226, 226, 226, 226, 226, 210, 211, 212, 213, 226, - /* 10280 */ 1, 2, 3, 4, 5, 6, 226, 226, 169, 170, - /* 10290 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 10300 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 10310 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 200, - /* 10320 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 210, - /* 10330 */ 211, 212, 213, 137, 138, 56, 226, 226, 142, 226, - /* 10340 */ 61, 62, 63, 226, 226, 226, 67, 68, 226, 226, - /* 10350 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10360 */ 226, 226, 226, 226, 226, 169, 170, 171, 172, 173, - /* 10370 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 10380 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 10390 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 10400 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 10410 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 10420 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 10430 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 10440 */ 190, 137, 138, 226, 226, 226, 142, 226, 226, 226, - /* 10450 */ 200, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10460 */ 210, 211, 212, 213, 226, 226, 226, 226, 226, 226, - /* 10470 */ 226, 226, 226, 169, 170, 171, 172, 173, 174, 175, - /* 10480 */ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - /* 10490 */ 186, 187, 188, 189, 190, 226, 226, 226, 226, 226, - /* 10500 */ 226, 226, 226, 226, 200, 137, 138, 226, 226, 226, - /* 10510 */ 142, 226, 226, 226, 210, 211, 212, 213, 226, 226, - /* 10520 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10530 */ 226, 226, 226, 226, 226, 226, 226, 169, 170, 171, - /* 10540 */ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - /* 10550 */ 182, 183, 184, 185, 186, 187, 188, 189, 190, 4, - /* 10560 */ 226, 226, 226, 8, 226, 226, 11, 12, 200, 226, - /* 10570 */ 226, 226, 226, 226, 226, 226, 226, 22, 210, 211, - /* 10580 */ 212, 213, 226, 226, 29, 226, 226, 226, 226, 34, - /* 10590 */ 35, 36, 226, 226, 39, 40, 41, 42, 43, 44, - /* 10600 */ 226, 46, 226, 226, 49, 226, 226, 226, 53, 54, - /* 10610 */ 55, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10620 */ 226, 66, 226, 226, 226, 70, 226, 226, 226, 226, - /* 10630 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10640 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10650 */ 226, 226, 137, 138, 226, 226, 226, 142, 226, 226, - /* 10660 */ 226, 226, 226, 226, 226, 226, 111, 226, 226, 226, - /* 10670 */ 226, 226, 226, 226, 119, 120, 121, 122, 123, 124, - /* 10680 */ 125, 226, 226, 226, 169, 170, 171, 172, 173, 174, - /* 10690 */ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - /* 10700 */ 185, 186, 187, 188, 189, 190, 137, 138, 226, 226, - /* 10710 */ 226, 142, 226, 226, 226, 200, 226, 226, 226, 226, - /* 10720 */ 226, 226, 226, 226, 226, 210, 211, 212, 213, 226, - /* 10730 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 10740 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 10750 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 10760 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 10770 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 210, - /* 10780 */ 211, 212, 213, 226, 226, 226, 226, 226, 226, 226, - /* 10790 */ 226, 226, 226, 226, 226, 169, 170, 171, 172, 173, - /* 10800 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 10810 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 10820 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 10830 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 10840 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 10850 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 10860 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 10870 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 10880 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 10890 */ 210, 211, 212, 213, 1, 2, 3, 4, 5, 6, - /* 10900 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 10910 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 10920 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 10930 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 10940 */ 226, 226, 226, 226, 226, 226, 53, 226, 226, 210, - /* 10950 */ 211, 212, 213, 226, 61, 62, 226, 226, 226, 226, - /* 10960 */ 67, 68, 226, 226, 226, 169, 170, 171, 172, 173, - /* 10970 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 10980 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 10990 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11000 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11010 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11020 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11030 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11040 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11050 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11060 */ 210, 211, 212, 213, 1, 2, 3, 4, 5, 6, - /* 11070 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11080 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11090 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11100 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11110 */ 226, 226, 226, 226, 226, 226, 53, 226, 226, 210, - /* 11120 */ 211, 212, 213, 226, 61, 62, 226, 226, 226, 226, - /* 11130 */ 67, 68, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11140 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 11150 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 11160 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11170 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11180 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11190 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11200 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11210 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11220 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11230 */ 210, 211, 212, 213, 1, 2, 3, 4, 5, 6, - /* 11240 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11250 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11260 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11270 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11280 */ 226, 226, 226, 226, 226, 226, 53, 226, 226, 210, - /* 11290 */ 211, 212, 213, 226, 61, 62, 226, 226, 226, 226, - /* 11300 */ 67, 68, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11310 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 11320 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 11330 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11340 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11350 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11360 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11370 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11380 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11390 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11400 */ 210, 211, 212, 213, 1, 2, 3, 4, 5, 6, - /* 11410 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11420 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11430 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11440 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11450 */ 226, 226, 226, 226, 226, 226, 53, 226, 226, 210, - /* 11460 */ 211, 212, 213, 226, 61, 62, 226, 226, 226, 226, - /* 11470 */ 67, 68, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11480 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 11490 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 11500 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11510 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11520 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11530 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11540 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11550 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11560 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11570 */ 210, 211, 212, 213, 226, 226, 226, 226, 226, 226, - /* 11580 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11590 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11600 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11610 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11620 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 210, - /* 11630 */ 211, 212, 213, 226, 226, 226, 226, 226, 226, 226, - /* 11640 */ 226, 226, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11650 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 11660 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 11670 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11680 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11690 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11700 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11710 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11720 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11730 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11740 */ 210, 211, 212, 213, 226, 226, 226, 226, 226, 226, - /* 11750 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11760 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11770 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11780 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11790 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 210, - /* 11800 */ 211, 212, 213, 226, 226, 226, 226, 226, 226, 226, - /* 11810 */ 226, 226, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11820 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 11830 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 11840 */ 226, 226, 142, 226, 226, 226, 200, 226, 226, 226, - /* 11850 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 11860 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 11870 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 11880 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 11890 */ 190, 226, 226, 226, 226, 226, 137, 138, 226, 226, - /* 11900 */ 200, 142, 226, 226, 226, 226, 226, 226, 226, 226, - /* 11910 */ 210, 211, 212, 213, 226, 226, 226, 226, 226, 226, - /* 11920 */ 226, 226, 226, 226, 226, 226, 226, 226, 169, 170, - /* 11930 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - /* 11940 */ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - /* 11950 */ 226, 226, 226, 137, 138, 226, 226, 226, 142, 200, - /* 11960 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 210, - /* 11970 */ 211, 212, 213, 226, 226, 226, 226, 226, 226, 226, - /* 11980 */ 226, 226, 226, 226, 226, 169, 170, 171, 172, 173, - /* 11990 */ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - /* 12000 */ 184, 185, 186, 187, 188, 189, 190, 137, 138, 226, - /* 12010 */ 226, 226, 226, 226, 226, 226, 200, 226, 226, 226, - /* 12020 */ 226, 226, 226, 226, 226, 226, 210, 211, 212, 213, - /* 12030 */ 226, 226, 226, 226, 226, 226, 226, 226, 226, 169, - /* 12040 */ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - /* 12050 */ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - /* 12060 */ 190, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 12070 */ 200, 226, 226, 226, 226, 226, 226, 226, 226, 226, - /* 12080 */ 210, 211, 212, 213, 226, 226, 226, 226, 226, 226, - /* 12090 */ 226, 10, 226, 226, 13, 14, 15, 16, 17, 18, - /* 12100 */ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - /* 12110 */ 29, 30, 31, 32, 33, 226, 226, 226, 37, 38, - /* 12120 */ 226, 226, 226, 226, 226, 44, 226, 46, 47, 10, - /* 12130 */ 226, 226, 13, 14, 15, 16, 17, 18, 19, 20, - /* 12140 */ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - /* 12150 */ 31, 32, 33, 226, 226, 226, 37, 38, 226, 226, - /* 12160 */ 226, 226, 226, 44, 226, 46, 47, 226, 226, 226, - /* 12170 */ 226, 226, 226, 226, 10, 94, 226, 13, 14, 15, - /* 12180 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - /* 12190 */ 26, 27, 28, 29, 30, 31, 32, 33, 226, 226, - /* 12200 */ 226, 37, 38, 226, 226, 226, 226, 226, 44, 226, - /* 12210 */ 46, 47, 10, 94, 50, 13, 14, 15, 16, 17, - /* 12220 */ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - /* 12230 */ 28, 29, 30, 31, 32, 33, 226, 226, 226, 37, - /* 12240 */ 38, 226, 226, 226, 226, 226, 44, 226, 46, 47, - /* 12250 */ 10, 226, 50, 13, 14, 15, 16, 17, 18, 19, - /* 12260 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - /* 12270 */ 30, 31, 32, 33, 226, 226, 226, 37, 38, 226, - /* 12280 */ 226, 226, 226, 226, 44, 226, 46, 47, 10, 226, - /* 12290 */ 50, 13, 14, 15, 16, 17, 18, 19, 20, 21, - /* 12300 */ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - /* 12310 */ 32, 33, 226, 226, 226, 37, 38, 226, 226, 226, - /* 12320 */ 226, 226, 44, 226, 46, 47, 10, 226, 50, 13, - /* 12330 */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - /* 12340 */ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - /* 12350 */ 226, 226, 226, 37, 38, 226, 226, 226, 226, 226, - /* 12360 */ 44, 226, 46, 47, 226, 226, 226, 226, 226, 226, - /* 12370 */ 226, 55, 226, 10, 226, 226, 13, 14, 15, 16, - /* 12380 */ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - /* 12390 */ 27, 28, 29, 30, 31, 32, 33, 226, 226, 226, - /* 12400 */ 37, 38, 226, 226, 226, 226, 226, 44, 226, 46, - /* 12410 */ 47, 226, 226, 226, 226, 226, 226, 226, 55, 226, - /* 12420 */ 10, 226, 226, 13, 14, 15, 16, 17, 18, 19, - /* 12430 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - /* 12440 */ 30, 31, 32, 33, 226, 226, 226, 37, 38, 226, - /* 12450 */ 226, 226, 226, 226, 44, 226, 46, 47, 226, 226, - /* 12460 */ 226, 226, 226, 226, 226, 55, -}; -#define YY_SHIFT_USE_DFLT (-42) -static short yy_shift_ofst[] = { - /* 0 */ 8264, 1, 8988, -42, -42, -42, -42, -42, -42, -42, - /* 10 */ -42, 12, 141, -42, 199, 121, -42, 199, -42, 275, - /* 20 */ 307, -42, -42, 344, 288, 7254, 324, 7859, 254, -4, - /* 30 */ -42, 119, -42, -42, -42, -42, -42, -42, -42, -42, - /* 40 */ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, - /* 50 */ -42, -42, -42, -42, -42, -42, -42, -42, 387, -42, - /* 60 */ 425, -42, 10076, 439, 242, 365, 34, 113, 502, 488, - /* 70 */ 611, -42, 10076, 528, 154, -42, 173, -42, -42, 10076, - /* 80 */ 508, 6884, 6884, 583, 734, 857, -42, 10076, 625, 980, - /* 90 */ 1103, -42, 665, 1226, 1349, 643, 10076, 701, -42, 10076, - /* 100 */ 205, 10076, 10076, -41, 10076, 10076, -41, 10076, 10076, -41, - /* 110 */ 10076, 10076, -41, 10076, 10076, 43, 10076, 10076, 7688, 10076, - /* 120 */ 10076, -41, 10076, 10076, 43, 238, 707, 7129, 10076, 7810, - /* 130 */ 10076, 10076, 7810, 10076, 8561, 10076, 8561, 10076, 43, 10076, - /* 140 */ 43, 10076, 43, 10076, 8561, 10076, 8039, 10076, 7932, 10076, - /* 150 */ 8159, 10076, 8159, 10076, 8159, 10076, 8159, 10076, 8159, 10076, - /* 160 */ 7078, 10076, -41, 10076, -41, 7251, 12081, 10076, 7688, 7007, - /* 170 */ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, - /* 180 */ -42, -42, -42, -42, 7200, -42, 750, 10076, 205, 840, - /* 190 */ 839, 10076, -18, -7, 115, 770, 7373, 7688, 32, 7495, - /* 200 */ 853, 871, 10076, 43, -42, 10076, -41, -42, -42, -42, - /* 210 */ -42, -42, -42, -42, -42, -42, 7617, 12119, -42, 272, - /* 220 */ -42, 10076, 8943, 931, 7739, -42, 61, -42, 10555, 910, - /* 230 */ 873, 155, 7861, 287, -42, -42, 877, 952, 993, 7983, - /* 240 */ 391, -42, -42, -42, -42, -42, -42, 1010, 8225, 406, - /* 250 */ 8822, -42, 1009, 8087, -42, -42, -42, -42, -42, -42, - /* 260 */ -42, -42, 975, 1028, -42, -42, 9024, 1015, 1018, 72, - /* 270 */ -42, 273, -42, 8227, -42, 1022, 8087, -42, -42, -42, - /* 280 */ -42, 1084, 1091, 8087, -42, 7274, 1100, 8087, -42, 1145, - /* 290 */ 1123, 8087, -42, 221, 1149, 8087, -42, 1167, 1153, 8087, - /* 300 */ -42, 348, 1169, 8087, -42, 1187, 1175, 8087, -42, 385, - /* 310 */ 1182, 8087, -42, 1207, 1193, 8087, -42, 1209, 1240, -42, - /* 320 */ 368, 1200, 8087, -42, 1225, 1214, 8087, -42, 430, 1224, - /* 330 */ 8087, -42, 1242, 1229, 8087, -42, 511, 1231, 8087, -42, - /* 340 */ 1249, 1246, 8087, -42, 1257, 1472, 1595, 1261, 1718, 1841, - /* 350 */ 1217, 1217, -42, 1271, 27, 1964, 2087, -42, 1272, 363, - /* 360 */ 8105, 9970, 2210, 2333, -42, 400, 409, -42, 400, -42, - /* 370 */ 8439, -42, -42, -42, -42, -42, -42, -42, 10076, -42, - /* 380 */ 7688, 484, 8452, 10076, -42, 8209, 317, 10076, -42, 1259, - /* 390 */ -42, 7444, 8574, 10076, -42, 8331, 317, 10076, -42, -42, - /* 400 */ -42, -42, -42, -1, 1276, 317, 10076, -42, 1278, 317, - /* 410 */ 10076, -42, 1286, 8683, 10076, -42, 8453, 317, 10076, -42, - /* 420 */ 8696, 10076, -42, 8575, 317, 10076, -42, 8697, 317, 10076, - /* 430 */ -42, 8805, 10076, -42, 8819, 317, 10076, -42, -42, -42, - /* 440 */ 179, 1282, 317, 10076, -42, 1300, 317, 10076, -42, -42, - /* 450 */ 10076, 490, -42, 10076, -42, 7688, -42, 1309, -42, 1320, - /* 460 */ -42, 1327, -42, 1329, -42, 8941, 12164, -42, -42, 10076, - /* 470 */ 12202, -42, 10076, 12240, -42, 10076, 12278, -42, 1331, 500, - /* 480 */ -42, 1331, -42, 1317, 10076, 7688, -42, 1331, 609, -42, - /* 490 */ 1331, 632, -42, 1331, 655, -42, 1331, 746, -42, 1331, - /* 500 */ 775, -42, 1331, 778, -42, 1331, 755, -42, 1331, 779, - /* 510 */ -42, 1331, 813, -42, 1331, 820, -42, 7688, -42, -42, - /* 520 */ -42, -42, 10076, 12316, 6884, 2456, -42, 1333, 1292, 9063, - /* 530 */ 12363, 2579, 2702, -42, -42, 10076, 12410, 6884, 2825, -42, - /* 540 */ -42, 1338, 1342, 2948, 3071, -42, -42, 1271, -42, -42, - /* 550 */ -42, -42, -42, -42, -42, -42, 1355, 3194, 3317, -42, - /* 560 */ -42, 523, 1357, 9167, -42, 504, -42, 1364, 1358, 1362, - /* 570 */ 9289, -42, 529, -42, -42, 1363, 9411, -42, 656, -42, - /* 580 */ 1369, 1365, 1366, 9533, -42, 676, -42, 1379, 10555, 829, - /* 590 */ -42, -42, 1340, 10076, 7688, -42, -42, -42, 880, -42, - /* 600 */ -42, 10076, 7688, 10076, 7688, -42, 883, -42, -42, 1390, - /* 610 */ 1384, 1388, 9655, -42, 898, -42, 10076, 7688, 7566, -42, - /* 620 */ 902, -42, -42, 730, 1387, 1395, 9777, 915, -42, -42, - /* 630 */ 1396, 1397, 9899, 919, -42, -42, -18, -18, -18, -18, - /* 640 */ -18, -18, -18, -18, 7688, 1361, 10076, 1409, -42, -42, - /* 650 */ -42, 1368, 6884, 6884, -42, -42, -42, 10076, 1406, 3440, - /* 660 */ 3563, -42, -42, 1423, 3686, 3809, -42, -42, -42, 582, - /* 670 */ 872, 1424, 1407, -42, 1427, 3932, 4055, -42, -42, -42, - /* 680 */ -42, 1470, 8354, -42, 1449, -42, -42, -42, -42, -42, - /* 690 */ 1443, 702, 1421, 1476, -42, -42, 4178, -42, 4301, -42, - /* 700 */ -42, 941, 325, 7859, 826, 4424, -42, 4547, -42, -42, - /* 710 */ 4670, -42, 4793, -42, -42, 1451, 748, -42, 1454, 649, - /* 720 */ -42, 1454, -42, -42, 7141, -42, 1448, -42, 7385, 9189, - /* 730 */ -42, 10893, 1460, 1456, 8334, 940, 7859, 1474, -42, -42, - /* 740 */ 963, 978, 7859, 1483, -42, -42, -42, -42, -42, -42, - /* 750 */ -42, -42, -42, -42, -42, -42, -42, 7363, 11063, 1485, - /* 760 */ 1482, 8456, 1001, 7859, 1487, -42, -42, 1025, 1024, 7859, - /* 770 */ 1489, -42, -42, -42, -42, -42, 9613, 875, 1477, 8087, - /* 780 */ 1493, -42, 1480, 8087, 1507, -42, 1017, 1498, 8087, 1513, - /* 790 */ -42, 1502, 8087, 1524, -42, 9301, -42, -42, 1526, 80, - /* 800 */ -42, 1533, 897, -42, 1454, 811, -42, 7507, -42, 1530, - /* 810 */ -42, 7629, 9369, -42, 11233, 1552, 1548, 8578, 546, 4916, - /* 820 */ -42, 5039, -42, -42, 7859, 1030, 5162, -42, 5285, -42, - /* 830 */ -42, 1075, 792, 5408, -42, 5531, -42, -42, 7859, 1038, - /* 840 */ 5654, -42, 5777, -42, -42, 7363, 11403, 1556, 1555, 8700, - /* 850 */ 817, 5900, -42, 6023, -42, -42, 7859, 1081, 6146, -42, - /* 860 */ 6269, -42, -42, 1079, 833, 6392, -42, 6515, -42, -42, - /* 870 */ 7859, 1085, 6638, -42, 6761, -42, -42, 7751, 9545, -42, - /* 880 */ 9613, -42, 9613, 9667, 3, -42, 8087, 1115, -42, 1572, - /* 890 */ -42, 127, 1573, 1141, 1575, 982, -42, -42, 1578, -42, - /* 900 */ -42, 1582, -42, 9789, 647, -42, 8087, 1138, -42, 1583, - /* 910 */ -42, 1593, -42, 9075, 9857, 10089, 7363, 10157, -42, 10279, - /* 920 */ 1454, 811, -42, 1598, 1610, 454, -42, 1614, 1112, -42, - /* 930 */ 1454, 811, -42, 1454, 811, -42, 1608, 1630, 570, -42, - /* 940 */ 1632, 1631, -42, 1454, 811, -42, -42, -}; -#define YY_REDUCE_USE_DFLT (-157) -static short yy_reduce_ofst[] = { - /* 0 */ 8537, -157, 124, -157, -157, -157, -157, -157, -157, -157, - /* 10 */ -157, -157, -157, -157, -106, -157, -157, 136, -157, -157, - /* 20 */ -157, -157, -157, -157, -157, 432, -157, 831, -157, 9889, - /* 30 */ -157, 11870, -157, -157, -157, -157, -157, -157, -157, -157, - /* 40 */ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - /* 50 */ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - /* 60 */ -157, -157, 704, -157, 10065, 11870, -46, 322, -157, 10119, - /* 70 */ 11870, -157, 827, -157, 18, -157, 396, -157, -157, 917, - /* 80 */ -157, 10196, 11870, -157, 10250, 11870, -157, 950, -157, 10304, - /* 90 */ 11870, -157, -157, 10368, 11870, -157, 998, -157, -157, 793, - /* 100 */ -157, 1285, 1408, -157, 1490, 1531, -157, 1613, 1654, -157, - /* 110 */ 1736, 1777, -157, 1859, 1900, -157, 1982, 2023, -157, 2105, - /* 120 */ 2146, -157, 2180, 2228, -157, -157, -157, -109, 2269, -157, - /* 130 */ 2303, 2351, -157, 2392, -157, 2426, -157, 2474, -157, 2515, - /* 140 */ -157, 2549, -157, 2597, -157, 2638, -157, 2672, -157, 2720, - /* 150 */ -157, 2761, -157, 2795, -157, 2843, -157, 2884, -157, 2918, - /* 160 */ -157, 2966, -157, 3007, -157, 3041, -157, 3089, -157, 800, - /* 170 */ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - /* 180 */ -157, -157, -157, -157, -157, -157, -157, 3130, -157, -157, - /* 190 */ -157, 3164, -157, -157, -157, -157, -61, -157, -157, 14, - /* 200 */ -157, -157, 3212, -157, -157, 3245, -157, -157, -157, -157, - /* 210 */ -157, -157, -157, -157, -157, -157, -156, -157, -157, -157, - /* 220 */ -157, -33, 743, -157, 89, -157, -157, -157, 1031, -157, - /* 230 */ -157, -157, 137, -157, -157, -157, -157, -157, -157, 178, - /* 240 */ -157, -157, -157, -157, -157, -157, -157, -157, 678, -157, - /* 250 */ 145, -157, -157, 920, -157, -157, -157, -157, -157, -157, - /* 260 */ -157, -157, -157, -157, -157, -157, 50, -157, -157, -157, - /* 270 */ -157, -157, -157, 159, -157, -157, 78, -157, -157, -157, - /* 280 */ -157, -157, -157, 1013, -157, 186, -157, 1020, -157, -157, - /* 290 */ -157, 1041, -157, -157, -157, 1050, -157, -157, -157, 1077, - /* 300 */ -157, -157, -157, 1080, -157, -157, -157, 1090, -157, -157, - /* 310 */ -157, 1099, -157, -157, -157, 1104, -157, -157, -157, -157, - /* 320 */ -157, -157, 1116, -157, -157, -157, 1132, -157, -157, -157, - /* 330 */ 1135, -157, -157, -157, 1139, -157, -157, -157, 1142, -157, - /* 340 */ -157, -157, 1156, -157, -157, 10515, 11870, -157, 10569, 11870, - /* 350 */ 189, 1122, -157, 204, -157, 10626, 11870, -157, -157, -157, - /* 360 */ 3253, -157, 10680, 11870, -157, 266, -157, -157, 1124, -157, - /* 370 */ -107, -157, -157, -157, -157, -157, -157, -157, 1073, -157, - /* 380 */ -157, -157, 16, 1154, -157, 1040, 1125, 1196, -157, -157, - /* 390 */ -157, -157, 292, 1277, -157, 1040, 1126, 1319, -157, -157, - /* 400 */ -157, -157, -157, -157, -157, 1130, 1400, -157, -157, 1133, - /* 410 */ 1442, -157, -157, 227, 1523, -157, 1040, 1136, 1565, -157, - /* 420 */ 310, 1646, -157, 1040, 1137, 1688, -157, 1040, 1152, 1769, - /* 430 */ -157, 353, 1811, -157, 1040, 1159, 1892, -157, -157, -157, - /* 440 */ -157, -157, 1165, 1934, -157, -157, 1166, 2015, -157, -157, - /* 450 */ 293, -157, -157, 1163, -157, -157, -157, -157, -157, -157, - /* 460 */ -157, -157, -157, -157, -157, 3287, -157, -157, -157, 3335, - /* 470 */ -157, -157, 3368, -157, -157, 3376, -157, -157, 380, -157, - /* 480 */ -157, 1171, -157, -157, 3410, -157, -157, 417, -157, -157, - /* 490 */ 429, -157, -157, 434, -157, -157, 464, -157, -157, 481, - /* 500 */ -157, -157, 499, -157, -157, 540, -157, -157, 552, -157, - /* 510 */ -157, 557, -157, -157, 587, -157, -157, -157, -157, -157, - /* 520 */ -157, -157, 3458, -157, 10739, 11870, -157, -157, -157, 3491, - /* 530 */ -157, 10796, 11870, -157, -157, 3499, -157, 10850, 11870, -157, - /* 540 */ -157, -157, -157, 10909, 11870, -157, -157, 1202, -157, -157, - /* 550 */ -157, -157, -157, -157, -157, -157, -157, 10966, 11870, -157, - /* 560 */ -157, -157, -157, 260, -157, -157, -157, -157, -157, -157, - /* 570 */ 308, -157, -157, -157, -157, -157, 335, -157, -157, -157, - /* 580 */ -157, -157, -157, 424, -157, -157, -157, -157, 458, -157, - /* 590 */ -157, -157, -157, 2057, -157, -157, -157, -157, -157, -157, - /* 600 */ -157, 3533, -157, 3581, -157, -157, -157, -157, -157, -157, - /* 610 */ -157, -157, 506, -157, -157, -157, 3614, -157, -157, -157, - /* 620 */ -157, -157, -157, -157, -157, -157, 547, -157, -157, -157, - /* 630 */ -157, -157, 581, -157, -157, -157, -157, -157, -157, -157, - /* 640 */ -157, -157, -157, -157, -157, -157, 1244, -157, -157, -157, - /* 650 */ -157, -157, 11020, 11870, -157, -157, -157, 1367, -157, 11079, - /* 660 */ 11870, -157, -157, -157, 11136, 11870, -157, -157, -157, 758, - /* 670 */ 322, -157, -157, -157, -157, 11190, 11870, -157, -157, -157, - /* 680 */ -157, -157, -143, -157, -157, -157, -157, -157, -157, -157, - /* 690 */ -157, -157, -157, -157, -157, -157, 11249, -157, 11870, -157, - /* 700 */ -157, -157, -157, 2184, -157, 11306, -157, 11870, -157, -157, - /* 710 */ 11360, -157, 11870, -157, -157, -157, 1359, -157, 690, 1374, - /* 720 */ -157, 1373, -157, -157, 723, -157, -157, -157, 174, -145, - /* 730 */ -157, 1343, -157, -157, 753, -157, 2307, -157, -157, -157, - /* 740 */ -157, -157, 2430, -157, -157, -157, -157, -157, -157, -157, - /* 750 */ -157, -157, -157, -157, -157, -157, -157, 686, 1343, -157, - /* 760 */ -157, 801, -157, 2553, -157, -157, -157, -157, -157, 2676, - /* 770 */ -157, -157, -157, -157, -157, -157, 686, -157, -157, 1385, - /* 780 */ -157, -157, -157, 1401, -157, -157, -157, -157, 1410, -157, - /* 790 */ -157, -157, 1417, -157, -157, -145, -157, -157, -157, 1436, - /* 800 */ -157, -157, 1439, -157, 905, 1440, -157, -17, -157, -157, - /* 810 */ -157, 467, 296, -157, 1343, -157, -157, 876, -157, 11419, - /* 820 */ -157, 11870, -157, -157, 2799, -157, 11476, -157, 11870, -157, - /* 830 */ -157, -157, -157, 11530, -157, 11870, -157, -157, 2922, -157, - /* 840 */ 11589, -157, 11870, -157, -157, 845, 1343, -157, -157, 924, - /* 850 */ -157, 11646, -157, 11870, -157, -157, 3045, -157, 11700, -157, - /* 860 */ 11870, -157, -157, -157, -157, 11759, -157, 11870, -157, -157, - /* 870 */ 3168, -157, 11816, -157, 11870, -157, -157, 959, 296, -157, - /* 880 */ 845, -157, 972, 1343, 1458, -157, 1461, 1459, -157, -157, - /* 890 */ -157, 965, -157, -157, -157, 1468, -157, -157, -157, -157, - /* 900 */ -157, -157, -157, 1343, 1484, -157, 1473, 1491, -157, -157, - /* 910 */ -157, -157, -157, 590, 428, 296, 972, 296, -157, 296, - /* 920 */ 1007, 1511, -157, -157, -157, 1515, -157, -157, 1517, -157, - /* 930 */ 1027, 1519, -157, 1059, 1521, -157, -157, -157, 1535, -157, - /* 940 */ -157, 1540, -157, 1068, 1543, -157, -157, -}; -static YYACTIONTYPE yy_default[] = { - /* 0 */ 1406, 1406, 1406, 949, 951, 952, 953, 954, 955, 956, - /* 10 */ 957, 1406, 1406, 958, 1406, 1406, 959, 1406, 960, 962, - /* 20 */ 1406, 963, 961, 1406, 1406, 1406, 1406, 1406, 1406, 1406, - /* 30 */ 964, 1406, 968, 1138, 1140, 1141, 1142, 1143, 1144, 1145, - /* 40 */ 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, - /* 50 */ 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1406, 1164, - /* 60 */ 1406, 1165, 1406, 1406, 1406, 1406, 1170, 1171, 1406, 1406, - /* 70 */ 1406, 1173, 1406, 1406, 1406, 1181, 1406, 1182, 1183, 1406, - /* 80 */ 1406, 1185, 1186, 1406, 1406, 1406, 1189, 1406, 1406, 1406, - /* 90 */ 1406, 1191, 1406, 1406, 1406, 1406, 1406, 1406, 1193, 1406, - /* 100 */ 1275, 1406, 1406, 1276, 1406, 1406, 1277, 1406, 1406, 1278, - /* 110 */ 1406, 1406, 1279, 1406, 1406, 1280, 1406, 1406, 1281, 1406, - /* 120 */ 1406, 1282, 1406, 1406, 1283, 1406, 1297, 1406, 1406, 1284, - /* 130 */ 1406, 1406, 1285, 1406, 1303, 1406, 1304, 1406, 1305, 1406, - /* 140 */ 1306, 1406, 1307, 1406, 1308, 1406, 1309, 1406, 1310, 1406, - /* 150 */ 1311, 1406, 1312, 1406, 1313, 1406, 1314, 1406, 1315, 1406, - /* 160 */ 1316, 1406, 1317, 1406, 1318, 1406, 1406, 1406, 1367, 1406, - /* 170 */ 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, - /* 180 */ 1134, 1135, 1136, 1137, 1406, 1294, 1406, 1406, 1295, 1406, - /* 190 */ 1406, 1406, 1296, 1322, 1406, 1300, 1406, 1371, 1322, 1406, - /* 200 */ 1406, 1406, 1406, 1319, 1320, 1406, 1321, 1323, 1324, 1325, - /* 210 */ 1326, 1327, 1328, 1329, 1330, 1331, 1406, 1383, 1332, 1406, - /* 220 */ 1333, 1406, 1406, 1334, 1406, 1335, 1406, 1336, 1406, 1406, - /* 230 */ 1406, 1406, 1406, 1406, 1346, 1347, 1406, 1406, 1406, 1406, - /* 240 */ 1406, 1350, 1351, 1364, 1365, 1366, 1370, 1406, 1406, 1406, - /* 250 */ 1406, 1088, 1090, 1406, 1106, 1384, 1385, 1386, 1387, 1388, - /* 260 */ 1389, 1390, 1406, 1406, 1391, 1392, 1406, 1384, 1386, 1406, - /* 270 */ 1393, 1406, 1394, 1406, 1395, 1406, 1406, 1397, 1402, 1398, - /* 280 */ 1396, 1406, 1091, 1406, 1107, 1406, 1092, 1406, 1108, 1406, - /* 290 */ 1093, 1406, 1109, 1406, 1096, 1406, 1112, 1406, 1097, 1406, - /* 300 */ 1113, 1406, 1100, 1406, 1116, 1406, 1101, 1406, 1117, 1406, - /* 310 */ 1104, 1406, 1120, 1406, 1105, 1406, 1121, 1406, 1406, 1122, - /* 320 */ 1406, 1094, 1406, 1110, 1406, 1095, 1406, 1111, 1406, 1098, - /* 330 */ 1406, 1114, 1406, 1099, 1406, 1115, 1406, 1102, 1406, 1118, - /* 340 */ 1406, 1103, 1406, 1119, 1406, 1406, 1406, 1406, 1406, 1406, - /* 350 */ 1195, 1196, 1197, 1406, 1406, 1406, 1406, 1199, 1406, 1406, - /* 360 */ 1406, 1406, 1406, 1406, 1206, 1406, 1406, 1212, 1406, 1213, - /* 370 */ 1406, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1406, 1222, - /* 380 */ 1274, 1406, 1406, 1406, 1223, 1406, 1406, 1406, 1226, 1406, - /* 390 */ 1238, 1406, 1406, 1406, 1227, 1406, 1406, 1406, 1228, 1236, - /* 400 */ 1237, 1239, 1240, 1406, 1406, 1406, 1406, 1224, 1406, 1406, - /* 410 */ 1406, 1225, 1406, 1406, 1406, 1229, 1406, 1406, 1406, 1230, - /* 420 */ 1406, 1406, 1231, 1406, 1406, 1406, 1232, 1406, 1406, 1406, - /* 430 */ 1233, 1406, 1406, 1234, 1406, 1406, 1406, 1235, 1241, 1242, - /* 440 */ 1406, 1406, 1406, 1406, 1243, 1406, 1406, 1406, 1244, 1214, - /* 450 */ 1406, 1406, 1246, 1406, 1247, 1249, 1248, 1364, 1250, 1366, - /* 460 */ 1251, 1365, 1252, 1320, 1253, 1406, 1406, 1254, 1255, 1406, - /* 470 */ 1406, 1256, 1406, 1406, 1257, 1406, 1406, 1258, 1406, 1406, - /* 480 */ 1259, 1406, 1270, 1272, 1406, 1273, 1271, 1406, 1406, 1260, - /* 490 */ 1406, 1406, 1261, 1406, 1406, 1262, 1406, 1406, 1263, 1406, - /* 500 */ 1406, 1264, 1406, 1406, 1265, 1406, 1406, 1266, 1406, 1406, - /* 510 */ 1267, 1406, 1406, 1268, 1406, 1406, 1269, 1406, 1404, 1405, - /* 520 */ 1139, 1207, 1406, 1406, 1406, 1406, 1208, 1406, 1406, 1406, - /* 530 */ 1406, 1406, 1406, 1209, 1210, 1406, 1406, 1406, 1406, 1211, - /* 540 */ 1200, 1406, 1406, 1406, 1406, 1202, 1201, 1406, 1203, 1205, - /* 550 */ 1204, 1198, 1194, 1376, 1375, 1089, 1406, 1406, 1406, 1374, - /* 560 */ 1373, 1406, 1406, 1406, 1352, 1406, 1353, 1406, 1406, 1406, - /* 570 */ 1406, 1354, 1406, 1355, 1369, 1337, 1406, 1338, 1406, 1339, - /* 580 */ 1406, 1406, 1340, 1406, 1341, 1406, 1342, 1406, 1406, 1406, - /* 590 */ 1343, 1378, 1406, 1406, 1383, 1380, 1381, 1379, 1406, 1344, - /* 600 */ 1345, 1406, 1372, 1406, 1377, 1348, 1406, 1349, 1301, 1406, - /* 610 */ 1406, 1406, 1406, 1356, 1406, 1357, 1406, 1368, 1406, 1302, - /* 620 */ 1406, 1358, 1359, 1406, 1406, 1298, 1406, 1406, 1360, 1361, - /* 630 */ 1406, 1299, 1406, 1406, 1362, 1363, 1293, 1292, 1291, 1290, - /* 640 */ 1289, 1288, 1287, 1286, 1403, 1406, 1406, 1406, 1192, 1190, - /* 650 */ 1188, 1406, 1406, 1187, 1184, 1175, 1177, 1406, 1406, 1406, - /* 660 */ 1406, 1180, 1179, 1406, 1406, 1406, 1172, 1174, 1178, 1166, - /* 670 */ 1167, 1406, 1406, 1169, 1406, 1406, 1406, 1176, 1168, 965, - /* 680 */ 1078, 1079, 1406, 1080, 1082, 1085, 1083, 1084, 1086, 1087, - /* 690 */ 1406, 1406, 1406, 1406, 1123, 1081, 1406, 970, 1406, 974, - /* 700 */ 971, 1406, 1406, 1406, 1406, 1406, 966, 1406, 969, 967, - /* 710 */ 1406, 972, 1406, 975, 973, 1406, 1406, 976, 1406, 1406, - /* 720 */ 977, 1406, 991, 993, 1406, 994, 1406, 995, 1406, 1406, - /* 730 */ 1028, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1058, 1062, - /* 740 */ 1406, 1406, 1406, 1406, 1059, 1063, 1066, 1068, 1069, 1070, - /* 750 */ 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1406, 1406, 1406, - /* 760 */ 1406, 1406, 1406, 1406, 1406, 1060, 1064, 1406, 1406, 1406, - /* 770 */ 1406, 1061, 1065, 1067, 1024, 1029, 1406, 1406, 1406, 1406, - /* 780 */ 1406, 1030, 1406, 1406, 1406, 1032, 1406, 1406, 1406, 1406, - /* 790 */ 1031, 1406, 1406, 1406, 1033, 1406, 1025, 992, 1406, 1406, - /* 800 */ 978, 1406, 1406, 979, 1406, 1406, 981, 1406, 989, 1406, - /* 810 */ 990, 1406, 1406, 1026, 1406, 1406, 1406, 1406, 1406, 1406, - /* 820 */ 1034, 1406, 1038, 1035, 1406, 1406, 1406, 1046, 1406, 1050, - /* 830 */ 1047, 1406, 1406, 1406, 1036, 1406, 1039, 1037, 1406, 1406, - /* 840 */ 1406, 1048, 1406, 1051, 1049, 1406, 1406, 1406, 1406, 1406, - /* 850 */ 1406, 1406, 1040, 1406, 1044, 1041, 1406, 1406, 1406, 1052, - /* 860 */ 1406, 1056, 1053, 1406, 1406, 1406, 1042, 1406, 1045, 1043, - /* 870 */ 1406, 1406, 1406, 1054, 1406, 1057, 1055, 1406, 1406, 1027, - /* 880 */ 1406, 1008, 1406, 1406, 1406, 1010, 1406, 1406, 1012, 1406, - /* 890 */ 1016, 1406, 1406, 1406, 1406, 1406, 1020, 1022, 1406, 1023, - /* 900 */ 1021, 1406, 1014, 1406, 1406, 1011, 1406, 1406, 1013, 1406, - /* 910 */ 1017, 1406, 1015, 1406, 1406, 1406, 1406, 1406, 1009, 1406, - /* 920 */ 1406, 1406, 980, 1406, 1406, 1406, 982, 1406, 1406, 983, - /* 930 */ 1406, 1406, 985, 1406, 1406, 984, 1406, 1406, 1406, 986, - /* 940 */ 1406, 1406, 987, 1406, 1406, 988, 950, -}; -#define YY_SZ_ACTTAB (sizeof(yy_action)/sizeof(yy_action[0])) - -/* The next table maps tokens into fallback tokens. If a construct -** like the following: -** -** %fallback ID X Y Z. -** -** appears in the grammer, then ID becomes a fallback token for X, Y, -** and Z. Whenever one of the tokens X, Y, or Z is input to the parser -** but it does not parse, the type of the token is changed to ID and -** the parse is retried before an error is thrown. -*/ -#ifdef YYFALLBACK -static const YYCODETYPE yyFallback[] = { -}; -#endif /* YYFALLBACK */ - -/* The following structure represents a single element of the -** parser's stack. Information stored includes: -** -** + The state number for the parser at this level of the stack. -** -** + The value of the token stored at this level of the stack. -** (In other words, the "major" token.) -** -** + The semantic value stored at this level of the stack. This is -** the information used by the action routines in the grammar. -** It is sometimes called the "minor" token. -*/ -struct yyStackEntry { - int stateno; /* The state-number */ - int major; /* The major token value. This is the code - ** number for the token at this stack level */ - YYMINORTYPE minor; /* The user-supplied minor token value. This - ** is the value of the token */ -}; -typedef struct yyStackEntry yyStackEntry; - -/* The state of the parser is completely contained in an instance of -** the following structure */ -struct yyParser { - int yyidx; /* Index of top element in stack */ - int yyerrcnt; /* Shifts left before out of the error */ - xx_ARG_SDECL /* A place to hold %extra_argument */ - yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ -}; -typedef struct yyParser yyParser; - -#ifndef NDEBUG -#include -static FILE *yyTraceFILE = 0; -static char *yyTracePrompt = 0; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* -** Turn parser tracing on by giving a stream to which to write the trace -** and a prompt to preface each trace message. Tracing is turned off -** by making either argument NULL -** -** Inputs: -**
    -**
  • A FILE* to which trace output should be written. -** If NULL, then tracing is turned off. -**
  • A prefix string written at the beginning of every -** line of trace output. If NULL, then tracing is -** turned off. -**
-** -** Outputs: -** None. -*/ -void xx_Trace(FILE *TraceFILE, char *zTracePrompt){ - yyTraceFILE = TraceFILE; - yyTracePrompt = zTracePrompt; - if( yyTraceFILE==0 ) yyTracePrompt = 0; - else if( yyTracePrompt==0 ) yyTraceFILE = 0; -} -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing shifts, the names of all terminals and nonterminals -** are required. The following table supplies these names */ -static const char *yyTokenName[] = { - "$", "INTERNAL", "PUBLIC", "PROTECTED", - "STATIC", "PRIVATE", "SCOPED", "COMMA", - "REQUIRE", "DOUBLEARROW", "QUESTION", "LIKELY", - "UNLIKELY", "OR", "AND", "INSTANCEOF", - "BITWISE_OR", "BITWISE_XOR", "BITWISE_SHIFTLEFT", "BITWISE_SHIFTRIGHT", - "EQUALS", "IDENTICAL", "LESS", "GREATER", - "LESSEQUAL", "GREATEREQUAL", "NOTIDENTICAL", "NOTEQUALS", - "ADD", "SUB", "CONCAT", "MUL", - "DIV", "MOD", "ISSET", "FETCH", - "EMPTY", "INCLUSIVE_RANGE", "EXCLUSIVE_RANGE", "TYPEOF", - "CLONE", "NEW", "NOT", "BITWISE_NOT", - "BITWISE_AND", "PARENTHESES_CLOSE", "SBRACKET_OPEN", "ARROW", - "NAMESPACE", "IDENTIFIER", "DOTCOMMA", "USE", - "AS", "FUNCTION", "PARENTHESES_OPEN", "BRACKET_OPEN", - "BRACKET_CLOSE", "INTERFACE", "EXTENDS", "CLASS", - "IMPLEMENTS", "ABSTRACT", "FINAL", "COMMENT", - "ASSIGN", "CONST", "CONSTANT", "INLINE", - "DEPRECATED", "VOID", "NULL", "THIS", - "SBRACKET_CLOSE", "TYPE_INTEGER", "TYPE_UINTEGER", "TYPE_LONG", - "TYPE_ULONG", "TYPE_CHAR", "TYPE_UCHAR", "TYPE_DOUBLE", - "TYPE_BOOL", "TYPE_STRING", "TYPE_ARRAY", "TYPE_VAR", - "TYPE_CALLABLE", "TYPE_RESOURCE", "TYPE_OBJECT", "BREAK", - "CONTINUE", "IF", "ELSE", "ELSEIF", - "SWITCH", "CASE", "COLON", "DEFAULT", - "LOOP", "WHILE", "DO", "TRY", - "CATCH", "FOR", "IN", "REVERSE", - "LET", "ADDASSIGN", "SUBASSIGN", "MULASSIGN", - "DIVASSIGN", "CONCATASSIGN", "MODASSIGN", "STRING", - "DOUBLECOLON", "INCR", "DECR", "ECHO", - "RETURN", "UNSET", "THROW", "PLUS", - "INTEGER", "ISTRING", "CHAR", "DOUBLE", - "TRUE", "FALSE", "CBLOCK", "error", - "program", "xx_language", "xx_top_statement_list", "xx_top_statement", - "xx_namespace_def", "xx_use_aliases", "xx_function_def", "xx_class_def", - "xx_interface_def", "xx_comment", "xx_cblock", "xx_use_aliases_list", - "xx_method_return_type", "xx_parameter_list", "xx_statement_list", "xx_interface_body", - "xx_implements_list", "xx_class_body", "xx_class_definition", "xx_implements", - "xx_interface_definition", "xx_class_properties_definition", "xx_class_consts_definition", "xx_class_methods_definition", - "xx_interface_methods_definition", "xx_class_property_definition", "xx_visibility_list", "xx_literal_expr", - "xx_class_property_shortcuts", "xx_class_property_shortcuts_list", "xx_class_property_shortcut", "xx_class_const_definition", - "xx_class_method_definition", "xx_interface_method_definition", "xx_visibility", "xx_method_return_type_list", - "xx_method_return_type_item", "xx_parameter_type", "xx_parameter_cast", "xx_parameter_cast_collection", - "xx_parameter", "xx_statement", "xx_let_statement", "xx_if_statement", - "xx_loop_statement", "xx_echo_statement", "xx_return_statement", "xx_require_statement", - "xx_fetch_statement", "xx_fcall_statement", "xx_mcall_statement", "xx_scall_statement", - "xx_unset_statement", "xx_throw_statement", "xx_declare_statement", "xx_break_statement", - "xx_continue_statement", "xx_while_statement", "xx_do_while_statement", "xx_try_catch_statement", - "xx_switch_statement", "xx_for_statement", "xx_empty_statement", "xx_eval_expr", - "xx_elseif_statements", "xx_elseif_statement", "xx_case_clauses", "xx_case_clause", - "xx_catch_statement_list", "xx_catch_statement", "xx_catch_classes_list", "xx_catch_class", - "xx_common_expr", "xx_let_assignments", "xx_let_assignment", "xx_assignment_operator", - "xx_assign_expr", "xx_array_offset_list", "xx_array_offset", "xx_index_expr", - "xx_echo_expressions", "xx_echo_expression", "xx_mcall_expr", "xx_fcall_expr", - "xx_scall_expr", "xx_fetch_expr", "xx_declare_variable_list", "xx_declare_variable", - "xx_array_list", "xx_call_parameters", "xx_call_parameter", "xx_array_item", - "xx_array_key", "xx_array_value", "xx_literal_array_list", "xx_literal_array_item", - "xx_literal_array_key", "xx_literal_array_value", -}; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing reduce actions, the names of all rules are required. -*/ -static const char *yyRuleName[] = { - /* 0 */ "program ::= xx_language", - /* 1 */ "xx_language ::= xx_top_statement_list", - /* 2 */ "xx_top_statement_list ::= xx_top_statement_list xx_top_statement", - /* 3 */ "xx_top_statement_list ::= xx_top_statement", - /* 4 */ "xx_top_statement ::= xx_namespace_def", - /* 5 */ "xx_top_statement ::= xx_use_aliases", - /* 6 */ "xx_top_statement ::= xx_function_def", - /* 7 */ "xx_top_statement ::= xx_class_def", - /* 8 */ "xx_top_statement ::= xx_interface_def", - /* 9 */ "xx_top_statement ::= xx_comment", - /* 10 */ "xx_top_statement ::= xx_cblock", - /* 11 */ "xx_namespace_def ::= NAMESPACE IDENTIFIER DOTCOMMA", - /* 12 */ "xx_namespace_def ::= USE xx_use_aliases_list DOTCOMMA", - /* 13 */ "xx_use_aliases_list ::= xx_use_aliases_list COMMA xx_use_aliases", - /* 14 */ "xx_use_aliases_list ::= xx_use_aliases", - /* 15 */ "xx_use_aliases ::= IDENTIFIER", - /* 16 */ "xx_use_aliases ::= IDENTIFIER AS IDENTIFIER", - /* 17 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 18 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 19 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 20 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 21 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 22 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 23 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 24 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA", - /* 25 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 26 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE DOTCOMMA", - /* 27 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 28 */ "xx_function_def ::= FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 29 */ "xx_interface_def ::= INTERFACE IDENTIFIER xx_interface_body", - /* 30 */ "xx_interface_def ::= INTERFACE IDENTIFIER EXTENDS xx_implements_list xx_interface_body", - /* 31 */ "xx_class_def ::= CLASS IDENTIFIER xx_class_body", - /* 32 */ "xx_class_def ::= CLASS IDENTIFIER EXTENDS IDENTIFIER xx_class_body", - /* 33 */ "xx_class_def ::= CLASS IDENTIFIER IMPLEMENTS xx_implements_list xx_class_body", - /* 34 */ "xx_class_def ::= CLASS IDENTIFIER EXTENDS IDENTIFIER IMPLEMENTS xx_implements_list xx_class_body", - /* 35 */ "xx_class_def ::= ABSTRACT CLASS IDENTIFIER xx_class_body", - /* 36 */ "xx_class_def ::= ABSTRACT CLASS IDENTIFIER EXTENDS IDENTIFIER xx_class_body", - /* 37 */ "xx_class_def ::= ABSTRACT CLASS IDENTIFIER IMPLEMENTS xx_implements_list xx_class_body", - /* 38 */ "xx_class_def ::= ABSTRACT CLASS IDENTIFIER EXTENDS IDENTIFIER IMPLEMENTS xx_implements_list xx_class_body", - /* 39 */ "xx_class_def ::= FINAL CLASS IDENTIFIER xx_class_body", - /* 40 */ "xx_class_def ::= FINAL CLASS IDENTIFIER EXTENDS IDENTIFIER xx_class_body", - /* 41 */ "xx_class_def ::= FINAL CLASS IDENTIFIER IMPLEMENTS xx_implements_list xx_class_body", - /* 42 */ "xx_class_body ::= BRACKET_OPEN BRACKET_CLOSE", - /* 43 */ "xx_class_body ::= BRACKET_OPEN xx_class_definition BRACKET_CLOSE", - /* 44 */ "xx_implements_list ::= xx_implements_list COMMA xx_implements", - /* 45 */ "xx_implements_list ::= xx_implements", - /* 46 */ "xx_implements ::= IDENTIFIER", - /* 47 */ "xx_interface_body ::= BRACKET_OPEN BRACKET_CLOSE", - /* 48 */ "xx_interface_body ::= BRACKET_OPEN xx_interface_definition BRACKET_CLOSE", - /* 49 */ "xx_class_definition ::= xx_class_properties_definition", - /* 50 */ "xx_class_definition ::= xx_class_consts_definition", - /* 51 */ "xx_class_definition ::= xx_class_methods_definition", - /* 52 */ "xx_class_definition ::= xx_class_properties_definition xx_class_methods_definition", - /* 53 */ "xx_class_definition ::= xx_class_properties_definition xx_class_consts_definition", - /* 54 */ "xx_class_definition ::= xx_class_consts_definition xx_class_properties_definition", - /* 55 */ "xx_class_definition ::= xx_class_consts_definition xx_class_methods_definition", - /* 56 */ "xx_class_definition ::= xx_class_properties_definition xx_class_consts_definition xx_class_methods_definition", - /* 57 */ "xx_class_definition ::= xx_class_consts_definition xx_class_properties_definition xx_class_methods_definition", - /* 58 */ "xx_interface_definition ::= xx_class_consts_definition", - /* 59 */ "xx_interface_definition ::= xx_interface_methods_definition", - /* 60 */ "xx_interface_definition ::= xx_class_consts_definition xx_interface_methods_definition", - /* 61 */ "xx_class_properties_definition ::= xx_class_properties_definition xx_class_property_definition", - /* 62 */ "xx_class_properties_definition ::= xx_class_property_definition", - /* 63 */ "xx_class_property_definition ::= COMMENT xx_visibility_list IDENTIFIER DOTCOMMA", - /* 64 */ "xx_class_property_definition ::= xx_visibility_list IDENTIFIER DOTCOMMA", - /* 65 */ "xx_class_property_definition ::= COMMENT xx_visibility_list IDENTIFIER ASSIGN xx_literal_expr DOTCOMMA", - /* 66 */ "xx_class_property_definition ::= xx_visibility_list IDENTIFIER ASSIGN xx_literal_expr DOTCOMMA", - /* 67 */ "xx_class_property_definition ::= COMMENT xx_visibility_list IDENTIFIER xx_class_property_shortcuts DOTCOMMA", - /* 68 */ "xx_class_property_definition ::= xx_visibility_list IDENTIFIER xx_class_property_shortcuts DOTCOMMA", - /* 69 */ "xx_class_property_definition ::= COMMENT xx_visibility_list IDENTIFIER ASSIGN xx_literal_expr xx_class_property_shortcuts DOTCOMMA", - /* 70 */ "xx_class_property_definition ::= xx_visibility_list IDENTIFIER ASSIGN xx_literal_expr xx_class_property_shortcuts DOTCOMMA", - /* 71 */ "xx_class_property_shortcuts ::= BRACKET_OPEN BRACKET_CLOSE", - /* 72 */ "xx_class_property_shortcuts ::= BRACKET_OPEN xx_class_property_shortcuts_list BRACKET_CLOSE", - /* 73 */ "xx_class_property_shortcuts_list ::= xx_class_property_shortcuts_list COMMA xx_class_property_shortcut", - /* 74 */ "xx_class_property_shortcuts_list ::= xx_class_property_shortcut", - /* 75 */ "xx_class_property_shortcut ::= IDENTIFIER", - /* 76 */ "xx_class_property_shortcut ::= COMMENT IDENTIFIER", - /* 77 */ "xx_class_consts_definition ::= xx_class_consts_definition xx_class_const_definition", - /* 78 */ "xx_class_consts_definition ::= xx_class_const_definition", - /* 79 */ "xx_class_methods_definition ::= xx_class_methods_definition xx_class_method_definition", - /* 80 */ "xx_class_methods_definition ::= xx_class_method_definition", - /* 81 */ "xx_interface_methods_definition ::= xx_interface_methods_definition xx_interface_method_definition", - /* 82 */ "xx_interface_methods_definition ::= xx_interface_method_definition", - /* 83 */ "xx_class_const_definition ::= COMMENT CONST CONSTANT ASSIGN xx_literal_expr DOTCOMMA", - /* 84 */ "xx_class_const_definition ::= CONST CONSTANT ASSIGN xx_literal_expr DOTCOMMA", - /* 85 */ "xx_class_const_definition ::= COMMENT CONST IDENTIFIER ASSIGN xx_literal_expr DOTCOMMA", - /* 86 */ "xx_class_const_definition ::= CONST IDENTIFIER ASSIGN xx_literal_expr DOTCOMMA", - /* 87 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 88 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA", - /* 89 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 90 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE DOTCOMMA", - /* 91 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 92 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 93 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 94 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA", - /* 95 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 96 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE DOTCOMMA", - /* 97 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 98 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 99 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 100 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 101 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 102 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 103 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 104 */ "xx_class_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 105 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 106 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 107 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN BRACKET_CLOSE", - /* 108 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 109 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 110 */ "xx_class_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 111 */ "xx_interface_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 112 */ "xx_interface_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 113 */ "xx_interface_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 114 */ "xx_interface_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE ARROW xx_method_return_type DOTCOMMA", - /* 115 */ "xx_interface_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA", - /* 116 */ "xx_interface_method_definition ::= xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE DOTCOMMA", - /* 117 */ "xx_interface_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA", - /* 118 */ "xx_interface_method_definition ::= COMMENT xx_visibility_list FUNCTION IDENTIFIER PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE DOTCOMMA", - /* 119 */ "xx_visibility_list ::= xx_visibility_list xx_visibility", - /* 120 */ "xx_visibility_list ::= xx_visibility", - /* 121 */ "xx_visibility ::= INTERNAL", - /* 122 */ "xx_visibility ::= PUBLIC", - /* 123 */ "xx_visibility ::= PROTECTED", - /* 124 */ "xx_visibility ::= PRIVATE", - /* 125 */ "xx_visibility ::= STATIC", - /* 126 */ "xx_visibility ::= SCOPED", - /* 127 */ "xx_visibility ::= INLINE", - /* 128 */ "xx_visibility ::= DEPRECATED", - /* 129 */ "xx_visibility ::= ABSTRACT", - /* 130 */ "xx_visibility ::= FINAL", - /* 131 */ "xx_method_return_type ::= VOID", - /* 132 */ "xx_method_return_type ::= xx_method_return_type_list", - /* 133 */ "xx_method_return_type_list ::= xx_method_return_type_list BITWISE_OR xx_method_return_type_item", - /* 134 */ "xx_method_return_type_list ::= xx_method_return_type_item", - /* 135 */ "xx_method_return_type_item ::= xx_parameter_type", - /* 136 */ "xx_method_return_type_item ::= NULL", - /* 137 */ "xx_method_return_type_item ::= THIS", - /* 138 */ "xx_method_return_type_item ::= xx_parameter_type NOT", - /* 139 */ "xx_method_return_type_item ::= xx_parameter_cast", - /* 140 */ "xx_method_return_type_item ::= xx_parameter_cast_collection", - /* 141 */ "xx_parameter_list ::= xx_parameter_list COMMA xx_parameter", - /* 142 */ "xx_parameter_list ::= xx_parameter", - /* 143 */ "xx_parameter ::= IDENTIFIER", - /* 144 */ "xx_parameter ::= BITWISE_AND IDENTIFIER", - /* 145 */ "xx_parameter ::= CONST IDENTIFIER", - /* 146 */ "xx_parameter ::= CONST BITWISE_AND IDENTIFIER", - /* 147 */ "xx_parameter ::= xx_parameter_type IDENTIFIER", - /* 148 */ "xx_parameter ::= xx_parameter_type BITWISE_AND IDENTIFIER", - /* 149 */ "xx_parameter ::= CONST xx_parameter_type IDENTIFIER", - /* 150 */ "xx_parameter ::= CONST xx_parameter_type BITWISE_AND IDENTIFIER", - /* 151 */ "xx_parameter ::= xx_parameter_type NOT IDENTIFIER", - /* 152 */ "xx_parameter ::= xx_parameter_type NOT BITWISE_AND IDENTIFIER", - /* 153 */ "xx_parameter ::= CONST xx_parameter_type NOT IDENTIFIER", - /* 154 */ "xx_parameter ::= CONST xx_parameter_type NOT BITWISE_AND IDENTIFIER", - /* 155 */ "xx_parameter ::= xx_parameter_cast IDENTIFIER", - /* 156 */ "xx_parameter ::= xx_parameter_cast BITWISE_AND IDENTIFIER", - /* 157 */ "xx_parameter ::= CONST xx_parameter_cast IDENTIFIER", - /* 158 */ "xx_parameter ::= CONST xx_parameter_cast BITWISE_AND IDENTIFIER", - /* 159 */ "xx_parameter ::= IDENTIFIER ASSIGN xx_literal_expr", - /* 160 */ "xx_parameter ::= BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 161 */ "xx_parameter ::= CONST IDENTIFIER ASSIGN xx_literal_expr", - /* 162 */ "xx_parameter ::= CONST BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 163 */ "xx_parameter ::= xx_parameter_type IDENTIFIER ASSIGN xx_literal_expr", - /* 164 */ "xx_parameter ::= xx_parameter_type BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 165 */ "xx_parameter ::= CONST xx_parameter_type IDENTIFIER ASSIGN xx_literal_expr", - /* 166 */ "xx_parameter ::= CONST xx_parameter_type BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 167 */ "xx_parameter ::= xx_parameter_type NOT IDENTIFIER ASSIGN xx_literal_expr", - /* 168 */ "xx_parameter ::= xx_parameter_type NOT BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 169 */ "xx_parameter ::= CONST xx_parameter_type NOT IDENTIFIER ASSIGN xx_literal_expr", - /* 170 */ "xx_parameter ::= CONST xx_parameter_type NOT BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 171 */ "xx_parameter ::= xx_parameter_cast IDENTIFIER ASSIGN xx_literal_expr", - /* 172 */ "xx_parameter ::= xx_parameter_cast BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 173 */ "xx_parameter ::= CONST xx_parameter_cast IDENTIFIER ASSIGN xx_literal_expr", - /* 174 */ "xx_parameter ::= CONST xx_parameter_cast BITWISE_AND IDENTIFIER ASSIGN xx_literal_expr", - /* 175 */ "xx_parameter_cast ::= LESS IDENTIFIER GREATER", - /* 176 */ "xx_parameter_cast_collection ::= LESS IDENTIFIER SBRACKET_OPEN SBRACKET_CLOSE GREATER", - /* 177 */ "xx_parameter_type ::= TYPE_INTEGER", - /* 178 */ "xx_parameter_type ::= TYPE_UINTEGER", - /* 179 */ "xx_parameter_type ::= TYPE_LONG", - /* 180 */ "xx_parameter_type ::= TYPE_ULONG", - /* 181 */ "xx_parameter_type ::= TYPE_CHAR", - /* 182 */ "xx_parameter_type ::= TYPE_UCHAR", - /* 183 */ "xx_parameter_type ::= TYPE_DOUBLE", - /* 184 */ "xx_parameter_type ::= TYPE_BOOL", - /* 185 */ "xx_parameter_type ::= TYPE_STRING", - /* 186 */ "xx_parameter_type ::= TYPE_ARRAY", - /* 187 */ "xx_parameter_type ::= TYPE_VAR", - /* 188 */ "xx_parameter_type ::= TYPE_CALLABLE", - /* 189 */ "xx_parameter_type ::= TYPE_RESOURCE", - /* 190 */ "xx_parameter_type ::= TYPE_OBJECT", - /* 191 */ "xx_statement_list ::= xx_statement_list xx_statement", - /* 192 */ "xx_statement_list ::= xx_statement", - /* 193 */ "xx_statement ::= xx_cblock", - /* 194 */ "xx_statement ::= xx_let_statement", - /* 195 */ "xx_statement ::= xx_if_statement", - /* 196 */ "xx_statement ::= xx_loop_statement", - /* 197 */ "xx_statement ::= xx_echo_statement", - /* 198 */ "xx_statement ::= xx_return_statement", - /* 199 */ "xx_statement ::= xx_require_statement", - /* 200 */ "xx_statement ::= xx_fetch_statement", - /* 201 */ "xx_statement ::= xx_fcall_statement", - /* 202 */ "xx_statement ::= xx_mcall_statement", - /* 203 */ "xx_statement ::= xx_scall_statement", - /* 204 */ "xx_statement ::= xx_unset_statement", - /* 205 */ "xx_statement ::= xx_throw_statement", - /* 206 */ "xx_statement ::= xx_declare_statement", - /* 207 */ "xx_statement ::= xx_break_statement", - /* 208 */ "xx_statement ::= xx_continue_statement", - /* 209 */ "xx_statement ::= xx_while_statement", - /* 210 */ "xx_statement ::= xx_do_while_statement", - /* 211 */ "xx_statement ::= xx_try_catch_statement", - /* 212 */ "xx_statement ::= xx_switch_statement", - /* 213 */ "xx_statement ::= xx_for_statement", - /* 214 */ "xx_statement ::= xx_comment", - /* 215 */ "xx_statement ::= xx_empty_statement", - /* 216 */ "xx_empty_statement ::= DOTCOMMA", - /* 217 */ "xx_break_statement ::= BREAK DOTCOMMA", - /* 218 */ "xx_continue_statement ::= CONTINUE DOTCOMMA", - /* 219 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE", - /* 220 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE xx_elseif_statements", - /* 221 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE ELSE BRACKET_OPEN BRACKET_CLOSE", - /* 222 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE xx_elseif_statements ELSE BRACKET_OPEN BRACKET_CLOSE", - /* 223 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 224 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE xx_elseif_statements", - /* 225 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE ELSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 226 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE xx_elseif_statements ELSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 227 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE ELSE BRACKET_OPEN BRACKET_CLOSE", - /* 228 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE xx_elseif_statements ELSE BRACKET_OPEN BRACKET_CLOSE", - /* 229 */ "xx_if_statement ::= IF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE ELSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 230 */ "xx_elseif_statements ::= xx_elseif_statements xx_elseif_statement", - /* 231 */ "xx_elseif_statements ::= xx_elseif_statement", - /* 232 */ "xx_elseif_statement ::= ELSEIF xx_eval_expr BRACKET_OPEN BRACKET_CLOSE", - /* 233 */ "xx_elseif_statement ::= ELSEIF xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 234 */ "xx_switch_statement ::= SWITCH xx_eval_expr BRACKET_OPEN BRACKET_CLOSE", - /* 235 */ "xx_switch_statement ::= SWITCH xx_eval_expr BRACKET_OPEN xx_case_clauses BRACKET_CLOSE", - /* 236 */ "xx_case_clauses ::= xx_case_clauses xx_case_clause", - /* 237 */ "xx_case_clauses ::= xx_case_clause", - /* 238 */ "xx_case_clause ::= CASE xx_eval_expr COLON", - /* 239 */ "xx_case_clause ::= CASE xx_eval_expr COLON xx_statement_list", - /* 240 */ "xx_case_clause ::= DEFAULT COLON xx_statement_list", - /* 241 */ "xx_loop_statement ::= LOOP BRACKET_OPEN BRACKET_CLOSE", - /* 242 */ "xx_loop_statement ::= LOOP BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 243 */ "xx_while_statement ::= WHILE xx_eval_expr BRACKET_OPEN BRACKET_CLOSE", - /* 244 */ "xx_while_statement ::= WHILE xx_eval_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 245 */ "xx_do_while_statement ::= DO BRACKET_OPEN BRACKET_CLOSE WHILE xx_eval_expr DOTCOMMA", - /* 246 */ "xx_do_while_statement ::= DO BRACKET_OPEN xx_statement_list BRACKET_CLOSE WHILE xx_eval_expr DOTCOMMA", - /* 247 */ "xx_try_catch_statement ::= TRY BRACKET_OPEN BRACKET_CLOSE", - /* 248 */ "xx_try_catch_statement ::= TRY BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 249 */ "xx_try_catch_statement ::= TRY BRACKET_OPEN xx_statement_list BRACKET_CLOSE xx_catch_statement_list", - /* 250 */ "xx_catch_statement_list ::= xx_catch_statement_list xx_catch_statement", - /* 251 */ "xx_catch_statement_list ::= xx_catch_statement", - /* 252 */ "xx_catch_statement ::= CATCH xx_catch_classes_list BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 253 */ "xx_catch_statement ::= CATCH xx_catch_classes_list BRACKET_OPEN BRACKET_CLOSE", - /* 254 */ "xx_catch_statement ::= CATCH xx_catch_classes_list COMMA IDENTIFIER BRACKET_OPEN BRACKET_CLOSE", - /* 255 */ "xx_catch_statement ::= CATCH xx_catch_classes_list COMMA IDENTIFIER BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 256 */ "xx_catch_classes_list ::= xx_catch_classes_list BITWISE_OR xx_catch_class", - /* 257 */ "xx_catch_classes_list ::= xx_catch_class", - /* 258 */ "xx_catch_class ::= IDENTIFIER", - /* 259 */ "xx_for_statement ::= FOR IDENTIFIER IN xx_common_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 260 */ "xx_for_statement ::= FOR IDENTIFIER IN xx_common_expr BRACKET_OPEN BRACKET_CLOSE", - /* 261 */ "xx_for_statement ::= FOR IDENTIFIER IN REVERSE xx_common_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 262 */ "xx_for_statement ::= FOR IDENTIFIER COMMA IDENTIFIER IN xx_common_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 263 */ "xx_for_statement ::= FOR IDENTIFIER COMMA IDENTIFIER IN xx_common_expr BRACKET_OPEN BRACKET_CLOSE", - /* 264 */ "xx_for_statement ::= FOR IDENTIFIER COMMA IDENTIFIER IN REVERSE xx_common_expr BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 265 */ "xx_let_statement ::= LET xx_let_assignments DOTCOMMA", - /* 266 */ "xx_let_assignments ::= xx_let_assignments COMMA xx_let_assignment", - /* 267 */ "xx_let_assignments ::= xx_let_assignment", - /* 268 */ "xx_assignment_operator ::= ASSIGN", - /* 269 */ "xx_assignment_operator ::= ADDASSIGN", - /* 270 */ "xx_assignment_operator ::= SUBASSIGN", - /* 271 */ "xx_assignment_operator ::= MULASSIGN", - /* 272 */ "xx_assignment_operator ::= DIVASSIGN", - /* 273 */ "xx_assignment_operator ::= CONCATASSIGN", - /* 274 */ "xx_assignment_operator ::= MODASSIGN", - /* 275 */ "xx_let_assignment ::= IDENTIFIER xx_assignment_operator xx_assign_expr", - /* 276 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER xx_assignment_operator xx_assign_expr", - /* 277 */ "xx_let_assignment ::= IDENTIFIER ARROW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 278 */ "xx_let_assignment ::= IDENTIFIER ARROW BRACKET_OPEN STRING BRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 279 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 280 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER xx_array_offset_list xx_assignment_operator xx_assign_expr", - /* 281 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER xx_array_offset_list SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 282 */ "xx_let_assignment ::= IDENTIFIER DOUBLECOLON IDENTIFIER xx_assignment_operator xx_assign_expr", - /* 283 */ "xx_let_assignment ::= IDENTIFIER DOUBLECOLON IDENTIFIER SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 284 */ "xx_let_assignment ::= IDENTIFIER DOUBLECOLON IDENTIFIER xx_array_offset_list xx_assignment_operator xx_assign_expr", - /* 285 */ "xx_let_assignment ::= IDENTIFIER DOUBLECOLON IDENTIFIER xx_array_offset_list SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 286 */ "xx_let_assignment ::= IDENTIFIER SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 287 */ "xx_let_assignment ::= IDENTIFIER xx_array_offset_list xx_assignment_operator xx_assign_expr", - /* 288 */ "xx_let_assignment ::= IDENTIFIER xx_array_offset_list SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 289 */ "xx_array_offset_list ::= xx_array_offset_list xx_array_offset", - /* 290 */ "xx_array_offset_list ::= xx_array_offset", - /* 291 */ "xx_array_offset ::= SBRACKET_OPEN xx_index_expr SBRACKET_CLOSE", - /* 292 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER INCR", - /* 293 */ "xx_let_assignment ::= IDENTIFIER ARROW IDENTIFIER DECR", - /* 294 */ "xx_let_assignment ::= IDENTIFIER INCR", - /* 295 */ "xx_let_assignment ::= IDENTIFIER DECR", - /* 296 */ "xx_let_assignment ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 297 */ "xx_let_assignment ::= BRACKET_OPEN STRING BRACKET_CLOSE xx_assignment_operator xx_assign_expr", - /* 298 */ "xx_index_expr ::= xx_common_expr", - /* 299 */ "xx_echo_statement ::= ECHO xx_echo_expressions DOTCOMMA", - /* 300 */ "xx_echo_expressions ::= xx_echo_expressions COMMA xx_echo_expression", - /* 301 */ "xx_echo_expressions ::= xx_echo_expression", - /* 302 */ "xx_echo_expression ::= xx_common_expr", - /* 303 */ "xx_mcall_statement ::= xx_mcall_expr DOTCOMMA", - /* 304 */ "xx_fcall_statement ::= xx_fcall_expr DOTCOMMA", - /* 305 */ "xx_scall_statement ::= xx_scall_expr DOTCOMMA", - /* 306 */ "xx_fetch_statement ::= xx_fetch_expr DOTCOMMA", - /* 307 */ "xx_return_statement ::= RETURN xx_common_expr DOTCOMMA", - /* 308 */ "xx_return_statement ::= RETURN DOTCOMMA", - /* 309 */ "xx_require_statement ::= REQUIRE xx_common_expr DOTCOMMA", - /* 310 */ "xx_unset_statement ::= UNSET xx_common_expr DOTCOMMA", - /* 311 */ "xx_throw_statement ::= THROW xx_common_expr DOTCOMMA", - /* 312 */ "xx_declare_statement ::= TYPE_INTEGER xx_declare_variable_list DOTCOMMA", - /* 313 */ "xx_declare_statement ::= TYPE_UINTEGER xx_declare_variable_list DOTCOMMA", - /* 314 */ "xx_declare_statement ::= TYPE_CHAR xx_declare_variable_list DOTCOMMA", - /* 315 */ "xx_declare_statement ::= TYPE_UCHAR xx_declare_variable_list DOTCOMMA", - /* 316 */ "xx_declare_statement ::= TYPE_LONG xx_declare_variable_list DOTCOMMA", - /* 317 */ "xx_declare_statement ::= TYPE_ULONG xx_declare_variable_list DOTCOMMA", - /* 318 */ "xx_declare_statement ::= TYPE_DOUBLE xx_declare_variable_list DOTCOMMA", - /* 319 */ "xx_declare_statement ::= TYPE_STRING xx_declare_variable_list DOTCOMMA", - /* 320 */ "xx_declare_statement ::= TYPE_BOOL xx_declare_variable_list DOTCOMMA", - /* 321 */ "xx_declare_statement ::= TYPE_VAR xx_declare_variable_list DOTCOMMA", - /* 322 */ "xx_declare_statement ::= TYPE_ARRAY xx_declare_variable_list DOTCOMMA", - /* 323 */ "xx_declare_variable_list ::= xx_declare_variable_list COMMA xx_declare_variable", - /* 324 */ "xx_declare_variable_list ::= xx_declare_variable", - /* 325 */ "xx_declare_variable ::= IDENTIFIER", - /* 326 */ "xx_declare_variable ::= IDENTIFIER ASSIGN xx_common_expr", - /* 327 */ "xx_assign_expr ::= xx_common_expr", - /* 328 */ "xx_common_expr ::= BITWISE_AND xx_common_expr", - /* 329 */ "xx_common_expr ::= NOT xx_common_expr", - /* 330 */ "xx_common_expr ::= BITWISE_NOT xx_common_expr", - /* 331 */ "xx_common_expr ::= SUB xx_common_expr", - /* 332 */ "xx_common_expr ::= PLUS xx_common_expr", - /* 333 */ "xx_common_expr ::= ISSET xx_common_expr", - /* 334 */ "xx_common_expr ::= REQUIRE xx_common_expr", - /* 335 */ "xx_common_expr ::= CLONE xx_common_expr", - /* 336 */ "xx_common_expr ::= EMPTY xx_common_expr", - /* 337 */ "xx_common_expr ::= LIKELY xx_common_expr", - /* 338 */ "xx_common_expr ::= UNLIKELY xx_common_expr", - /* 339 */ "xx_common_expr ::= xx_common_expr EQUALS xx_common_expr", - /* 340 */ "xx_common_expr ::= xx_common_expr NOTEQUALS xx_common_expr", - /* 341 */ "xx_common_expr ::= xx_common_expr IDENTICAL xx_common_expr", - /* 342 */ "xx_common_expr ::= xx_common_expr NOTIDENTICAL xx_common_expr", - /* 343 */ "xx_common_expr ::= xx_common_expr LESS xx_common_expr", - /* 344 */ "xx_common_expr ::= xx_common_expr GREATER xx_common_expr", - /* 345 */ "xx_common_expr ::= xx_common_expr LESSEQUAL xx_common_expr", - /* 346 */ "xx_common_expr ::= xx_common_expr GREATEREQUAL xx_common_expr", - /* 347 */ "xx_common_expr ::= PARENTHESES_OPEN xx_common_expr PARENTHESES_CLOSE", - /* 348 */ "xx_common_expr ::= PARENTHESES_OPEN xx_parameter_type PARENTHESES_CLOSE xx_common_expr", - /* 349 */ "xx_common_expr ::= LESS IDENTIFIER GREATER xx_common_expr", - /* 350 */ "xx_common_expr ::= xx_common_expr ARROW IDENTIFIER", - /* 351 */ "xx_common_expr ::= xx_common_expr ARROW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE", - /* 352 */ "xx_common_expr ::= xx_common_expr ARROW BRACKET_OPEN STRING BRACKET_CLOSE", - /* 353 */ "xx_common_expr ::= IDENTIFIER DOUBLECOLON IDENTIFIER", - /* 354 */ "xx_common_expr ::= IDENTIFIER DOUBLECOLON CONSTANT", - /* 355 */ "xx_common_expr ::= xx_common_expr SBRACKET_OPEN xx_common_expr SBRACKET_CLOSE", - /* 356 */ "xx_common_expr ::= xx_common_expr ADD xx_common_expr", - /* 357 */ "xx_common_expr ::= xx_common_expr SUB xx_common_expr", - /* 358 */ "xx_common_expr ::= xx_common_expr MUL xx_common_expr", - /* 359 */ "xx_common_expr ::= xx_common_expr DIV xx_common_expr", - /* 360 */ "xx_common_expr ::= xx_common_expr MOD xx_common_expr", - /* 361 */ "xx_common_expr ::= xx_common_expr CONCAT xx_common_expr", - /* 362 */ "xx_common_expr ::= xx_common_expr AND xx_common_expr", - /* 363 */ "xx_common_expr ::= xx_common_expr OR xx_common_expr", - /* 364 */ "xx_common_expr ::= xx_common_expr BITWISE_OR xx_common_expr", - /* 365 */ "xx_common_expr ::= xx_common_expr BITWISE_AND xx_common_expr", - /* 366 */ "xx_common_expr ::= xx_common_expr BITWISE_XOR xx_common_expr", - /* 367 */ "xx_common_expr ::= xx_common_expr BITWISE_SHIFTLEFT xx_common_expr", - /* 368 */ "xx_common_expr ::= xx_common_expr BITWISE_SHIFTRIGHT xx_common_expr", - /* 369 */ "xx_common_expr ::= xx_common_expr INSTANCEOF xx_common_expr", - /* 370 */ "xx_common_expr ::= xx_common_expr INCLUSIVE_RANGE xx_common_expr", - /* 371 */ "xx_common_expr ::= xx_common_expr EXCLUSIVE_RANGE xx_common_expr", - /* 372 */ "xx_fetch_expr ::= FETCH IDENTIFIER COMMA xx_common_expr", - /* 373 */ "xx_common_expr ::= xx_fetch_expr", - /* 374 */ "xx_common_expr ::= TYPEOF xx_common_expr", - /* 375 */ "xx_common_expr ::= IDENTIFIER", - /* 376 */ "xx_common_expr ::= INTEGER", - /* 377 */ "xx_common_expr ::= STRING", - /* 378 */ "xx_common_expr ::= ISTRING", - /* 379 */ "xx_common_expr ::= CHAR", - /* 380 */ "xx_common_expr ::= DOUBLE", - /* 381 */ "xx_common_expr ::= NULL", - /* 382 */ "xx_common_expr ::= TRUE", - /* 383 */ "xx_common_expr ::= FALSE", - /* 384 */ "xx_common_expr ::= CONSTANT", - /* 385 */ "xx_common_expr ::= SBRACKET_OPEN SBRACKET_CLOSE", - /* 386 */ "xx_common_expr ::= SBRACKET_OPEN xx_array_list SBRACKET_CLOSE", - /* 387 */ "xx_common_expr ::= NEW STATIC", - /* 388 */ "xx_common_expr ::= NEW STATIC PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 389 */ "xx_common_expr ::= NEW STATIC PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 390 */ "xx_common_expr ::= NEW IDENTIFIER", - /* 391 */ "xx_common_expr ::= NEW IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 392 */ "xx_common_expr ::= NEW IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 393 */ "xx_common_expr ::= NEW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE", - /* 394 */ "xx_common_expr ::= NEW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 395 */ "xx_common_expr ::= NEW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 396 */ "xx_common_expr ::= NEW xx_parameter_type PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 397 */ "xx_fcall_expr ::= IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 398 */ "xx_fcall_expr ::= IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 399 */ "xx_fcall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 400 */ "xx_fcall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 401 */ "xx_scall_expr ::= IDENTIFIER DOUBLECOLON IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 402 */ "xx_scall_expr ::= IDENTIFIER DOUBLECOLON IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 403 */ "xx_scall_expr ::= STATIC DOUBLECOLON IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 404 */ "xx_scall_expr ::= STATIC DOUBLECOLON IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 405 */ "xx_scall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE DOUBLECOLON IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 406 */ "xx_scall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE DOUBLECOLON IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 407 */ "xx_scall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE DOUBLECOLON BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 408 */ "xx_scall_expr ::= BRACKET_OPEN IDENTIFIER BRACKET_CLOSE DOUBLECOLON BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 409 */ "xx_scall_expr ::= IDENTIFIER DOUBLECOLON BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 410 */ "xx_scall_expr ::= IDENTIFIER DOUBLECOLON BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 411 */ "xx_mcall_expr ::= xx_common_expr ARROW IDENTIFIER PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 412 */ "xx_mcall_expr ::= xx_common_expr ARROW IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 413 */ "xx_mcall_expr ::= xx_common_expr ARROW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 414 */ "xx_mcall_expr ::= xx_common_expr ARROW BRACKET_OPEN IDENTIFIER BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 415 */ "xx_mcall_expr ::= xx_common_expr ARROW BRACKET_OPEN STRING BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters PARENTHESES_CLOSE", - /* 416 */ "xx_mcall_expr ::= xx_common_expr ARROW BRACKET_OPEN STRING BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 417 */ "xx_common_expr ::= xx_mcall_expr", - /* 418 */ "xx_common_expr ::= xx_scall_expr", - /* 419 */ "xx_common_expr ::= xx_fcall_expr", - /* 420 */ "xx_common_expr ::= xx_common_expr QUESTION xx_common_expr COLON xx_common_expr", - /* 421 */ "xx_common_expr ::= xx_common_expr QUESTION COLON xx_common_expr", - /* 422 */ "xx_call_parameters ::= xx_call_parameters COMMA xx_call_parameter", - /* 423 */ "xx_call_parameters ::= xx_call_parameter", - /* 424 */ "xx_call_parameter ::= xx_common_expr", - /* 425 */ "xx_call_parameter ::= IDENTIFIER COLON xx_common_expr", - /* 426 */ "xx_common_expr ::= FUNCTION PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 427 */ "xx_common_expr ::= FUNCTION PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 428 */ "xx_common_expr ::= FUNCTION PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE", - /* 429 */ "xx_common_expr ::= FUNCTION PARENTHESES_OPEN xx_parameter_list PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list BRACKET_CLOSE", - /* 430 */ "xx_common_expr ::= IDENTIFIER DOUBLEARROW xx_common_expr", - /* 431 */ "xx_array_list ::= xx_array_list COMMA xx_array_item", - /* 432 */ "xx_array_list ::= xx_array_item", - /* 433 */ "xx_array_item ::= xx_array_key COLON xx_array_value", - /* 434 */ "xx_array_item ::= xx_array_value", - /* 435 */ "xx_array_key ::= xx_common_expr", - /* 436 */ "xx_array_value ::= xx_common_expr", - /* 437 */ "xx_literal_expr ::= INTEGER", - /* 438 */ "xx_literal_expr ::= CHAR", - /* 439 */ "xx_literal_expr ::= STRING", - /* 440 */ "xx_literal_expr ::= DOUBLE", - /* 441 */ "xx_literal_expr ::= NULL", - /* 442 */ "xx_literal_expr ::= FALSE", - /* 443 */ "xx_literal_expr ::= TRUE", - /* 444 */ "xx_literal_expr ::= IDENTIFIER DOUBLECOLON CONSTANT", - /* 445 */ "xx_literal_expr ::= CONSTANT", - /* 446 */ "xx_literal_expr ::= SBRACKET_OPEN SBRACKET_CLOSE", - /* 447 */ "xx_literal_expr ::= SBRACKET_OPEN xx_literal_array_list SBRACKET_CLOSE", - /* 448 */ "xx_literal_array_list ::= xx_literal_array_list COMMA xx_literal_array_item", - /* 449 */ "xx_literal_array_list ::= xx_literal_array_item", - /* 450 */ "xx_literal_array_item ::= xx_literal_array_key COLON xx_literal_array_value", - /* 451 */ "xx_literal_array_item ::= xx_literal_array_value", - /* 452 */ "xx_literal_array_key ::= IDENTIFIER", - /* 453 */ "xx_literal_array_key ::= STRING", - /* 454 */ "xx_literal_array_key ::= INTEGER", - /* 455 */ "xx_literal_array_value ::= xx_literal_expr", - /* 456 */ "xx_eval_expr ::= xx_common_expr", - /* 457 */ "xx_comment ::= COMMENT", - /* 458 */ "xx_cblock ::= CBLOCK", -}; -#endif /* NDEBUG */ - -/* -** This function returns the symbolic name associated with a token -** value. -*/ -const char *xx_TokenName(int tokenType){ -#ifndef NDEBUG - if( tokenType>0 && tokenType<(sizeof(yyTokenName)/sizeof(yyTokenName[0])) ){ - return yyTokenName[tokenType]; - }else{ - return "Unknown"; - } -#else - return ""; -#endif -} - -/* -** This function allocates a new parser. -** The only argument is a pointer to a function which works like -** malloc. -** -** Inputs: -** A pointer to the function used to allocate memory. -** -** Outputs: -** A pointer to a parser. This pointer is used in subsequent calls -** to xx_ and xx_Free. -*/ -void *xx_Alloc(void *(*mallocProc)(size_t)){ - yyParser *pParser; - pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); - if( pParser ){ - pParser->yyidx = -1; - } - return pParser; -} - -/* The following function deletes the value associated with a -** symbol. The symbol can be either a terminal or nonterminal. -** "yymajor" is the symbol code, and "yypminor" is a pointer to -** the value. -*/ -static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){ - switch( yymajor ){ - /* Here is inserted the actions which take place when a - ** terminal or non-terminal is destroyed. This can happen - ** when the symbol is popped from the stack during a - ** reduce or during error processing or when a parser is - ** being destroyed before it is finished parsing. - ** - ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used - ** inside the C code. - */ - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 24: - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 58: - case 59: - case 60: - case 61: - case 62: - case 63: - case 64: - case 65: - case 66: - case 67: - case 68: - case 69: - case 70: - case 71: - case 72: - case 73: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - case 80: - case 81: - case 82: - case 83: - case 84: - case 85: - case 86: - case 87: - case 88: - case 89: - case 90: - case 91: - case 92: - case 93: - case 94: - case 95: - case 96: - case 97: - case 98: - case 99: - case 100: - case 101: - case 102: - case 103: - case 104: - case 105: - case 106: - case 107: - case 108: - case 109: - case 110: - case 111: - case 112: - case 113: - case 114: - case 115: - case 116: - case 117: - case 118: - case 119: - case 120: - case 121: - case 122: - case 123: - case 124: - case 125: - case 126: -#line 93 "parser.php7.lemon" -{ - if ((yypminor->yy0)) { - if ((yypminor->yy0)->free_flag) { - efree((yypminor->yy0)->token); - } - } -} -#line 3718 "parser.php7.c" - break; - case 129: -#line 105 "parser.php7.lemon" -{ - //zval_ptr_dtor((yypminor->yy250)); - //efree((yypminor->yy250)); -} -#line 3726 "parser.php7.c" - break; - default: break; /* If no destructor action specified: do nothing */ - } -} - -/* -** Pop the parser's stack once. -** -** If there is a destructor routine associated with the token which -** is popped from the stack, then call it. -** -** Return the major token number for the symbol popped. -*/ -static int yy_pop_parser_stack(yyParser *pParser){ - YYCODETYPE yymajor; - yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; - - if( pParser->yyidx<0 ) return 0; -#ifndef NDEBUG - if( yyTraceFILE && pParser->yyidx>=0 ){ - fprintf(yyTraceFILE,"%sPopping %s\n", - yyTracePrompt, - yyTokenName[yytos->major]); - } -#endif - yymajor = yytos->major; - yy_destructor( yymajor, &yytos->minor); - pParser->yyidx--; - return yymajor; -} - -/* -** Deallocate and destroy a parser. Destructors are all called for -** all stack elements before shutting the parser down. -** -** Inputs: -**
    -**
  • A pointer to the parser. This should be a pointer -** obtained from xx_Alloc. -**
  • A pointer to a function used to reclaim memory obtained -** from malloc. -**
-*/ -void xx_Free( - void *p, /* The parser to be deleted */ - void (*freeProc)(void*) /* Function used to reclaim memory */ -){ - yyParser *pParser = (yyParser*)p; - if( pParser==0 ) return; - while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser); - (*freeProc)((void*)pParser); -} - -/* -** Find the appropriate action for a parser given the terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_shift_action( - yyParser *pParser, /* The parser */ - int iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - /* if( pParser->yyidx<0 ) return YY_NO_ACTION; */ - i = yy_shift_ofst[stateno]; - if( i==YY_SHIFT_USE_DFLT ){ - return yy_default[stateno]; - } - if( iLookAhead==YYNOCODE ){ - return YY_NO_ACTION; - } - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ -#ifdef YYFALLBACK - int iFallback; /* Fallback token */ - if( iLookAhead %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); - } -#endif - return yy_find_shift_action(pParser, iFallback); - } -#endif - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Find the appropriate action for a parser given the non-terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_reduce_action( - yyParser *pParser, /* The parser */ - int iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - i = yy_reduce_ofst[stateno]; - if( i==YY_REDUCE_USE_DFLT ){ - return yy_default[stateno]; - } - if( iLookAhead==YYNOCODE ){ - return YY_NO_ACTION; - } - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Perform a shift action. -*/ -static void yy_shift( - yyParser *yypParser, /* The parser to be shifted */ - int yyNewState, /* The new state to shift in */ - int yyMajor, /* The major token to shift in */ - YYMINORTYPE *yypMinor /* Pointer ot the minor token to shift in */ -){ - yyStackEntry *yytos; - yypParser->yyidx++; - if( yypParser->yyidx>=YYSTACKDEPTH ){ - xx_ARG_FETCH; - yypParser->yyidx--; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will execute if the parser - ** stack every overflows */ - xx_ARG_STORE; /* Suppress warning about unused %extra_argument var */ - return; - } - yytos = &yypParser->yystack[yypParser->yyidx]; - yytos->stateno = yyNewState; - yytos->major = yyMajor; - yytos->minor = *yypMinor; -#ifndef NDEBUG - if( yyTraceFILE && yypParser->yyidx>0 ){ - int i; - fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState); - fprintf(yyTraceFILE,"%sStack:",yyTracePrompt); - for(i=1; i<=yypParser->yyidx; i++) - fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); - fprintf(yyTraceFILE,"\n"); - } -#endif -} - -/* The following table contains information about every rule that -** is used during the reduce. -*/ -static struct { - YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ - unsigned char nrhs; /* Number of right-hand side symbols in the rule */ -} yyRuleInfo[] = { - { 128, 1 }, - { 129, 1 }, - { 130, 2 }, - { 130, 1 }, - { 131, 1 }, - { 131, 1 }, - { 131, 1 }, - { 131, 1 }, - { 131, 1 }, - { 131, 1 }, - { 131, 1 }, - { 132, 3 }, - { 132, 3 }, - { 139, 3 }, - { 139, 1 }, - { 133, 1 }, - { 133, 3 }, - { 134, 8 }, - { 134, 7 }, - { 134, 9 }, - { 134, 8 }, - { 134, 9 }, - { 134, 10 }, - { 134, 6 }, - { 134, 5 }, - { 134, 7 }, - { 134, 6 }, - { 134, 7 }, - { 134, 8 }, - { 136, 3 }, - { 136, 5 }, - { 135, 3 }, - { 135, 5 }, - { 135, 5 }, - { 135, 7 }, - { 135, 4 }, - { 135, 6 }, - { 135, 6 }, - { 135, 8 }, - { 135, 4 }, - { 135, 6 }, - { 135, 6 }, - { 145, 2 }, - { 145, 3 }, - { 144, 3 }, - { 144, 1 }, - { 147, 1 }, - { 143, 2 }, - { 143, 3 }, - { 146, 1 }, - { 146, 1 }, - { 146, 1 }, - { 146, 2 }, - { 146, 2 }, - { 146, 2 }, - { 146, 2 }, - { 146, 3 }, - { 146, 3 }, - { 148, 1 }, - { 148, 1 }, - { 148, 2 }, - { 149, 2 }, - { 149, 1 }, - { 153, 4 }, - { 153, 3 }, - { 153, 6 }, - { 153, 5 }, - { 153, 5 }, - { 153, 4 }, - { 153, 7 }, - { 153, 6 }, - { 156, 2 }, - { 156, 3 }, - { 157, 3 }, - { 157, 1 }, - { 158, 1 }, - { 158, 2 }, - { 150, 2 }, - { 150, 1 }, - { 151, 2 }, - { 151, 1 }, - { 152, 2 }, - { 152, 1 }, - { 159, 6 }, - { 159, 5 }, - { 159, 6 }, - { 159, 5 }, - { 160, 7 }, - { 160, 6 }, - { 160, 8 }, - { 160, 7 }, - { 160, 8 }, - { 160, 9 }, - { 160, 8 }, - { 160, 7 }, - { 160, 9 }, - { 160, 8 }, - { 160, 9 }, - { 160, 10 }, - { 160, 9 }, - { 160, 8 }, - { 160, 10 }, - { 160, 9 }, - { 160, 10 }, - { 160, 11 }, - { 160, 10 }, - { 160, 9 }, - { 160, 11 }, - { 160, 10 }, - { 160, 11 }, - { 160, 12 }, - { 161, 8 }, - { 161, 9 }, - { 161, 9 }, - { 161, 10 }, - { 161, 6 }, - { 161, 7 }, - { 161, 7 }, - { 161, 8 }, - { 154, 2 }, - { 154, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 162, 1 }, - { 140, 1 }, - { 140, 1 }, - { 163, 3 }, - { 163, 1 }, - { 164, 1 }, - { 164, 1 }, - { 164, 1 }, - { 164, 2 }, - { 164, 1 }, - { 164, 1 }, - { 141, 3 }, - { 141, 1 }, - { 168, 1 }, - { 168, 2 }, - { 168, 2 }, - { 168, 3 }, - { 168, 2 }, - { 168, 3 }, - { 168, 3 }, - { 168, 4 }, - { 168, 3 }, - { 168, 4 }, - { 168, 4 }, - { 168, 5 }, - { 168, 2 }, - { 168, 3 }, - { 168, 3 }, - { 168, 4 }, - { 168, 3 }, - { 168, 4 }, - { 168, 4 }, - { 168, 5 }, - { 168, 4 }, - { 168, 5 }, - { 168, 5 }, - { 168, 6 }, - { 168, 5 }, - { 168, 6 }, - { 168, 6 }, - { 168, 7 }, - { 168, 4 }, - { 168, 5 }, - { 168, 5 }, - { 168, 6 }, - { 166, 3 }, - { 167, 5 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 165, 1 }, - { 142, 2 }, - { 142, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 169, 1 }, - { 190, 1 }, - { 183, 2 }, - { 184, 2 }, - { 171, 4 }, - { 171, 5 }, - { 171, 7 }, - { 171, 8 }, - { 171, 5 }, - { 171, 6 }, - { 171, 9 }, - { 171, 10 }, - { 171, 8 }, - { 171, 9 }, - { 171, 8 }, - { 192, 2 }, - { 192, 1 }, - { 193, 4 }, - { 193, 5 }, - { 188, 4 }, - { 188, 5 }, - { 194, 2 }, - { 194, 1 }, - { 195, 3 }, - { 195, 4 }, - { 195, 3 }, - { 172, 3 }, - { 172, 4 }, - { 185, 4 }, - { 185, 5 }, - { 186, 6 }, - { 186, 7 }, - { 187, 3 }, - { 187, 4 }, - { 187, 5 }, - { 196, 2 }, - { 196, 1 }, - { 197, 5 }, - { 197, 4 }, - { 197, 6 }, - { 197, 7 }, - { 198, 3 }, - { 198, 1 }, - { 199, 1 }, - { 189, 7 }, - { 189, 6 }, - { 189, 8 }, - { 189, 9 }, - { 189, 8 }, - { 189, 10 }, - { 170, 3 }, - { 201, 3 }, - { 201, 1 }, - { 203, 1 }, - { 203, 1 }, - { 203, 1 }, - { 203, 1 }, - { 203, 1 }, - { 203, 1 }, - { 203, 1 }, - { 202, 3 }, - { 202, 5 }, - { 202, 7 }, - { 202, 7 }, - { 202, 7 }, - { 202, 6 }, - { 202, 8 }, - { 202, 5 }, - { 202, 7 }, - { 202, 6 }, - { 202, 8 }, - { 202, 5 }, - { 202, 4 }, - { 202, 6 }, - { 205, 2 }, - { 205, 1 }, - { 206, 3 }, - { 202, 4 }, - { 202, 4 }, - { 202, 2 }, - { 202, 2 }, - { 202, 5 }, - { 202, 5 }, - { 207, 1 }, - { 173, 3 }, - { 208, 3 }, - { 208, 1 }, - { 209, 1 }, - { 178, 2 }, - { 177, 2 }, - { 179, 2 }, - { 176, 2 }, - { 174, 3 }, - { 174, 2 }, - { 175, 3 }, - { 180, 3 }, - { 181, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 182, 3 }, - { 214, 3 }, - { 214, 1 }, - { 215, 1 }, - { 215, 3 }, - { 204, 1 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 2 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 4 }, - { 200, 4 }, - { 200, 3 }, - { 200, 5 }, - { 200, 5 }, - { 200, 3 }, - { 200, 3 }, - { 200, 4 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 200, 3 }, - { 213, 4 }, - { 200, 1 }, - { 200, 2 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 2 }, - { 200, 3 }, - { 200, 2 }, - { 200, 4 }, - { 200, 5 }, - { 200, 2 }, - { 200, 4 }, - { 200, 5 }, - { 200, 4 }, - { 200, 6 }, - { 200, 7 }, - { 200, 5 }, - { 211, 4 }, - { 211, 3 }, - { 211, 6 }, - { 211, 5 }, - { 212, 5 }, - { 212, 6 }, - { 212, 6 }, - { 212, 5 }, - { 212, 7 }, - { 212, 8 }, - { 212, 9 }, - { 212, 10 }, - { 212, 7 }, - { 212, 8 }, - { 210, 6 }, - { 210, 5 }, - { 210, 8 }, - { 210, 7 }, - { 210, 8 }, - { 210, 7 }, - { 200, 1 }, - { 200, 1 }, - { 200, 1 }, - { 200, 5 }, - { 200, 4 }, - { 217, 3 }, - { 217, 1 }, - { 218, 1 }, - { 218, 3 }, - { 200, 5 }, - { 200, 6 }, - { 200, 6 }, - { 200, 7 }, - { 200, 3 }, - { 216, 3 }, - { 216, 1 }, - { 219, 3 }, - { 219, 1 }, - { 220, 1 }, - { 221, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 3 }, - { 155, 1 }, - { 155, 2 }, - { 155, 3 }, - { 222, 3 }, - { 222, 1 }, - { 223, 3 }, - { 223, 1 }, - { 224, 1 }, - { 224, 1 }, - { 224, 1 }, - { 225, 1 }, - { 191, 1 }, - { 137, 1 }, - { 138, 1 }, -}; - -static void yy_accept(yyParser*); /* Forward Declaration */ - -/* -** Perform a reduce action and the shift that must immediately -** follow the reduce. -*/ -static void yy_reduce( - yyParser *yypParser, /* The parser */ - int yyruleno /* Number of the rule by which to reduce */ -){ - int yygoto; /* The next state */ - int yyact; /* The next action */ - YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ - yyStackEntry *yymsp; /* The top of the parser's stack */ - int yysize; /* Amount to pop the stack */ - xx_ARG_FETCH; - yymsp = &yypParser->yystack[yypParser->yyidx]; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno>=0 - && yyruleno - ** { ... } // User supplied code - ** #line - ** break; - */ - case 0: -#line 101 "parser.php7.lemon" -{ - status->ret = yymsp[0].minor.yy250; -} -#line 4402 "parser.php7.c" - break; - case 1: - case 4: - case 5: - case 7: - case 8: - case 9: - case 10: - case 193: - case 194: - case 195: - case 196: - case 197: - case 198: - case 199: - case 200: - case 201: - case 202: - case 203: - case 204: - case 205: - case 206: - case 207: - case 208: - case 209: - case 210: - case 211: - case 212: - case 213: - case 214: - case 215: - case 298: - case 302: - case 327: - case 373: - case 417: - case 418: - case 419: - case 435: - case 436: - case 455: - case 456: -#line 110 "parser.php7.lemon" -{ - yygotominor.yy250 = yymsp[0].minor.yy250; -} -#line 4449 "parser.php7.c" - break; - case 2: - case 61: - case 77: - case 79: - case 81: - case 119: - case 191: - case 230: - case 236: - case 250: - case 289: -#line 114 "parser.php7.lemon" -{ - xx_ret_list(&yygotominor.yy250, &yymsp[-1].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); -} -#line 4466 "parser.php7.c" - break; - case 3: - case 14: - case 45: - case 62: - case 74: - case 78: - case 80: - case 82: - case 120: - case 134: - case 142: - case 192: - case 231: - case 237: - case 251: - case 257: - case 267: - case 290: - case 301: - case 324: - case 423: - case 432: - case 449: -#line 118 "parser.php7.lemon" -{ - xx_ret_list(&yygotominor.yy250, NULL, &yymsp[0].minor.yy250, status->scanner_state); -} -#line 4495 "parser.php7.c" - break; - case 6: -#line 130 "parser.php7.lemon" -{ - yygotominor.yy250 = yymsp[0].minor.yy250; -} -#line 4502 "parser.php7.c" - break; - case 11: -#line 150 "parser.php7.lemon" -{ - xx_ret_namespace(&yygotominor.yy250, yymsp[-1].minor.yy0, status->scanner_state); - yy_destructor(48,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4511 "parser.php7.c" - break; - case 12: -#line 154 "parser.php7.lemon" -{ - xx_ret_use_aliases(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(51,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4520 "parser.php7.c" - break; - case 13: - case 44: - case 73: - case 141: - case 266: - case 300: - case 323: - case 422: - case 431: - case 448: -#line 158 "parser.php7.lemon" -{ - xx_ret_list(&yygotominor.yy250, &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(7,&yymsp[-1].minor); -} -#line 4537 "parser.php7.c" - break; - case 15: -#line 166 "parser.php7.lemon" -{ - xx_ret_use_aliases_item(&yygotominor.yy250, yymsp[0].minor.yy0, NULL, status->scanner_state); -} -#line 4544 "parser.php7.c" - break; - case 16: -#line 170 "parser.php7.lemon" -{ - xx_ret_use_aliases_item(&yygotominor.yy250, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, status->scanner_state); - yy_destructor(52,&yymsp[-1].minor); -} -#line 4552 "parser.php7.c" - break; - case 17: -#line 177 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-6].minor.yy0, NULL, NULL, NULL, &yymsp[-2].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4565 "parser.php7.c" - break; - case 18: -#line 182 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-5].minor.yy0, NULL, NULL, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4577 "parser.php7.c" - break; - case 19: -#line 187 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-7].minor.yy0, &yymsp[-5].minor.yy250, NULL, NULL, &yymsp[-2].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4590 "parser.php7.c" - break; - case 20: -#line 192 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-6].minor.yy0, &yymsp[-4].minor.yy250, NULL, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4602 "parser.php7.c" - break; - case 21: -#line 197 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-7].minor.yy0, NULL, &yymsp[-1].minor.yy250, NULL, &yymsp[-3].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4615 "parser.php7.c" - break; - case 22: -#line 202 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-8].minor.yy0, &yymsp[-6].minor.yy250, &yymsp[-1].minor.yy250, NULL, &yymsp[-3].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-9].minor); - yy_destructor(54,&yymsp[-7].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4628 "parser.php7.c" - break; - case 23: -#line 207 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-4].minor.yy0, NULL, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4640 "parser.php7.c" - break; - case 24: -#line 212 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-3].minor.yy0, NULL, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4651 "parser.php7.c" - break; - case 25: -#line 217 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-5].minor.yy0, &yymsp[-3].minor.yy250, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4663 "parser.php7.c" - break; - case 26: -#line 222 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-4].minor.yy0, &yymsp[-2].minor.yy250, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4674 "parser.php7.c" - break; - case 27: -#line 227 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-5].minor.yy0, NULL, &yymsp[-1].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4686 "parser.php7.c" - break; - case 28: -#line 232 "parser.php7.lemon" -{ - xx_ret_function(&yygotominor.yy250, yymsp[-6].minor.yy0, &yymsp[-4].minor.yy250, &yymsp[-1].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4698 "parser.php7.c" - break; - case 29: -#line 236 "parser.php7.lemon" -{ - xx_ret_interface(&yygotominor.yy250, yymsp[-1].minor.yy0, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(57,&yymsp[-2].minor); -} -#line 4706 "parser.php7.c" - break; - case 30: -#line 240 "parser.php7.lemon" -{ - xx_ret_interface(&yygotominor.yy250, yymsp[-3].minor.yy0, &yymsp[0].minor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(57,&yymsp[-4].minor); - yy_destructor(58,&yymsp[-2].minor); -} -#line 4715 "parser.php7.c" - break; - case 31: -#line 244 "parser.php7.lemon" -{ - xx_ret_class(&yygotominor.yy250, yymsp[-1].minor.yy0, &yymsp[0].minor.yy250, 0, 0, NULL, NULL, status->scanner_state); - yy_destructor(59,&yymsp[-2].minor); -} -#line 4723 "parser.php7.c" - break; - case 32: -#line 248 "parser.php7.lemon" -{ - xx_ret_class(&yygotominor.yy250, yymsp[-3].minor.yy0, &yymsp[0].minor.yy250, 0, 0, yymsp[-1].minor.yy0, NULL, status->scanner_state); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(58,&yymsp[-2].minor); -} -#line 4732 "parser.php7.c" - break; - case 33: -#line 252 "parser.php7.lemon" -{ - xx_ret_class(&yygotominor.yy250, yymsp[-3].minor.yy0, &yymsp[0].minor.yy250, 0, 0, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(60,&yymsp[-2].minor); -} -#line 4741 "parser.php7.c" - break; - case 34: -#line 256 "parser.php7.lemon" -{ - xx_ret_class(&yygotominor.yy250, yymsp[-5].minor.yy0, &yymsp[0].minor.yy250, 0, 0, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(59,&yymsp[-6].minor); - yy_destructor(58,&yymsp[-4].minor); - yy_destructor(60,&yymsp[-2].minor); -} -#line 4751 "parser.php7.c" - break; - case 35: -#line 260 "parser.php7.lemon" -{ - xx_ret_class(&yygotominor.yy250, yymsp[-1].minor.yy0, &yymsp[0].minor.yy250, 1, 0, NULL, NULL, status->scanner_state); - yy_destructor(61,&yymsp[-3].minor); - yy_destructor(59,&yymsp[-2].minor); -} -#line 4760 "parser.php7.c" - break; - case 36: -#line 264 "parser.php7.lemon" -{ - xx_ret_class(&yygotominor.yy250, yymsp[-3].minor.yy0, &yymsp[0].minor.yy250, 1, 0, yymsp[-1].minor.yy0, NULL, status->scanner_state); - yy_destructor(61,&yymsp[-5].minor); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(58,&yymsp[-2].minor); -} -#line 4770 "parser.php7.c" - break; - case 37: -#line 268 "parser.php7.lemon" -{ - xx_ret_class(&yygotominor.yy250, yymsp[-3].minor.yy0, &yymsp[0].minor.yy250, 1, 0, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(61,&yymsp[-5].minor); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(60,&yymsp[-2].minor); -} -#line 4780 "parser.php7.c" - break; - case 38: -#line 272 "parser.php7.lemon" -{ - xx_ret_class(&yygotominor.yy250, yymsp[-5].minor.yy0, &yymsp[0].minor.yy250, 1, 0, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(61,&yymsp[-7].minor); - yy_destructor(59,&yymsp[-6].minor); - yy_destructor(58,&yymsp[-4].minor); - yy_destructor(60,&yymsp[-2].minor); -} -#line 4791 "parser.php7.c" - break; - case 39: -#line 276 "parser.php7.lemon" -{ - xx_ret_class(&yygotominor.yy250, yymsp[-1].minor.yy0, &yymsp[0].minor.yy250, 0, 1, NULL, NULL, status->scanner_state); - yy_destructor(62,&yymsp[-3].minor); - yy_destructor(59,&yymsp[-2].minor); -} -#line 4800 "parser.php7.c" - break; - case 40: -#line 280 "parser.php7.lemon" -{ - xx_ret_class(&yygotominor.yy250, yymsp[-3].minor.yy0, &yymsp[0].minor.yy250, 0, 1, yymsp[-1].minor.yy0, NULL, status->scanner_state); - yy_destructor(62,&yymsp[-5].minor); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(58,&yymsp[-2].minor); -} -#line 4810 "parser.php7.c" - break; - case 41: -#line 284 "parser.php7.lemon" -{ - xx_ret_class(&yygotominor.yy250, yymsp[-3].minor.yy0, &yymsp[0].minor.yy250, 0, 1, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(62,&yymsp[-5].minor); - yy_destructor(59,&yymsp[-4].minor); - yy_destructor(60,&yymsp[-2].minor); -} -#line 4820 "parser.php7.c" - break; - case 42: - case 47: - case 71: -#line 288 "parser.php7.lemon" -{ - ZVAL_UNDEF(&yygotominor.yy250); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4831 "parser.php7.c" - break; - case 43: - case 72: -#line 292 "parser.php7.lemon" -{ - yygotominor.yy250 = yymsp[-1].minor.yy250; - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4841 "parser.php7.c" - break; - case 46: - case 258: - case 375: - case 452: -#line 304 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_IDENTIFIER, yymsp[0].minor.yy0, status->scanner_state); -} -#line 4851 "parser.php7.c" - break; - case 48: -#line 312 "parser.php7.lemon" -{ - yygotominor.yy250 = yymsp[-1].minor.yy250; - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 4860 "parser.php7.c" - break; - case 49: -#line 316 "parser.php7.lemon" -{ - xx_ret_class_definition(&yygotominor.yy250, &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); -} -#line 4867 "parser.php7.c" - break; - case 50: -#line 320 "parser.php7.lemon" -{ - xx_ret_class_definition(&yygotominor.yy250, NULL, NULL, &yymsp[0].minor.yy250, status->scanner_state); -} -#line 4874 "parser.php7.c" - break; - case 51: -#line 324 "parser.php7.lemon" -{ - xx_ret_class_definition(&yygotominor.yy250, NULL, &yymsp[0].minor.yy250, NULL, status->scanner_state); -} -#line 4881 "parser.php7.c" - break; - case 52: -#line 328 "parser.php7.lemon" -{ - xx_ret_class_definition(&yygotominor.yy250, &yymsp[-1].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); -} -#line 4888 "parser.php7.c" - break; - case 53: -#line 332 "parser.php7.lemon" -{ - xx_ret_class_definition(&yygotominor.yy250, &yymsp[-1].minor.yy250, NULL, &yymsp[0].minor.yy250, status->scanner_state); -} -#line 4895 "parser.php7.c" - break; - case 54: -#line 336 "parser.php7.lemon" -{ - xx_ret_class_definition(&yygotominor.yy250, &yymsp[0].minor.yy250, NULL, &yymsp[-1].minor.yy250, status->scanner_state); -} -#line 4902 "parser.php7.c" - break; - case 55: -#line 340 "parser.php7.lemon" -{ - xx_ret_class_definition(&yygotominor.yy250, NULL, &yymsp[0].minor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); -} -#line 4909 "parser.php7.c" - break; - case 56: -#line 344 "parser.php7.lemon" -{ - xx_ret_class_definition(&yygotominor.yy250, &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); -} -#line 4916 "parser.php7.c" - break; - case 57: -#line 348 "parser.php7.lemon" -{ - xx_ret_class_definition(&yygotominor.yy250, &yymsp[-1].minor.yy250, &yymsp[0].minor.yy250, &yymsp[-2].minor.yy250, status->scanner_state); -} -#line 4923 "parser.php7.c" - break; - case 58: -#line 352 "parser.php7.lemon" -{ - xx_ret_interface_definition(&yygotominor.yy250, NULL, &yymsp[0].minor.yy250, status->scanner_state); -} -#line 4930 "parser.php7.c" - break; - case 59: -#line 356 "parser.php7.lemon" -{ - xx_ret_interface_definition(&yygotominor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); -} -#line 4937 "parser.php7.c" - break; - case 60: -#line 360 "parser.php7.lemon" -{ - xx_ret_interface_definition(&yygotominor.yy250, &yymsp[0].minor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); -} -#line 4944 "parser.php7.c" - break; - case 63: -#line 373 "parser.php7.lemon" -{ - xx_ret_class_property(&yygotominor.yy250, &yymsp[-2].minor.yy250, yymsp[-1].minor.yy0, NULL, yymsp[-3].minor.yy0, NULL, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 4952 "parser.php7.c" - break; - case 64: -#line 377 "parser.php7.lemon" -{ - xx_ret_class_property(&yygotominor.yy250, &yymsp[-2].minor.yy250, yymsp[-1].minor.yy0, NULL, NULL, NULL, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 4960 "parser.php7.c" - break; - case 65: -#line 381 "parser.php7.lemon" -{ - xx_ret_class_property(&yygotominor.yy250, &yymsp[-4].minor.yy250, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, yymsp[-5].minor.yy0, NULL, status->scanner_state); - yy_destructor(64,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4969 "parser.php7.c" - break; - case 66: -#line 385 "parser.php7.lemon" -{ - xx_ret_class_property(&yygotominor.yy250, &yymsp[-4].minor.yy250, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(64,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 4978 "parser.php7.c" - break; - case 67: -#line 389 "parser.php7.lemon" -{ - xx_ret_class_property(&yygotominor.yy250, &yymsp[-3].minor.yy250, yymsp[-2].minor.yy0, NULL, yymsp[-4].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 4986 "parser.php7.c" - break; - case 68: -#line 393 "parser.php7.lemon" -{ - xx_ret_class_property(&yygotominor.yy250, &yymsp[-3].minor.yy250, yymsp[-2].minor.yy0, NULL, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 4994 "parser.php7.c" - break; - case 69: -#line 397 "parser.php7.lemon" -{ - xx_ret_class_property(&yygotominor.yy250, &yymsp[-5].minor.yy250, yymsp[-4].minor.yy0, &yymsp[-2].minor.yy250, yymsp[-6].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(64,&yymsp[-3].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5003 "parser.php7.c" - break; - case 70: -#line 401 "parser.php7.lemon" -{ - xx_ret_class_property(&yygotominor.yy250, &yymsp[-5].minor.yy250, yymsp[-4].minor.yy0, &yymsp[-2].minor.yy250, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(64,&yymsp[-3].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5012 "parser.php7.c" - break; - case 75: -#line 421 "parser.php7.lemon" -{ - xx_ret_property_shortcut(&yygotominor.yy250, NULL, yymsp[0].minor.yy0, status->scanner_state); -} -#line 5019 "parser.php7.c" - break; - case 76: -#line 425 "parser.php7.lemon" -{ - xx_ret_property_shortcut(&yygotominor.yy250, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, status->scanner_state); -} -#line 5026 "parser.php7.c" - break; - case 83: - case 85: -#line 454 "parser.php7.lemon" -{ - xx_ret_class_const(&yygotominor.yy250, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, yymsp[-5].minor.yy0, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(64,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5037 "parser.php7.c" - break; - case 84: - case 86: -#line 458 "parser.php7.lemon" -{ - xx_ret_class_const(&yygotominor.yy250, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, NULL, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(64,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5048 "parser.php7.c" - break; - case 87: -#line 473 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-6].minor.yy250, yymsp[-4].minor.yy0, NULL, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5060 "parser.php7.c" - break; - case 88: - case 115: -#line 478 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-5].minor.yy250, yymsp[-3].minor.yy0, NULL, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5072 "parser.php7.c" - break; - case 89: -#line 483 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-7].minor.yy250, yymsp[-5].minor.yy0, &yymsp[-3].minor.yy250, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5084 "parser.php7.c" - break; - case 90: - case 116: -#line 488 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-6].minor.yy250, yymsp[-4].minor.yy0, &yymsp[-2].minor.yy250, NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5096 "parser.php7.c" - break; - case 91: -#line 493 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-7].minor.yy250, yymsp[-5].minor.yy0, NULL, &yymsp[-1].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5108 "parser.php7.c" - break; - case 92: -#line 497 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-8].minor.yy250, yymsp[-6].minor.yy0, &yymsp[-4].minor.yy250, &yymsp[-1].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5120 "parser.php7.c" - break; - case 93: -#line 501 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-6].minor.yy250, yymsp[-4].minor.yy0, NULL, NULL, yymsp[-7].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5132 "parser.php7.c" - break; - case 94: - case 117: -#line 505 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-5].minor.yy250, yymsp[-3].minor.yy0, NULL, NULL, yymsp[-6].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5144 "parser.php7.c" - break; - case 95: -#line 509 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-7].minor.yy250, yymsp[-5].minor.yy0, &yymsp[-3].minor.yy250, NULL, yymsp[-8].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5156 "parser.php7.c" - break; - case 96: - case 118: -#line 513 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-6].minor.yy250, yymsp[-4].minor.yy0, &yymsp[-2].minor.yy250, NULL, yymsp[-7].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5168 "parser.php7.c" - break; - case 97: -#line 517 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-7].minor.yy250, yymsp[-5].minor.yy0, NULL, &yymsp[-1].minor.yy250, yymsp[-8].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5180 "parser.php7.c" - break; - case 98: -#line 521 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-8].minor.yy250, yymsp[-6].minor.yy0, &yymsp[-4].minor.yy250, &yymsp[-1].minor.yy250, yymsp[-9].minor.yy0, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5192 "parser.php7.c" - break; - case 99: -#line 525 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-8].minor.yy250, yymsp[-6].minor.yy0, NULL, NULL, NULL, &yymsp[-2].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5205 "parser.php7.c" - break; - case 100: - case 111: -#line 529 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-7].minor.yy250, yymsp[-5].minor.yy0, NULL, NULL, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5218 "parser.php7.c" - break; - case 101: -#line 533 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-9].minor.yy250, yymsp[-7].minor.yy0, &yymsp[-5].minor.yy250, NULL, NULL, &yymsp[-2].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5231 "parser.php7.c" - break; - case 102: - case 112: -#line 537 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-8].minor.yy250, yymsp[-6].minor.yy0, &yymsp[-4].minor.yy250, NULL, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5244 "parser.php7.c" - break; - case 103: -#line 541 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-9].minor.yy250, yymsp[-7].minor.yy0, NULL, &yymsp[-1].minor.yy250, NULL, &yymsp[-3].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5257 "parser.php7.c" - break; - case 104: -#line 545 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-10].minor.yy250, yymsp[-8].minor.yy0, &yymsp[-6].minor.yy250, &yymsp[-1].minor.yy250, NULL, &yymsp[-3].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-9].minor); - yy_destructor(54,&yymsp[-7].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5270 "parser.php7.c" - break; - case 105: -#line 549 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-8].minor.yy250, yymsp[-6].minor.yy0, NULL, NULL, yymsp[-9].minor.yy0, &yymsp[-2].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5283 "parser.php7.c" - break; - case 106: - case 113: -#line 553 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-7].minor.yy250, yymsp[-5].minor.yy0, NULL, NULL, yymsp[-8].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5296 "parser.php7.c" - break; - case 107: -#line 557 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-9].minor.yy250, yymsp[-7].minor.yy0, &yymsp[-5].minor.yy250, NULL, yymsp[-10].minor.yy0, &yymsp[-2].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-4].minor); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5309 "parser.php7.c" - break; - case 108: - case 114: -#line 561 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-8].minor.yy250, yymsp[-6].minor.yy0, &yymsp[-4].minor.yy250, NULL, yymsp[-9].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-7].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5322 "parser.php7.c" - break; - case 109: -#line 565 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-9].minor.yy250, yymsp[-7].minor.yy0, NULL, &yymsp[-1].minor.yy250, yymsp[-10].minor.yy0, &yymsp[-3].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-8].minor); - yy_destructor(54,&yymsp[-6].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5335 "parser.php7.c" - break; - case 110: -#line 569 "parser.php7.lemon" -{ - xx_ret_class_method(&yygotominor.yy250, &yymsp[-10].minor.yy250, yymsp[-8].minor.yy0, &yymsp[-6].minor.yy250, &yymsp[-1].minor.yy250, yymsp[-11].minor.yy0, &yymsp[-3].minor.yy250, status->scanner_state); - yy_destructor(53,&yymsp[-9].minor); - yy_destructor(54,&yymsp[-7].minor); - yy_destructor(45,&yymsp[-5].minor); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5348 "parser.php7.c" - break; - case 121: -#line 615 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "internal"); - yy_destructor(1,&yymsp[0].minor); -} -#line 5356 "parser.php7.c" - break; - case 122: -#line 619 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "public"); - yy_destructor(2,&yymsp[0].minor); -} -#line 5364 "parser.php7.c" - break; - case 123: -#line 623 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "protected"); - yy_destructor(3,&yymsp[0].minor); -} -#line 5372 "parser.php7.c" - break; - case 124: -#line 627 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "private"); - yy_destructor(5,&yymsp[0].minor); -} -#line 5380 "parser.php7.c" - break; - case 125: -#line 631 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "static"); - yy_destructor(4,&yymsp[0].minor); -} -#line 5388 "parser.php7.c" - break; - case 126: -#line 635 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "scoped"); - yy_destructor(6,&yymsp[0].minor); -} -#line 5396 "parser.php7.c" - break; - case 127: -#line 639 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "inline"); - yy_destructor(67,&yymsp[0].minor); -} -#line 5404 "parser.php7.c" - break; - case 128: -#line 643 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "deprecated"); - yy_destructor(68,&yymsp[0].minor); -} -#line 5412 "parser.php7.c" - break; - case 129: -#line 647 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "abstract"); - yy_destructor(61,&yymsp[0].minor); -} -#line 5420 "parser.php7.c" - break; - case 130: -#line 651 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "final"); - yy_destructor(62,&yymsp[0].minor); -} -#line 5428 "parser.php7.c" - break; - case 131: -#line 656 "parser.php7.lemon" -{ - xx_ret_return_type(&yygotominor.yy250, 1, NULL, status->scanner_state); - yy_destructor(69,&yymsp[0].minor); -} -#line 5436 "parser.php7.c" - break; - case 132: -#line 660 "parser.php7.lemon" -{ - xx_ret_return_type(&yygotominor.yy250, 0, &yymsp[0].minor.yy250, status->scanner_state); -} -#line 5443 "parser.php7.c" - break; - case 133: - case 256: -#line 664 "parser.php7.lemon" -{ - xx_ret_list(&yygotominor.yy250, &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(16,&yymsp[-1].minor); -} -#line 5452 "parser.php7.c" - break; - case 135: -#line 672 "parser.php7.lemon" -{ - xx_ret_return_type_item(&yygotominor.yy250, &yymsp[0].minor.yy250, NULL, 0, 0, status->scanner_state); -} -#line 5459 "parser.php7.c" - break; - case 136: -#line 676 "parser.php7.lemon" -{ - { - zval type; - xx_ret_type(&type, XX_T_TYPE_NULL); - xx_ret_return_type_item(&yygotominor.yy250, &type, NULL, 0, 0, status->scanner_state); - } - yy_destructor(70,&yymsp[0].minor); -} -#line 5471 "parser.php7.c" - break; - case 137: -#line 684 "parser.php7.lemon" -{ - { - zval type; - xx_ret_type(&type, XX_T_TYPE_THIS); - xx_ret_return_type_item(&yygotominor.yy250, &type, NULL, 0, 0, status->scanner_state); - } - yy_destructor(71,&yymsp[0].minor); -} -#line 5483 "parser.php7.c" - break; - case 138: -#line 692 "parser.php7.lemon" -{ - xx_ret_return_type_item(&yygotominor.yy250, &yymsp[-1].minor.yy250, NULL, 1, 0, status->scanner_state); - yy_destructor(42,&yymsp[0].minor); -} -#line 5491 "parser.php7.c" - break; - case 139: -#line 696 "parser.php7.lemon" -{ - xx_ret_return_type_item(&yygotominor.yy250, NULL, &yymsp[0].minor.yy250, 0, 0, status->scanner_state); -} -#line 5498 "parser.php7.c" - break; - case 140: -#line 700 "parser.php7.lemon" -{ - xx_ret_return_type_item(&yygotominor.yy250, NULL, &yymsp[0].minor.yy250, 0, 1, status->scanner_state); -} -#line 5505 "parser.php7.c" - break; - case 143: -#line 716 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, NULL, NULL, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); -} -#line 5512 "parser.php7.c" - break; - case 144: -#line 721 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, NULL, NULL, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5520 "parser.php7.c" - break; - case 145: -#line 726 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, NULL, NULL, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-1].minor); -} -#line 5528 "parser.php7.c" - break; - case 146: -#line 731 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, NULL, NULL, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-2].minor); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5537 "parser.php7.c" - break; - case 147: -#line 736 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, &yymsp[-1].minor.yy250, NULL, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); -} -#line 5544 "parser.php7.c" - break; - case 148: -#line 741 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, &yymsp[-2].minor.yy250, NULL, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5552 "parser.php7.c" - break; - case 149: -#line 746 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, &yymsp[-1].minor.yy250, NULL, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-2].minor); -} -#line 5560 "parser.php7.c" - break; - case 150: -#line 751 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, &yymsp[-2].minor.yy250, NULL, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-3].minor); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5569 "parser.php7.c" - break; - case 151: -#line 756 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, &yymsp[-2].minor.yy250, NULL, yymsp[0].minor.yy0, NULL, 1, 0, status->scanner_state); - yy_destructor(42,&yymsp[-1].minor); -} -#line 5577 "parser.php7.c" - break; - case 152: -#line 761 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, &yymsp[-3].minor.yy250, NULL, yymsp[0].minor.yy0, NULL, 1, 1, status->scanner_state); - yy_destructor(42,&yymsp[-2].minor); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5586 "parser.php7.c" - break; - case 153: -#line 766 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, &yymsp[-2].minor.yy250, NULL, yymsp[0].minor.yy0, NULL, 1, 0, status->scanner_state); - yy_destructor(65,&yymsp[-3].minor); - yy_destructor(42,&yymsp[-1].minor); -} -#line 5595 "parser.php7.c" - break; - case 154: -#line 771 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, &yymsp[-3].minor.yy250, NULL, yymsp[0].minor.yy0, NULL, 1, 1, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(42,&yymsp[-2].minor); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5605 "parser.php7.c" - break; - case 155: -#line 776 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, NULL, &yymsp[-1].minor.yy250, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); -} -#line 5612 "parser.php7.c" - break; - case 156: -#line 781 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, NULL, &yymsp[-2].minor.yy250, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5620 "parser.php7.c" - break; - case 157: -#line 786 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, NULL, &yymsp[-1].minor.yy250, yymsp[0].minor.yy0, NULL, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-2].minor); -} -#line 5628 "parser.php7.c" - break; - case 158: -#line 791 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, NULL, &yymsp[-2].minor.yy250, yymsp[0].minor.yy0, NULL, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-3].minor); - yy_destructor(44,&yymsp[-1].minor); -} -#line 5637 "parser.php7.c" - break; - case 159: -#line 796 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, NULL, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 0, status->scanner_state); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5645 "parser.php7.c" - break; - case 160: -#line 801 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, NULL, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5654 "parser.php7.c" - break; - case 161: -#line 806 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, NULL, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5663 "parser.php7.c" - break; - case 162: -#line 811 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, NULL, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5673 "parser.php7.c" - break; - case 163: -#line 816 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, &yymsp[-3].minor.yy250, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 0, status->scanner_state); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5681 "parser.php7.c" - break; - case 164: -#line 821 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, &yymsp[-4].minor.yy250, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5690 "parser.php7.c" - break; - case 165: -#line 826 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, &yymsp[-3].minor.yy250, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5699 "parser.php7.c" - break; - case 166: -#line 831 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, &yymsp[-4].minor.yy250, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-5].minor); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5709 "parser.php7.c" - break; - case 167: -#line 836 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, &yymsp[-4].minor.yy250, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 1, 0, status->scanner_state); - yy_destructor(42,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5718 "parser.php7.c" - break; - case 168: -#line 841 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, &yymsp[-5].minor.yy250, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 1, 1, status->scanner_state); - yy_destructor(42,&yymsp[-4].minor); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5728 "parser.php7.c" - break; - case 169: -#line 846 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, &yymsp[-4].minor.yy250, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 1, 0, status->scanner_state); - yy_destructor(65,&yymsp[-5].minor); - yy_destructor(42,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5738 "parser.php7.c" - break; - case 170: -#line 851 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, &yymsp[-5].minor.yy250, NULL, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 1, 1, status->scanner_state); - yy_destructor(65,&yymsp[-6].minor); - yy_destructor(42,&yymsp[-4].minor); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5749 "parser.php7.c" - break; - case 171: -#line 856 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, NULL, &yymsp[-3].minor.yy250, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 0, status->scanner_state); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5757 "parser.php7.c" - break; - case 172: -#line 861 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 0, NULL, &yymsp[-4].minor.yy250, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 1, status->scanner_state); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5766 "parser.php7.c" - break; - case 173: -#line 866 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, NULL, &yymsp[-3].minor.yy250, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 0, status->scanner_state); - yy_destructor(65,&yymsp[-4].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5775 "parser.php7.c" - break; - case 174: -#line 871 "parser.php7.lemon" -{ - xx_ret_parameter(&yygotominor.yy250, 1, NULL, &yymsp[-4].minor.yy250, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, 0, 1, status->scanner_state); - yy_destructor(65,&yymsp[-5].minor); - yy_destructor(44,&yymsp[-3].minor); - yy_destructor(64,&yymsp[-1].minor); -} -#line 5785 "parser.php7.c" - break; - case 175: -#line 876 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_IDENTIFIER, yymsp[-1].minor.yy0, status->scanner_state); - yy_destructor(22,&yymsp[-2].minor); - yy_destructor(23,&yymsp[0].minor); -} -#line 5794 "parser.php7.c" - break; - case 176: -#line 880 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_IDENTIFIER, yymsp[-3].minor.yy0, status->scanner_state); - yy_destructor(22,&yymsp[-4].minor); - yy_destructor(46,&yymsp[-2].minor); - yy_destructor(72,&yymsp[-1].minor); - yy_destructor(23,&yymsp[0].minor); -} -#line 5805 "parser.php7.c" - break; - case 177: -#line 884 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_INTEGER); - yy_destructor(73,&yymsp[0].minor); -} -#line 5813 "parser.php7.c" - break; - case 178: -#line 888 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_UINTEGER); - yy_destructor(74,&yymsp[0].minor); -} -#line 5821 "parser.php7.c" - break; - case 179: -#line 892 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_LONG); - yy_destructor(75,&yymsp[0].minor); -} -#line 5829 "parser.php7.c" - break; - case 180: -#line 896 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_ULONG); - yy_destructor(76,&yymsp[0].minor); -} -#line 5837 "parser.php7.c" - break; - case 181: -#line 900 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_CHAR); - yy_destructor(77,&yymsp[0].minor); -} -#line 5845 "parser.php7.c" - break; - case 182: -#line 904 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_UCHAR); - yy_destructor(78,&yymsp[0].minor); -} -#line 5853 "parser.php7.c" - break; - case 183: -#line 908 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_DOUBLE); - yy_destructor(79,&yymsp[0].minor); -} -#line 5861 "parser.php7.c" - break; - case 184: -#line 912 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_BOOL); - yy_destructor(80,&yymsp[0].minor); -} -#line 5869 "parser.php7.c" - break; - case 185: -#line 916 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_STRING); - yy_destructor(81,&yymsp[0].minor); -} -#line 5877 "parser.php7.c" - break; - case 186: -#line 920 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_ARRAY); - yy_destructor(82,&yymsp[0].minor); -} -#line 5885 "parser.php7.c" - break; - case 187: -#line 924 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_VAR); - yy_destructor(83,&yymsp[0].minor); -} -#line 5893 "parser.php7.c" - break; - case 188: -#line 928 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_CALLABLE); - yy_destructor(84,&yymsp[0].minor); -} -#line 5901 "parser.php7.c" - break; - case 189: -#line 932 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_RESOURCE); - yy_destructor(85,&yymsp[0].minor); -} -#line 5909 "parser.php7.c" - break; - case 190: -#line 936 "parser.php7.lemon" -{ - xx_ret_type(&yygotominor.yy250, XX_TYPE_OBJECT); - yy_destructor(86,&yymsp[0].minor); -} -#line 5917 "parser.php7.c" - break; - case 216: -#line 1040 "parser.php7.lemon" -{ - xx_ret_empty_statement(&yygotominor.yy250, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 5925 "parser.php7.c" - break; - case 217: -#line 1044 "parser.php7.lemon" -{ - xx_ret_break_statement(&yygotominor.yy250, status->scanner_state); - yy_destructor(87,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5934 "parser.php7.c" - break; - case 218: -#line 1048 "parser.php7.lemon" -{ - xx_ret_continue_statement(&yygotominor.yy250, status->scanner_state); - yy_destructor(88,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 5943 "parser.php7.c" - break; - case 219: -#line 1053 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-2].minor.yy250, NULL, NULL, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5953 "parser.php7.c" - break; - case 220: -#line 1058 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-3].minor.yy250, NULL, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(89,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[-1].minor); -} -#line 5963 "parser.php7.c" - break; - case 221: -#line 1063 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-5].minor.yy250, NULL, NULL, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(90,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5976 "parser.php7.c" - break; - case 222: -#line 1068 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-6].minor.yy250, NULL, &yymsp[-3].minor.yy250, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-7].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-4].minor); - yy_destructor(90,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5989 "parser.php7.c" - break; - case 223: -#line 1073 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-3].minor.yy250, &yymsp[-1].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 5999 "parser.php7.c" - break; - case 224: -#line 1078 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-4].minor.yy250, &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-3].minor); - yy_destructor(56,&yymsp[-1].minor); -} -#line 6009 "parser.php7.c" - break; - case 225: -#line 1083 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-7].minor.yy250, &yymsp[-5].minor.yy250, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(89,&yymsp[-8].minor); - yy_destructor(55,&yymsp[-6].minor); - yy_destructor(56,&yymsp[-4].minor); - yy_destructor(90,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6022 "parser.php7.c" - break; - case 226: -#line 1088 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-8].minor.yy250, &yymsp[-6].minor.yy250, &yymsp[-4].minor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(89,&yymsp[-9].minor); - yy_destructor(55,&yymsp[-7].minor); - yy_destructor(56,&yymsp[-5].minor); - yy_destructor(90,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6035 "parser.php7.c" - break; - case 227: -#line 1093 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-6].minor.yy250, &yymsp[-4].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-7].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(90,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6048 "parser.php7.c" - break; - case 228: -#line 1098 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-7].minor.yy250, &yymsp[-5].minor.yy250, &yymsp[-3].minor.yy250, NULL, status->scanner_state); - yy_destructor(89,&yymsp[-8].minor); - yy_destructor(55,&yymsp[-6].minor); - yy_destructor(56,&yymsp[-4].minor); - yy_destructor(90,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6061 "parser.php7.c" - break; - case 229: -#line 1103 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-6].minor.yy250, NULL, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(89,&yymsp[-7].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-4].minor); - yy_destructor(90,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6074 "parser.php7.c" - break; - case 232: -#line 1116 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-2].minor.yy250, NULL, NULL, NULL, status->scanner_state); - yy_destructor(91,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6084 "parser.php7.c" - break; - case 233: -#line 1121 "parser.php7.lemon" -{ - xx_ret_if_statement(&yygotominor.yy250, &yymsp[-3].minor.yy250, &yymsp[-1].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(91,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6094 "parser.php7.c" - break; - case 234: -#line 1125 "parser.php7.lemon" -{ - xx_ret_switch_statement(&yygotominor.yy250, &yymsp[-2].minor.yy250, NULL, status->scanner_state); - yy_destructor(92,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6104 "parser.php7.c" - break; - case 235: -#line 1129 "parser.php7.lemon" -{ - xx_ret_switch_statement(&yygotominor.yy250, &yymsp[-3].minor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(92,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6114 "parser.php7.c" - break; - case 238: -#line 1141 "parser.php7.lemon" -{ - xx_ret_case_clause(&yygotominor.yy250, &yymsp[-1].minor.yy250, NULL, status->scanner_state); - yy_destructor(93,&yymsp[-2].minor); - yy_destructor(94,&yymsp[0].minor); -} -#line 6123 "parser.php7.c" - break; - case 239: -#line 1145 "parser.php7.lemon" -{ - xx_ret_case_clause(&yygotominor.yy250, &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(93,&yymsp[-3].minor); - yy_destructor(94,&yymsp[-1].minor); -} -#line 6132 "parser.php7.c" - break; - case 240: -#line 1149 "parser.php7.lemon" -{ - xx_ret_case_clause(&yygotominor.yy250, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(95,&yymsp[-2].minor); - yy_destructor(94,&yymsp[-1].minor); -} -#line 6141 "parser.php7.c" - break; - case 241: -#line 1153 "parser.php7.lemon" -{ - xx_ret_loop_statement(&yygotominor.yy250, NULL, status->scanner_state); - yy_destructor(96,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6151 "parser.php7.c" - break; - case 242: -#line 1157 "parser.php7.lemon" -{ - xx_ret_loop_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(96,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6161 "parser.php7.c" - break; - case 243: -#line 1161 "parser.php7.lemon" -{ - xx_ret_while_statement(&yygotominor.yy250, &yymsp[-2].minor.yy250, NULL, status->scanner_state); - yy_destructor(97,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6171 "parser.php7.c" - break; - case 244: -#line 1165 "parser.php7.lemon" -{ - xx_ret_while_statement(&yygotominor.yy250, &yymsp[-3].minor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(97,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6181 "parser.php7.c" - break; - case 245: -#line 1169 "parser.php7.lemon" -{ - xx_ret_do_while_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, NULL, status->scanner_state); - yy_destructor(98,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(97,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6193 "parser.php7.c" - break; - case 246: -#line 1173 "parser.php7.lemon" -{ - xx_ret_do_while_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, &yymsp[-4].minor.yy250, status->scanner_state); - yy_destructor(98,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(97,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6205 "parser.php7.c" - break; - case 247: -#line 1177 "parser.php7.lemon" -{ - xx_ret_try_catch_statement(&yygotominor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(99,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6215 "parser.php7.c" - break; - case 248: -#line 1181 "parser.php7.lemon" -{ - xx_ret_try_catch_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, NULL, status->scanner_state); - yy_destructor(99,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6225 "parser.php7.c" - break; - case 249: -#line 1185 "parser.php7.lemon" -{ - xx_ret_try_catch_statement(&yygotominor.yy250, &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(99,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-3].minor); - yy_destructor(56,&yymsp[-1].minor); -} -#line 6235 "parser.php7.c" - break; - case 252: -#line 1197 "parser.php7.lemon" -{ - xx_ret_catch_statement(&yygotominor.yy250, &yymsp[-3].minor.yy250, NULL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(100,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6245 "parser.php7.c" - break; - case 253: -#line 1201 "parser.php7.lemon" -{ - xx_ret_catch_statement(&yygotominor.yy250, &yymsp[-2].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(100,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6255 "parser.php7.c" - break; - case 254: -#line 1205 "parser.php7.lemon" -{ - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state); - xx_ret_catch_statement(&yygotominor.yy250, &yymsp[-4].minor.yy250, &identifier, NULL, status->scanner_state); - } - yy_destructor(100,&yymsp[-5].minor); - yy_destructor(7,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6270 "parser.php7.c" - break; - case 255: -#line 1213 "parser.php7.lemon" -{ - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, yymsp[-3].minor.yy0, status->scanner_state); - xx_ret_catch_statement(&yygotominor.yy250, &yymsp[-5].minor.yy250, &identifier, &yymsp[-1].minor.yy250, status->scanner_state); - } - yy_destructor(100,&yymsp[-6].minor); - yy_destructor(7,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6285 "parser.php7.c" - break; - case 259: -#line 1233 "parser.php7.lemon" -{ - xx_ret_for_statement(&yygotominor.yy250, &yymsp[-3].minor.yy250, NULL, yymsp[-5].minor.yy0, 0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(101,&yymsp[-6].minor); - yy_destructor(102,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6296 "parser.php7.c" - break; - case 260: -#line 1237 "parser.php7.lemon" -{ - xx_ret_for_statement(&yygotominor.yy250, &yymsp[-2].minor.yy250, NULL, yymsp[-4].minor.yy0, 0, NULL, status->scanner_state); - yy_destructor(101,&yymsp[-5].minor); - yy_destructor(102,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6307 "parser.php7.c" - break; - case 261: -#line 1241 "parser.php7.lemon" -{ - xx_ret_for_statement(&yygotominor.yy250, &yymsp[-3].minor.yy250, NULL, yymsp[-6].minor.yy0, 1, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(101,&yymsp[-7].minor); - yy_destructor(102,&yymsp[-5].minor); - yy_destructor(103,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6319 "parser.php7.c" - break; - case 262: -#line 1245 "parser.php7.lemon" -{ - xx_ret_for_statement(&yygotominor.yy250, &yymsp[-3].minor.yy250, yymsp[-7].minor.yy0, yymsp[-5].minor.yy0, 0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(101,&yymsp[-8].minor); - yy_destructor(7,&yymsp[-6].minor); - yy_destructor(102,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6331 "parser.php7.c" - break; - case 263: -#line 1249 "parser.php7.lemon" -{ - xx_ret_for_statement(&yygotominor.yy250, &yymsp[-2].minor.yy250, yymsp[-6].minor.yy0, yymsp[-4].minor.yy0, 0, NULL, status->scanner_state); - yy_destructor(101,&yymsp[-7].minor); - yy_destructor(7,&yymsp[-5].minor); - yy_destructor(102,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6343 "parser.php7.c" - break; - case 264: -#line 1253 "parser.php7.lemon" -{ - xx_ret_for_statement(&yygotominor.yy250, &yymsp[-3].minor.yy250, yymsp[-8].minor.yy0, yymsp[-6].minor.yy0, 1, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(101,&yymsp[-9].minor); - yy_destructor(7,&yymsp[-7].minor); - yy_destructor(102,&yymsp[-5].minor); - yy_destructor(103,&yymsp[-4].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 6356 "parser.php7.c" - break; - case 265: -#line 1257 "parser.php7.lemon" -{ - xx_ret_let_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(104,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6365 "parser.php7.c" - break; - case 268: -#line 1270 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "assign"); - yy_destructor(64,&yymsp[0].minor); -} -#line 6373 "parser.php7.c" - break; - case 269: -#line 1275 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "add-assign"); - yy_destructor(105,&yymsp[0].minor); -} -#line 6381 "parser.php7.c" - break; - case 270: -#line 1280 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "sub-assign"); - yy_destructor(106,&yymsp[0].minor); -} -#line 6389 "parser.php7.c" - break; - case 271: -#line 1285 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "mul-assign"); - yy_destructor(107,&yymsp[0].minor); -} -#line 6397 "parser.php7.c" - break; - case 272: -#line 1290 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "div-assign"); - yy_destructor(108,&yymsp[0].minor); -} -#line 6405 "parser.php7.c" - break; - case 273: -#line 1295 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "concat-assign"); - yy_destructor(109,&yymsp[0].minor); -} -#line 6413 "parser.php7.c" - break; - case 274: -#line 1300 "parser.php7.lemon" -{ - parser_get_string(&yygotominor.yy250, "mod-assign"); - yy_destructor(110,&yymsp[0].minor); -} -#line 6421 "parser.php7.c" - break; - case 275: -#line 1305 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "variable", &yymsp[-1].minor.yy250, yymsp[-2].minor.yy0, NULL, NULL, &yymsp[0].minor.yy250, status->scanner_state); -} -#line 6428 "parser.php7.c" - break; - case 276: -#line 1310 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "object-property", &yymsp[-1].minor.yy250, yymsp[-4].minor.yy0, yymsp[-2].minor.yy0, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(47,&yymsp[-3].minor); -} -#line 6436 "parser.php7.c" - break; - case 277: -#line 1315 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "variable-dynamic-object-property", &yymsp[-1].minor.yy250, yymsp[-6].minor.yy0, yymsp[-3].minor.yy0, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(47,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); -} -#line 6446 "parser.php7.c" - break; - case 278: -#line 1320 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "string-dynamic-object-property", &yymsp[-1].minor.yy250, yymsp[-6].minor.yy0, yymsp[-3].minor.yy0, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(47,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); -} -#line 6456 "parser.php7.c" - break; - case 279: -#line 1325 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "object-property-append", &yymsp[-1].minor.yy250, yymsp[-6].minor.yy0, yymsp[-4].minor.yy0, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(47,&yymsp[-5].minor); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6466 "parser.php7.c" - break; - case 280: -#line 1330 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "object-property-array-index", &yymsp[-1].minor.yy250, yymsp[-5].minor.yy0, yymsp[-3].minor.yy0, &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(47,&yymsp[-4].minor); -} -#line 6474 "parser.php7.c" - break; - case 281: -#line 1334 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "object-property-array-index-append", &yymsp[-1].minor.yy250, yymsp[-7].minor.yy0, yymsp[-5].minor.yy0, &yymsp[-4].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(47,&yymsp[-6].minor); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6484 "parser.php7.c" - break; - case 282: -#line 1339 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "static-property", &yymsp[-1].minor.yy250, yymsp[-4].minor.yy0, yymsp[-2].minor.yy0, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(112,&yymsp[-3].minor); -} -#line 6492 "parser.php7.c" - break; - case 283: -#line 1344 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "static-property-append", &yymsp[-1].minor.yy250, yymsp[-6].minor.yy0, yymsp[-4].minor.yy0, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(112,&yymsp[-5].minor); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6502 "parser.php7.c" - break; - case 284: -#line 1349 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "static-property-array-index", &yymsp[-1].minor.yy250, yymsp[-5].minor.yy0, yymsp[-3].minor.yy0, &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(112,&yymsp[-4].minor); -} -#line 6510 "parser.php7.c" - break; - case 285: -#line 1354 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "static-property-array-index-append", &yymsp[-1].minor.yy250, yymsp[-7].minor.yy0, yymsp[-5].minor.yy0, &yymsp[-4].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(112,&yymsp[-6].minor); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6520 "parser.php7.c" - break; - case 286: -#line 1359 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "variable-append", &yymsp[-1].minor.yy250, yymsp[-4].minor.yy0, NULL, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6529 "parser.php7.c" - break; - case 287: -#line 1364 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "array-index", &yymsp[-1].minor.yy250, yymsp[-3].minor.yy0, NULL, &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); -} -#line 6536 "parser.php7.c" - break; - case 288: -#line 1369 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "array-index-append", &yymsp[-1].minor.yy250, yymsp[-5].minor.yy0, NULL, &yymsp[-4].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(46,&yymsp[-3].minor); - yy_destructor(72,&yymsp[-2].minor); -} -#line 6545 "parser.php7.c" - break; - case 291: -#line 1381 "parser.php7.lemon" -{ - yygotominor.yy250 = yymsp[-1].minor.yy250; - yy_destructor(46,&yymsp[-2].minor); - yy_destructor(72,&yymsp[0].minor); -} -#line 6554 "parser.php7.c" - break; - case 292: -#line 1386 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "object-property-incr", NULL, yymsp[-3].minor.yy0, yymsp[-1].minor.yy0, NULL, NULL, status->scanner_state); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(113,&yymsp[0].minor); -} -#line 6563 "parser.php7.c" - break; - case 293: -#line 1391 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "object-property-decr", NULL, yymsp[-3].minor.yy0, yymsp[-1].minor.yy0, NULL, NULL, status->scanner_state); - yy_destructor(47,&yymsp[-2].minor); - yy_destructor(114,&yymsp[0].minor); -} -#line 6572 "parser.php7.c" - break; - case 294: -#line 1396 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "incr", NULL, yymsp[-1].minor.yy0, NULL, NULL, NULL, status->scanner_state); - yy_destructor(113,&yymsp[0].minor); -} -#line 6580 "parser.php7.c" - break; - case 295: -#line 1401 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "decr", NULL, yymsp[-1].minor.yy0, NULL, NULL, NULL, status->scanner_state); - yy_destructor(114,&yymsp[0].minor); -} -#line 6588 "parser.php7.c" - break; - case 296: -#line 1406 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "dynamic-variable", &yymsp[-1].minor.yy250, yymsp[-3].minor.yy0, NULL, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); -} -#line 6597 "parser.php7.c" - break; - case 297: -#line 1411 "parser.php7.lemon" -{ - xx_ret_let_assignment(&yygotominor.yy250, "dynamic-variable-string", &yymsp[-1].minor.yy250, yymsp[-3].minor.yy0, NULL, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); -} -#line 6606 "parser.php7.c" - break; - case 299: -#line 1419 "parser.php7.lemon" -{ - xx_ret_echo_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(115,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6615 "parser.php7.c" - break; - case 303: -#line 1436 "parser.php7.lemon" -{ - xx_ret_mcall_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 6623 "parser.php7.c" - break; - case 304: -#line 1441 "parser.php7.lemon" -{ - xx_ret_fcall_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 6631 "parser.php7.c" - break; - case 305: -#line 1446 "parser.php7.lemon" -{ - xx_ret_scall_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 6639 "parser.php7.c" - break; - case 306: -#line 1451 "parser.php7.lemon" -{ - xx_ret_fetch_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(50,&yymsp[0].minor); -} -#line 6647 "parser.php7.c" - break; - case 307: -#line 1456 "parser.php7.lemon" -{ - xx_ret_return_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(116,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6656 "parser.php7.c" - break; - case 308: -#line 1461 "parser.php7.lemon" -{ - xx_ret_return_statement(&yygotominor.yy250, NULL, status->scanner_state); - yy_destructor(116,&yymsp[-1].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6665 "parser.php7.c" - break; - case 309: -#line 1466 "parser.php7.lemon" -{ - xx_ret_require_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(8,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6674 "parser.php7.c" - break; - case 310: -#line 1471 "parser.php7.lemon" -{ - xx_ret_unset_statement(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(117,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6683 "parser.php7.c" - break; - case 311: -#line 1476 "parser.php7.lemon" -{ - xx_ret_throw_exception(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(118,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6692 "parser.php7.c" - break; - case 312: -#line 1480 "parser.php7.lemon" -{ - xx_ret_declare_statement(&yygotominor.yy250, XX_T_TYPE_INTEGER, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(73,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6701 "parser.php7.c" - break; - case 313: -#line 1484 "parser.php7.lemon" -{ - xx_ret_declare_statement(&yygotominor.yy250, XX_T_TYPE_UINTEGER, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(74,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6710 "parser.php7.c" - break; - case 314: -#line 1488 "parser.php7.lemon" -{ - xx_ret_declare_statement(&yygotominor.yy250, XX_T_TYPE_CHAR, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(77,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6719 "parser.php7.c" - break; - case 315: -#line 1492 "parser.php7.lemon" -{ - xx_ret_declare_statement(&yygotominor.yy250, XX_T_TYPE_UCHAR, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(78,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6728 "parser.php7.c" - break; - case 316: -#line 1496 "parser.php7.lemon" -{ - xx_ret_declare_statement(&yygotominor.yy250, XX_T_TYPE_LONG, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(75,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6737 "parser.php7.c" - break; - case 317: -#line 1500 "parser.php7.lemon" -{ - xx_ret_declare_statement(&yygotominor.yy250, XX_T_TYPE_ULONG, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(76,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6746 "parser.php7.c" - break; - case 318: -#line 1504 "parser.php7.lemon" -{ - xx_ret_declare_statement(&yygotominor.yy250, XX_T_TYPE_DOUBLE, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(79,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6755 "parser.php7.c" - break; - case 319: -#line 1508 "parser.php7.lemon" -{ - xx_ret_declare_statement(&yygotominor.yy250, XX_T_TYPE_STRING, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(81,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6764 "parser.php7.c" - break; - case 320: -#line 1512 "parser.php7.lemon" -{ - xx_ret_declare_statement(&yygotominor.yy250, XX_T_TYPE_BOOL, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(80,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6773 "parser.php7.c" - break; - case 321: -#line 1516 "parser.php7.lemon" -{ - xx_ret_declare_statement(&yygotominor.yy250, XX_T_TYPE_VAR, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(83,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6782 "parser.php7.c" - break; - case 322: -#line 1520 "parser.php7.lemon" -{ - xx_ret_declare_statement(&yygotominor.yy250, XX_T_TYPE_ARRAY, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(82,&yymsp[-2].minor); - yy_destructor(50,&yymsp[0].minor); -} -#line 6791 "parser.php7.c" - break; - case 325: -#line 1532 "parser.php7.lemon" -{ - xx_ret_declare_variable(&yygotominor.yy250, yymsp[0].minor.yy0, NULL, status->scanner_state); -} -#line 6798 "parser.php7.c" - break; - case 326: -#line 1536 "parser.php7.lemon" -{ - xx_ret_declare_variable(&yygotominor.yy250, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(64,&yymsp[-1].minor); -} -#line 6806 "parser.php7.c" - break; - case 328: -#line 1544 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "reference", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(44,&yymsp[-1].minor); -} -#line 6814 "parser.php7.c" - break; - case 329: -#line 1548 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "not", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(42,&yymsp[-1].minor); -} -#line 6822 "parser.php7.c" - break; - case 330: -#line 1553 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "bitwise_not", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(43,&yymsp[-1].minor); -} -#line 6830 "parser.php7.c" - break; - case 331: -#line 1557 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "minus", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(29,&yymsp[-1].minor); -} -#line 6838 "parser.php7.c" - break; - case 332: -#line 1561 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "plus", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(119,&yymsp[-1].minor); -} -#line 6846 "parser.php7.c" - break; - case 333: -#line 1565 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "isset", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(34,&yymsp[-1].minor); -} -#line 6854 "parser.php7.c" - break; - case 334: -#line 1569 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "require", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(8,&yymsp[-1].minor); -} -#line 6862 "parser.php7.c" - break; - case 335: -#line 1573 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "clone", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(40,&yymsp[-1].minor); -} -#line 6870 "parser.php7.c" - break; - case 336: -#line 1577 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "empty", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(36,&yymsp[-1].minor); -} -#line 6878 "parser.php7.c" - break; - case 337: -#line 1581 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "likely", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(11,&yymsp[-1].minor); -} -#line 6886 "parser.php7.c" - break; - case 338: -#line 1585 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "unlikely", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(12,&yymsp[-1].minor); -} -#line 6894 "parser.php7.c" - break; - case 339: -#line 1589 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "equals", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(20,&yymsp[-1].minor); -} -#line 6902 "parser.php7.c" - break; - case 340: -#line 1593 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "not-equals", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(27,&yymsp[-1].minor); -} -#line 6910 "parser.php7.c" - break; - case 341: -#line 1597 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "identical", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(21,&yymsp[-1].minor); -} -#line 6918 "parser.php7.c" - break; - case 342: -#line 1601 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "not-identical", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(26,&yymsp[-1].minor); -} -#line 6926 "parser.php7.c" - break; - case 343: -#line 1605 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "less", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(22,&yymsp[-1].minor); -} -#line 6934 "parser.php7.c" - break; - case 344: -#line 1609 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "greater", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(23,&yymsp[-1].minor); -} -#line 6942 "parser.php7.c" - break; - case 345: -#line 1613 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "less-equal", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(24,&yymsp[-1].minor); -} -#line 6950 "parser.php7.c" - break; - case 346: -#line 1617 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "greater-equal", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(25,&yymsp[-1].minor); -} -#line 6958 "parser.php7.c" - break; - case 347: -#line 1621 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "list", &yymsp[-1].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 6967 "parser.php7.c" - break; - case 348: -#line 1625 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "cast", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-1].minor); -} -#line 6976 "parser.php7.c" - break; - case 349: -#line 1629 "parser.php7.lemon" -{ - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state); - xx_ret_expr(&yygotominor.yy250, "type-hint", &identifier, &yymsp[0].minor.yy250, NULL, status->scanner_state); - } - yy_destructor(22,&yymsp[-3].minor); - yy_destructor(23,&yymsp[-1].minor); -} -#line 6989 "parser.php7.c" - break; - case 350: -#line 1637 "parser.php7.lemon" -{ - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, yymsp[0].minor.yy0, status->scanner_state); - xx_ret_expr(&yygotominor.yy250, "property-access", &yymsp[-2].minor.yy250, &identifier, NULL, status->scanner_state); - } - yy_destructor(47,&yymsp[-1].minor); -} -#line 7001 "parser.php7.c" - break; - case 351: -#line 1645 "parser.php7.lemon" -{ - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, yymsp[-1].minor.yy0, status->scanner_state); - xx_ret_expr(&yygotominor.yy250, "property-dynamic-access", &yymsp[-4].minor.yy250, &identifier, NULL, status->scanner_state); - } - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7015 "parser.php7.c" - break; - case 352: -#line 1653 "parser.php7.lemon" -{ - { - zval identifier; - xx_ret_literal(&identifier, XX_T_STRING, yymsp[-1].minor.yy0, status->scanner_state); - xx_ret_expr(&yygotominor.yy250, "property-string-access", &yymsp[-4].minor.yy250, &identifier, NULL, status->scanner_state); - } - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7029 "parser.php7.c" - break; - case 353: -#line 1661 "parser.php7.lemon" -{ - { - zval identifier, identifier2; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state); - xx_ret_literal(&identifier2, XX_T_IDENTIFIER, yymsp[0].minor.yy0, status->scanner_state); - xx_ret_expr(&yygotominor.yy250, "static-property-access", &identifier, &identifier2, NULL, status->scanner_state); - } - yy_destructor(112,&yymsp[-1].minor); -} -#line 7042 "parser.php7.c" - break; - case 354: - case 444: -#line 1670 "parser.php7.lemon" -{ - { - zval identifier, identifier2; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state); - xx_ret_literal(&identifier2, XX_T_IDENTIFIER, yymsp[0].minor.yy0, status->scanner_state); - xx_ret_expr(&yygotominor.yy250, "static-constant-access", &identifier, &identifier2, NULL, status->scanner_state); - } - yy_destructor(112,&yymsp[-1].minor); -} -#line 7056 "parser.php7.c" - break; - case 355: -#line 1684 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "array-access", &yymsp[-3].minor.yy250, &yymsp[-1].minor.yy250, NULL, status->scanner_state); - yy_destructor(46,&yymsp[-2].minor); - yy_destructor(72,&yymsp[0].minor); -} -#line 7065 "parser.php7.c" - break; - case 356: -#line 1689 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "add", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(28,&yymsp[-1].minor); -} -#line 7073 "parser.php7.c" - break; - case 357: -#line 1694 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "sub", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(29,&yymsp[-1].minor); -} -#line 7081 "parser.php7.c" - break; - case 358: -#line 1699 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "mul", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(31,&yymsp[-1].minor); -} -#line 7089 "parser.php7.c" - break; - case 359: -#line 1704 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "div", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(32,&yymsp[-1].minor); -} -#line 7097 "parser.php7.c" - break; - case 360: -#line 1709 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "mod", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(33,&yymsp[-1].minor); -} -#line 7105 "parser.php7.c" - break; - case 361: -#line 1714 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "concat", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(30,&yymsp[-1].minor); -} -#line 7113 "parser.php7.c" - break; - case 362: -#line 1719 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "and", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(14,&yymsp[-1].minor); -} -#line 7121 "parser.php7.c" - break; - case 363: -#line 1724 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "or", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(13,&yymsp[-1].minor); -} -#line 7129 "parser.php7.c" - break; - case 364: -#line 1729 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "bitwise_or", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(16,&yymsp[-1].minor); -} -#line 7137 "parser.php7.c" - break; - case 365: -#line 1734 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "bitwise_and", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(44,&yymsp[-1].minor); -} -#line 7145 "parser.php7.c" - break; - case 366: -#line 1739 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "bitwise_xor", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(17,&yymsp[-1].minor); -} -#line 7153 "parser.php7.c" - break; - case 367: -#line 1744 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "bitwise_shiftleft", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(18,&yymsp[-1].minor); -} -#line 7161 "parser.php7.c" - break; - case 368: -#line 1749 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "bitwise_shiftright", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(19,&yymsp[-1].minor); -} -#line 7169 "parser.php7.c" - break; - case 369: -#line 1754 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "instanceof", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(15,&yymsp[-1].minor); -} -#line 7177 "parser.php7.c" - break; - case 370: -#line 1759 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "irange", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(37,&yymsp[-1].minor); -} -#line 7185 "parser.php7.c" - break; - case 371: -#line 1764 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "erange", &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, NULL, status->scanner_state); - yy_destructor(38,&yymsp[-1].minor); -} -#line 7193 "parser.php7.c" - break; - case 372: -#line 1769 "parser.php7.lemon" -{ - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state); - xx_ret_expr(&yygotominor.yy250, "fetch", &identifier, &yymsp[0].minor.yy250, NULL, status->scanner_state); - } - yy_destructor(35,&yymsp[-3].minor); - yy_destructor(7,&yymsp[-1].minor); -} -#line 7206 "parser.php7.c" - break; - case 374: -#line 1783 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "typeof", &yymsp[0].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(39,&yymsp[-1].minor); -} -#line 7214 "parser.php7.c" - break; - case 376: - case 437: - case 454: -#line 1793 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_INTEGER, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7223 "parser.php7.c" - break; - case 377: - case 439: - case 453: -#line 1798 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_STRING, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7232 "parser.php7.c" - break; - case 378: -#line 1803 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_ISTRING, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7239 "parser.php7.c" - break; - case 379: - case 438: -#line 1808 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_CHAR, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7247 "parser.php7.c" - break; - case 380: - case 440: -#line 1813 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_DOUBLE, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7255 "parser.php7.c" - break; - case 381: - case 441: -#line 1818 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_NULL, NULL, status->scanner_state); - yy_destructor(70,&yymsp[0].minor); -} -#line 7264 "parser.php7.c" - break; - case 382: - case 443: -#line 1823 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_TRUE, NULL, status->scanner_state); - yy_destructor(124,&yymsp[0].minor); -} -#line 7273 "parser.php7.c" - break; - case 383: - case 442: -#line 1828 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_FALSE, NULL, status->scanner_state); - yy_destructor(125,&yymsp[0].minor); -} -#line 7282 "parser.php7.c" - break; - case 384: - case 445: -#line 1833 "parser.php7.lemon" -{ - xx_ret_literal(&yygotominor.yy250, XX_T_CONSTANT, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7290 "parser.php7.c" - break; - case 385: - case 446: -#line 1838 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "empty-array", NULL, NULL, NULL, status->scanner_state); - yy_destructor(46,&yymsp[-1].minor); - yy_destructor(72,&yymsp[0].minor); -} -#line 7300 "parser.php7.c" - break; - case 386: - case 447: -#line 1843 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "array", &yymsp[-1].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(46,&yymsp[-2].minor); - yy_destructor(72,&yymsp[0].minor); -} -#line 7310 "parser.php7.c" - break; - case 387: -#line 1848 "parser.php7.lemon" -{ - xx_ret_new_static_instance(&yygotominor.yy250, NULL, status->scanner_state); - yy_destructor(41,&yymsp[-1].minor); - yy_destructor(4,&yymsp[0].minor); -} -#line 7319 "parser.php7.c" - break; - case 388: -#line 1853 "parser.php7.lemon" -{ - xx_ret_new_static_instance(&yygotominor.yy250, NULL, status->scanner_state); - yy_destructor(41,&yymsp[-3].minor); - yy_destructor(4,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7330 "parser.php7.c" - break; - case 389: -#line 1858 "parser.php7.lemon" -{ - xx_ret_new_static_instance(&yygotominor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(41,&yymsp[-4].minor); - yy_destructor(4,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7341 "parser.php7.c" - break; - case 390: -#line 1863 "parser.php7.lemon" -{ - xx_ret_new_instance(&yygotominor.yy250, 0, yymsp[0].minor.yy0, NULL, status->scanner_state); - yy_destructor(41,&yymsp[-1].minor); -} -#line 7349 "parser.php7.c" - break; - case 391: -#line 1868 "parser.php7.lemon" -{ - xx_ret_new_instance(&yygotominor.yy250, 0, yymsp[-2].minor.yy0, NULL, status->scanner_state); - yy_destructor(41,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7359 "parser.php7.c" - break; - case 392: -#line 1873 "parser.php7.lemon" -{ - xx_ret_new_instance(&yygotominor.yy250, 0, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(41,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7369 "parser.php7.c" - break; - case 393: -#line 1878 "parser.php7.lemon" -{ - xx_ret_new_instance(&yygotominor.yy250, 1, yymsp[-1].minor.yy0, NULL, status->scanner_state); - yy_destructor(41,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7379 "parser.php7.c" - break; - case 394: -#line 1883 "parser.php7.lemon" -{ - xx_ret_new_instance(&yygotominor.yy250, 1, yymsp[-3].minor.yy0, NULL, status->scanner_state); - yy_destructor(41,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7391 "parser.php7.c" - break; - case 395: -#line 1888 "parser.php7.lemon" -{ - xx_ret_new_instance(&yygotominor.yy250, 1, yymsp[-4].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(41,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7403 "parser.php7.c" - break; - case 396: -#line 1893 "parser.php7.lemon" -{ - xx_ret_new_instance_type(&yygotominor.yy250, &yymsp[-3].minor.yy250, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(41,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7413 "parser.php7.c" - break; - case 397: -#line 1898 "parser.php7.lemon" -{ - xx_ret_fcall(&yygotominor.yy250, 1, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7422 "parser.php7.c" - break; - case 398: -#line 1903 "parser.php7.lemon" -{ - xx_ret_fcall(&yygotominor.yy250, 1, yymsp[-2].minor.yy0, NULL, status->scanner_state); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7431 "parser.php7.c" - break; - case 399: -#line 1908 "parser.php7.lemon" -{ - xx_ret_fcall(&yygotominor.yy250, 2, yymsp[-4].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7442 "parser.php7.c" - break; - case 400: -#line 1913 "parser.php7.lemon" -{ - xx_ret_fcall(&yygotominor.yy250, 2, yymsp[-3].minor.yy0, NULL, status->scanner_state); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7453 "parser.php7.c" - break; - case 401: -#line 1918 "parser.php7.lemon" -{ - xx_ret_scall(&yygotominor.yy250, 0, yymsp[-4].minor.yy0->token, 0, yymsp[-2].minor.yy0, NULL, status->scanner_state); - efree(yymsp[-4].minor.yy0->token); - efree(yymsp[-4].minor.yy0); - yy_destructor(112,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7465 "parser.php7.c" - break; - case 402: -#line 1925 "parser.php7.lemon" -{ - xx_ret_scall(&yygotominor.yy250, 0, yymsp[-5].minor.yy0->token, 0, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - efree(yymsp[-5].minor.yy0->token); - efree(yymsp[-5].minor.yy0); - yy_destructor(112,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7477 "parser.php7.c" - break; - case 403: -#line 1932 "parser.php7.lemon" -{ - xx_ret_scall(&yygotominor.yy250, 0, "static", 0, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(4,&yymsp[-5].minor); - yy_destructor(112,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7488 "parser.php7.c" - break; - case 404: -#line 1937 "parser.php7.lemon" -{ - xx_ret_scall(&yygotominor.yy250, 0, "static", 0, yymsp[-2].minor.yy0, NULL, status->scanner_state); - yy_destructor(4,&yymsp[-4].minor); - yy_destructor(112,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7499 "parser.php7.c" - break; - case 405: -#line 1942 "parser.php7.lemon" -{ - xx_ret_scall(&yygotominor.yy250, 1, yymsp[-5].minor.yy0->token, 0, yymsp[-2].minor.yy0, NULL, status->scanner_state); - efree(yymsp[-5].minor.yy0->token); - efree(yymsp[-5].minor.yy0); - yy_destructor(55,&yymsp[-6].minor); - yy_destructor(56,&yymsp[-4].minor); - yy_destructor(112,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7513 "parser.php7.c" - break; - case 406: -#line 1949 "parser.php7.lemon" -{ - xx_ret_scall(&yygotominor.yy250, 1, yymsp[-6].minor.yy0->token, 0, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - efree(yymsp[-6].minor.yy0->token); - efree(yymsp[-6].minor.yy0); - yy_destructor(55,&yymsp[-7].minor); - yy_destructor(56,&yymsp[-5].minor); - yy_destructor(112,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7527 "parser.php7.c" - break; - case 407: -#line 1956 "parser.php7.lemon" -{ - xx_ret_scall(&yygotominor.yy250, 1, yymsp[-7].minor.yy0->token, 1, yymsp[-3].minor.yy0, NULL, status->scanner_state); - efree(yymsp[-7].minor.yy0->token); - efree(yymsp[-7].minor.yy0); - yy_destructor(55,&yymsp[-8].minor); - yy_destructor(56,&yymsp[-6].minor); - yy_destructor(112,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7543 "parser.php7.c" - break; - case 408: -#line 1963 "parser.php7.lemon" -{ - xx_ret_scall(&yygotominor.yy250, 1, yymsp[-8].minor.yy0->token, 1, yymsp[-4].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - efree(yymsp[-8].minor.yy0->token); - efree(yymsp[-8].minor.yy0); - yy_destructor(55,&yymsp[-9].minor); - yy_destructor(56,&yymsp[-7].minor); - yy_destructor(112,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7559 "parser.php7.c" - break; - case 409: -#line 1970 "parser.php7.lemon" -{ - xx_ret_scall(&yygotominor.yy250, 0, yymsp[-6].minor.yy0->token, 1, yymsp[-3].minor.yy0, NULL, status->scanner_state); - efree(yymsp[-6].minor.yy0->token); - efree(yymsp[-6].minor.yy0); - yy_destructor(112,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7573 "parser.php7.c" - break; - case 410: -#line 1977 "parser.php7.lemon" -{ - xx_ret_scall(&yygotominor.yy250, 0, yymsp[-7].minor.yy0->token, 1, yymsp[-4].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - efree(yymsp[-7].minor.yy0->token); - efree(yymsp[-7].minor.yy0); - yy_destructor(112,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7587 "parser.php7.c" - break; - case 411: -#line 1984 "parser.php7.lemon" -{ - xx_ret_mcall(&yygotominor.yy250, 1, &yymsp[-5].minor.yy250, yymsp[-3].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(47,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7597 "parser.php7.c" - break; - case 412: -#line 1989 "parser.php7.lemon" -{ - xx_ret_mcall(&yygotominor.yy250, 1, &yymsp[-4].minor.yy250, yymsp[-2].minor.yy0, NULL, status->scanner_state); - yy_destructor(47,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7607 "parser.php7.c" - break; - case 413: -#line 1994 "parser.php7.lemon" -{ - xx_ret_mcall(&yygotominor.yy250, 2, &yymsp[-7].minor.yy250, yymsp[-4].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(47,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7619 "parser.php7.c" - break; - case 414: -#line 1999 "parser.php7.lemon" -{ - xx_ret_mcall(&yygotominor.yy250, 2, &yymsp[-6].minor.yy250, yymsp[-3].minor.yy0, NULL, status->scanner_state); - yy_destructor(47,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7631 "parser.php7.c" - break; - case 415: -#line 2004 "parser.php7.lemon" -{ - xx_ret_mcall(&yygotominor.yy250, 3, &yymsp[-7].minor.yy250, yymsp[-4].minor.yy0, &yymsp[-1].minor.yy250, status->scanner_state); - yy_destructor(47,&yymsp[-6].minor); - yy_destructor(55,&yymsp[-5].minor); - yy_destructor(56,&yymsp[-3].minor); - yy_destructor(54,&yymsp[-2].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7643 "parser.php7.c" - break; - case 416: -#line 2009 "parser.php7.lemon" -{ - xx_ret_mcall(&yygotominor.yy250, 3, &yymsp[-6].minor.yy250, yymsp[-3].minor.yy0, NULL, status->scanner_state); - yy_destructor(47,&yymsp[-5].minor); - yy_destructor(55,&yymsp[-4].minor); - yy_destructor(56,&yymsp[-2].minor); - yy_destructor(54,&yymsp[-1].minor); - yy_destructor(45,&yymsp[0].minor); -} -#line 7655 "parser.php7.c" - break; - case 420: -#line 2029 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "ternary", &yymsp[-4].minor.yy250, &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(10,&yymsp[-3].minor); - yy_destructor(94,&yymsp[-1].minor); -} -#line 7664 "parser.php7.c" - break; - case 421: -#line 2034 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "short-ternary", &yymsp[-3].minor.yy250, NULL, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(10,&yymsp[-2].minor); - yy_destructor(94,&yymsp[-1].minor); -} -#line 7673 "parser.php7.c" - break; - case 424: -#line 2047 "parser.php7.lemon" -{ - xx_ret_call_parameter(&yygotominor.yy250, NULL, &yymsp[0].minor.yy250, status->scanner_state); -} -#line 7680 "parser.php7.c" - break; - case 425: -#line 2052 "parser.php7.lemon" -{ - xx_ret_call_parameter(&yygotominor.yy250, yymsp[-2].minor.yy0, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(94,&yymsp[-1].minor); -} -#line 7688 "parser.php7.c" - break; - case 426: -#line 2057 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "closure", NULL, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-4].minor); - yy_destructor(54,&yymsp[-3].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7700 "parser.php7.c" - break; - case 427: -#line 2062 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "closure", NULL, &yymsp[-1].minor.yy250, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7712 "parser.php7.c" - break; - case 428: -#line 2067 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "closure", &yymsp[-3].minor.yy250, NULL, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-5].minor); - yy_destructor(54,&yymsp[-4].minor); - yy_destructor(45,&yymsp[-2].minor); - yy_destructor(55,&yymsp[-1].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7724 "parser.php7.c" - break; - case 429: -#line 2072 "parser.php7.lemon" -{ - xx_ret_expr(&yygotominor.yy250, "closure", &yymsp[-4].minor.yy250, &yymsp[-1].minor.yy250, NULL, status->scanner_state); - yy_destructor(53,&yymsp[-6].minor); - yy_destructor(54,&yymsp[-5].minor); - yy_destructor(45,&yymsp[-3].minor); - yy_destructor(55,&yymsp[-2].minor); - yy_destructor(56,&yymsp[0].minor); -} -#line 7736 "parser.php7.c" - break; - case 430: -#line 2077 "parser.php7.lemon" -{ - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, yymsp[-2].minor.yy0, status->scanner_state); - xx_ret_expr(&yygotominor.yy250, "closure-arrow", &identifier, &yymsp[0].minor.yy250, NULL, status->scanner_state); - } - yy_destructor(9,&yymsp[-1].minor); -} -#line 7748 "parser.php7.c" - break; - case 433: - case 450: -#line 2093 "parser.php7.lemon" -{ - xx_ret_array_item(&yygotominor.yy250, &yymsp[-2].minor.yy250, &yymsp[0].minor.yy250, status->scanner_state); - yy_destructor(94,&yymsp[-1].minor); -} -#line 7757 "parser.php7.c" - break; - case 434: - case 451: -#line 2097 "parser.php7.lemon" -{ - xx_ret_array_item(&yygotominor.yy250, NULL, &yymsp[0].minor.yy250, status->scanner_state); -} -#line 7765 "parser.php7.c" - break; - case 457: -#line 2195 "parser.php7.lemon" -{ - xx_ret_comment(&yygotominor.yy250, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7772 "parser.php7.c" - break; - case 458: -#line 2199 "parser.php7.lemon" -{ - xx_ret_cblock(&yygotominor.yy250, yymsp[0].minor.yy0, status->scanner_state); -} -#line 7779 "parser.php7.c" - break; - }; - yygoto = yyRuleInfo[yyruleno].lhs; - yysize = yyRuleInfo[yyruleno].nrhs; - yypParser->yyidx -= yysize; - yyact = yy_find_reduce_action(yypParser,yygoto); - if( yyact < YYNSTATE ){ - yy_shift(yypParser,yyact,yygoto,&yygotominor); - }else if( yyact == YYNSTATE + YYNRULE + 1 ){ - yy_accept(yypParser); - } -} - -/* -** The following code executes when the parse fails -*/ -static void yy_parse_failed( - yyParser *yypParser /* The parser */ -){ - xx_ARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser fails */ - xx_ARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following code executes when a syntax error first occurs. -*/ -static void yy_syntax_error( - yyParser *yypParser, /* The parser */ - int yymajor, /* The major type of the error token */ - YYMINORTYPE yyminor /* The minor type of the error token */ -){ - xx_ARG_FETCH; -#define TOKEN (yyminor.yy0) -#line 62 "parser.php7.lemon" - - - zval syntax_error; - - array_init(&syntax_error); - - parser_add_str(&syntax_error, "type", "error"); - - /*if (status->scanner_state->start_length) { - fprintf(stderr, "Syntax error, %s", status->scanner_state->start); - } else { - fprintf(stderr, "EOF"); - }*/ - - //status->syntax_error_len = 48 + Z_STRLEN_P(status->scanner_state->active_file); - //status->syntax_error = emalloc(sizeof(char) * status->syntax_error_len); - - if (status->scanner_state->start_length) { - parser_add_str(&syntax_error, "message", "Syntax error"); - } else { - parser_add_str(&syntax_error, "message", "Unexpected EOF"); - } - - parser_add_str(&syntax_error, "file", status->scanner_state->active_file); - parser_add_int(&syntax_error, "line", status->scanner_state->active_line); - parser_add_int(&syntax_error, "char", status->scanner_state->active_char); - - status->status = XX_PARSING_FAILED; - status->ret = syntax_error; - -#line 7852 "parser.php7.c" - xx_ARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following is executed when the parser accepts -*/ -static void yy_accept( - yyParser *yypParser /* The parser */ -){ - xx_ARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser accepts */ - xx_ARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* The main parser program. -** The first argument is a pointer to a structure obtained from -** "xx_Alloc" which describes the current state of the parser. -** The second argument is the major token number. The third is -** the minor token. The fourth optional argument is whatever the -** user wants (and specified in the grammar) and is available for -** use by the action routines. -** -** Inputs: -**
    -**
  • A pointer to the parser (an opaque structure.) -**
  • The major token number. -**
  • The minor token number. -**
  • An option argument of a grammar-specified type. -**
-** -** Outputs: -** None. -*/ -void xx_( - void *yyp, /* The parser */ - int yymajor, /* The major token code number */ - xx_TOKENTYPE yyminor /* The value for the token */ - xx_ARG_PDECL /* Optional %extra_argument parameter */ -){ - YYMINORTYPE yyminorunion; - int yyact; /* The parser action. */ - int yyendofinput; /* True if we are at the end of input */ - int yyerrorhit = 0; /* True if yymajor has invoked an error */ - yyParser *yypParser; /* The parser */ - - /* (re)initialize the parser, if necessary */ - yypParser = (yyParser*)yyp; - if( yypParser->yyidx<0 ){ - if( yymajor==0 ) return; - yypParser->yyidx = 0; - yypParser->yyerrcnt = -1; - yypParser->yystack[0].stateno = 0; - yypParser->yystack[0].major = 0; - } - yyminorunion.yy0 = yyminor; - yyendofinput = (yymajor==0); - xx_ARG_STORE; - -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); - } -#endif - - do{ - yyact = yy_find_shift_action(yypParser,yymajor); - if( yyactyyerrcnt--; - if( yyendofinput && yypParser->yyidx>=0 ){ - yymajor = 0; - }else{ - yymajor = YYNOCODE; - } - }else if( yyact < YYNSTATE + YYNRULE ){ - yy_reduce(yypParser,yyact-YYNSTATE); - }else if( yyact == YY_ERROR_ACTION ){ - int yymx; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); - } -#endif -#ifdef YYERRORSYMBOL - /* A syntax error has occurred. - ** The response to an error depends upon whether or not the - ** grammar defines an error token "ERROR". - ** - ** This is what we do if the grammar does define ERROR: - ** - ** * Call the %syntax_error function. - ** - ** * Begin popping the stack until we enter a state where - ** it is legal to shift the error symbol, then shift - ** the error symbol. - ** - ** * Set the error count to three. - ** - ** * Begin accepting and shifting new tokens. No new error - ** processing will occur until three tokens have been - ** shifted successfully. - ** - */ - if( yypParser->yyerrcnt<0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yymx = yypParser->yystack[yypParser->yyidx].major; - if( yymx==YYERRORSYMBOL || yyerrorhit ){ -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sDiscard input token %s\n", - yyTracePrompt,yyTokenName[yymajor]); - } -#endif - yy_destructor(yymajor,&yyminorunion); - yymajor = YYNOCODE; - }else{ - while( - yypParser->yyidx >= 0 && - yymx != YYERRORSYMBOL && - (yyact = yy_find_shift_action(yypParser,YYERRORSYMBOL)) >= YYNSTATE - ){ - yy_pop_parser_stack(yypParser); - } - if( yypParser->yyidx < 0 || yymajor==0 ){ - yy_destructor(yymajor,&yyminorunion); - yy_parse_failed(yypParser); - yymajor = YYNOCODE; - }else if( yymx!=YYERRORSYMBOL ){ - YYMINORTYPE u2; - u2.YYERRSYMDT = 0; - yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2); - } - } - yypParser->yyerrcnt = 3; - yyerrorhit = 1; -#else /* YYERRORSYMBOL is not defined */ - /* This is what we do if the grammar does not define ERROR: - ** - ** * Report an error message, and throw away the input token. - ** - ** * If the input token is $, then fail the parse. - ** - ** As before, subsequent error messages are suppressed until - ** three input tokens have been successfully shifted. - */ - if( yypParser->yyerrcnt<=0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yypParser->yyerrcnt = 3; - yy_destructor(yymajor,&yyminorunion); - if( yyendofinput ){ - yy_parse_failed(yypParser); - } - yymajor = YYNOCODE; -#endif - }else{ - yy_accept(yypParser); - yymajor = YYNOCODE; - } - }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); - return; -} diff --git a/parser/parser/parser.php7.h b/parser/parser/parser.php7.h deleted file mode 100644 index 2c5dfb0ecf..0000000000 --- a/parser/parser/parser.php7.h +++ /dev/null @@ -1,126 +0,0 @@ -#define XX_INTERNAL 1 -#define XX_PUBLIC 2 -#define XX_PROTECTED 3 -#define XX_STATIC 4 -#define XX_PRIVATE 5 -#define XX_SCOPED 6 -#define XX_COMMA 7 -#define XX_REQUIRE 8 -#define XX_DOUBLEARROW 9 -#define XX_QUESTION 10 -#define XX_LIKELY 11 -#define XX_UNLIKELY 12 -#define XX_OR 13 -#define XX_AND 14 -#define XX_INSTANCEOF 15 -#define XX_BITWISE_OR 16 -#define XX_BITWISE_XOR 17 -#define XX_BITWISE_SHIFTLEFT 18 -#define XX_BITWISE_SHIFTRIGHT 19 -#define XX_EQUALS 20 -#define XX_IDENTICAL 21 -#define XX_LESS 22 -#define XX_GREATER 23 -#define XX_LESSEQUAL 24 -#define XX_GREATEREQUAL 25 -#define XX_NOTIDENTICAL 26 -#define XX_NOTEQUALS 27 -#define XX_ADD 28 -#define XX_SUB 29 -#define XX_CONCAT 30 -#define XX_MUL 31 -#define XX_DIV 32 -#define XX_MOD 33 -#define XX_ISSET 34 -#define XX_FETCH 35 -#define XX_EMPTY 36 -#define XX_INCLUSIVE_RANGE 37 -#define XX_EXCLUSIVE_RANGE 38 -#define XX_TYPEOF 39 -#define XX_CLONE 40 -#define XX_NEW 41 -#define XX_NOT 42 -#define XX_BITWISE_NOT 43 -#define XX_BITWISE_AND 44 -#define XX_PARENTHESES_CLOSE 45 -#define XX_SBRACKET_OPEN 46 -#define XX_ARROW 47 -#define XX_NAMESPACE 48 -#define XX_IDENTIFIER 49 -#define XX_DOTCOMMA 50 -#define XX_USE 51 -#define XX_AS 52 -#define XX_FUNCTION 53 -#define XX_PARENTHESES_OPEN 54 -#define XX_BRACKET_OPEN 55 -#define XX_BRACKET_CLOSE 56 -#define XX_INTERFACE 57 -#define XX_EXTENDS 58 -#define XX_CLASS 59 -#define XX_IMPLEMENTS 60 -#define XX_ABSTRACT 61 -#define XX_FINAL 62 -#define XX_COMMENT 63 -#define XX_ASSIGN 64 -#define XX_CONST 65 -#define XX_CONSTANT 66 -#define XX_INLINE 67 -#define XX_DEPRECATED 68 -#define XX_VOID 69 -#define XX_NULL 70 -#define XX_THIS 71 -#define XX_SBRACKET_CLOSE 72 -#define XX_TYPE_INTEGER 73 -#define XX_TYPE_UINTEGER 74 -#define XX_TYPE_LONG 75 -#define XX_TYPE_ULONG 76 -#define XX_TYPE_CHAR 77 -#define XX_TYPE_UCHAR 78 -#define XX_TYPE_DOUBLE 79 -#define XX_TYPE_BOOL 80 -#define XX_TYPE_STRING 81 -#define XX_TYPE_ARRAY 82 -#define XX_TYPE_VAR 83 -#define XX_TYPE_CALLABLE 84 -#define XX_TYPE_RESOURCE 85 -#define XX_TYPE_OBJECT 86 -#define XX_BREAK 87 -#define XX_CONTINUE 88 -#define XX_IF 89 -#define XX_ELSE 90 -#define XX_ELSEIF 91 -#define XX_SWITCH 92 -#define XX_CASE 93 -#define XX_COLON 94 -#define XX_DEFAULT 95 -#define XX_LOOP 96 -#define XX_WHILE 97 -#define XX_DO 98 -#define XX_TRY 99 -#define XX_CATCH 100 -#define XX_FOR 101 -#define XX_IN 102 -#define XX_REVERSE 103 -#define XX_LET 104 -#define XX_ADDASSIGN 105 -#define XX_SUBASSIGN 106 -#define XX_MULASSIGN 107 -#define XX_DIVASSIGN 108 -#define XX_CONCATASSIGN 109 -#define XX_MODASSIGN 110 -#define XX_STRING 111 -#define XX_DOUBLECOLON 112 -#define XX_INCR 113 -#define XX_DECR 114 -#define XX_ECHO 115 -#define XX_RETURN 116 -#define XX_UNSET 117 -#define XX_THROW 118 -#define XX_PLUS 119 -#define XX_INTEGER 120 -#define XX_ISTRING 121 -#define XX_CHAR 122 -#define XX_DOUBLE 123 -#define XX_TRUE 124 -#define XX_FALSE 125 -#define XX_CBLOCK 126 diff --git a/parser/parser/parser.php7.inc.h b/parser/parser/parser.php7.inc.h deleted file mode 100644 index bd7ab622dc..0000000000 --- a/parser/parser/parser.php7.inc.h +++ /dev/null @@ -1,1171 +0,0 @@ - -#include -#include "string.h" -#include "parser.php7.h" -#include "xx.h" -#include "scanner.h" - -#define SL(str) ZEND_STRL(str) - -static void parser_add_str(zval *arr, const char *key, const char *val) { - zval tmp; - zend_string *tmp_str = zend_string_init(val, strlen(val), 0); - ZVAL_STR(&tmp, tmp_str); - zend_hash_str_add(Z_ARRVAL_P(arr), key, strlen(key), &tmp); -} - -static void parser_add_str_free(zval *arr, const char *key, char *val) { - zval tmp; - zend_string *tmp_str = zend_string_init(val, strlen(val), 0); - ZVAL_STR(&tmp, tmp_str); - zend_hash_str_add(Z_ARRVAL_P(arr), key, strlen(key), &tmp); - efree(val); -} - -static void parser_add_int(zval *arr, const char *key, int i) { - zval tmp; - ZVAL_LONG(&tmp, i); - zend_hash_str_add(Z_ARRVAL_P(arr), key, strlen(key), &tmp); -} - -static void parser_add_zval(zval *arr, const char *key, zval *zv) { - zend_hash_str_add(Z_ARRVAL_P(arr), key, strlen(key), zv); -} - -static void parser_array_append(zval *arr, zval *zv) { - add_next_index_zval(arr, zv); -} - -static void parser_get_string(zval *tmp, const char *str) { - zend_string *zs = zend_string_init(str, strlen(str), 0); - ZVAL_STR(tmp, zs); -} - -static void xx_ret_literal(zval *ret, int type, xx_parser_token *T, xx_scanner_state *state) -{ - array_init(ret); - - switch (type) { - - case XX_T_CONSTANT: - parser_add_str(ret, "type", "constant"); - break; - - case XX_T_IDENTIFIER: - parser_add_str(ret, "type", "variable"); - break; - - case XX_T_INTEGER: - parser_add_str(ret, "type", "int"); - break; - - case XX_T_DOUBLE: - parser_add_str(ret, "type", "double"); - break; - - case XX_T_NULL: - parser_add_str(ret, "type", "null"); - break; - - case XX_T_STRING: - parser_add_str(ret, "type", "string"); - break; - - case XX_T_ISTRING: - parser_add_str(ret, "type", "istring"); - break; - - case XX_T_CHAR: - parser_add_str(ret, "type", "char"); - break; - - default: - if (type == XX_T_TRUE) { - parser_add_str(ret, "type", "bool"); - parser_add_str(ret, "value", "true"); - } else { - if (type == XX_T_FALSE) { - parser_add_str(ret, "type", "bool"); - parser_add_str(ret, "value", "false"); - } else { - fprintf(stderr, "literal??\n"); - } - } - } - - if (T) { - parser_add_str_free(ret, "value", T->token); - efree(T); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_expr(zval *ret, const char *type, zval *left, zval *right, zval *extra, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", type); - - if (left) { - parser_add_zval(ret, "left", left); - } - if (right) { - parser_add_zval(ret, "right", right); - } - if (extra) { - parser_add_zval(ret, "extra", extra); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_array_item(zval *ret, zval *key, zval *value, xx_scanner_state *state) -{ - array_init(ret); - - if (key) { - parser_add_zval(ret, "key", key); - } - parser_add_zval(ret, "value", value); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_namespace(zval *ret, xx_parser_token *T, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "namespace"); - parser_add_str_free(ret, "name", T->token); - efree(T); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_use_aliases(zval *ret, zval *use_aliases_list, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "use"); - parser_add_zval(ret, "aliases", use_aliases_list); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_use_aliases_item(zval *ret, xx_parser_token *T, xx_parser_token *A, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str_free(ret, "name", T->token); - efree(T); - - if (A) { - parser_add_str_free(ret, "alias", A->token); - efree(A); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_function(zval *ret, xx_parser_token *T, zval *parameters, - zval *statements, xx_parser_token *D, zval *return_type, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "function"); - parser_add_str_free(ret, "name", T->token); - efree(T); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - if (D) { - parser_add_str_free(ret, "docblock", D->token); - efree(D); - } - - if (return_type) { - parser_add_zval(ret, "return-type", return_type); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->method_line); - parser_add_int(ret, "char", state->method_char); -} - -static void xx_ret_class(zval *ret, xx_parser_token *T, zval *class_definition, int is_abstract, int is_final, - xx_parser_token *E, zval *I, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "class"); - parser_add_str_free(ret, "name", T->token); - efree(T); - - parser_add_int(ret, "abstract", is_abstract); - parser_add_int(ret, "final", is_final); - - if (E) { - parser_add_str_free(ret, "extends", E->token); - efree(E); - } - - if (I) { - parser_add_zval(ret, "implements", I); - } - - if (class_definition) { - parser_add_zval(ret, "definition", class_definition); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->class_line); - parser_add_int(ret, "char", state->class_char); -} - -static void xx_ret_interface(zval *ret, xx_parser_token *T, zval *interface_definition, zval *extends_list, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "interface"); - parser_add_str_free(ret, "name", T->token); - efree(T); - - if (extends_list) { - parser_add_zval(ret, "extends", extends_list); - } - - if (interface_definition) { - parser_add_zval(ret, "definition", interface_definition); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->class_line); - parser_add_int(ret, "char", state->class_char); -} - -static void xx_ret_class_definition(zval *ret, zval *properties, zval *methods, zval *constants, xx_scanner_state *state) -{ - array_init(ret); - - if (properties) { - parser_add_zval(ret, "properties", properties); - } - if (methods) { - parser_add_zval(ret, "methods", methods); - } - if (constants) { - parser_add_zval(ret, "constants", constants); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->class_line); - parser_add_int(ret, "char", state->class_char); -} - -static void xx_ret_interface_definition(zval *ret, zval *methods, zval *constants, xx_scanner_state *state) -{ - array_init(ret); - - if (methods) { - parser_add_zval(ret, "methods", methods); - } - if (constants) { - parser_add_zval(ret, "constants", constants); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_class_property(zval *ret, zval *visibility, xx_parser_token *T, - zval *default_value, xx_parser_token *D, zval *shortcuts, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_zval(ret, "visibility", visibility); - parser_add_str(ret, "type", "property"); - - parser_add_str_free(ret, "name", T->token); - efree(T); - - if (default_value) { - parser_add_zval(ret, "default", default_value); - } - - if (D) { - parser_add_str_free(ret, "docblock", D->token); - efree(D); - } - - if (shortcuts) { - parser_add_zval(ret, "shortcuts", shortcuts); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_property_shortcut(zval *ret, xx_parser_token *C, xx_parser_token *D, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "shortcut"); - if (C) { - parser_add_str_free(ret, "docblock", C->token); - efree(C); - } - - parser_add_str_free(ret, "name", D->token); - efree(D); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_class_const(zval *ret, xx_parser_token *T, zval *default_value, xx_parser_token *D, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "const"); - parser_add_str_free(ret, "name", T->token); - efree(T); - - parser_add_zval(ret, "default", default_value); - - if (D) { - parser_add_str_free(ret, "docblock", D->token); - efree(D); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_class_method(zval *ret, zval *visibility, xx_parser_token *T, zval *parameters, - zval *statements, xx_parser_token *D, zval *return_type, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_zval(ret, "visibility", visibility); - parser_add_str(ret, "type", "method"); - - parser_add_str_free(ret, "name", T->token); - efree(T); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - if (D) { - parser_add_str_free(ret, "docblock", D->token); - efree(D); - } - - if (return_type) { - parser_add_zval(ret, "return-type", return_type); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->method_line); - parser_add_int(ret, "last-line", state->active_line); - parser_add_int(ret, "char", state->method_char); -} - -static void xx_ret_parameter(zval *ret, int const_param, zval *type, zval *cast, xx_parser_token *N, zval *default_value, - int mandatory, int reference, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "parameter"); - parser_add_str_free(ret, "name", N->token); - efree(N); - - parser_add_int(ret, "const", const_param); - - if (type) { - parser_add_zval(ret, "data-type", type); - parser_add_int(ret, "mandatory", mandatory); - } else { - parser_add_str(ret, "data-type", "variable"); - parser_add_int(ret, "mandatory", 0); - } - - if (cast) { - parser_add_zval(ret, "cast", cast); - } - if (default_value) { - parser_add_zval(ret, "default", default_value); - } - - parser_add_int(ret, "reference", reference); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_return_type(zval *ret, int is_void, zval *return_type_list, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "return-type"); - - if (return_type_list) { - parser_add_zval(ret, "list", return_type_list); - } - - parser_add_int(ret, "void", is_void); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_return_type_item(zval *ret, zval *type, zval *cast, int mandatory, int collection, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "return-type-parameter"); - - if (type) { - parser_add_zval(ret, "data-type", type); - parser_add_int(ret, "mandatory", mandatory); - } - - if (cast) { - parser_add_zval(ret, "cast", cast); - parser_add_int(ret, "collection", collection); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_type(zval *ret, int type) -{ - switch (type) { - - case XX_TYPE_INTEGER: - parser_get_string(ret, "int"); - return; - - case XX_TYPE_UINTEGER: - parser_get_string(ret, "uint"); - return; - - case XX_TYPE_DOUBLE: - parser_get_string(ret, "double"); - return; - - case XX_TYPE_BOOL: - parser_get_string(ret, "bool"); - return; - - case XX_TYPE_LONG: - parser_get_string(ret, "long"); - return; - - case XX_TYPE_ULONG: - parser_get_string(ret, "ulong"); - return; - - case XX_TYPE_STRING: - parser_get_string(ret, "string"); - return; - - case XX_TYPE_CHAR: - parser_get_string(ret, "char"); - return; - - case XX_TYPE_ARRAY: - parser_get_string(ret, "array"); - return; - - case XX_TYPE_VAR: - parser_get_string(ret, "variable"); - return; - - case XX_TYPE_CALLABLE: - parser_get_string(ret, "callable"); - return; - - case XX_TYPE_RESOURCE: - parser_get_string(ret, "resource"); - return; - - case XX_TYPE_OBJECT: - parser_get_string(ret, "object"); - return; - - case XX_T_TYPE_NULL: - parser_get_string(ret, "null"); - return; - - case XX_T_TYPE_THIS: - parser_get_string(ret, "this"); - return; - - default: - fprintf(stderr, "unknown type?\n"); - } - - parser_get_string(ret, "unknown"); -} - -static void xx_ret_list(zval *ret, zval *list_left, zval *list_right, xx_scanner_state *state) -{ - zval *val; - - array_init(ret); - - if (list_left) { - if (Z_TYPE_P(list_left) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(list_left), val) { - Z_TRY_ADDREF_P(val); - parser_array_append(ret, val); - } ZEND_HASH_FOREACH_END(); - zval_ptr_dtor(list_left); - } else { - parser_array_append(ret, list_left); - } - } - - parser_array_append(ret, list_right); -} - -static void xx_ret_let_statement(zval *ret, zval *assignments, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "let"); - parser_add_zval(ret, "assignments", assignments); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_let_assignment(zval *ret, char *type, zval *operator, xx_parser_token *V, xx_parser_token *P, zval *index_expr, zval *expr, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "assign-type", type); - if (operator) { - parser_add_zval(ret, "operator", operator); - } - - parser_add_str_free(ret, "variable", V->token); - efree(V); - - if (P) { - parser_add_str_free(ret, "property", P->token); - efree(P); - } - if (index_expr) { - parser_add_zval(ret, "index-expr", index_expr); - } - if (expr) { - parser_add_zval(ret, "expr", expr); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_if_statement(zval *ret, zval *expr, zval *statements, zval *elseif_statements, zval *else_statements, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "if"); - parser_add_zval(ret, "expr", expr); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - if (elseif_statements) { - parser_add_zval(ret, "elseif_statements", elseif_statements); - } - - if (else_statements) { - parser_add_zval(ret, "else_statements", else_statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_switch_statement(zval *ret, zval *expr, zval *clauses, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "switch"); - parser_add_zval(ret, "expr", expr); - - if (clauses) { - parser_add_zval(ret, "clauses", clauses); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_case_clause(zval *ret, zval *expr, zval *statements, xx_scanner_state *state) -{ - array_init(ret); - - if (expr) { - parser_add_str(ret, "type", "case"); - parser_add_zval(ret, "expr", expr); - } else { - parser_add_str(ret, "type", "default"); - } - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_while_statement(zval *ret, zval *expr, zval *statements, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "while"); - parser_add_zval(ret, "expr", expr); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_do_while_statement(zval *ret, zval *expr, zval *statements, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "do-while"); - parser_add_zval(ret, "expr", expr); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_try_catch_statement(zval *ret, zval *statements, zval *catches, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "try-catch"); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - if (catches) { - parser_add_zval(ret, "catches", catches); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_catch_statement(zval *ret, zval *classes, zval *variable, zval *statements, xx_scanner_state *state) -{ - array_init(ret); - - if (classes) { - parser_add_zval(ret, "classes", classes); - } - - if (variable) { - parser_add_zval(ret, "variable", variable); - } - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_for_statement(zval *ret, zval *expr, xx_parser_token *K, xx_parser_token *V, int reverse, zval *statements, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "for"); - parser_add_zval(ret, "expr", expr); - - if (K) { - parser_add_str_free(ret, "key", K->token); - efree(K); - } - - if (V) { - parser_add_str_free(ret, "value", V->token); - efree(V); - } - - parser_add_int(ret, "reverse", reverse); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_loop_statement(zval *ret, zval *statements, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "loop"); - - if (statements) { - parser_add_zval(ret, "statements", statements); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_empty_statement(zval *ret, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "empty"); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_break_statement(zval *ret, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "break"); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_continue_statement(zval *ret, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "continue"); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_echo_statement(zval *ret, zval *expressions, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "echo"); - parser_add_zval(ret, "expressions", expressions); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_return_statement(zval *ret, zval *expr, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "return"); - if (expr) { - parser_add_zval(ret, "expr", expr); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_require_statement(zval *ret, zval *expr, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "require"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_fetch_statement(zval *ret, zval *expr, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "fetch"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_fcall_statement(zval *ret, zval *expr, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "fcall"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_mcall_statement(zval *ret, zval *expr, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "mcall"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_scall_statement(zval *ret, zval *expr, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "scall"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_unset_statement(zval *ret, zval *expr, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "unset"); - parser_add_zval(ret, "expr", expr); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_declare_statement(zval *ret, int type, zval *variables, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "declare"); - - switch (type) { - - case XX_T_TYPE_INTEGER: - parser_add_str(ret, "data-type", "int"); - break; - - case XX_T_TYPE_UINTEGER: - parser_add_str(ret, "data-type", "uint"); - break; - - case XX_T_TYPE_LONG: - parser_add_str(ret, "data-type", "long"); - break; - - case XX_T_TYPE_ULONG: - parser_add_str(ret, "data-type", "ulong"); - break; - - case XX_T_TYPE_CHAR: - parser_add_str(ret, "data-type", "char"); - break; - - case XX_T_TYPE_UCHAR: - parser_add_str(ret, "data-type", "uchar"); - break; - - case XX_T_TYPE_DOUBLE: - parser_add_str(ret, "data-type", "double"); - break; - - case XX_T_TYPE_BOOL: - parser_add_str(ret, "data-type", "bool"); - break; - - case XX_T_TYPE_STRING: - parser_add_str(ret, "data-type", "string"); - break; - - case XX_T_TYPE_ARRAY: - parser_add_str(ret, "data-type", "array"); - break; - - case XX_T_TYPE_VAR: - parser_add_str(ret, "data-type", "variable"); - break; - - case XX_T_TYPE_CALLABLE: - parser_add_str(ret, "data-type", "callable"); - break; - - case XX_T_TYPE_RESOURCE: - parser_add_str(ret, "data-type", "resource"); - break; - - case XX_T_TYPE_OBJECT: - parser_add_str(ret, "data-type", "object"); - break; - - default: - fprintf(stderr, "err 2?\n"); - } - - parser_add_zval(ret, "variables", variables); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_declare_variable(zval *ret, xx_parser_token *T, zval *expr, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str_free(ret, "variable", T->token); - efree(T); - - if (expr) { - parser_add_zval(ret, "expr", expr); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_new_static_instance(zval *ret, zval *parameters, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "new"); - parser_add_str(ret, "class", "static"); - parser_add_int(ret, "dynamic", 0); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_new_instance(zval *ret, int dynamic, xx_parser_token *T, zval *parameters, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "new"); - - parser_add_str_free(ret, "class", T->token); - efree(T); - - parser_add_int(ret, "dynamic", dynamic); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_new_instance_type(zval *ret, zval *type, zval *parameters, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "new-type"); - parser_add_zval(ret, "internal-type", type); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_throw_exception(zval *ret, zval *expr, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "throw"); - if (expr) { - parser_add_zval(ret, "expr", expr); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_fcall(zval *ret, int type, xx_parser_token *F, zval *parameters, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "fcall"); - - parser_add_str_free(ret, "name", F->token); - efree(F); - - parser_add_int(ret, "call-type", type); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_mcall(zval *ret, int type, zval *O, xx_parser_token *M, zval *parameters, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "mcall"); - parser_add_zval(ret, "variable", O); - - parser_add_str_free(ret, "name", M->token); - efree(M); - - parser_add_int(ret, "call-type", type); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_scall(zval *ret, int dynamic_class, char *class_name, int dynamic_method, xx_parser_token *M, zval *parameters, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "scall"); - parser_add_int(ret, "dynamic-class", dynamic_class); - parser_add_str(ret, "class", class_name); - parser_add_int(ret, "dynamic", dynamic_method); - - parser_add_str_free(ret, "name", M->token); - efree(M); - - if (parameters) { - parser_add_zval(ret, "parameters", parameters); - } - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_call_parameter(zval *ret, xx_parser_token *N, zval *parameter, xx_scanner_state *state) -{ - array_init(ret); - - if (N) { - parser_add_str_free(ret, "name", N->token); - efree(N); - } - - parser_add_zval(ret, "parameter", parameter); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_comment(zval *ret, xx_parser_token *T, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "comment"); - - parser_add_str_free(ret, "value", T->token); - efree(T); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} - -static void xx_ret_cblock(zval *ret, xx_parser_token *T, xx_scanner_state *state) -{ - array_init(ret); - - parser_add_str(ret, "type", "cblock"); - - parser_add_str_free(ret, "value", T->token); - efree(T); - - parser_add_str(ret, "file", state->active_file); - parser_add_int(ret, "line", state->active_line); - parser_add_int(ret, "char", state->active_char); -} diff --git a/parser/parser/parser.php7.lemon b/parser/parser/parser.php7.lemon deleted file mode 100644 index 2bf874d9a0..0000000000 --- a/parser/parser/parser.php7.lemon +++ /dev/null @@ -1,2201 +0,0 @@ - -/* - +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | - | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | - +--------------------------------------------------------------------------+ -*/ - -/** - * Zephir parser - * - * This parser is intended to produce a better and safe code generation - * rather than full expresiveness - */ - -%token_prefix XX_ -%token_type {xx_parser_token*} -%default_type {zval} -%extra_argument {xx_parser_status *status} -%name xx_ - -%left INTERNAL PUBLIC PROTECTED STATIC PRIVATE SCOPED . - -%left COMMA . -%right REQUIRE . -%right DOUBLEARROW . -%right QUESTION . -%right LIKELY UNLIKELY . -%left OR . -%left AND . -%left INSTANCEOF . -%left BITWISE_OR BITWISE_XOR BITWISE_SHIFTLEFT BITWISE_SHIFTRIGHT . -%left EQUALS IDENTICAL LESS GREATER LESSEQUAL GREATEREQUAL NOTIDENTICAL NOTEQUALS . -%left ADD SUB CONCAT . -%left MUL DIV MOD . -%right ISSET FETCH EMPTY . -%left INCLUSIVE_RANGE EXCLUSIVE_RANGE . -%right TYPEOF . -%right CLONE . -%right NEW . -%right NOT . -%right BITWISE_NOT . -%left BITWISE_AND . -%right PARENTHESES_CLOSE . -%right SBRACKET_OPEN . -%right ARROW . - -%include { -#include "parser.php7.inc.h" -} - -%syntax_error { - - zval syntax_error; - - array_init(&syntax_error); - - parser_add_str(&syntax_error, "type", "error"); - - /*if (status->scanner_state->start_length) { - fprintf(stderr, "Syntax error, %s", status->scanner_state->start); - } else { - fprintf(stderr, "EOF"); - }*/ - - //status->syntax_error_len = 48 + Z_STRLEN_P(status->scanner_state->active_file); - //status->syntax_error = emalloc(sizeof(char) * status->syntax_error_len); - - if (status->scanner_state->start_length) { - parser_add_str(&syntax_error, "message", "Syntax error"); - } else { - parser_add_str(&syntax_error, "message", "Unexpected EOF"); - } - - parser_add_str(&syntax_error, "file", status->scanner_state->active_file); - parser_add_int(&syntax_error, "line", status->scanner_state->active_line); - parser_add_int(&syntax_error, "char", status->scanner_state->active_char); - - status->status = XX_PARSING_FAILED; - status->ret = syntax_error; -} - -%token_destructor { - if ($$) { - if ($$->free_flag) { - efree($$->token); - } - } -} - -program ::= xx_language(Q) . { - status->ret = Q; -} - -%destructor xx_language { - //zval_ptr_dtor($$); - //efree($$); -} - -xx_language(R) ::= xx_top_statement_list(L) . { - R = L; -} - -xx_top_statement_list(R) ::= xx_top_statement_list(L) xx_top_statement(T) . { - xx_ret_list(&R, &L, &T, status->scanner_state); -} - -xx_top_statement_list(R) ::= xx_top_statement(T) . { - xx_ret_list(&R, NULL, &T, status->scanner_state); -} - -xx_top_statement(R) ::= xx_namespace_def(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_use_aliases(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_function_def(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_class_def(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_interface_def(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_comment(T) . { - R = T; -} - -xx_top_statement(R) ::= xx_cblock(T) . { - R = T; -} - -xx_namespace_def(R) ::= NAMESPACE IDENTIFIER(I) DOTCOMMA . { - xx_ret_namespace(&R, I, status->scanner_state); -} - -xx_namespace_def(R) ::= USE xx_use_aliases_list(L) DOTCOMMA . { - xx_ret_use_aliases(&R, &L, status->scanner_state); -} - -xx_use_aliases_list(R) ::= xx_use_aliases_list(L) COMMA xx_use_aliases(U) . { - xx_ret_list(&R, &L, &U, status->scanner_state); -} - -xx_use_aliases_list(R) ::= xx_use_aliases(U) . { - xx_ret_list(&R, NULL, &U, status->scanner_state); -} - -xx_use_aliases(R) ::= IDENTIFIER(I) . { - xx_ret_use_aliases_item(&R, I, NULL, status->scanner_state); -} - -xx_use_aliases(R) ::= IDENTIFIER(I) AS IDENTIFIER(A) . { - xx_ret_use_aliases_item(&R, I, A, status->scanner_state); -} - -/** (global method) function definition */ - -/** FUNCTION() -> xx_method_return_type { } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_function(&R, I, NULL, NULL, NULL, &T, status->scanner_state); -} - -/** FUNCTION() -> xx_method_return_type; */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - xx_ret_function(&R, I, NULL, NULL, NULL, &T, status->scanner_state); -} - -/** FUNCTION(xx_parameter_list) -> xx_method_return_type { } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_function(&R, I, &L, NULL, NULL, &T, status->scanner_state); -} - -/** FUNCTION(xx_parameter_list) -> xx_method_return_type; */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - xx_ret_function(&R, I, &L, NULL, NULL, &T, status->scanner_state); -} - -/** FUNCTION() -> xx_method_return_type { xx_statement_list } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_function(&R, I, NULL, &S, NULL, &T, status->scanner_state); -} - -/** FUNCTION(xx_parameter_list) -> xx_method_return_type { xx_statement_list } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_function(&R, I, &L, &S, NULL, &T, status->scanner_state); -} - -/** FUNCTION () {} */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_function(&R, I, NULL, NULL, NULL, NULL, status->scanner_state); -} - -/** FUNCTION (); */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA . { - xx_ret_function(&R, I, NULL, NULL, NULL, NULL, status->scanner_state); -} - -/** FUNCTION (xx_parameter_list) {} */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_function(&R, I, &L, NULL, NULL, NULL, status->scanner_state); -} - -/** FUNCTION (xx_parameter_list); */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE DOTCOMMA . { - xx_ret_function(&R, I, &L, NULL, NULL, NULL, status->scanner_state); -} - -/** FUNCTION () { xx_statement_list } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_function(&R, I, NULL, &S, NULL, NULL, status->scanner_state); -} - -/** FUNCTION (xx_parameter_list) { xx_statement_list } */ -xx_function_def(R) ::= FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_function(&R, I, &L, &S, NULL, NULL, status->scanner_state); -} - -xx_interface_def(R) ::= INTERFACE IDENTIFIER(I) xx_interface_body(B) . { - xx_ret_interface(&R, I, &B, NULL, status->scanner_state); -} - -xx_interface_def(R) ::= INTERFACE IDENTIFIER(I) EXTENDS xx_implements_list(L) xx_interface_body(B) . { - xx_ret_interface(&R, I, &B, &L, status->scanner_state); -} - -xx_class_def(R) ::= CLASS IDENTIFIER(I) xx_class_body(B) . { - xx_ret_class(&R, I, &B, 0, 0, NULL, NULL, status->scanner_state); -} - -xx_class_def(R) ::= CLASS IDENTIFIER(I) EXTENDS IDENTIFIER(E) xx_class_body(B) . { - xx_ret_class(&R, I, &B, 0, 0, E, NULL, status->scanner_state); -} - -xx_class_def(R) ::= CLASS IDENTIFIER(I) IMPLEMENTS xx_implements_list(L) xx_class_body(B) . { - xx_ret_class(&R, I, &B, 0, 0, NULL, &L, status->scanner_state); -} - -xx_class_def(R) ::= CLASS IDENTIFIER(I) EXTENDS IDENTIFIER(E) IMPLEMENTS xx_implements_list(L) xx_class_body(B) . { - xx_ret_class(&R, I, &B, 0, 0, E, &L, status->scanner_state); -} - -xx_class_def(R) ::= ABSTRACT CLASS IDENTIFIER(I) xx_class_body(B) . { - xx_ret_class(&R, I, &B, 1, 0, NULL, NULL, status->scanner_state); -} - -xx_class_def(R) ::= ABSTRACT CLASS IDENTIFIER(I) EXTENDS IDENTIFIER(E) xx_class_body(B) . { - xx_ret_class(&R, I, &B, 1, 0, E, NULL, status->scanner_state); -} - -xx_class_def(R) ::= ABSTRACT CLASS IDENTIFIER(I) IMPLEMENTS xx_implements_list(L) xx_class_body(B) . { - xx_ret_class(&R, I, &B, 1, 0, NULL, &L, status->scanner_state); -} - -xx_class_def(R) ::= ABSTRACT CLASS IDENTIFIER(I) EXTENDS IDENTIFIER(E) IMPLEMENTS xx_implements_list(L) xx_class_body(B) . { - xx_ret_class(&R, I, &B, 1, 0, E, &L, status->scanner_state); -} - -xx_class_def(R) ::= FINAL CLASS IDENTIFIER(I) xx_class_body(B) . { - xx_ret_class(&R, I, &B, 0, 1, NULL, NULL, status->scanner_state); -} - -xx_class_def(R) ::= FINAL CLASS IDENTIFIER(I) EXTENDS IDENTIFIER(E) xx_class_body(B) . { - xx_ret_class(&R, I, &B, 0, 1, E, NULL, status->scanner_state); -} - -xx_class_def(R) ::= FINAL CLASS IDENTIFIER(I) IMPLEMENTS xx_implements_list(L) xx_class_body(B) . { - xx_ret_class(&R, I, &B, 0, 1, NULL, &L, status->scanner_state); -} - -xx_class_body(R) ::= BRACKET_OPEN BRACKET_CLOSE . { - ZVAL_UNDEF(&R); -} - -xx_class_body(R) ::= BRACKET_OPEN xx_class_definition(C) BRACKET_CLOSE . { - R = C; -} - -xx_implements_list(R) ::= xx_implements_list(L) COMMA xx_implements(I) . { - xx_ret_list(&R, &L, &I, status->scanner_state); -} - -xx_implements_list(R) ::= xx_implements(I) . { - xx_ret_list(&R, NULL, &I, status->scanner_state); -} - -xx_implements(R) ::= IDENTIFIER(I) . { - xx_ret_literal(&R, XX_T_IDENTIFIER, I, status->scanner_state); -} - -xx_interface_body(R) ::= BRACKET_OPEN BRACKET_CLOSE . { - ZVAL_UNDEF(&R); -} - -xx_interface_body(R) ::= BRACKET_OPEN xx_interface_definition(D) BRACKET_CLOSE . { - R = D; -} - -xx_class_definition(R) ::= xx_class_properties_definition(C) . { - xx_ret_class_definition(&R, &C, NULL, NULL, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_consts_definition(C) . { - xx_ret_class_definition(&R, NULL, NULL, &C, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_methods_definition(M) . { - xx_ret_class_definition(&R, NULL, &M, NULL, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_properties_definition(C) xx_class_methods_definition(M) . { - xx_ret_class_definition(&R, &C, &M, NULL, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_properties_definition(C) xx_class_consts_definition(K) . { - xx_ret_class_definition(&R, &C, NULL, &K, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_consts_definition(K) xx_class_properties_definition(C) . { - xx_ret_class_definition(&R, &C, NULL, &K, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_consts_definition(K) xx_class_methods_definition(M) . { - xx_ret_class_definition(&R, NULL, &M, &K, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_properties_definition(C) xx_class_consts_definition(K) xx_class_methods_definition(M) . { - xx_ret_class_definition(&R, &C, &M, &K, status->scanner_state); -} - -xx_class_definition(R) ::= xx_class_consts_definition(K) xx_class_properties_definition(C) xx_class_methods_definition(M) . { - xx_ret_class_definition(&R, &C, &M, &K, status->scanner_state); -} - -xx_interface_definition(R) ::= xx_class_consts_definition(C) . { - xx_ret_interface_definition(&R, NULL, &C, status->scanner_state); -} - -xx_interface_definition(R) ::= xx_interface_methods_definition(M) . { - xx_ret_interface_definition(&R, &M, NULL, status->scanner_state); -} - -xx_interface_definition(R) ::= xx_class_consts_definition(C) xx_interface_methods_definition(M) . { - xx_ret_interface_definition(&R, &M, &C, status->scanner_state); -} - -xx_class_properties_definition(R) ::= xx_class_properties_definition(L) xx_class_property_definition(P) . { - xx_ret_list(&R, &L, &P, status->scanner_state); -} - -xx_class_properties_definition(R) ::= xx_class_property_definition(P) . { - xx_ret_list(&R, NULL, &P, status->scanner_state); -} - -/* property definition */ -xx_class_property_definition(R) ::= COMMENT(C) xx_visibility_list(V) IDENTIFIER(I) DOTCOMMA . { - xx_ret_class_property(&R, &V, I, NULL, C, NULL, status->scanner_state); -} - -xx_class_property_definition(R) ::= xx_visibility_list(V) IDENTIFIER(I) DOTCOMMA . { - xx_ret_class_property(&R, &V, I, NULL, NULL, NULL, status->scanner_state); -} - -xx_class_property_definition(R) ::= COMMENT(C) xx_visibility_list(V) IDENTIFIER(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - xx_ret_class_property(&R, &V, I, &E, C, NULL, status->scanner_state); -} - -xx_class_property_definition(R) ::= xx_visibility_list(V) IDENTIFIER(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - xx_ret_class_property(&R, &V, I, &E, NULL, NULL, status->scanner_state); -} - -xx_class_property_definition(R) ::= COMMENT(C) xx_visibility_list(V) IDENTIFIER(I) xx_class_property_shortcuts(S) DOTCOMMA . { - xx_ret_class_property(&R, &V, I, NULL, C, &S, status->scanner_state); -} - -xx_class_property_definition(R) ::= xx_visibility_list(V) IDENTIFIER(I) xx_class_property_shortcuts(S) DOTCOMMA . { - xx_ret_class_property(&R, &V, I, NULL, NULL, &S, status->scanner_state); -} - -xx_class_property_definition(R) ::= COMMENT(C) xx_visibility_list(V) IDENTIFIER(I) ASSIGN xx_literal_expr(E) xx_class_property_shortcuts(S) DOTCOMMA . { - xx_ret_class_property(&R, &V, I, &E, C, &S, status->scanner_state); -} - -xx_class_property_definition(R) ::= xx_visibility_list(V) IDENTIFIER(I) ASSIGN xx_literal_expr(E) xx_class_property_shortcuts(S) DOTCOMMA . { - xx_ret_class_property(&R, &V, I, &E, NULL, &S, status->scanner_state); -} - -xx_class_property_shortcuts(R) ::= BRACKET_OPEN BRACKET_CLOSE . { - ZVAL_UNDEF(&R); -} - -xx_class_property_shortcuts(R) ::= BRACKET_OPEN xx_class_property_shortcuts_list(L) BRACKET_CLOSE . { - R = L; -} - -xx_class_property_shortcuts_list(R) ::= xx_class_property_shortcuts_list(L) COMMA xx_class_property_shortcut(S) . { - xx_ret_list(&R, &L, &S, status->scanner_state); -} - -xx_class_property_shortcuts_list(R) ::= xx_class_property_shortcut(S) . { - xx_ret_list(&R, NULL, &S, status->scanner_state); -} - -xx_class_property_shortcut(R) ::= IDENTIFIER(D) . { - xx_ret_property_shortcut(&R, NULL, D, status->scanner_state); -} - -xx_class_property_shortcut(R) ::= COMMENT(C) IDENTIFIER(D) . { - xx_ret_property_shortcut(&R, C, D, status->scanner_state); -} - -/* constants definition */ -xx_class_consts_definition(R) ::= xx_class_consts_definition(L) xx_class_const_definition(K) . { - xx_ret_list(&R, &L, &K, status->scanner_state); -} - -xx_class_consts_definition(R) ::= xx_class_const_definition(K) . { - xx_ret_list(&R, NULL, &K, status->scanner_state); -} - -xx_class_methods_definition(R) ::= xx_class_methods_definition(L) xx_class_method_definition(P) . { - xx_ret_list(&R, &L, &P, status->scanner_state); -} - -xx_class_methods_definition(R) ::= xx_class_method_definition(P) . { - xx_ret_list(&R, NULL, &P, status->scanner_state); -} - -xx_interface_methods_definition(R) ::= xx_interface_methods_definition(L) xx_interface_method_definition(P) . { - xx_ret_list(&R, &L, &P, status->scanner_state); -} - -xx_interface_methods_definition(R) ::= xx_interface_method_definition(P) . { - xx_ret_list(&R, NULL, &P, status->scanner_state); -} - -xx_class_const_definition(R) ::= COMMENT(C) CONST CONSTANT(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - xx_ret_class_const(&R, I, &E, C, status->scanner_state); -} - -xx_class_const_definition(R) ::= CONST CONSTANT(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - xx_ret_class_const(&R, I, &E, NULL, status->scanner_state); -} - -xx_class_const_definition(R) ::= COMMENT(C) CONST IDENTIFIER(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - xx_ret_class_const(&R, I, &E, C, status->scanner_state); -} - -xx_class_const_definition(R) ::= CONST IDENTIFIER(I) ASSIGN xx_literal_expr(E) DOTCOMMA . { - xx_ret_class_const(&R, I, &E, NULL, status->scanner_state); -} - -/** method definition */ - -/** xx_visibility_list FUNCTION (xx_parameter_list) {} */ -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, NULL, NULL, NULL, NULL, status->scanner_state); -} - -/** xx_visibility_list FUNCTION (xx_parameter_list); */ -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA . { - xx_ret_class_method(&R, &V, I, NULL, NULL, NULL, NULL, status->scanner_state); -} - -/** xx_visibility_list FUNCTION (xx_parameter_list) {} */ -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, &L, NULL, NULL, NULL, status->scanner_state); -} - -/** xx_visibility_list FUNCTION (xx_parameter_list); */ -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE DOTCOMMA . { - xx_ret_class_method(&R, &V, I, &L, NULL, NULL, NULL, status->scanner_state); -} - -/** xx_visibility_list FUNCTION () { xx_statement_list } */ -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, NULL, &S, NULL, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, &L, &S, NULL, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, NULL, NULL, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA . { - xx_ret_class_method(&R, &V, I, NULL, NULL, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, &L, NULL, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE DOTCOMMA . { - xx_ret_class_method(&R, &V, I, &L, NULL, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, NULL, &S, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, &L, &S, C, NULL, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, NULL, NULL, NULL, &T, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - xx_ret_class_method(&R, &V, I, NULL, NULL, NULL, &T, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, &L, NULL, NULL, &T, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - xx_ret_class_method(&R, &V, I, &L, NULL, NULL, &T, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, NULL, &S, NULL, &T, status->scanner_state); -} - -xx_class_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, &L, &S, NULL, &T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, NULL, NULL, C, &T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - xx_ret_class_method(&R, &V, I, NULL, NULL, C, &T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, &L, NULL, C, &T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - xx_ret_class_method(&R, &V, I, &L, NULL, C, &T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, NULL, &S, C, &T, status->scanner_state); -} - -xx_class_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_class_method(&R, &V, I, &L, &S, C, &T, status->scanner_state); -} - -/* method definition */ -xx_interface_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - xx_ret_class_method(&R, &V, I, NULL, NULL, NULL, &T, status->scanner_state); -} - -xx_interface_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - xx_ret_class_method(&R, &V, I, &L, NULL, NULL, &T, status->scanner_state); -} - -xx_interface_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - xx_ret_class_method(&R, &V, I, NULL, NULL, C, &T, status->scanner_state); -} - -xx_interface_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE ARROW xx_method_return_type(T) DOTCOMMA . { - xx_ret_class_method(&R, &V, I, &L, NULL, C, &T, status->scanner_state); -} - -xx_interface_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA . { - xx_ret_class_method(&R, &V, I, NULL, NULL, NULL, NULL, status->scanner_state); -} - -xx_interface_method_definition(R) ::= xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE DOTCOMMA . { - xx_ret_class_method(&R, &V, I, &L, NULL, NULL, NULL, status->scanner_state); -} - -xx_interface_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE DOTCOMMA . { - xx_ret_class_method(&R, &V, I, NULL, NULL, C, NULL, status->scanner_state); -} - -xx_interface_method_definition(R) ::= COMMENT(C) xx_visibility_list(V) FUNCTION IDENTIFIER(I) PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE DOTCOMMA . { - xx_ret_class_method(&R, &V, I, &L, NULL, C, NULL, status->scanner_state); -} - -/* visibility and modifiers */ -xx_visibility_list(R) ::= xx_visibility_list(L) xx_visibility(K) . { - xx_ret_list(&R, &L, &K, status->scanner_state); -} - -xx_visibility_list(R) ::= xx_visibility(K) . { - xx_ret_list(&R, NULL, &K, status->scanner_state); -} - -xx_visibility(R) ::= INTERNAL . { - parser_get_string(&R, "internal"); -} - -xx_visibility(R) ::= PUBLIC . { - parser_get_string(&R, "public"); -} - -xx_visibility(R) ::= PROTECTED . { - parser_get_string(&R, "protected"); -} - -xx_visibility(R) ::= PRIVATE. { - parser_get_string(&R, "private"); -} - -xx_visibility(R) ::= STATIC . { - parser_get_string(&R, "static"); -} - -xx_visibility(R) ::= SCOPED . { - parser_get_string(&R, "scoped"); -} - -xx_visibility(R) ::= INLINE . { - parser_get_string(&R, "inline"); -} - -xx_visibility(R) ::= DEPRECATED . { - parser_get_string(&R, "deprecated"); -} - -xx_visibility(R) ::= ABSTRACT . { - parser_get_string(&R, "abstract"); -} - -xx_visibility(R) ::= FINAL . { - parser_get_string(&R, "final"); -} - -/* return type */ -xx_method_return_type(R) ::= VOID . { - xx_ret_return_type(&R, 1, NULL, status->scanner_state); -} - -xx_method_return_type(R) ::= xx_method_return_type_list(L) . { - xx_ret_return_type(&R, 0, &L, status->scanner_state); -} - -xx_method_return_type_list(R) ::= xx_method_return_type_list(L) BITWISE_OR xx_method_return_type_item(I) . { - xx_ret_list(&R, &L, &I, status->scanner_state); -} - -xx_method_return_type_list(R) ::= xx_method_return_type_item(I) . { - xx_ret_list(&R, NULL, &I, status->scanner_state); -} - -xx_method_return_type_item(R) ::= xx_parameter_type(T) . { - xx_ret_return_type_item(&R, &T, NULL, 0, 0, status->scanner_state); -} - -xx_method_return_type_item(R) ::= NULL . { - { - zval type; - xx_ret_type(&type, XX_T_TYPE_NULL); - xx_ret_return_type_item(&R, &type, NULL, 0, 0, status->scanner_state); - } -} - -xx_method_return_type_item(R) ::= THIS . { - { - zval type; - xx_ret_type(&type, XX_T_TYPE_THIS); - xx_ret_return_type_item(&R, &type, NULL, 0, 0, status->scanner_state); - } -} - -xx_method_return_type_item(R) ::= xx_parameter_type(T) NOT . { - xx_ret_return_type_item(&R, &T, NULL, 1, 0, status->scanner_state); -} - -xx_method_return_type_item(R) ::= xx_parameter_cast(T) . { - xx_ret_return_type_item(&R, NULL, &T, 0, 0, status->scanner_state); -} - -xx_method_return_type_item(R) ::= xx_parameter_cast_collection(T) . { - xx_ret_return_type_item(&R, NULL, &T, 0, 1, status->scanner_state); -} - -/* parameters list */ -xx_parameter_list(R) ::= xx_parameter_list(L) COMMA xx_parameter(P) . { - xx_ret_list(&R, &L, &P, status->scanner_state); -} - -xx_parameter_list(R) ::= xx_parameter(P) . { - xx_ret_list(&R, NULL, &P, status->scanner_state); -} - -/* xx_parameter_list */ - -// a -xx_parameter(R) ::= IDENTIFIER(I) . { - xx_ret_parameter(&R, 0, NULL, NULL, I, NULL, 0, 0, status->scanner_state); -} - -// &a -xx_parameter(R) ::= BITWISE_AND IDENTIFIER(I) . { - xx_ret_parameter(&R, 0, NULL, NULL, I, NULL, 0, 1, status->scanner_state); -} - -// const a -xx_parameter(R) ::= CONST IDENTIFIER(I) . { - xx_ret_parameter(&R, 1, NULL, NULL, I, NULL, 0, 0, status->scanner_state); -} - -// const &a -xx_parameter(R) ::= CONST BITWISE_AND IDENTIFIER(I) . { - xx_ret_parameter(&R, 1, NULL, NULL, I, NULL, 0, 1, status->scanner_state); -} - -// type a -xx_parameter(R) ::= xx_parameter_type(T) IDENTIFIER(I) . { - xx_ret_parameter(&R, 0, &T, NULL, I, NULL, 0, 0, status->scanner_state); -} - -// type &a -xx_parameter(R) ::= xx_parameter_type(T) BITWISE_AND IDENTIFIER(I) . { - xx_ret_parameter(&R, 0, &T, NULL, I, NULL, 0, 1, status->scanner_state); -} - -// const type a -xx_parameter(R) ::= CONST xx_parameter_type(T) IDENTIFIER(I) . { - xx_ret_parameter(&R, 1, &T, NULL, I, NULL, 0, 0, status->scanner_state); -} - -// const type &a -xx_parameter(R) ::= CONST xx_parameter_type(T) BITWISE_AND IDENTIFIER(I) . { - xx_ret_parameter(&R, 1, &T, NULL, I, NULL, 0, 1, status->scanner_state); -} - -// type! a -xx_parameter(R) ::= xx_parameter_type(T) NOT IDENTIFIER(I) . { - xx_ret_parameter(&R, 0, &T, NULL, I, NULL, 1, 0, status->scanner_state); -} - -// type! &a -xx_parameter(R) ::= xx_parameter_type(T) NOT BITWISE_AND IDENTIFIER(I) . { - xx_ret_parameter(&R, 0, &T, NULL, I, NULL, 1, 1, status->scanner_state); -} - -// const type! a -xx_parameter(R) ::= CONST xx_parameter_type(T) NOT IDENTIFIER(I) . { - xx_ret_parameter(&R, 1, &T, NULL, I, NULL, 1, 0, status->scanner_state); -} - -// const type! &a -xx_parameter(R) ::= CONST xx_parameter_type(T) NOT BITWISE_AND IDENTIFIER(I) . { - xx_ret_parameter(&R, 1, &T, NULL, I, NULL, 1, 1, status->scanner_state); -} - -// a -xx_parameter(R) ::= xx_parameter_cast(C) IDENTIFIER(I) . { - xx_ret_parameter(&R, 0, NULL, &C, I, NULL, 0, 0, status->scanner_state); -} - -// &a -xx_parameter(R) ::= xx_parameter_cast(C) BITWISE_AND IDENTIFIER(I) . { - xx_ret_parameter(&R, 0, NULL, &C, I, NULL, 0, 1, status->scanner_state); -} - -// const a -xx_parameter(R) ::= CONST xx_parameter_cast(C) IDENTIFIER(I) . { - xx_ret_parameter(&R, 1, NULL, &C, I, NULL, 0, 0, status->scanner_state); -} - -// const &a -xx_parameter(R) ::= CONST xx_parameter_cast(C) BITWISE_AND IDENTIFIER(I) . { - xx_ret_parameter(&R, 1, NULL, &C, I, NULL, 0, 1, status->scanner_state); -} - -// a = default_value -xx_parameter(R) ::= IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 0, NULL, NULL, I, &E, 0, 0, status->scanner_state); -} - -// &a = default_value -xx_parameter(R) ::= BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 0, NULL, NULL, I, &E, 0, 1, status->scanner_state); -} - -// const a = default_value -xx_parameter(R) ::= CONST IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 1, NULL, NULL, I, &E, 0, 0, status->scanner_state); -} - -// const &a = default_value -xx_parameter(R) ::= CONST BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 1, NULL, NULL, I, &E, 0, 1, status->scanner_state); -} - -// type a = default_value -xx_parameter(R) ::= xx_parameter_type(T) IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 0, &T, NULL, I, &E, 0, 0, status->scanner_state); -} - -// type &a = default_value -xx_parameter(R) ::= xx_parameter_type(T) BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 0, &T, NULL, I, &E, 0, 1, status->scanner_state); -} - -// const type a = default_value -xx_parameter(R) ::= CONST xx_parameter_type(T) IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 1, &T, NULL, I, &E, 0, 0, status->scanner_state); -} - -// const type &a = default_value -xx_parameter(R) ::= CONST xx_parameter_type(T) BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 1, &T, NULL, I, &E, 0, 1, status->scanner_state); -} - -// type! a = default_value -xx_parameter(R) ::= xx_parameter_type(T) NOT IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 0, &T, NULL, I, &E, 1, 0, status->scanner_state); -} - -// type! &a = default_value -xx_parameter(R) ::= xx_parameter_type(T) NOT BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 0, &T, NULL, I, &E, 1, 1, status->scanner_state); -} - -// const type! a = default_value -xx_parameter(R) ::= CONST xx_parameter_type(T) NOT IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 1, &T, NULL, I, &E, 1, 0, status->scanner_state); -} - -// const type! &a = default_value -xx_parameter(R) ::= CONST xx_parameter_type(T) NOT BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 1, &T, NULL, I, &E, 1, 1, status->scanner_state); -} - -// a = default_value -xx_parameter(R) ::= xx_parameter_cast(C) IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 0, NULL, &C, I, &E, 0, 0, status->scanner_state); -} - -// &a = default_value -xx_parameter(R) ::= xx_parameter_cast(C) BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 0, NULL, &C, I, &E, 0, 1, status->scanner_state); -} - -// const a = default_value -xx_parameter(R) ::= CONST xx_parameter_cast(C) IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 1, NULL, &C, I, &E, 0, 0, status->scanner_state); -} - -// const &a = default_value -xx_parameter(R) ::= CONST xx_parameter_cast(C) BITWISE_AND IDENTIFIER(I) ASSIGN xx_literal_expr(E) . { - xx_ret_parameter(&R, 1, NULL, &C, I, &E, 0, 1, status->scanner_state); -} - -/* xx_parameter_cast */ -xx_parameter_cast(R) ::= LESS IDENTIFIER(I) GREATER . { - xx_ret_literal(&R, XX_T_IDENTIFIER, I, status->scanner_state); -} - -xx_parameter_cast_collection(R) ::= LESS IDENTIFIER(I) SBRACKET_OPEN SBRACKET_CLOSE GREATER . { - xx_ret_literal(&R, XX_T_IDENTIFIER, I, status->scanner_state); -} - -xx_parameter_type(R) ::= TYPE_INTEGER . { - xx_ret_type(&R, XX_TYPE_INTEGER); -} - -xx_parameter_type(R) ::= TYPE_UINTEGER . { - xx_ret_type(&R, XX_TYPE_UINTEGER); -} - -xx_parameter_type(R) ::= TYPE_LONG . { - xx_ret_type(&R, XX_TYPE_LONG); -} - -xx_parameter_type(R) ::= TYPE_ULONG . { - xx_ret_type(&R, XX_TYPE_ULONG); -} - -xx_parameter_type(R) ::= TYPE_CHAR . { - xx_ret_type(&R, XX_TYPE_CHAR); -} - -xx_parameter_type(R) ::= TYPE_UCHAR . { - xx_ret_type(&R, XX_TYPE_UCHAR); -} - -xx_parameter_type(R) ::= TYPE_DOUBLE . { - xx_ret_type(&R, XX_TYPE_DOUBLE); -} - -xx_parameter_type(R) ::= TYPE_BOOL . { - xx_ret_type(&R, XX_TYPE_BOOL); -} - -xx_parameter_type(R) ::= TYPE_STRING . { - xx_ret_type(&R, XX_TYPE_STRING); -} - -xx_parameter_type(R) ::= TYPE_ARRAY . { - xx_ret_type(&R, XX_TYPE_ARRAY); -} - -xx_parameter_type(R) ::= TYPE_VAR . { - xx_ret_type(&R, XX_TYPE_VAR); -} - -xx_parameter_type(R) ::= TYPE_CALLABLE . { - xx_ret_type(&R, XX_TYPE_CALLABLE); -} - -xx_parameter_type(R) ::= TYPE_RESOURCE . { - xx_ret_type(&R, XX_TYPE_RESOURCE); -} - -xx_parameter_type(R) ::= TYPE_OBJECT . { - xx_ret_type(&R, XX_TYPE_OBJECT); -} - -xx_statement_list(R) ::= xx_statement_list(L) xx_statement(S) . { - xx_ret_list(&R, &L, &S, status->scanner_state); -} - -xx_statement_list(R) ::= xx_statement(S) . { - xx_ret_list(&R, NULL, &S, status->scanner_state); -} - -xx_statement(R) ::= xx_cblock(S) . { - R = S; -} - -xx_statement(R) ::= xx_let_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_if_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_loop_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_echo_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_return_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_require_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_fetch_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_fcall_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_mcall_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_scall_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_unset_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_throw_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_declare_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_break_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_continue_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_while_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_do_while_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_try_catch_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_switch_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_for_statement(S) . { - R = S; -} - -xx_statement(R) ::= xx_comment(S) . { - R = S; -} - -xx_statement(R) ::= xx_empty_statement(S) . { - R = S; -} - -xx_empty_statement(R) ::= DOTCOMMA . { - xx_ret_empty_statement(&R, status->scanner_state); -} - -xx_break_statement(R) ::= BREAK DOTCOMMA . { - xx_ret_break_statement(&R, status->scanner_state); -} - -xx_continue_statement(R) ::= CONTINUE DOTCOMMA . { - xx_ret_continue_statement(&R, status->scanner_state); -} - -/* if(a) {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_if_statement(&R, &E, NULL, NULL, NULL, status->scanner_state); -} - -/* if(a) {} elseif(b) {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE xx_elseif_statements(L) . { - xx_ret_if_statement(&R, &E, NULL, NULL, &L, status->scanner_state); -} - -/* if(a) {} else {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE ELSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_if_statement(&R, &E, NULL, NULL, NULL, status->scanner_state); -} - -/* if(a) {} elseif(b) {} else {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE xx_elseif_statements(L) ELSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_if_statement(&R, &E, NULL, &L, NULL, status->scanner_state); -} - -/* if(a) {...} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - xx_ret_if_statement(&R, &E, &L, NULL, NULL, status->scanner_state); -} - -/* if(a) {...} elseif(b) {...} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE xx_elseif_statements(S) . { - xx_ret_if_statement(&R, &E, &L, &S, NULL, status->scanner_state); -} - -/* if(a) {...} else {...} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE ELSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_if_statement(&R, &E, &L, NULL, &S, status->scanner_state); -} - -/* if(a) {...} elseif(b) {...} else {...} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE xx_elseif_statements(ES) ELSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_if_statement(&R, &E, &L, &ES, &S, status->scanner_state); -} - -/* if(a) {...} else {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE ELSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_if_statement(&R, &E, &L, NULL, NULL, status->scanner_state); -} - -/* if(a) {...} elseif(b) {} else {} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE xx_elseif_statements(S) ELSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_if_statement(&R, &E, &L, &S, NULL, status->scanner_state); -} - -/* if(a) {} else {...} */ -xx_if_statement(R) ::= IF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE ELSE BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - xx_ret_if_statement(&R, &E, NULL, NULL, &L, status->scanner_state); -} - -xx_elseif_statements(R) ::= xx_elseif_statements(C) xx_elseif_statement(K) . { - xx_ret_list(&R, &C, &K, status->scanner_state); -} - -xx_elseif_statements(R) ::= xx_elseif_statement(K) . { - xx_ret_list(&R, NULL, &K, status->scanner_state); -} - -/* elseif(b) {} */ -xx_elseif_statement(R) ::= ELSEIF xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_if_statement(&R, &E, NULL, NULL, NULL, status->scanner_state); -} - -/* elseif(b) {...} */ -xx_elseif_statement(R) ::= ELSEIF xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - xx_ret_if_statement(&R, &E, &L, NULL, NULL, status->scanner_state); -} - -xx_switch_statement(R) ::= SWITCH xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_switch_statement(&R, &E, NULL, status->scanner_state); -} - -xx_switch_statement(R) ::= SWITCH xx_eval_expr(E) BRACKET_OPEN xx_case_clauses(C) BRACKET_CLOSE . { - xx_ret_switch_statement(&R, &E, &C, status->scanner_state); -} - -xx_case_clauses(R) ::= xx_case_clauses(C) xx_case_clause(K) . { - xx_ret_list(&R, &C, &K, status->scanner_state); -} - -xx_case_clauses(R) ::= xx_case_clause(K) . { - xx_ret_list(&R, NULL, &K, status->scanner_state); -} - -xx_case_clause(R) ::= CASE xx_eval_expr(E) COLON . { - xx_ret_case_clause(&R, &E, NULL, status->scanner_state); -} - -xx_case_clause(R) ::= CASE xx_eval_expr(E) COLON xx_statement_list(L) . { - xx_ret_case_clause(&R, &E, &L, status->scanner_state); -} - -xx_case_clause(R) ::= DEFAULT COLON xx_statement_list(L) . { - xx_ret_case_clause(&R, NULL, &L, status->scanner_state); -} - -xx_loop_statement(R) ::= LOOP BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_loop_statement(&R, NULL, status->scanner_state); -} - -xx_loop_statement(R) ::= LOOP BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - xx_ret_loop_statement(&R, &L, status->scanner_state); -} - -xx_while_statement(R) ::= WHILE xx_eval_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_while_statement(&R, &E, NULL, status->scanner_state); -} - -xx_while_statement(R) ::= WHILE xx_eval_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - xx_ret_while_statement(&R, &E, &L, status->scanner_state); -} - -xx_do_while_statement(R) ::= DO BRACKET_OPEN BRACKET_CLOSE WHILE xx_eval_expr(E) DOTCOMMA . { - xx_ret_do_while_statement(&R, &E, NULL, status->scanner_state); -} - -xx_do_while_statement(R) ::= DO BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE WHILE xx_eval_expr(E) DOTCOMMA . { - xx_ret_do_while_statement(&R, &E, &L, status->scanner_state); -} - -xx_try_catch_statement(R) ::= TRY BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_try_catch_statement(&R, NULL, NULL, status->scanner_state); -} - -xx_try_catch_statement(R) ::= TRY BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - xx_ret_try_catch_statement(&R, &L, NULL, status->scanner_state); -} - -xx_try_catch_statement(R) ::= TRY BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE xx_catch_statement_list(C) . { - xx_ret_try_catch_statement(&R, &L, &C, status->scanner_state); -} - -xx_catch_statement_list(R) ::= xx_catch_statement_list(L) xx_catch_statement(C) . { - xx_ret_list(&R, &L, &C, status->scanner_state); -} - -xx_catch_statement_list(R) ::= xx_catch_statement(C) . { - xx_ret_list(&R, NULL, &C, status->scanner_state); -} - -xx_catch_statement(R) ::= CATCH xx_catch_classes_list(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - xx_ret_catch_statement(&R, &E, NULL, &L, status->scanner_state); -} - -xx_catch_statement(R) ::= CATCH xx_catch_classes_list(E) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_catch_statement(&R, &E, NULL, NULL, status->scanner_state); -} - -xx_catch_statement(R) ::= CATCH xx_catch_classes_list(E) COMMA IDENTIFIER(V) BRACKET_OPEN BRACKET_CLOSE . { - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, V, status->scanner_state); - xx_ret_catch_statement(&R, &E, &identifier, NULL, status->scanner_state); - } -} - -xx_catch_statement(R) ::= CATCH xx_catch_classes_list(E) COMMA IDENTIFIER(V) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, V, status->scanner_state); - xx_ret_catch_statement(&R, &E, &identifier, &L, status->scanner_state); - } -} - -xx_catch_classes_list(R) ::= xx_catch_classes_list(L) BITWISE_OR xx_catch_class(C) . { - xx_ret_list(&R, &L, &C, status->scanner_state); -} - -xx_catch_classes_list(R) ::= xx_catch_class(C) . { - xx_ret_list(&R, NULL, &C, status->scanner_state); -} - -xx_catch_class(R) ::= IDENTIFIER(C) . { - xx_ret_literal(&R, XX_T_IDENTIFIER, C, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(V) IN xx_common_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - xx_ret_for_statement(&R, &E, NULL, V, 0, &L, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(V) IN xx_common_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_for_statement(&R, &E, NULL, V, 0, NULL, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(V) IN REVERSE xx_common_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - xx_ret_for_statement(&R, &E, NULL, V, 1, &L, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(K) COMMA IDENTIFIER(V) IN xx_common_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - xx_ret_for_statement(&R, &E, K, V, 0, &L, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(K) COMMA IDENTIFIER(V) IN xx_common_expr(E) BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_for_statement(&R, &E, K, V, 0, NULL, status->scanner_state); -} - -xx_for_statement(R) ::= FOR IDENTIFIER(K) COMMA IDENTIFIER(V) IN REVERSE xx_common_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . { - xx_ret_for_statement(&R, &E, K, V, 1, &L, status->scanner_state); -} - -xx_let_statement(R) ::= LET xx_let_assignments(A) DOTCOMMA . { - xx_ret_let_statement(&R, &A, status->scanner_state); -} - -xx_let_assignments(R) ::= xx_let_assignments(L) COMMA xx_let_assignment(A) . { - xx_ret_list(&R, &L, &A, status->scanner_state); -} - -xx_let_assignments(R) ::= xx_let_assignment(A) . { - xx_ret_list(&R, NULL, &A, status->scanner_state); -} - -// = -xx_assignment_operator(R) ::= ASSIGN . { - parser_get_string(&R, "assign"); -} - -// += -xx_assignment_operator(R) ::= ADDASSIGN . { - parser_get_string(&R, "add-assign"); -} - -// -= -xx_assignment_operator(R) ::= SUBASSIGN . { - parser_get_string(&R, "sub-assign"); -} - -// *= -xx_assignment_operator(R) ::= MULASSIGN . { - parser_get_string(&R, "mul-assign"); -} - -// /= -xx_assignment_operator(R) ::= DIVASSIGN . { - parser_get_string(&R, "div-assign"); -} - -// .= -xx_assignment_operator(R) ::= CONCATASSIGN . { - parser_get_string(&R, "concat-assign"); -} - -// %= -xx_assignment_operator(R) ::= MODASSIGN . { - parser_get_string(&R, "mod-assign"); -} - -/* y = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(I) xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "variable", &O, I, NULL, NULL, &E, status->scanner_state); -} - -/* y->x = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "object-property", &O, D, I, NULL, &E, status->scanner_state); -} - -/* y->{x} = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "variable-dynamic-object-property", &O, D, I, NULL, &E, status->scanner_state); -} - -/* y->{"x"} = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW BRACKET_OPEN STRING(S) BRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "string-dynamic-object-property", &O, D, S, NULL, &E, status->scanner_state); -} - -/* y->x[] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "object-property-append", &O, D, I, NULL, &E, status->scanner_state); -} - -/* y->x[z][] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) xx_array_offset_list(X) xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "object-property-array-index", &O, D, I, &X, &E, status->scanner_state); -} - -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) xx_array_offset_list(X) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "object-property-array-index-append", &O, D, I, &X, &E, status->scanner_state); -} - -/* y::x = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) DOUBLECOLON IDENTIFIER(I) xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "static-property", &O, D, I, NULL, &E, status->scanner_state); -} - -/* y::x[] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) DOUBLECOLON IDENTIFIER(I) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "static-property-append", &O, D, I, NULL, &E, status->scanner_state); -} - -/* y::x[z] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) DOUBLECOLON IDENTIFIER(I) xx_array_offset_list(X) xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "static-property-array-index", &O, D, I, &X, &E, status->scanner_state); -} - -/* y::x[z][] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) DOUBLECOLON IDENTIFIER(I) xx_array_offset_list(X) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "static-property-array-index-append", &O, D, I, &X, &E, status->scanner_state); -} - -/* y[] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(I) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "variable-append", &O, I, NULL, NULL, &E, status->scanner_state); -} - -/* y[x] = {expr} | y[x][z] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) xx_array_offset_list(A) xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "array-index", &O, D, NULL, &A, &E, status->scanner_state); -} - -/* y[x][] = {expr} | y[x][z][] = {expr} */ -xx_let_assignment(R) ::= IDENTIFIER(D) xx_array_offset_list(A) SBRACKET_OPEN SBRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "array-index-append", &O, D, NULL, &A, &E, status->scanner_state); -} - -xx_array_offset_list(R) ::= xx_array_offset_list(L) xx_array_offset(O) . { - xx_ret_list(&R, &L, &O, status->scanner_state); -} - -xx_array_offset_list(R) ::= xx_array_offset(O) . { - xx_ret_list(&R, NULL, &O, status->scanner_state); -} - -xx_array_offset(R) ::= SBRACKET_OPEN xx_index_expr(I) SBRACKET_CLOSE . { - R = I; -} - -/* t->y++ */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) INCR . { - xx_ret_let_assignment(&R, "object-property-incr", NULL, D, I, NULL, NULL, status->scanner_state); -} - -/* t->y-- */ -xx_let_assignment(R) ::= IDENTIFIER(D) ARROW IDENTIFIER(I) DECR . { - xx_ret_let_assignment(&R, "object-property-decr", NULL, D, I, NULL, NULL, status->scanner_state); -} - -/* y++ */ -xx_let_assignment(R) ::= IDENTIFIER(I) INCR . { - xx_ret_let_assignment(&R, "incr", NULL, I, NULL, NULL, NULL, status->scanner_state); -} - -/* y-- */ -xx_let_assignment(R) ::= IDENTIFIER(I) DECR . { - xx_ret_let_assignment(&R, "decr", NULL, I, NULL, NULL, NULL, status->scanner_state); -} - -/* {y} = {expr} */ -xx_let_assignment(R) ::= BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "dynamic-variable", &O, I, NULL, NULL, &E, status->scanner_state); -} - -/* {"y"} = {expr} */ -xx_let_assignment(R) ::= BRACKET_OPEN STRING(S) BRACKET_CLOSE xx_assignment_operator(O) xx_assign_expr(E) . { - xx_ret_let_assignment(&R, "dynamic-variable-string", &O, S, NULL, NULL, &E, status->scanner_state); -} - -xx_index_expr(R) ::= xx_common_expr(E) . { - R = E; -} - -xx_echo_statement(R) ::= ECHO xx_echo_expressions(E) DOTCOMMA . { - xx_ret_echo_statement(&R, &E, status->scanner_state); -} - -xx_echo_expressions(R) ::= xx_echo_expressions(L) COMMA xx_echo_expression(A) . { - xx_ret_list(&R, &L, &A, status->scanner_state); -} - -xx_echo_expressions(R) ::= xx_echo_expression(A) . { - xx_ret_list(&R, NULL, &A, status->scanner_state); -} - -xx_echo_expression(R) ::= xx_common_expr(E) . { - R = E; -} - -/* mcall statement */ -xx_mcall_statement(R) ::= xx_mcall_expr(E) DOTCOMMA . { - xx_ret_mcall_statement(&R, &E, status->scanner_state); -} - -/* fcall statement */ -xx_fcall_statement(R) ::= xx_fcall_expr(E) DOTCOMMA . { - xx_ret_fcall_statement(&R, &E, status->scanner_state); -} - -/* scall statement */ -xx_scall_statement(R) ::= xx_scall_expr(E) DOTCOMMA . { - xx_ret_scall_statement(&R, &E, status->scanner_state); -} - -/* fetch statement */ -xx_fetch_statement(R) ::= xx_fetch_expr(E) DOTCOMMA . { - xx_ret_fetch_statement(&R, &E, status->scanner_state); -} - -/* return statement */ -xx_return_statement(R) ::= RETURN xx_common_expr(E) DOTCOMMA . { - xx_ret_return_statement(&R, &E, status->scanner_state); -} - -/* return statement */ -xx_return_statement(R) ::= RETURN DOTCOMMA . { - xx_ret_return_statement(&R, NULL, status->scanner_state); -} - -/* require statement */ -xx_require_statement(R) ::= REQUIRE xx_common_expr(E) DOTCOMMA . { - xx_ret_require_statement(&R, &E, status->scanner_state); -} - -/* unset {expr} */ -xx_unset_statement(R) ::= UNSET xx_common_expr(E) DOTCOMMA . { - xx_ret_unset_statement(&R, &E, status->scanner_state); -} - -/* throw {expr} */ -xx_throw_statement(R) ::= THROW xx_common_expr(E) DOTCOMMA . { - xx_ret_throw_exception(&R, &E, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_INTEGER xx_declare_variable_list(L) DOTCOMMA . { - xx_ret_declare_statement(&R, XX_T_TYPE_INTEGER, &L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_UINTEGER xx_declare_variable_list(L) DOTCOMMA . { - xx_ret_declare_statement(&R, XX_T_TYPE_UINTEGER, &L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_CHAR xx_declare_variable_list(L) DOTCOMMA . { - xx_ret_declare_statement(&R, XX_T_TYPE_CHAR, &L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_UCHAR xx_declare_variable_list(L) DOTCOMMA . { - xx_ret_declare_statement(&R, XX_T_TYPE_UCHAR, &L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_LONG xx_declare_variable_list(L) DOTCOMMA . { - xx_ret_declare_statement(&R, XX_T_TYPE_LONG, &L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_ULONG xx_declare_variable_list(L) DOTCOMMA . { - xx_ret_declare_statement(&R, XX_T_TYPE_ULONG, &L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_DOUBLE xx_declare_variable_list(L) DOTCOMMA . { - xx_ret_declare_statement(&R, XX_T_TYPE_DOUBLE, &L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_STRING xx_declare_variable_list(L) DOTCOMMA . { - xx_ret_declare_statement(&R, XX_T_TYPE_STRING, &L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_BOOL xx_declare_variable_list(L) DOTCOMMA . { - xx_ret_declare_statement(&R, XX_T_TYPE_BOOL, &L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_VAR xx_declare_variable_list(L) DOTCOMMA . { - xx_ret_declare_statement(&R, XX_T_TYPE_VAR, &L, status->scanner_state); -} - -xx_declare_statement(R) ::= TYPE_ARRAY xx_declare_variable_list(L) DOTCOMMA . { - xx_ret_declare_statement(&R, XX_T_TYPE_ARRAY, &L, status->scanner_state); -} - -xx_declare_variable_list(R) ::= xx_declare_variable_list(L) COMMA xx_declare_variable(V) . { - xx_ret_list(&R, &L, &V, status->scanner_state); -} - -xx_declare_variable_list(R) ::= xx_declare_variable(V) . { - xx_ret_list(&R, NULL, &V, status->scanner_state); -} - -xx_declare_variable(R) ::= IDENTIFIER(I) . { - xx_ret_declare_variable(&R, I, NULL, status->scanner_state); -} - -xx_declare_variable(R) ::= IDENTIFIER(I) ASSIGN xx_common_expr(E) . { - xx_ret_declare_variable(&R, I, &E, status->scanner_state); -} - -xx_assign_expr(R) ::= xx_common_expr(E) . { - R = E; -} - -xx_common_expr(R) ::= BITWISE_AND xx_common_expr(O1) . { - xx_ret_expr(&R, "reference", &O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= NOT xx_common_expr(O1) . { - xx_ret_expr(&R, "not", &O1, NULL, NULL, status->scanner_state); -} - -/* ~a */ -xx_common_expr(R) ::= BITWISE_NOT xx_common_expr(O1) . { - xx_ret_expr(&R, "bitwise_not", &O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= SUB xx_common_expr(O1) . [NOT] { - xx_ret_expr(&R, "minus", &O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= PLUS xx_common_expr(O1) . [NOT] { - xx_ret_expr(&R, "plus", &O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= ISSET xx_common_expr(O1) . { - xx_ret_expr(&R, "isset", &O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= REQUIRE xx_common_expr(O1) . { - xx_ret_expr(&R, "require", &O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= CLONE xx_common_expr(O1) . { - xx_ret_expr(&R, "clone", &O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= EMPTY xx_common_expr(O1) . { - xx_ret_expr(&R, "empty", &O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= LIKELY xx_common_expr(O1) . { - xx_ret_expr(&R, "likely", &O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= UNLIKELY xx_common_expr(O1) . { - xx_ret_expr(&R, "unlikely", &O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) EQUALS xx_common_expr(O2) . { - xx_ret_expr(&R, "equals", &O1, &O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) NOTEQUALS xx_common_expr(O2) . { - xx_ret_expr(&R, "not-equals", &O1, &O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) IDENTICAL xx_common_expr(O2) . { - xx_ret_expr(&R, "identical", &O1, &O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) NOTIDENTICAL xx_common_expr(O2) . { - xx_ret_expr(&R, "not-identical", &O1, &O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) LESS xx_common_expr(O2) . { - xx_ret_expr(&R, "less", &O1, &O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) GREATER xx_common_expr(O2) . { - xx_ret_expr(&R, "greater", &O1, &O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) LESSEQUAL xx_common_expr(O2) . { - xx_ret_expr(&R, "less-equal", &O1, &O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= xx_common_expr(O1) GREATEREQUAL xx_common_expr(O2) . { - xx_ret_expr(&R, "greater-equal", &O1, &O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= PARENTHESES_OPEN xx_common_expr(O1) PARENTHESES_CLOSE . { - xx_ret_expr(&R, "list", &O1, NULL, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= PARENTHESES_OPEN xx_parameter_type(O1) PARENTHESES_CLOSE xx_common_expr(O2) . { - xx_ret_expr(&R, "cast", &O1, &O2, NULL, status->scanner_state); -} - -xx_common_expr(R) ::= LESS IDENTIFIER(I) GREATER xx_common_expr(O2) . { - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, I, status->scanner_state); - xx_ret_expr(&R, "type-hint", &identifier, &O2, NULL, status->scanner_state); - } -} - -xx_common_expr(R) ::= xx_common_expr(V) ARROW IDENTIFIER(I) . { - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, I, status->scanner_state); - xx_ret_expr(&R, "property-access", &V, &identifier, NULL, status->scanner_state); - } -} - -xx_common_expr(R) ::= xx_common_expr(V) ARROW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE . { - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, I, status->scanner_state); - xx_ret_expr(&R, "property-dynamic-access", &V, &identifier, NULL, status->scanner_state); - } -} - -xx_common_expr(R) ::= xx_common_expr(V) ARROW BRACKET_OPEN STRING(S) BRACKET_CLOSE . { - { - zval identifier; - xx_ret_literal(&identifier, XX_T_STRING, S, status->scanner_state); - xx_ret_expr(&R, "property-string-access", &V, &identifier, NULL, status->scanner_state); - } -} - -xx_common_expr(R) ::= IDENTIFIER(V) DOUBLECOLON IDENTIFIER(I) . { - { - zval identifier, identifier2; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, V, status->scanner_state); - xx_ret_literal(&identifier2, XX_T_IDENTIFIER, I, status->scanner_state); - xx_ret_expr(&R, "static-property-access", &identifier, &identifier2, NULL, status->scanner_state); - } -} - -xx_common_expr(R) ::= IDENTIFIER(V) DOUBLECOLON CONSTANT(I) . { - { - zval identifier, identifier2; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, V, status->scanner_state); - xx_ret_literal(&identifier2, XX_T_IDENTIFIER, I, status->scanner_state); - xx_ret_expr(&R, "static-constant-access", &identifier, &identifier2, NULL, status->scanner_state); - } -} - -/* y = v[expr] */ -/*xx_common_expr(R) ::= IDENTIFIER(V) SBRACKET_OPEN xx_common_expr(I) SBRACKET_CLOSE . { - xx_ret_expr(&R, "array-access", xx_ret_literal(XX_T_IDENTIFIER, V, status->scanner_state), I, NULL, status->scanner_state); -}*/ - -xx_common_expr(R) ::= xx_common_expr(V) SBRACKET_OPEN xx_common_expr(I) SBRACKET_CLOSE . { - xx_ret_expr(&R, "array-access", &V, &I, NULL, status->scanner_state); -} - -/* y = a + b */ -xx_common_expr(R) ::= xx_common_expr(O1) ADD xx_common_expr(O2) . { - xx_ret_expr(&R, "add", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a - b */ -xx_common_expr(R) ::= xx_common_expr(O1) SUB xx_common_expr(O2) . { - xx_ret_expr(&R, "sub", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a * b */ -xx_common_expr(R) ::= xx_common_expr(O1) MUL xx_common_expr(O2) . { - xx_ret_expr(&R, "mul", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a / b */ -xx_common_expr(R) ::= xx_common_expr(O1) DIV xx_common_expr(O2) . { - xx_ret_expr(&R, "div", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a % b */ -xx_common_expr(R) ::= xx_common_expr(O1) MOD xx_common_expr(O2) . { - xx_ret_expr(&R, "mod", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a . b */ -xx_common_expr(R) ::= xx_common_expr(O1) CONCAT xx_common_expr(O2) . { - xx_ret_expr(&R, "concat", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a && b */ -xx_common_expr(R) ::= xx_common_expr(O1) AND xx_common_expr(O2) . { - xx_ret_expr(&R, "and", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a || b */ -xx_common_expr(R) ::= xx_common_expr(O1) OR xx_common_expr(O2) . { - xx_ret_expr(&R, "or", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a | b */ -xx_common_expr(R) ::= xx_common_expr(O1) BITWISE_OR xx_common_expr(O2) . { - xx_ret_expr(&R, "bitwise_or", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a & b */ -xx_common_expr(R) ::= xx_common_expr(O1) BITWISE_AND xx_common_expr(O2) . [BITWISE_OR] { - xx_ret_expr(&R, "bitwise_and", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a ^ b */ -xx_common_expr(R) ::= xx_common_expr(O1) BITWISE_XOR xx_common_expr(O2) . { - xx_ret_expr(&R, "bitwise_xor", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a << b */ -xx_common_expr(R) ::= xx_common_expr(O1) BITWISE_SHIFTLEFT xx_common_expr(O2) . { - xx_ret_expr(&R, "bitwise_shiftleft", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a >> b */ -xx_common_expr(R) ::= xx_common_expr(O1) BITWISE_SHIFTRIGHT xx_common_expr(O2) . { - xx_ret_expr(&R, "bitwise_shiftright", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a instanceof b */ -xx_common_expr(R) ::= xx_common_expr(O1) INSTANCEOF xx_common_expr(O2) . { - xx_ret_expr(&R, "instanceof", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a .. b */ -xx_common_expr(R) ::= xx_common_expr(O1) INCLUSIVE_RANGE xx_common_expr(O2) . { - xx_ret_expr(&R, "irange", &O1, &O2, NULL, status->scanner_state); -} - -/* y = a ... b */ -xx_common_expr(R) ::= xx_common_expr(O1) EXCLUSIVE_RANGE xx_common_expr(O2) . { - xx_ret_expr(&R, "erange", &O1, &O2, NULL, status->scanner_state); -} - -/* y = fetch x, z[k] */ -xx_fetch_expr(R) ::= FETCH IDENTIFIER(O1) COMMA xx_common_expr(O2) . { - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, O1, status->scanner_state); - xx_ret_expr(&R, "fetch", &identifier, &O2, NULL, status->scanner_state); - } -} - -/* y = fetch x, z[k] */ -xx_common_expr(R) ::= xx_fetch_expr(E) . { - R = E; -} - -/* y = typeof b */ -xx_common_expr(R) ::= TYPEOF xx_common_expr(O1) . { - xx_ret_expr(&R, "typeof", &O1, NULL, NULL, status->scanner_state); -} - -/* y = x */ -xx_common_expr(R) ::= IDENTIFIER(I) . { - xx_ret_literal(&R, XX_T_IDENTIFIER, I, status->scanner_state); -} - -/* y = 100 */ -xx_common_expr(R) ::= INTEGER(I) . { - xx_ret_literal(&R, XX_T_INTEGER, I, status->scanner_state); -} - -/* y = "hello" */ -xx_common_expr(R) ::= STRING(S) . { - xx_ret_literal(&R, XX_T_STRING, S, status->scanner_state); -} - -/* y = ~"hello" */ -xx_common_expr(R) ::= ISTRING(S) . { - xx_ret_literal(&R, XX_T_ISTRING, S, status->scanner_state); -} - -/* y = 'h' */ -xx_common_expr(R) ::= CHAR(S) . { - xx_ret_literal(&R, XX_T_CHAR, S, status->scanner_state); -} - -/* y = 12.5 */ -xx_common_expr(R) ::= DOUBLE(D) . { - xx_ret_literal(&R, XX_T_DOUBLE, D, status->scanner_state); -} - -/* y = null */ -xx_common_expr(R) ::= NULL . { - xx_ret_literal(&R, XX_T_NULL, NULL, status->scanner_state); -} - -/* y = false */ -xx_common_expr(R) ::= TRUE . { - xx_ret_literal(&R, XX_T_TRUE, NULL, status->scanner_state); -} - -/* y = false */ -xx_common_expr(R) ::= FALSE . { - xx_ret_literal(&R, XX_T_FALSE, NULL, status->scanner_state); -} - -/* y = XX */ -xx_common_expr(R) ::= CONSTANT(I) . { - xx_ret_literal(&R, XX_T_CONSTANT, I, status->scanner_state); -} - -/* y = [] */ -xx_common_expr(R) ::= SBRACKET_OPEN SBRACKET_CLOSE . { - xx_ret_expr(&R, "empty-array", NULL, NULL, NULL, status->scanner_state); -} - -/* y = [1, 2, 3] */ -xx_common_expr(R) ::= SBRACKET_OPEN xx_array_list(L) SBRACKET_CLOSE . { - xx_ret_expr(&R, "array", &L, NULL, NULL, status->scanner_state); -} - -/* y = new static */ -xx_common_expr(R) ::= NEW STATIC . { - xx_ret_new_static_instance(&R, NULL, status->scanner_state); -} - -/* y = new static() */ -xx_common_expr(R) ::= NEW STATIC PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_new_static_instance(&R, NULL, status->scanner_state); -} - -/* y = new static(false, x) */ -xx_common_expr(R) ::= NEW STATIC PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_new_static_instance(&R, &P, status->scanner_state); -} - -/* y = new MyClass */ -xx_common_expr(R) ::= NEW IDENTIFIER(I) . { - xx_ret_new_instance(&R, 0, I, NULL, status->scanner_state); -} - -/* y = new MyClass() */ -xx_common_expr(R) ::= NEW IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_new_instance(&R, 0, I, NULL, status->scanner_state); -} - -/* y = new MyClass(false, x) */ -xx_common_expr(R) ::= NEW IDENTIFIER(I) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_new_instance(&R, 0, I, &P, status->scanner_state); -} - -/* y = new {MyClass} */ -xx_common_expr(R) ::= NEW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE . { - xx_ret_new_instance(&R, 1, I, NULL, status->scanner_state); -} - -/* y = new {MyClass}() */ -xx_common_expr(R) ::= NEW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_new_instance(&R, 1, I, NULL, status->scanner_state); -} - -/* y = new {MyClass}(false, x) */ -xx_common_expr(R) ::= NEW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_new_instance(&R, 1, I, &P, status->scanner_state); -} - -/* y = new array() */ -xx_common_expr(R) ::= NEW xx_parameter_type(T) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_new_instance_type(&R, &T, &P, status->scanner_state); -} - -/* y = f(false, x) */ -xx_fcall_expr(R) ::= IDENTIFIER(I) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_fcall(&R, 1, I, &P, status->scanner_state); -} - -/* y = f() */ -xx_fcall_expr(R) ::= IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_fcall(&R, 1, I, NULL, status->scanner_state); -} - -/* y = {f}(false, x) */ -xx_fcall_expr(R) ::= BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_fcall(&R, 2, I, &P, status->scanner_state); -} - -/* y = {f}() */ -xx_fcall_expr(R) ::= BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_fcall(&R, 2, I, NULL, status->scanner_state); -} - -/* o::m() */ -xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_scall(&R, 0, O->token, 0, M, NULL, status->scanner_state); - efree(O->token); - efree(O); -} - -/* o::m(false, x) */ -xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_scall(&R, 0, O->token, 0, M, &P, status->scanner_state); - efree(O->token); - efree(O); -} - -/* static::m(false, x) */ -xx_scall_expr(R) ::= STATIC DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_scall(&R, 0, "static", 0, M, &P, status->scanner_state); -} - -/* static::m() */ -xx_scall_expr(R) ::= STATIC DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_scall(&R, 0, "static", 0, M, NULL, status->scanner_state); -} - -/* {o}::m() */ -xx_scall_expr(R) ::= BRACKET_OPEN IDENTIFIER(O) BRACKET_CLOSE DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_scall(&R, 1, O->token, 0, M, NULL, status->scanner_state); - efree(O->token); - efree(O); -} - -/* {o}::m(false, x) */ -xx_scall_expr(R) ::= BRACKET_OPEN IDENTIFIER(O) BRACKET_CLOSE DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_scall(&R, 1, O->token, 0, M, &P, status->scanner_state); - efree(O->token); - efree(O); -} - -/* {o}::{m}() */ -xx_scall_expr(R) ::= BRACKET_OPEN IDENTIFIER(O) BRACKET_CLOSE DOUBLECOLON BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_scall(&R, 1, O->token, 1, M, NULL, status->scanner_state); - efree(O->token); - efree(O); -} - -/* {o}::{m}(false, x) */ -xx_scall_expr(R) ::= BRACKET_OPEN IDENTIFIER(O) BRACKET_CLOSE DOUBLECOLON BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_scall(&R, 1, O->token, 1, M, &P, status->scanner_state); - efree(O->token); - efree(O); -} - -/* o::{m}() */ -xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_scall(&R, 0, O->token, 1, M, NULL, status->scanner_state); - efree(O->token); - efree(O); -} - -/* o::{m}(false, x) */ -xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_scall(&R, 0, O->token, 1, M, &P, status->scanner_state); - efree(O->token); - efree(O); -} - -/* o->m(false, x) */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_mcall(&R, 1, &O, M, &P, status->scanner_state); -} - -/* o->m() */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW IDENTIFIER(M) PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_mcall(&R, 1, &O, M, NULL, status->scanner_state); -} - -/* o->{m}(false, x) */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_mcall(&R, 2, &O, M, &P, status->scanner_state); -} - -/* o->{m}() */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_mcall(&R, 2, &O, M, NULL, status->scanner_state); -} - -/* o->{"m"}(false, x) */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW BRACKET_OPEN STRING(S) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . { - xx_ret_mcall(&R, 3, &O, S, &P, status->scanner_state); -} - -/* o->{"m"}() */ -xx_mcall_expr(R) ::= xx_common_expr(O) ARROW BRACKET_OPEN STRING(S) BRACKET_CLOSE PARENTHESES_OPEN PARENTHESES_CLOSE . { - xx_ret_mcall(&R, 3, &O, S, NULL, status->scanner_state); -} - -/* y = o->m(false, x) or y = o->m() */ -xx_common_expr(R) ::= xx_mcall_expr(E) . { - R = E; -} - -/* y = o::m(false, x) or y = o::m() */ -xx_common_expr(R) ::= xx_scall_expr(E) . { - R = E; -} - -/* f() or f(1, 2, 3) */ -xx_common_expr(R) ::= xx_fcall_expr(E) . { - R = E; -} - -/* a ? b : c */ -xx_common_expr(R) ::= xx_common_expr(O1) QUESTION xx_common_expr(O2) COLON xx_common_expr(O3) . { - xx_ret_expr(&R, "ternary", &O1, &O2, &O3, status->scanner_state); -} - -/* a ?: b */ -xx_common_expr(R) ::= xx_common_expr(O1) QUESTION COLON xx_common_expr(O3) . { - xx_ret_expr(&R, "short-ternary", &O1, NULL, &O3, status->scanner_state); -} - -xx_call_parameters(R) ::= xx_call_parameters(L) COMMA xx_call_parameter(P) . { - xx_ret_list(&R, &L, &P, status->scanner_state); -} - -xx_call_parameters(R) ::= xx_call_parameter(P) . { - xx_ret_list(&R, NULL, &P, status->scanner_state); -} - -/* func(expr) */ -xx_call_parameter(R) ::= xx_common_expr(E) . { - xx_ret_call_parameter(&R, NULL, &E, status->scanner_state); -} - -/* func(name: expr) */ -xx_call_parameter(R) ::= IDENTIFIER(I) COLON xx_common_expr(E) . { - xx_ret_call_parameter(&R, I, &E, status->scanner_state); -} - -/** empty closure function () { } **/ -xx_common_expr(R) ::= FUNCTION PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_expr(&R, "closure", NULL, NULL, NULL, status->scanner_state); -} - -/** function() { ... }*/ -xx_common_expr(R) ::= FUNCTION PARENTHESES_OPEN PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_expr(&R, "closure", NULL, &S, NULL, status->scanner_state); -} - -/** function(a, b, c) { }*/ -xx_common_expr(R) ::= FUNCTION PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . { - xx_ret_expr(&R, "closure", &L, NULL, NULL, status->scanner_state); -} - -/** function(a, b, c) { ... }*/ -xx_common_expr(R) ::= FUNCTION PARENTHESES_OPEN xx_parameter_list(L) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(S) BRACKET_CLOSE . { - xx_ret_expr(&R, "closure", &L, &S, NULL, status->scanner_state); -} - -/** x => x + 1 */ -xx_common_expr(R) ::= IDENTIFIER(I) DOUBLEARROW xx_common_expr(E) . { - { - zval identifier; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, I, status->scanner_state); - xx_ret_expr(&R, "closure-arrow", &identifier, &E, NULL, status->scanner_state); - } -} - -xx_array_list(R) ::= xx_array_list(L) COMMA xx_array_item(I) . { - xx_ret_list(&R, &L, &I, status->scanner_state); -} - -xx_array_list(R) ::= xx_array_item(I) . { - xx_ret_list(&R, NULL, &I, status->scanner_state); -} - -xx_array_item(R) ::= xx_array_key(K) COLON xx_array_value(V) . { - xx_ret_array_item(&R, &K, &V, status->scanner_state); -} - -xx_array_item(R) ::= xx_array_value(V) . { - xx_ret_array_item(&R, NULL, &V, status->scanner_state); -} - -xx_array_key(R) ::= xx_common_expr(E) . { - R = E; -} - -xx_array_value(R) ::= xx_common_expr(E) . { - R = E; -} - -/** xx_literal_expr */ -xx_literal_expr(R) ::= INTEGER(I) . { - xx_ret_literal(&R, XX_T_INTEGER, I, status->scanner_state); -} - -xx_literal_expr(R) ::= CHAR(C) . { - xx_ret_literal(&R, XX_T_CHAR, C, status->scanner_state); -} - -xx_literal_expr(R) ::= STRING(S) . { - xx_ret_literal(&R, XX_T_STRING, S, status->scanner_state); -} - -xx_literal_expr(R) ::= DOUBLE(D) . { - xx_ret_literal(&R, XX_T_DOUBLE, D, status->scanner_state); -} - -xx_literal_expr(R) ::= NULL . { - xx_ret_literal(&R, XX_T_NULL, NULL, status->scanner_state); -} - -xx_literal_expr(R) ::= FALSE . { - xx_ret_literal(&R, XX_T_FALSE, NULL, status->scanner_state); -} - -xx_literal_expr(R) ::= TRUE . { - xx_ret_literal(&R, XX_T_TRUE, NULL, status->scanner_state); -} - -xx_literal_expr(R) ::= IDENTIFIER(V) DOUBLECOLON CONSTANT(I) . { - { - zval identifier, identifier2; - xx_ret_literal(&identifier, XX_T_IDENTIFIER, V, status->scanner_state); - xx_ret_literal(&identifier2, XX_T_IDENTIFIER, I, status->scanner_state); - xx_ret_expr(&R, "static-constant-access", &identifier, &identifier2, NULL, status->scanner_state); - } -} - -xx_literal_expr(R) ::= CONSTANT(I) . { - xx_ret_literal(&R, XX_T_CONSTANT, I, status->scanner_state); -} - -xx_literal_expr(R) ::= SBRACKET_OPEN SBRACKET_CLOSE . { - xx_ret_expr(&R, "empty-array", NULL, NULL, NULL, status->scanner_state); -} - -xx_literal_expr(R) ::= SBRACKET_OPEN xx_literal_array_list(L) SBRACKET_CLOSE . { - xx_ret_expr(&R, "array", &L, NULL, NULL, status->scanner_state); -} - -xx_literal_array_list(R) ::= xx_literal_array_list(L) COMMA xx_literal_array_item(I) . { - xx_ret_list(&R, &L, &I, status->scanner_state); -} - -xx_literal_array_list(R) ::= xx_literal_array_item(I) . { - xx_ret_list(&R, NULL, &I, status->scanner_state); -} - -xx_literal_array_item(R) ::= xx_literal_array_key(K) COLON xx_literal_array_value(V) . { - xx_ret_array_item(&R, &K, &V, status->scanner_state); -} - -xx_literal_array_item(R) ::= xx_literal_array_value(V) . { - xx_ret_array_item(&R, NULL, &V, status->scanner_state); -} - -xx_literal_array_key(R) ::= IDENTIFIER(I) . { - xx_ret_literal(&R, XX_T_IDENTIFIER, I, status->scanner_state); -} - -xx_literal_array_key(R) ::= STRING(S) . { - xx_ret_literal(&R, XX_T_STRING, S, status->scanner_state); -} - -xx_literal_array_key(R) ::= INTEGER(I) . { - xx_ret_literal(&R, XX_T_INTEGER, I, status->scanner_state); -} - -xx_literal_array_value(R) ::= xx_literal_expr(E) . { - R = E; -} - -xx_eval_expr(R) ::= xx_common_expr(E) . { - R = E; -} - -xx_comment(R) ::= COMMENT(C) . { - xx_ret_comment(&R, C, status->scanner_state); -} - -xx_cblock(R) ::= CBLOCK(C) . { - xx_ret_cblock(&R, C, status->scanner_state); -} diff --git a/parser/parser/scanner.h b/parser/parser/scanner.h deleted file mode 100644 index 943ea266e5..0000000000 --- a/parser/parser/scanner.h +++ /dev/null @@ -1,164 +0,0 @@ - -/* - +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | - | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | - +--------------------------------------------------------------------------+ -*/ - -#ifndef PHP_ZEPHIR_SCANNER_H -#define PHP_ZEPHIR_SCANNER_H - -#define XX_SCANNER_RETCODE_EOF -1 -#define XX_SCANNER_RETCODE_ERR -2 -#define XX_SCANNER_RETCODE_IMPOSSIBLE -3 - -/** Modes */ -#define XX_T_IGNORE 297 - -/* Literals & Identifiers */ -#define XX_T_INTEGER 301 -#define XX_T_DOUBLE 302 -#define XX_T_STRING 303 -#define XX_T_NULL 304 -#define XX_T_FALSE 305 -#define XX_T_TRUE 306 -#define XX_T_IDENTIFIER 307 -#define XX_T_ARRAY 308 -#define XX_T_CHAR 309 -#define XX_T_ISTRING 310 - -#define XX_T_TYPE_INTEGER 320 -#define XX_T_TYPE_DOUBLE 321 -#define XX_T_TYPE_BOOL 322 -#define XX_T_TYPE_STRING 323 -#define XX_T_TYPE_VAR 324 -#define XX_T_TYPE_LONG 325 -#define XX_T_TYPE_ULONG 326 -#define XX_T_TYPE_CHAR 327 -#define XX_T_TYPE_UCHAR 328 -#define XX_T_TYPE_UINTEGER 329 -#define XX_T_TYPE_ARRAY 330 -#define XX_T_TYPE_CALLABLE 331 -#define XX_T_TYPE_OBJECT 332 -#define XX_T_TYPE_RESOURCE 333 -#define XX_T_TYPE_NULL 334 -#define XX_T_TYPE_THIS 335 - -#define XX_T_NAMESPACE 350 -#define XX_T_CLASS 351 -#define XX_T_PUBLIC 352 -#define XX_T_PROTECTED 353 -#define XX_T_EXTENDS 354 -#define XX_T_FUNCTION 355 -#define XX_T_LET 356 -#define XX_T_COMMENT 357 -#define XX_T_ECHO 358 -#define XX_T_CONST 359 -#define XX_T_ABSTRACT 360 -#define XX_T_IMPLEMENTS 361 -#define XX_T_INTERFACE 362 -#define XX_T_IF 363 -#define XX_T_ELSE 364 -#define XX_T_WHILE 365 -#define XX_T_NEW 366 -#define XX_T_RETURN 367 -#define XX_T_LOOP 368 -#define XX_T_BREAK 369 -#define XX_T_CONTINUE 370 -#define XX_T_INSTANCEOF 371 -#define XX_T_TYPEOF 372 -#define XX_T_ISSET 373 -#define XX_T_UNSET 374 -#define XX_T_THROW 375 -#define XX_T_FOR 376 -#define XX_T_IN 377 -#define XX_T_FETCH 378 -#define XX_T_SWITCH 379 -#define XX_T_CASE 380 -#define XX_T_DEFAULT 381 -#define XX_T_REVERSE 382 -#define XX_T_PRIVATE 383 -#define XX_T_STATIC 384 -#define XX_T_INLINE 385 -#define XX_T_FINAL 386 -#define XX_T_CONSTANT 387 -#define XX_T_DO 388 -#define XX_T_REQUIRE 389 -#define XX_T_CLONE 390 -#define XX_T_EMPTY 391 -#define XX_T_VOID 392 -#define XX_T_LIKELY 393 -#define XX_T_UNLIKELY 394 -#define XX_T_USE 395 -#define XX_T_AS 396 -#define XX_T_TRY 397 -#define XX_T_CATCH 398 -#define XX_T_DEPRECATED 399 - -/* Operators */ -#define XX_T_AT '@' -#define XX_T_DOT '.' -#define XX_T_COMMA ',' -#define XX_T_ASSIGN '=' -#define XX_T_LESS '<' -#define XX_T_GREATER '>' -#define XX_T_COLON ':' -#define XX_T_DOTCOMMA ';' -#define XX_T_QUESTION '?' -#define XX_T_BRACKET_OPEN '{' -#define XX_T_BRACKET_CLOSE '}' -#define XX_T_SBRACKET_OPEN '[' -#define XX_T_SBRACKET_CLOSE ']' -#define XX_T_PARENTHESES_OPEN '(' -#define XX_T_PARENTHESES_CLOSE ')' -#define XX_T_BITWISE_OR '|' -#define XX_T_BITWISE_AND '&' -#define XX_T_BITWISE_XOR '^' -#define XX_T_ARROW 400 -#define XX_T_EQUALS 401 -#define XX_T_IDENTICAL 402 -#define XX_T_ADD '+' -#define XX_T_SUB '-' -#define XX_T_MUL '*' -#define XX_T_DIV '/' -#define XX_T_MOD '%' -#define XX_T_INCR 403 -#define XX_T_DECR 404 -#define XX_T_NOTEQUALS 405 -#define XX_T_NOTIDENTICAL 406 -#define XX_T_NOT 407 -#define XX_T_BITWISE_NOT '~' -#define XX_T_GREATEREQUAL 408 -#define XX_T_LESSEQUAL 409 -#define XX_T_ADDASSIGN 410 -#define XX_T_SUBASSIGN 411 -#define XX_T_MULASSIGN 412 -#define XX_T_DIVASSIGN 413 -#define XX_T_CONCATASSIGN 414 -#define XX_T_AND 415 -#define XX_T_OR 416 -#define XX_T_DOUBLECOLON 417 -#define XX_T_MODASSIGN 418 -#define XX_T_BITWISE_SHIFTLEFT 419 -#define XX_T_BITWISE_SHIFTRIGHT 420 -#define XX_T_DOUBLEARROW 440 -#define XX_T_INCLUSIVE_RANGE 441 -#define XX_T_EXCLUSIVE_RANGE 442 - -#define XX_T_CBLOCK 451 - -#define XX_T_ELSEIF 452 -#define XX_T_INTERNAL 453 - -#endif diff --git a/parser/parser/scanner.re b/parser/parser/scanner.re deleted file mode 100644 index 677c69dec8..0000000000 --- a/parser/parser/scanner.re +++ /dev/null @@ -1,982 +0,0 @@ - -/* - +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | - | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | - +--------------------------------------------------------------------------+ -*/ - -#include -#include "xx.h" -#include "scanner.h" - -#define YYCTYPE unsigned char -#define YYCURSOR (s->start) -#define YYLIMIT (s->end) -#define YYMARKER q - -int xx_get_token(xx_scanner_state *s, xx_scanner_token *token) { - - char next, *q = YYCURSOR, *start = YYCURSOR; - int status = XX_SCANNER_RETCODE_IMPOSSIBLE; - int is_constant = 0, j; - - while (XX_SCANNER_RETCODE_IMPOSSIBLE == status) { - - /*!re2c - re2c:indent:top = 2; - re2c:yyfill:enable = 0; - - INTEGER = ([\-]?[0-9]+)|([\-]?[0][x][0-9A-Fa-f]+); - INTEGER { - token->opcode = XX_T_INTEGER; - token->value = estrndup(start, YYCURSOR - start); - token->len = YYCURSOR - start; - s->active_char += (YYCURSOR - start); - q = YYCURSOR; - return 0; - } - - DOUBLE = ([\-]?[0-9]+[\.][0-9]+); - DOUBLE { - token->opcode = XX_T_DOUBLE; - token->value = estrndup(start, YYCURSOR - start); - token->len = YYCURSOR - start; - s->active_char += (YYCURSOR - start); - q = YYCURSOR; - return 0; - } - - 'null' { - s->active_char += sizeof("null")-1; - token->opcode = XX_T_NULL; - return 0; - } - - 'false' { - s->active_char += sizeof("false")-1; - token->opcode = XX_T_FALSE; - return 0; - } - - 'true' { - s->active_char += sizeof("true")-1; - token->opcode = XX_T_TRUE; - return 0; - } - - 'namespace' { - s->active_char += sizeof("namespace")-1; - token->opcode = XX_T_NAMESPACE; - return 0; - } - - 'use' { - s->active_char += sizeof("use")-1; - token->opcode = XX_T_USE; - return 0; - } - - 'as' { - s->active_char += sizeof("as")-1; - token->opcode = XX_T_AS; - return 0; - } - - 'interface' { - s->active_char += sizeof("interface")-1; - token->opcode = XX_T_INTERFACE; - return 0; - } - - 'class' { - s->active_char += sizeof("class")-1; - s->class_line = s->active_line; - s->class_char = s->active_char; - token->opcode = XX_T_CLASS; - return 0; - } - - 'extends' { - s->active_char += sizeof("extends")-1; - token->opcode = XX_T_EXTENDS; - return 0; - } - - 'implements' { - s->active_char += sizeof("implements")-1; - token->opcode = XX_T_IMPLEMENTS; - return 0; - } - - 'internal' { - s->active_char += sizeof("internal")-1; - token->opcode = XX_T_INTERNAL; - return 0; - } - - 'public' { - s->active_char += sizeof("public")-1; - token->opcode = XX_T_PUBLIC; - return 0; - } - - 'protected' { - s->active_char += sizeof("protected")-1; - token->opcode = XX_T_PROTECTED; - return 0; - } - - 'private' { - s->active_char += sizeof("private")-1; - token->opcode = XX_T_PRIVATE; - return 0; - } - - 'static' { - s->active_char += sizeof("static")-1; - token->opcode = XX_T_STATIC; - return 0; - } - - 'inline' { - s->active_char += sizeof("inline")-1; - token->opcode = XX_T_INLINE; - return 0; - } - - 'deprecated' { - s->active_char += sizeof("deprecated")-1; - token->opcode = XX_T_DEPRECATED; - return 0; - } - - 'final' { - s->active_char += sizeof("final")-1; - token->opcode = XX_T_FINAL; - return 0; - } - - 'abstract' { - s->active_char += sizeof("abstract")-1; - token->opcode = XX_T_ABSTRACT; - return 0; - } - - 'function' { - s->active_char += sizeof("function")-1; - s->method_line = s->active_line; - s->method_char = s->active_char; - token->opcode = XX_T_FUNCTION; - return 0; - } - - 'fn' { - s->active_char += sizeof("fn")-1; - s->method_line = s->active_line; - s->method_char = s->active_char; - token->opcode = XX_T_FUNCTION; - return 0; - } - - 'let' { - s->active_char += sizeof("let")-1; - token->opcode = XX_T_LET; - return 0; - } - - 'echo' { - s->active_char += sizeof("echo")-1; - token->opcode = XX_T_ECHO; - return 0; - } - - 'const' { - s->active_char += sizeof("const")-1; - token->opcode = XX_T_CONST; - return 0; - } - - 'int' { - s->active_char += sizeof("int")-1; - token->opcode = XX_T_TYPE_INTEGER; - return 0; - } - - 'uint' { - s->active_char += sizeof("uint")-1; - token->opcode = XX_T_TYPE_UINTEGER; - return 0; - } - - 'long' { - s->active_char += sizeof("long")-1; - token->opcode = XX_T_TYPE_LONG; - return 0; - } - - 'ulong' { - s->active_char += sizeof("ulong")-1; - token->opcode = XX_T_TYPE_ULONG; - return 0; - } - - 'char' { - s->active_char += sizeof("char")-1; - token->opcode = XX_T_TYPE_CHAR; - return 0; - } - - 'uchar' { - s->active_char += sizeof("uchar")-1; - token->opcode = XX_T_TYPE_UCHAR; - return 0; - } - - 'double' { - s->active_char += sizeof("double")-1; - token->opcode = XX_T_TYPE_DOUBLE; - return 0; - } - - 'float' { - s->active_char += sizeof("float")-1; - token->opcode = XX_T_TYPE_DOUBLE; - return 0; - } - - 'bool' { - s->active_char += sizeof("bool")-1; - token->opcode = XX_T_TYPE_BOOL; - return 0; - } - - 'boolean' { - s->active_char += sizeof("boolean")-1; - token->opcode = XX_T_TYPE_BOOL; - return 0; - } - - 'string' { - s->active_char += sizeof("string")-1; - token->opcode = XX_T_TYPE_STRING; - return 0; - } - - 'array' { - s->active_char += sizeof("array")-1; - token->opcode = XX_T_TYPE_ARRAY; - return 0; - } - - 'var' { - s->active_char += sizeof("var")-1; - token->opcode = XX_T_TYPE_VAR; - return 0; - } - - 'object' { - s->active_char += sizeof("object")-1; - token->opcode = XX_T_TYPE_OBJECT; - return 0; - } - - 'callable' { - s->active_char += sizeof("callable")-1; - token->opcode = XX_T_TYPE_CALLABLE; - return 0; - } - - 'resource' { - s->active_char += sizeof("resource")-1; - token->opcode = XX_T_TYPE_RESOURCE; - return 0; - } - - 'if' { - s->active_char += sizeof("if")-1; - token->opcode = XX_T_IF; - return 0; - } - - 'else' { - s->active_char += sizeof("else")-1; - token->opcode = XX_T_ELSE; - return 0; - } - - 'elseif' { - s->active_char += sizeof("elseif")-1; - token->opcode = XX_T_ELSEIF; - return 0; - } - - 'do' { - s->active_char += sizeof("do")-1; - token->opcode = XX_T_DO; - return 0; - } - - 'while' { - s->active_char += sizeof("while")-1; - token->opcode = XX_T_WHILE; - return 0; - } - - 'for' { - s->active_char += sizeof("for")-1; - token->opcode = XX_T_FOR; - return 0; - } - - 'in' { - s->active_char += sizeof("in")-1; - token->opcode = XX_T_IN; - return 0; - } - - 'new' { - s->active_char += sizeof("new")-1; - token->opcode = XX_T_NEW; - return 0; - } - - 'return' { - s->active_char += sizeof("return")-1; - token->opcode = XX_T_RETURN; - return 0; - } - - 'require' { - s->active_char += sizeof("require")-1; - token->opcode = XX_T_REQUIRE; - return 0; - } - - 'clone' { - s->active_char += sizeof("clone")-1; - token->opcode = XX_T_CLONE; - return 0; - } - - 'empty' { - s->active_char += sizeof("empty")-1; - token->opcode = XX_T_EMPTY; - return 0; - } - - 'void' { - s->active_char += sizeof("void")-1; - token->opcode = XX_T_VOID; - return 0; - } - - 'loop' { - token->opcode = XX_T_LOOP; - s->active_char += sizeof("loop")-1; - return 0; - } - - 'break' { - token->opcode = XX_T_BREAK; - s->active_char += sizeof("break")-1; - return 0; - } - - 'continue' { - token->opcode = XX_T_CONTINUE; - s->active_char += sizeof("continue")-1; - return 0; - } - - 'typeof' { - token->opcode = XX_T_TYPEOF; - s->active_char += sizeof("typeof")-1; - return 0; - } - - 'instanceof' { - token->opcode = XX_T_INSTANCEOF; - s->active_char += sizeof("instanceof")-1; - return 0; - } - - 'likely' { - s->active_char += sizeof("likely")-1; - token->opcode = XX_T_LIKELY; - return 0; - } - - 'unlikely' { - s->active_char += sizeof("unlikely")-1; - token->opcode = XX_T_UNLIKELY; - return 0; - } - - 'isset' { - token->opcode = XX_T_ISSET; - s->active_char += sizeof("isset")-1; - return 0; - } - - 'unset' { - token->opcode = XX_T_UNSET; - s->active_char += sizeof("unset")-1; - return 0; - } - - 'throw' { - token->opcode = XX_T_THROW; - s->active_char += sizeof("throw")-1; - return 0; - } - - 'fetch' { - token->opcode = XX_T_FETCH; - s->active_char += sizeof("fetch")-1; - return 0; - } - - 'switch' { - token->opcode = XX_T_SWITCH; - s->active_char += sizeof("switch")-1; - return 0; - } - - 'case' { - token->opcode = XX_T_CASE; - s->active_char += sizeof("case")-1; - return 0; - } - - 'default' { - token->opcode = XX_T_DEFAULT; - s->active_char += sizeof("default")-1; - return 0; - } - - 'reverse' { - token->opcode = XX_T_REVERSE; - s->active_char += sizeof("reverse")-1; - return 0; - } - - 'try' { - s->active_char += sizeof("try")-1; - token->opcode = XX_T_TRY; - return 0; - } - - 'catch' { - s->active_char += sizeof("catch")-1; - token->opcode = XX_T_CATCH; - return 0; - } - - SCHAR = (['] ([\\][']|[\\].|[\001-\377]\[\\'])* [']); - SCHAR { - token->opcode = XX_T_CHAR; - token->value = estrndup(q, YYCURSOR - q - 1); - token->len = YYCURSOR - q - 1; - s->active_char += (YYCURSOR - start); - q = YYCURSOR; - return 0; - } - - ISTRING = ([~]["] ([\\]["]|[\\].|[\001-\377]\[\\"])* ["]); - ISTRING { - token->opcode = XX_T_ISTRING; - token->value = estrndup(q, YYCURSOR - q - 1); - token->len = YYCURSOR - q - 1; - s->active_char += (YYCURSOR - start); - q = YYCURSOR; - return 0; - } - - STRING = (["] ([\\]["]|[\\].|[\001-\377]\[\\"])* ["]); - STRING { - token->opcode = XX_T_STRING; - token->value = estrndup(q, YYCURSOR - q - 1); - token->len = YYCURSOR - q - 1; - s->active_char += (YYCURSOR - start); - q = YYCURSOR; - return 0; - } - - DCOMMENT = ("/**"([^*]+|[*]+[^/*])*[*]*"*/"); - DCOMMENT { - token->opcode = XX_T_COMMENT; - token->value = estrndup(q, YYCURSOR - q - 1); - token->len = YYCURSOR - q - 1; - { - int k, ch = s->active_char; - for (k = 0; k < (token->len - 1); k++) { - if (token->value[k] == '\n') { - ch = 1; - s->active_line++; - } else { - ch++; - } - } - s->active_char = ch; - } - q = YYCURSOR; - return 0; - } - - COMMENT = ("/*"([^*]+|[*]+[^/*])*[*]*"*/"); - COMMENT { - token->opcode = XX_T_IGNORE; - token->value = estrndup(q, YYCURSOR - q - 1); - token->len = YYCURSOR - q - 1; - { - int k, ch = s->active_char; - for (k = 0; k < (token->len - 1); k++) { - if (token->value[k] == '\n') { - ch = 1; - s->active_line++; - } else { - ch++; - } - } - s->active_char = ch; - } - efree(token->value); - token->len = 0; - q = YYCURSOR; - return 0; - } - - SLCOMMENT = ("//"[^\r\n]*); - SLCOMMENT { - s->active_char += (YYCURSOR - start); - token->opcode = XX_T_IGNORE; - return 0; - } - - CBLOCK = ("%{"([^}]+|[}]+[^%{])*"}%"); - CBLOCK { - token->opcode = XX_T_CBLOCK; - token->value = estrndup(q+1, YYCURSOR - q - 3 ); - token->len = YYCURSOR - q - 3; - { - int k, ch = s->active_char; - for (k = 0; k < (token->len - 1); k++) { - if (token->value[k] == '\n') { - ch = 1; - s->active_line++; - } else { - ch++; - } - } - s->active_char = ch; - } - q = YYCURSOR; - return 0; - } - - /* We have to remove this and define constants in compiler */ - IDENTIFIER = [\\_\$]?[_a-zA-Z\\][a-zA-Z0-9_\\]*; - IDENTIFIER { - - if (start[0] == '$') { - token->value = estrndup(start + 1, YYCURSOR - start - 1); - token->len = YYCURSOR - start - 1; - s->active_char += (YYCURSOR - start - 1); - } else { - token->value = estrndup(start, YYCURSOR - start); - token->len = YYCURSOR - start; - s->active_char += (YYCURSOR - start); - } - q = YYCURSOR; - - if (token->len > 3) { - - if (!memcmp(token->value, "_GET", sizeof("_GET")-1)) { - token->opcode = XX_T_IDENTIFIER; - return 0; - } - - if (!memcmp(token->value, "_POST", sizeof("_POST")-1)) { - token->opcode = XX_T_IDENTIFIER; - return 0; - } - - if (!memcmp(token->value, "_REQUEST", sizeof("_REQUEST")-1)) { - token->opcode = XX_T_IDENTIFIER; - return 0; - } - - if (!memcmp(token->value, "_COOKIE", sizeof("_COOKIE")-1)) { - token->opcode = XX_T_IDENTIFIER; - return 0; - } - - if (!memcmp(token->value, "_SERVER", sizeof("_SERVER")-1)) { - token->opcode = XX_T_IDENTIFIER; - return 0; - } - - if (!memcmp(token->value, "_SESSION", sizeof("_SESSION")-1)) { - token->opcode = XX_T_IDENTIFIER; - return 0; - } - - if (!memcmp(token->value, "_FILES", sizeof("_FILES")-1)) { - token->opcode = XX_T_IDENTIFIER; - return 0; - } - } - - /* This is hack */ - if ((token->len == 1 && (!memcmp(token->value, "_", sizeof("_")-1))) - || (token->len == 2 && (!memcmp(token->value, "__", sizeof("__")-1))) - || (token->len == 3 && (!memcmp(token->value, "___", sizeof("___")-1))) - || (token->len == 4 && (!memcmp(token->value, "____", sizeof("____")-1))) - ) { - token->opcode = XX_T_IDENTIFIER; - return 0; - } - - is_constant = 1; - for (j = 0; j < token->len; j++) { - if (!((token->value[j] >= 'A' && token->value[j] <= 'Z') || (token->value[j] >= '0' && token->value[j] <= '9') || token->value[j] == '_')) { - is_constant = 0; - break; - } - }; - if (is_constant) { - token->opcode = XX_T_CONSTANT; - } else { - token->opcode = XX_T_IDENTIFIER; - } - return 0; - - } - - "(" { - s->active_char++; - token->opcode = XX_T_PARENTHESES_OPEN; - return 0; - } - - ")" { - s->active_char++; - token->opcode = XX_T_PARENTHESES_CLOSE; - return 0; - } - - "{" { - s->active_char++; - token->opcode = XX_T_BRACKET_OPEN; - return 0; - } - - "}" { - s->active_char++; - token->opcode = XX_T_BRACKET_CLOSE; - return 0; - } - - "[" { - s->active_char++; - token->opcode = XX_T_SBRACKET_OPEN; - return 0; - } - - "]" { - s->active_char++; - token->opcode = XX_T_SBRACKET_CLOSE; - return 0; - } - - "@" { - s->active_char++; - token->opcode = XX_T_AT; - return 0; - } - - "!" { - s->active_char++; - token->opcode = XX_T_NOT; - return 0; - } - - "~" { - s->active_char++; - token->opcode = XX_T_BITWISE_NOT; - return 0; - } - - "&&" { - s->active_char += 2; - token->opcode = XX_T_AND; - return 0; - } - - "||" { - s->active_char += 2; - token->opcode = XX_T_OR; - return 0; - } - - "&" { - s->active_char++; - token->opcode = XX_T_BITWISE_AND; - return 0; - } - - "|" { - s->active_char++; - token->opcode = XX_T_BITWISE_OR; - return 0; - } - - "^" { - s->active_char++; - token->opcode = XX_T_BITWISE_XOR; - return 0; - } - - "<<" { - s->active_char += 2; - token->opcode = XX_T_BITWISE_SHIFTLEFT; - return 0; - } - - ">>" { - s->active_char += 2; - token->opcode = XX_T_BITWISE_SHIFTRIGHT; - return 0; - } - - "=" { - s->active_char++; - token->opcode = XX_T_ASSIGN; - return 0; - } - - "+=" { - s->active_char++; - token->opcode = XX_T_ADDASSIGN; - return 0; - } - - "-=" { - s->active_char++; - token->opcode = XX_T_SUBASSIGN; - return 0; - } - - "*=" { - s->active_char++; - token->opcode = XX_T_MULASSIGN; - return 0; - } - - "/=" { - s->active_char++; - token->opcode = XX_T_DIVASSIGN; - return 0; - } - - "%=" { - s->active_char++; - token->opcode = XX_T_MODASSIGN; - return 0; - } - - ".=" { - s->active_char++; - token->opcode = XX_T_CONCATASSIGN; - return 0; - } - - "==" { - s->active_char += 2; - token->opcode = XX_T_EQUALS; - return 0; - } - - "!=" { - s->active_char += 2; - token->opcode = XX_T_NOTEQUALS; - return 0; - } - - "===" { - s->active_char += 3; - token->opcode = XX_T_IDENTICAL; - return 0; - } - - "!==" { - s->active_char += 3; - token->opcode = XX_T_NOTIDENTICAL; - return 0; - } - - "<=" { - s->active_char++; - token->opcode = XX_T_LESSEQUAL; - return 0; - } - - ">=" { - s->active_char++; - token->opcode = XX_T_GREATEREQUAL; - return 0; - } - - "<" { - s->active_char++; - token->opcode = XX_T_LESS; - return 0; - } - - ">" { - s->active_char++; - token->opcode = XX_T_GREATER; - return 0; - } - - "->" { - s->active_char += 2; - token->opcode = XX_T_ARROW; - return 0; - } - - "=>" { - s->active_char += 2; - token->opcode = XX_T_DOUBLEARROW; - return 0; - } - - "::" { - s->active_char += 2; - token->opcode = XX_T_DOUBLECOLON; - return 0; - } - - "." { - s->active_char++; - token->opcode = XX_T_DOT; - return 0; - } - - "+" { - s->active_char++; - token->opcode = XX_T_ADD; - return 0; - } - - "-" { - s->active_char++; - token->opcode = XX_T_SUB; - return 0; - } - - "*" { - s->active_char++; - token->opcode = XX_T_MUL; - return 0; - } - - "/" { - s->active_char++; - token->opcode = XX_T_DIV; - return 0; - } - - "%" { - s->active_char++; - token->opcode = XX_T_MOD; - return 0; - } - - "++" { - s->active_char += 2; - token->opcode = XX_T_INCR; - return 0; - } - - "--" { - s->active_char += 2; - token->opcode = XX_T_DECR; - return 0; - } - - ".." { - s->active_char += 2; - token->opcode = XX_T_INCLUSIVE_RANGE; - return 0; - } - - "..." { - s->active_char += 3; - token->opcode = XX_T_EXCLUSIVE_RANGE; - return 0; - } - - ":" { - s->active_char++; - token->opcode = XX_T_COLON; - return 0; - } - - ";" { - s->active_char++; - token->opcode = XX_T_DOTCOMMA; - return 0; - } - - "," { - s->active_char++; - token->opcode = XX_T_COMMA; - return 0; - } - - "?" { - s->active_char++; - token->opcode = XX_T_QUESTION; - return 0; - } - - [ \t\r]+ { - s->active_char += (YYCURSOR - start); - token->opcode = XX_T_IGNORE; - return 0; - } - - [\n] { - s->active_line++; - s->active_char = 0; - token->opcode = XX_T_IGNORE; - return 0; - } - - "\000" { - status = XX_SCANNER_RETCODE_EOF; - break; - } - - [^] { - status = XX_SCANNER_RETCODE_ERR; - break; - } - - */ - } - - return status; -} diff --git a/parser/parser/xx.h b/parser/parser/xx.h deleted file mode 100644 index 405f991192..0000000000 --- a/parser/parser/xx.h +++ /dev/null @@ -1,85 +0,0 @@ - -/* - +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | - | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | - +--------------------------------------------------------------------------+ -*/ - -#ifndef PHP_ZEPHIR_XX_H -#define PHP_ZEPHIR_XX_H - -/* List of tokens and their names */ -typedef struct _xx_token_names { - unsigned int code; - char *name; -} xx_token_names; - -typedef struct _xx_memory_manager { - zval ***slots; - int number; -} xx_memory_manager; - -/* Active token state */ -typedef struct _xx_scanner_state { - int active_token; - char* start; - char* end; - unsigned int start_length; - int mode; - unsigned int active_line; - unsigned int active_char; - unsigned int class_line; - unsigned int class_char; - unsigned int method_line; - unsigned int method_char; - char *active_file; -} xx_scanner_state; - -/* Extra information tokens */ -typedef struct _xx_scanner_token { - int opcode; - char *value; - int len; -} xx_scanner_token; - -typedef struct _xx_parser_token { - int opcode; - char *token; - int token_len; - int free_flag; -} xx_parser_token; - -typedef struct _xx_parser_status { - int status; -#if PHP_VERSION_ID < 70000 - zval *ret; -#else - zval ret; -#endif - xx_scanner_state *scanner_state; - xx_scanner_token *token; - char *syntax_error; - unsigned int syntax_error_len; - unsigned int number_brackets; -} xx_parser_status; - -#define XX_PARSING_OK 1 -#define XX_PARSING_FAILED 0 - -void parser_track_variable(xx_scanner_state *state, zval **var); -int parser_is_tracked(xx_scanner_state *state, zval **var); -void parser_free_variable(xx_scanner_state *state, zval **var); -int xx_get_token(xx_scanner_state *state, xx_scanner_token *token); - -#endif diff --git a/parser/php_zephir_parser.h b/parser/php_zephir_parser.h deleted file mode 100644 index b2506afc10..0000000000 --- a/parser/php_zephir_parser.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2015 The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP 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.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | - +----------------------------------------------------------------------+ -*/ - -/* $Id$ */ - -#ifndef PHP_ZEPHIR_PARSER_H -#define PHP_ZEPHIR_PARSER_H - -extern zend_module_entry zephir_parser_module_entry; -#define phpext_zephir_parser_ptr &zephir_parser_module_entry - -#define PHP_ZEPHIR_PARSER_VERSION "0.1.0" /* Replace with version number for your extension */ - -#ifdef PHP_WIN32 -# define PHP_ZEPHIR_PARSER_API __declspec(dllexport) -#elif defined(__GNUC__) && __GNUC__ >= 4 -# define PHP_ZEPHIR_PARSER_API __attribute__ ((visibility("default"))) -#else -# define PHP_ZEPHIR_PARSER_API -#endif - -#ifdef ZTS -#include "TSRM.h" -#endif - -/* - Declare any global variables you may need between the BEGIN - and END macros here: - -ZEND_BEGIN_MODULE_GLOBALS(zephir_parser) - zend_long global_value; - char *global_string; -ZEND_END_MODULE_GLOBALS(zephir_parser) -*/ - -/* Always refer to the globals in your function as ZEPHIR_PARSER_G(variable). - You are encouraged to rename these macros something shorter, see - examples in any other php module directory. -*/ -#define ZEPHIR_PARSER_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(zephir_parser, v) - -#if defined(ZTS) && defined(COMPILE_DL_ZEPHIR_PARSER) -ZEND_TSRMLS_CACHE_EXTERN(); -#endif - -#endif /* PHP_ZEPHIR_PARSER_H */ - - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: noet sw=4 ts=4 fdm=marker - * vim<600: noet sw=4 ts=4 - */ diff --git a/parser/zephir_parser.c b/parser/zephir_parser.c deleted file mode 100644 index a0f54ef7d6..0000000000 --- a/parser/zephir_parser.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2015 The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP 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.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: Steffen Butzer | - +----------------------------------------------------------------------+ -*/ - -/* $Id$ */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "php.h" -#include "php_ini.h" -#include "ext/standard/info.h" -#include "php_zephir_parser.h" - -extern void *xx_parse_program(zval *return_value, char *program, size_t program_length, char *file_path, zval **error_msg); - -/* {{{ proto string zephir_parse_file(string arg) - Return a string to confirm that the module is compiled in */ -PHP_FUNCTION(zephir_parse_file) -{ - size_t filepath_len = 0; - size_t content_len = 0; - char *content = NULL; - char *filepath = NULL; -#if PHP_VERSION_ID >= 70000 - zend_array *arr = NULL; - zval ret; - zval error, *error_ptr = &error; - zval **error_msg = &error_ptr; - ZVAL_UNDEF(error_ptr); -#else - zval *ret = NULL; - zval **error_msg = NULL; -#endif - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &content, &content_len, &filepath, &filepath_len) == FAILURE) { - return; - } - -#if PHP_VERSION_ID >= 70000 - xx_parse_program(&ret, content, content_len, filepath, error_msg); -#else - MAKE_STD_ZVAL(ret); - xx_parse_program(ret, content, content_len, filepath, error_msg); -#endif - -#if PHP_VERSION_ID >= 70000 - if (Z_TYPE_P(error_ptr) != IS_UNDEF) { - RETURN_ZVAL(error_ptr, 1, 1); - } - RETURN_ZVAL(&ret, 1, 1); -#else - RETVAL_ZVAL(ret, 1, 0); -#endif -} -/* }}} */ - -/* {{{ PHP_MINIT_FUNCTION - */ -PHP_MINIT_FUNCTION(zephir_parser) -{ - return SUCCESS; -} -/* }}} */ - -/* {{{ PHP_MSHUTDOWN_FUNCTION - */ -PHP_MSHUTDOWN_FUNCTION(zephir_parser) -{ - return SUCCESS; -} -/* }}} */ - -/* {{{ PHP_MINFO_FUNCTION - */ -PHP_MINFO_FUNCTION(zephir_parser) -{ - php_info_print_table_start(); - php_info_print_table_header(2, "zephir_parser support", "enabled"); - php_info_print_table_end(); -} -/* }}} */ - -/* {{{ zephir_parser_functions[] */ -const zend_function_entry zephir_parser_functions[] = { - PHP_FE(zephir_parse_file, NULL) /* For testing, remove later. */ - PHP_FE_END /* Must be the last line in zephir_parser_functions[] */ -}; -/* }}} */ - -/* {{{ zephir_parser_module_entry - */ -zend_module_entry zephir_parser_module_entry = { - STANDARD_MODULE_HEADER, - "zephir_parser", - zephir_parser_functions, - PHP_MINIT(zephir_parser), - PHP_MSHUTDOWN(zephir_parser), - NULL, - NULL, - PHP_MINFO(zephir_parser), - PHP_ZEPHIR_PARSER_VERSION, - STANDARD_MODULE_PROPERTIES -}; -/* }}} */ - -#ifdef COMPILE_DL_ZEPHIR_PARSER -#ifdef ZTS -ZEND_TSRMLS_CACHE_DEFINE(); -#endif -ZEND_GET_MODULE(zephir_parser) -#endif - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: noet sw=4 ts=4 fdm=marker - * vim<600: noet sw=4 ts=4 - */ From 699c6235fa74a533b7d5c0686b1c37fcb2650ef5 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 20:05:12 +0300 Subject: [PATCH 36/40] Updated docs --- Library/Compiler.php | 9 +++++++-- README.md | 9 +-------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Library/Compiler.php b/Library/Compiler.php index 2ba302b61e..d0db155b01 100644 --- a/Library/Compiler.php +++ b/Library/Compiler.php @@ -18,6 +18,7 @@ use Zephir\Commands\CommandGenerate; use Zephir\Commands\CommandInterface; use Zephir\Compiler\CompilerException; +use Zephir\Exception\IllegalStateException; use Zephir\FileSystem\HardDisk as FileSystem; /** @@ -193,13 +194,17 @@ public function addFunction(FunctionDefinition $func, $statement = null) * * @param string $filePath * @throws CompilerException - * @throws Exception + * @throws IllegalStateException * @throws ParseException */ protected function preCompile($filePath) { if (!$this->parserManager->isAvailable()) { - throw new Exception('The zephir parser extension is not loaded!'); + throw new IllegalStateException( + 'The zephir parser extension is not loaded! ' . PHP_EOL . + 'Note: Zephir no longer distributed with internal Zephir Parser. ' . PHP_EOL . + 'To install Zephir Parser please refer to: https://github.com/phalcon/php-zephir-parser' + ); } if (preg_match('#\.zep$#', $filePath)) { diff --git a/README.md b/README.md index d76aa5d7d3..a0976d47ea 100644 --- a/README.md +++ b/README.md @@ -28,12 +28,8 @@ Compiler design goals: ## Requirements -To compile Zephir Parser: - * [re2c](http://re2c.org/) - -To build the PHP extension: - +* [Zephir Parser](https://github.com/phalcon/php-zephir-parser) * `g++` >= 4.4 | `clang++` >= 3.x | `vc++` >= 11 * GNU `make` >= 3.81 * `automake` @@ -41,8 +37,6 @@ To build the PHP extension: ## Installation -First, you have to get [Zephir Parser](https://github.com/phalcon/php-zephir-parser). - ### Windows To install Zephir on Windows [follow this guide](https://github.com/phalcon/zephir/blob/master/WINDOWS.md). @@ -61,7 +55,6 @@ For global installation add `-c` flag. You can install Zephir using composer. To get Zephir, run `composer require phalcon/zephir`. -After getting Zephir follow the above guide to install Zephir Parser. ### Additional notes on Ubuntu From 078b7c7c86e1b113814d3a561aef2c1180e94640 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 20:12:03 +0300 Subject: [PATCH 37/40] Bump version --- Library/Compiler.php | 2 +- appveyor.yml | 2 +- unit-tests/microbench.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Compiler.php b/Library/Compiler.php index d0db155b01..3e428f4558 100644 --- a/Library/Compiler.php +++ b/Library/Compiler.php @@ -30,7 +30,7 @@ */ class Compiler { - const VERSION = '0.9.12'; + const VERSION = '0.10.0'; public $parserCompiled = false; diff --git a/appveyor.yml b/appveyor.yml index 52fdd43295..c119b2aaa7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -3,7 +3,7 @@ #---------------------------------# # version format -version: 0.9.12-{build} +version: 0.10.0-{build} # branches to build branches: diff --git a/unit-tests/microbench.php b/unit-tests/microbench.php index a971f76783..7b6902905e 100644 --- a/unit-tests/microbench.php +++ b/unit-tests/microbench.php @@ -59,7 +59,7 @@ function total() const N = 5000000; -echo "Benchmark Zephir ".\Zephir\Compiler::VERSION." \n"; +echo "Benchmark Zephir ".\Zephir\Compiler::getCurrentVersion()." \n"; $x = new \Test\Bench\Foo(); From b3c2d481e66425970697f1f974688be6f962edf1 Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 20:53:11 +0300 Subject: [PATCH 38/40] Added FcallManagerInterface --- Library/Backends/ZendEngine2/Backend.php | 52 +++++++++++++------ Library/Backends/ZendEngine2/FcallManager.php | 35 ++++++------- Library/Backends/ZendEngine3/Backend.php | 52 ++++++++++++++----- Library/Backends/ZendEngine3/FcallManager.php | 26 ++++------ Library/BaseBackend.php | 21 +++++++- Library/Compiler.php | 8 ++- Library/Fcall/FcallAwareInterface.php | 40 ++++++++++++++ Library/Fcall/FcallManagerInterface.php | 36 +++++++++++++ 8 files changed, 204 insertions(+), 66 deletions(-) create mode 100644 Library/Fcall/FcallAwareInterface.php create mode 100644 Library/Fcall/FcallManagerInterface.php diff --git a/Library/Backends/ZendEngine2/Backend.php b/Library/Backends/ZendEngine2/Backend.php index 902bd0db98..c24df44355 100644 --- a/Library/Backends/ZendEngine2/Backend.php +++ b/Library/Backends/ZendEngine2/Backend.php @@ -1,29 +1,59 @@ fcallManager) { + $this->setFcallManager(new FcallManager()); + } + + return $this->fcallManager; + } + /** * {@inheritdoc} */ @@ -63,14 +93,6 @@ public function getStringsManager() return new StringsManager(); } - public function getFcallManager() - { - if (!$this->fcallManager) { - $this->fcallManager = new FcallManager(); - } - return $this->fcallManager; - } - public function getTypeDefinition($type) { $code = null; diff --git a/Library/Backends/ZendEngine2/FcallManager.php b/Library/Backends/ZendEngine2/FcallManager.php index 817a1b3353..de36696d38 100644 --- a/Library/Backends/ZendEngine2/FcallManager.php +++ b/Library/Backends/ZendEngine2/FcallManager.php @@ -2,34 +2,29 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Backends\ZendEngine2; -use Zephir\CodePrinter; use Zephir\Utils; +use Zephir\CodePrinter; +use Zephir\Fcall\FcallManagerInterface; /** - * Class FcallManager + * Zephir\Backends\ZendEngine2\FcallManager * + * @package Zephir\Backends\ZendEngine2 */ -class FcallManager +class FcallManager implements FcallManagerInterface { - protected $requiredMacros = array(); - + protected $requiredMacros = []; public function macroIsRequired($macro) { @@ -37,11 +32,11 @@ public function macroIsRequired($macro) } /** - * Resolve internal fcall attributes to a suitable macro and ensure that it's generated during compilation + * {@inheritdoc} * - * @param $static + * @param bool $static * @param int $doReturn tri-state: 0 -> no return value, 1 -> do return, 2 -> do return to given variable - * @param $paramCount + * @param int $paramCount * @return string */ public function getMacro($static, $doReturn, $paramCount) diff --git a/Library/Backends/ZendEngine3/Backend.php b/Library/Backends/ZendEngine3/Backend.php index b5622369eb..e006f5d997 100644 --- a/Library/Backends/ZendEngine3/Backend.php +++ b/Library/Backends/ZendEngine3/Backend.php @@ -1,18 +1,36 @@ fcallManager) { + $this->setFcallManager(new FcallManager()); + } + + return $this->fcallManager; + } + /** * {@inheritdoc} */ @@ -64,14 +96,6 @@ public function getStringsManager() return new StringsManager(); } - public function getFcallManager() - { - if (!$this->fcallManager) { - $this->fcallManager = new FcallManager(); - } - return $this->fcallManager; - } - public function getTypeDefinition($type) { switch ($type) { diff --git a/Library/Backends/ZendEngine3/FcallManager.php b/Library/Backends/ZendEngine3/FcallManager.php index f068cb84d9..99bf0cd49b 100644 --- a/Library/Backends/ZendEngine3/FcallManager.php +++ b/Library/Backends/ZendEngine3/FcallManager.php @@ -2,32 +2,28 @@ /* +--------------------------------------------------------------------------+ - | Zephir Language | - +--------------------------------------------------------------------------+ - | Copyright (c) 2013-2017 Zephir Team and contributors | - +--------------------------------------------------------------------------+ - | This source file is subject the MIT license, that is bundled with | - | this package in the file LICENSE, and is available through the | - | world-wide-web at the following url: | - | http://zephir-lang.com/license.html | + | Zephir | + | Copyright (c) 2013-present Zephir (https://zephir-lang.com/) | | | - | If you did not receive a copy of the MIT license and are unable | - | to obtain it through the world-wide-web, please send a note to | - | license@zephir-lang.com so we can mail you a copy immediately. | + | This source file is subject the MIT license, that is bundled with this | + | package in the file LICENSE, and is available through the world-wide-web | + | at the following url: http://zephir-lang.com/license.html | +--------------------------------------------------------------------------+ -*/ + */ namespace Zephir\Backends\ZendEngine3; -use Zephir\CodePrinter; use Zephir\Utils; +use Zephir\CodePrinter; +use Zephir\Fcall\FcallManagerInterface; use Zephir\Backends\ZendEngine2\FcallManager as ZE2FcallManager; /** - * Class FcallManager + * Zephir\Backends\ZendEngine3\FcallManager * + * @package Zephir\Backends\ZendEngine3 */ -class FcallManager extends ZE2FcallManager +class FcallManager extends ZE2FcallManager implements FcallManagerInterface { public function genFcallCode() { diff --git a/Library/BaseBackend.php b/Library/BaseBackend.php index faceefd4f5..2add4b08d5 100644 --- a/Library/BaseBackend.php +++ b/Library/BaseBackend.php @@ -19,7 +19,10 @@ namespace Zephir; -abstract class BaseBackend +use Zephir\Fcall\FcallAwareInterface; +use Zephir\Fcall\FcallManagerInterface; + +abstract class BaseBackend implements FcallAwareInterface { /** * @var Config @@ -32,6 +35,11 @@ abstract class BaseBackend */ protected $name; + /** + * @var FcallManagerInterface + */ + protected $fcallManager; + /** * BaseBackend constructor * @@ -41,6 +49,7 @@ abstract class BaseBackend public function __construct(Config $config) { $this->config = $config; + } public function getName() @@ -186,4 +195,14 @@ public static function getActiveBackend() return 'ZendEngine2'; } + + /** + * {@inheritdoc} + * + * @param FcallManagerInterface $fcallManager + */ + public function setFcallManager(FcallManagerInterface $fcallManager) + { + $this->fcallManager = $fcallManager; + } } diff --git a/Library/Compiler.php b/Library/Compiler.php index 3e428f4558..bbdbd4ac3b 100644 --- a/Library/Compiler.php +++ b/Library/Compiler.php @@ -18,6 +18,7 @@ use Zephir\Commands\CommandGenerate; use Zephir\Commands\CommandInterface; use Zephir\Compiler\CompilerException; +use Zephir\Fcall\FcallManagerInterface; use Zephir\Exception\IllegalStateException; use Zephir\FileSystem\HardDisk as FileSystem; @@ -96,7 +97,7 @@ class Compiler protected $stringManager; /** - * @var \Zephir\Backends\ZendEngine3\FcallManager|\Zephir\Backends\ZendEngine2\FcallManager + * @var FcallManagerInterface */ protected $fcallManager; @@ -136,6 +137,11 @@ class Compiler */ protected $parserManager; + /** + * @var FileSystem + */ + protected $fileSystem; + /** * Compiler constructor * diff --git a/Library/Fcall/FcallAwareInterface.php b/Library/Fcall/FcallAwareInterface.php new file mode 100644 index 0000000000..26b8b5139c --- /dev/null +++ b/Library/Fcall/FcallAwareInterface.php @@ -0,0 +1,40 @@ + no return value, 1 -> do return, 2 -> do return to given variable + * @param int $paramCount + * @return string + */ + public function getMacro($static, $doReturn, $paramCount); + + public function genFcallCode(); +} From 550d5fae40ed2c4764edfeb5841c6d4c3c511e3d Mon Sep 17 00:00:00 2001 From: Serghei Iakovlev Date: Tue, 10 Oct 2017 21:23:53 +0300 Subject: [PATCH 39/40] Clean CommandHelp --- Library/Commands/CommandHelp.php | 95 ++++++++++++++++++++++++++------ 1 file changed, 79 insertions(+), 16 deletions(-) diff --git a/Library/Commands/CommandHelp.php b/Library/Commands/CommandHelp.php index ec8b769920..33d8a9ac85 100644 --- a/Library/Commands/CommandHelp.php +++ b/Library/Commands/CommandHelp.php @@ -70,37 +70,100 @@ public function getDescription() * * @param Config $config * @param Logger $logger + * @return int */ public function execute(Config $config, Logger $logger) { if ($this->hasHelpOption()) { - echo $this->getSynopsis(); - return; + return fprintf(STDIN, $this->getSynopsis()); } - echo self::LOGO, PHP_EOL; - echo "Zephir version " , Compiler::getCurrentVersion(), PHP_EOL, PHP_EOL; - echo "Usage: ", PHP_EOL; - echo "\tcommand [options]", PHP_EOL; - echo PHP_EOL; - echo "Available commands:", PHP_EOL; + return fprintf( + STDOUT, + "%s\nZephir version %s\n\n%s\nAvailable commands:\n%s\n%s", + $this->banner(), + Compiler::getCurrentVersion(), + $this->usage(), + $this->commands(), + $this->options() + ); + } + + /** + * Gets available commands. + * + * @return string + */ + private function commands() + { + $template = ''; $commands = $this->getCommandsManager(); $commands->rewind(); while ($commands->valid()) { $command = $commands->current(); - echo sprintf("\t%-20s%s\n", $command->getCommand(), $command->getDescription()); + $template .= sprintf(" %-20s%s\n", $command->getCommand(), $command->getDescription()); $commands->next(); } - echo PHP_EOL; - echo "Options:", PHP_EOL; - echo sprintf("\t%-20s%s\n", '--help|-h', "Displays command help and exit"); - echo sprintf("\t%-20s%s\n", '-f([a-z0-9\-]+)', "Enables compiler optimizations"); - echo sprintf("\t%-20s%s\n", '-fno-([a-z0-9\-]+)', "Disables compiler optimizations"); - echo sprintf("\t%-20s%s\n", '-w([a-z0-9\-]+)', "Turns a warning on"); - echo sprintf("\t%-20s%s\n", '-W([a-z0-9\-]+)', "Turns a warning off"); + return $template; + } + + /** + * Gets commands usage. + * + * @return string + */ + private function usage() + { + $template =<< Date: Tue, 10 Oct 2017 21:24:59 +0300 Subject: [PATCH 40/40] Code cleanup --- Library/BaseBackend.php | 1 - Library/Fcall/FcallAwareInterface.php | 2 -- 2 files changed, 3 deletions(-) diff --git a/Library/BaseBackend.php b/Library/BaseBackend.php index 2add4b08d5..245911f1e4 100644 --- a/Library/BaseBackend.php +++ b/Library/BaseBackend.php @@ -49,7 +49,6 @@ abstract class BaseBackend implements FcallAwareInterface public function __construct(Config $config) { $this->config = $config; - } public function getName() diff --git a/Library/Fcall/FcallAwareInterface.php b/Library/Fcall/FcallAwareInterface.php index 26b8b5139c..32c4dddffe 100644 --- a/Library/Fcall/FcallAwareInterface.php +++ b/Library/Fcall/FcallAwareInterface.php @@ -36,5 +36,3 @@ public function setFcallManager(FcallManagerInterface $fcallManager); */ public function getFcallManager(); } - -