From ab80054e97c13bc1a35e2ff984fa015709f32784 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 26 Apr 2015 11:46:23 +0200 Subject: [PATCH] Add support for "yield from" --- grammar/zend_language_parser.phpy | 2 + lib/PhpParser/Lexer/Emulative.php | 40 +- lib/PhpParser/Node/Expr/YieldFrom.php | 26 + lib/PhpParser/Parser.php | 1934 +++++++++-------- lib/PhpParser/PrettyPrinter/Standard.php | 4 + lib/PhpParser/PrettyPrinterAbstract.php | 1 + test/PhpParser/Lexer/EmulativeTest.php | 6 + test/code/parser/stmt/function/generator.test | 33 +- test/code/prettyPrinter/parentheses.test | 5 + 9 files changed, 1075 insertions(+), 976 deletions(-) create mode 100644 lib/PhpParser/Node/Expr/YieldFrom.php diff --git a/grammar/zend_language_parser.phpy b/grammar/zend_language_parser.phpy index 40a2ad9..d0a8453 100644 --- a/grammar/zend_language_parser.phpy +++ b/grammar/zend_language_parser.phpy @@ -8,6 +8,7 @@ %left T_LOGICAL_AND %right T_PRINT %right T_YIELD +%right T_YIELD_FROM %left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL %left '?' ':' %right T_COALESCE @@ -616,6 +617,7 @@ expr: | '`' backticks_expr '`' { $$ = Expr\ShellExec[$2]; } | T_PRINT expr { $$ = Expr\Print_[$2]; } | T_YIELD { $$ = Expr\Yield_[null, null]; } + | T_YIELD_FROM expr { $$ = Expr\YieldFrom[$2]; } | T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type '{' inner_statement_list '}' { $$ = Expr\Closure[[static: false, byRef: $2, params: $4, uses: $6, returnType: $7, stmts: $9]]; } diff --git a/lib/PhpParser/Lexer/Emulative.php b/lib/PhpParser/Lexer/Emulative.php index 7cf2773..837def4 100644 --- a/lib/PhpParser/Lexer/Emulative.php +++ b/lib/PhpParser/Lexer/Emulative.php @@ -12,11 +12,12 @@ class Emulative extends \PhpParser\Lexer protected $newKeywords; protected $inObjectAccess; - const T_ELLIPSIS = 1001; - const T_POW = 1002; - const T_POW_EQUAL = 1003; - const T_COALESCE = 1004; - const T_SPACESHIP = 1005; + const T_ELLIPSIS = 1001; + const T_POW = 1002; + const T_POW_EQUAL = 1003; + const T_COALESCE = 1004; + const T_SPACESHIP = 1005; + const T_YIELD_FROM = 1006; const PHP_7_0 = '7.0.0dev'; const PHP_5_6 = '5.6.0rc1'; @@ -53,6 +54,7 @@ class Emulative extends \PhpParser\Lexer } $this->tokenMap[self::T_COALESCE] = Parser::T_COALESCE; $this->tokenMap[self::T_SPACESHIP] = Parser::T_SPACESHIP; + $this->tokenMap[self::T_YIELD_FROM] = Parser::T_YIELD_FROM; if (version_compare(PHP_VERSION, self::PHP_5_6, '>=')) { return; @@ -91,6 +93,10 @@ class Emulative extends \PhpParser\Lexer $code = str_replace('??', '~__EMU__COALESCE__~', $code); $code = str_replace('<=>', '~__EMU__SPACESHIP__~', $code); + $code = preg_replace_callback('(yield[ \n\r\t]+from)', function($matches) { + // Encoding $0 in order to preserve exact whitespace + return '~__EMU__YIELDFROM__' . bin2hex($matches[0]) . '__~'; + }, $code); if (version_compare(PHP_VERSION, self::PHP_5_6, '>=')) { return $code; @@ -127,8 +133,9 @@ class Emulative extends \PhpParser\Lexer if ('BINARY' === $matches[1]) { // the binary number can either be an integer or a double, so return a LNUMBER // or DNUMBER respectively + $isInt = is_int(bindec($matches[2])); $replace = array( - array(is_int(bindec($matches[2])) ? T_LNUMBER : T_DNUMBER, $matches[2], $this->tokens[$i + 1][2]) + array($isInt ? T_LNUMBER : T_DNUMBER, $matches[2], $this->tokens[$i + 1][2]) ); } else if ('ELLIPSIS' === $matches[1]) { $replace = array( @@ -150,9 +157,13 @@ class Emulative extends \PhpParser\Lexer $replace = array( array(self::T_SPACESHIP, '<=>', $this->tokens[$i + 1][2]), ); + } else if ('YIELDFROM' === $matches[1]) { + $content = $this->hex2bin($matches[2]); + $replace = array( + array(self::T_YIELD_FROM, $content, $this->tokens[$i + 1][2] - substr_count($content, "\n")) + ); } else { - // just ignore all other __EMU__ sequences - continue; + throw new \RuntimeException('Invalid __EMU__ sequence'); } array_splice($this->tokens, $i, 3, $replace); @@ -188,11 +199,18 @@ class Emulative extends \PhpParser\Lexer return '??'; } else if ('SPACESHIP' === $matches[1]) { return '<=>'; + } else if ('YIELDFROM' === $matches[1]) { + return $this->hex2bin($matches[2]); } else { return $matches[0]; } } + private function hex2bin($str) { + // TODO Drop when removing support for PHP 5.3 + return pack('H*', $str); + } + public function getNextToken(&$value = null, &$startAttributes = null, &$endAttributes = null) { $token = parent::getNextToken($value, $startAttributes, $endAttributes); @@ -203,11 +221,9 @@ class Emulative extends \PhpParser\Lexer if (isset($this->newKeywords[strtolower($value)])) { return $this->newKeywords[strtolower($value)]; } - // keep track of whether we currently are in an object access (after ->) - } elseif (Parser::T_OBJECT_OPERATOR === $token) { - $this->inObjectAccess = true; } else { - $this->inObjectAccess = false; + // keep track of whether we currently are in an object access (after ->) + $this->inObjectAccess = Parser::T_OBJECT_OPERATOR === $token; } return $token; diff --git a/lib/PhpParser/Node/Expr/YieldFrom.php b/lib/PhpParser/Node/Expr/YieldFrom.php new file mode 100644 index 0000000..0936f89 --- /dev/null +++ b/lib/PhpParser/Node/Expr/YieldFrom.php @@ -0,0 +1,26 @@ +expr = $expr; + } + + public function getSubNodeNames() { + return array('expr'); + } +} diff --git a/lib/PhpParser/Parser.php b/lib/PhpParser/Parser.php index fa1f5cf..aa3ff66 100644 --- a/lib/PhpParser/Parser.php +++ b/lib/PhpParser/Parser.php @@ -10,17 +10,17 @@ namespace PhpParser; */ class Parser extends ParserAbstract { - protected $tokenToSymbolMapSize = 391; - protected $actionTableSize = 1118; - protected $gotoTableSize = 573; + protected $tokenToSymbolMapSize = 392; + protected $actionTableSize = 1159; + protected $gotoTableSize = 543; - protected $invalidSymbol = 156; + protected $invalidSymbol = 157; protected $errorSymbol = 1; protected $defaultAction = -32766; protected $unexpectedTokenRule = 32767; - protected $YY2TBLSTATE = 406; - protected $YYNLSTATES = 638; + protected $YY2TBLSTATE = 408; + protected $YYNLSTATES = 640; const YYERRTOK = 256; const T_INCLUDE = 257; @@ -33,130 +33,131 @@ class Parser extends ParserAbstract const T_LOGICAL_AND = 264; const T_PRINT = 265; const T_YIELD = 266; - const T_PLUS_EQUAL = 267; - const T_MINUS_EQUAL = 268; - const T_MUL_EQUAL = 269; - const T_DIV_EQUAL = 270; - const T_CONCAT_EQUAL = 271; - const T_MOD_EQUAL = 272; - const T_AND_EQUAL = 273; - const T_OR_EQUAL = 274; - const T_XOR_EQUAL = 275; - const T_SL_EQUAL = 276; - const T_SR_EQUAL = 277; - const T_POW_EQUAL = 278; - const T_COALESCE = 279; - const T_BOOLEAN_OR = 280; - const T_BOOLEAN_AND = 281; - const T_IS_EQUAL = 282; - const T_IS_NOT_EQUAL = 283; - const T_IS_IDENTICAL = 284; - const T_IS_NOT_IDENTICAL = 285; - const T_SPACESHIP = 286; - const T_IS_SMALLER_OR_EQUAL = 287; - const T_IS_GREATER_OR_EQUAL = 288; - const T_SL = 289; - const T_SR = 290; - const T_INSTANCEOF = 291; - const T_INC = 292; - const T_DEC = 293; - const T_INT_CAST = 294; - const T_DOUBLE_CAST = 295; - const T_STRING_CAST = 296; - const T_ARRAY_CAST = 297; - const T_OBJECT_CAST = 298; - const T_BOOL_CAST = 299; - const T_UNSET_CAST = 300; - const T_POW = 301; - const T_NEW = 302; - const T_CLONE = 303; - const T_EXIT = 304; - const T_IF = 305; - const T_ELSEIF = 306; - const T_ELSE = 307; - const T_ENDIF = 308; - const T_LNUMBER = 309; - const T_DNUMBER = 310; - const T_STRING = 311; - const T_STRING_VARNAME = 312; - const T_VARIABLE = 313; - const T_NUM_STRING = 314; - const T_INLINE_HTML = 315; - const T_CHARACTER = 316; - const T_BAD_CHARACTER = 317; - const T_ENCAPSED_AND_WHITESPACE = 318; - const T_CONSTANT_ENCAPSED_STRING = 319; - const T_ECHO = 320; - const T_DO = 321; - const T_WHILE = 322; - const T_ENDWHILE = 323; - const T_FOR = 324; - const T_ENDFOR = 325; - const T_FOREACH = 326; - const T_ENDFOREACH = 327; - const T_DECLARE = 328; - const T_ENDDECLARE = 329; - const T_AS = 330; - const T_SWITCH = 331; - const T_ENDSWITCH = 332; - const T_CASE = 333; - const T_DEFAULT = 334; - const T_BREAK = 335; - const T_CONTINUE = 336; - const T_GOTO = 337; - const T_FUNCTION = 338; - const T_CONST = 339; - const T_RETURN = 340; - const T_TRY = 341; - const T_CATCH = 342; - const T_FINALLY = 343; - const T_THROW = 344; - const T_USE = 345; - const T_INSTEADOF = 346; - const T_GLOBAL = 347; - const T_STATIC = 348; - const T_ABSTRACT = 349; - const T_FINAL = 350; - const T_PRIVATE = 351; - const T_PROTECTED = 352; - const T_PUBLIC = 353; - const T_VAR = 354; - const T_UNSET = 355; - const T_ISSET = 356; - const T_EMPTY = 357; - const T_HALT_COMPILER = 358; - const T_CLASS = 359; - const T_TRAIT = 360; - const T_INTERFACE = 361; - const T_EXTENDS = 362; - const T_IMPLEMENTS = 363; - const T_OBJECT_OPERATOR = 364; - const T_DOUBLE_ARROW = 365; - const T_LIST = 366; - const T_ARRAY = 367; - const T_CALLABLE = 368; - const T_CLASS_C = 369; - const T_TRAIT_C = 370; - const T_METHOD_C = 371; - const T_FUNC_C = 372; - const T_LINE = 373; - const T_FILE = 374; - const T_COMMENT = 375; - const T_DOC_COMMENT = 376; - const T_OPEN_TAG = 377; - const T_OPEN_TAG_WITH_ECHO = 378; - const T_CLOSE_TAG = 379; - const T_WHITESPACE = 380; - const T_START_HEREDOC = 381; - const T_END_HEREDOC = 382; - const T_DOLLAR_OPEN_CURLY_BRACES = 383; - const T_CURLY_OPEN = 384; - const T_PAAMAYIM_NEKUDOTAYIM = 385; - const T_NAMESPACE = 386; - const T_NS_C = 387; - const T_DIR = 388; - const T_NS_SEPARATOR = 389; - const T_ELLIPSIS = 390; + const T_YIELD_FROM = 267; + const T_PLUS_EQUAL = 268; + const T_MINUS_EQUAL = 269; + const T_MUL_EQUAL = 270; + const T_DIV_EQUAL = 271; + const T_CONCAT_EQUAL = 272; + const T_MOD_EQUAL = 273; + const T_AND_EQUAL = 274; + const T_OR_EQUAL = 275; + const T_XOR_EQUAL = 276; + const T_SL_EQUAL = 277; + const T_SR_EQUAL = 278; + const T_POW_EQUAL = 279; + const T_COALESCE = 280; + const T_BOOLEAN_OR = 281; + const T_BOOLEAN_AND = 282; + const T_IS_EQUAL = 283; + const T_IS_NOT_EQUAL = 284; + const T_IS_IDENTICAL = 285; + const T_IS_NOT_IDENTICAL = 286; + const T_SPACESHIP = 287; + const T_IS_SMALLER_OR_EQUAL = 288; + const T_IS_GREATER_OR_EQUAL = 289; + const T_SL = 290; + const T_SR = 291; + const T_INSTANCEOF = 292; + const T_INC = 293; + const T_DEC = 294; + const T_INT_CAST = 295; + const T_DOUBLE_CAST = 296; + const T_STRING_CAST = 297; + const T_ARRAY_CAST = 298; + const T_OBJECT_CAST = 299; + const T_BOOL_CAST = 300; + const T_UNSET_CAST = 301; + const T_POW = 302; + const T_NEW = 303; + const T_CLONE = 304; + const T_EXIT = 305; + const T_IF = 306; + const T_ELSEIF = 307; + const T_ELSE = 308; + const T_ENDIF = 309; + const T_LNUMBER = 310; + const T_DNUMBER = 311; + const T_STRING = 312; + const T_STRING_VARNAME = 313; + const T_VARIABLE = 314; + const T_NUM_STRING = 315; + const T_INLINE_HTML = 316; + const T_CHARACTER = 317; + const T_BAD_CHARACTER = 318; + const T_ENCAPSED_AND_WHITESPACE = 319; + const T_CONSTANT_ENCAPSED_STRING = 320; + const T_ECHO = 321; + const T_DO = 322; + const T_WHILE = 323; + const T_ENDWHILE = 324; + const T_FOR = 325; + const T_ENDFOR = 326; + const T_FOREACH = 327; + const T_ENDFOREACH = 328; + const T_DECLARE = 329; + const T_ENDDECLARE = 330; + const T_AS = 331; + const T_SWITCH = 332; + const T_ENDSWITCH = 333; + const T_CASE = 334; + const T_DEFAULT = 335; + const T_BREAK = 336; + const T_CONTINUE = 337; + const T_GOTO = 338; + const T_FUNCTION = 339; + const T_CONST = 340; + const T_RETURN = 341; + const T_TRY = 342; + const T_CATCH = 343; + const T_FINALLY = 344; + const T_THROW = 345; + const T_USE = 346; + const T_INSTEADOF = 347; + const T_GLOBAL = 348; + const T_STATIC = 349; + const T_ABSTRACT = 350; + const T_FINAL = 351; + const T_PRIVATE = 352; + const T_PROTECTED = 353; + const T_PUBLIC = 354; + const T_VAR = 355; + const T_UNSET = 356; + const T_ISSET = 357; + const T_EMPTY = 358; + const T_HALT_COMPILER = 359; + const T_CLASS = 360; + const T_TRAIT = 361; + const T_INTERFACE = 362; + const T_EXTENDS = 363; + const T_IMPLEMENTS = 364; + const T_OBJECT_OPERATOR = 365; + const T_DOUBLE_ARROW = 366; + const T_LIST = 367; + const T_ARRAY = 368; + const T_CALLABLE = 369; + const T_CLASS_C = 370; + const T_TRAIT_C = 371; + const T_METHOD_C = 372; + const T_FUNC_C = 373; + const T_LINE = 374; + const T_FILE = 375; + const T_COMMENT = 376; + const T_DOC_COMMENT = 377; + const T_OPEN_TAG = 378; + const T_OPEN_TAG_WITH_ECHO = 379; + const T_CLOSE_TAG = 380; + const T_WHITESPACE = 381; + const T_START_HEREDOC = 382; + const T_END_HEREDOC = 383; + const T_DOLLAR_OPEN_CURLY_BRACES = 384; + const T_CURLY_OPEN = 385; + const T_PAAMAYIM_NEKUDOTAYIM = 386; + const T_NAMESPACE = 387; + const T_NS_C = 388; + const T_DIR = 389; + const T_NS_SEPARATOR = 390; + const T_ELLIPSIS = 391; protected $symbolToName = array( "EOF", @@ -172,6 +173,7 @@ class Parser extends ParserAbstract "T_LOGICAL_AND", "T_PRINT", "T_YIELD", + "T_YIELD_FROM", "'='", "T_PLUS_EQUAL", "T_MINUS_EQUAL", @@ -318,393 +320,401 @@ class Parser extends ParserAbstract ); protected $tokenToSymbol = array( - 0, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 51, 155, 156, 152, 50, 33, 156, - 150, 151, 48, 45, 7, 46, 47, 49, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 27, 147, - 39, 13, 41, 26, 63, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 65, 156, 154, 32, 156, 153, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 148, 31, 149, 53, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 1, 2, 3, 4, - 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, - 29, 30, 34, 35, 36, 37, 38, 40, 42, 43, - 44, 52, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 64, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 156, 156, 80, 81, + 0, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 52, 156, 157, 153, 51, 34, 157, + 151, 152, 49, 46, 7, 47, 48, 50, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 28, 148, + 40, 14, 42, 27, 64, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 66, 157, 155, 33, 157, 154, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 149, 32, 150, 54, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 1, 2, 3, 4, + 5, 6, 8, 9, 10, 11, 12, 13, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 29, 30, 31, 35, 36, 37, 38, 39, 41, 43, + 44, 45, 53, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 65, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 157, 157, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 156, 156, 156, 156, 156, - 156, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146 + 132, 133, 134, 135, 136, 137, 157, 157, 157, 157, + 157, 157, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147 ); protected $action = array( - 60, 61, 416, 62, 63,-32766,-32766,-32766,-32766, 64, - 65, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 642, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241,-32766,-32766,-32766,-32766,-32766,-32767,-32767, - -32767,-32767, 285, 66, 67, 283, 242, 243, 0, 68, - 436, 69, 294, 295, 70, 71, 72, 73, 74, 75, - 76, 77, 128, 32, 304, 78, 408, 417, 134, -118, - 413, 956, 957, 457, 438, 1049, 334, 688, 344, 458, - 46, 27, 418, 610, 459, 809, 460, 485, 461, 363, - 421, 419, 218, 219, 220, 36, 37, 462, 424, 57, - 38, 463, 420, 409, 79, 441, 301, 356, 357, 323, - 205, 246, 35, 464, 465, 466, 467, 468, 713, 454, - 1015, 375, 648, 714, 469, 470, 471, 472, 908, 962, - 963, 964, 965, 959, 960, 312, 83, 84, 85, 532, - 485, 966, 961, 421, 336, 694, 611, 132, 47, 298, - 337, 324, 1078, 328, 40, 801, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108,-32766, - 305, 298, 125, 39, 297,-32766, 1056,-32766,-32766,-32766, - 686, 642, 109, 433, 58,-32766,-32766,-32766,-32766,-32766, - -32766, 471,-32766, 415,-32766,-32766,-32766,-32766,-32766,-32766, - 218, 219, 220,-32766,-32766,-32766, 31,-32766,-32766,-32766, - 219, 220,-32766, 642, 209,-32766, 484,-32766, 205, 685, - -32766,-32766,-32766,-32766,-32766, 908,-32766, 205,-32766, 766, - 767,-32766, 218, 219, 220,-32766,-32766,-32766, 742, 22, - -32766,-32766, 353, 354,-32766, 326, 296,-32766, 484, 791, - 205, -122, 131,-32766,-32766,-32766, 310, 908,-32766,-32766, - -32766,-32766,-32766,-32766,-32766,-32766,-32766, 127,-32767,-32767, - -32767,-32767, 817, 818, 819, 816, 815, 814, 286,-32766, - -32766,-32766,-32766, 54, 131,-32766,-32766, 412, 642, 772, - 1071, 1081,-32766, 1083, 1082,-32766,-32766,-32766, 339,-32766, - 908,-32766, 782,-32766, 434, 1043,-32766, 218, 219, 220, - -32766,-32766,-32766, 1014,-32766,-32766,-32766, 242, 243,-32766, - 642, 601,-32766, 484,-32766, 205, 1053,-32766,-32766,-32766, - -32766,-32766, 55,-32766, 642,-32766, 1049, 923,-32766,-32766, - -32766,-32766,-32766,-32766,-32766, 440, 1006,-32766,-32766, 430, - 773,-32766, 613, 908,-32766, 484, 568,-32766, 743, 1015, - -32766,-32766,-32766, 642, 385, 1012, 123,-32766, 130, 933, - -32766,-32766,-32766, 413,-32766, 1007,-32766, 287,-32766, 334, - 345,-32766, 218, 219, 220,-32766,-32766,-32766, 809, 300, - -32766,-32766,-32766,-32766,-32766, 796, 908,-32766, 484, 133, - 205, 485, 136, 220, 421,-32766, 560, 413, 435, 425, - -32766, 337, 355, 334, 968, 124, 642, 299, 132, 205, - -32766, 711, 809,-32766,-32766,-32766, 244,-32766, 908,-32766, - 1049,-32766,-32766,-32766,-32766,-32766,-32766, 122,-32766,-32766, - -32766, 448, 574,-32766,-32766, 443, 28,-32766, 247, 1071, - -32766, 484, 212,-32766, 211, 712, 137, 364,-32766, 642, - 106, 107, 108,-32766, 305, 329,-32766,-32766,-32766, 210, - -32766, 908,-32766, 248,-32766, 205, 109,-32766,-32766,-32766, - -32766,-32766,-32766,-32766, 634,-32766,-32766,-32766,-32766,-32766, - -32766, 642,-32766,-32766, 484,-32766,-32766, 707,-32766,-32766, - -32766,-32766,-32766, 908,-32766, 337,-32766, 1013, 627,-32766, - 236, 237, 238,-32766,-32766,-32766, 766, 767,-32766,-32766, - 806, 637,-32766, 968, 135,-32766, 484, 616,-32766, 581, - 582,-32766,-32766,-32766, 642, 103, 104, 105,-32766, 795, - 630,-32766,-32766,-32766, 698,-32766, 908,-32766, 631,-32766, - 626, 311,-32766, 649, 618, 623,-32766,-32766,-32766, 614, - -32766,-32766,-32766, 680,-32766,-32766, 642, 305,-32766, 484, - -32766, 109, 304,-32766,-32766,-32766,-32766,-32766, 51,-32766, - 586,-32766, -170, 59,-32766, 56, 609, 53,-32766,-32766, - -32766, 52, 50,-32766,-32766, 49, 509,-32766, 432, 428, - -32766, 484, 583,-32766, 431, 578, 678,-32766,-32766, 642, - 598, 523, 522,-32766, 429, 642,-32766,-32766,-32766, 803, - -32766, 643,-32766, 245,-32766, 510, 659,-32766, 506, 1076, - 661,-32766,-32766,-32766, 505, 593,-32766,-32766, 682,-32766, - -32766, 213, 214,-32766, 484, 926, 600, 215, 553, 216, - 342,-32766,-32767,-32767,-32767,-32767, 101, 102, 103, 104, - 105, 207, 239, 240, 241, 343, 1071, 282, 303, 956, - 957, 525, -167,-32766,-32766, 577, 565, 958, 242, 243, - 642,-32766,-32766, 452,-32766, 335, 716,-32766,-32766,-32766, - 338,-32766, 715,-32766, 126,-32766, 332, 515,-32766, 333, - 42, 967,-32766,-32766,-32766, 315, 471,-32766,-32766, 792, - -397,-32766, 888, -398,-32766, 484,-32766,-32766,-32766,-32766, - -32766, 325,-32766, 327, 0, 550, 0, 962, 963, 964, - 965, 959, 960, 391, -304, 213, 214, 430, 800, 966, - 961, 215, -296, 216, 606, 378, 217, 365,-32766, 331, - -305, 735,-32766,-32766, 652, 207, 949, 412, 687, 734, - -32766, 709, 0, 956, 957, 726, 642,-32766, 728, 730, - -32766, 958, 673,-32766,-32766,-32766, 737,-32766, 736,-32766, - 745,-32766, 690, 675,-32766, 697, 684, 620,-32766,-32766, - -32766, 619, 420,-32766,-32766, 45, 44,-32766, 655, 654, - -32766, 484, 653, 464, 465, 802, 696, 683,-32766, 681, - 679, 689, 670, 714, 469, 470, 799, 447, 129, 550, - 82, 962, 963, 964, 965, 959, 960, 391, 612, 617, - 622, 624, 629, 966, 961, 1077, 632, 633,-32766,-32766, - 217, 621,-32766, 41, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121,-32766,-32766,-32766, 635, - 420, 409, 636, 411, 1050, 1048, 1034, 323,-32766,-32766, - -32766, 464, 465, 1046,-32766, 1044,-32766,-32766,-32766,-32766, - 648, 714, 469, 470, 847, 849,-32766, 1054,-32766,-32766, - -32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,-32767, 420, - 409, 1079, 336, 1080, 420, 784, 323, 947, 554, 651, - 464, 465,-32766,-32766,-32766, 464, 465, 407, 340, 648, - 714, 469, 470, 33, 670, 714, 469, 470, 34, 43, - -32766, 48,-32766,-32766,-32766,-32766,-32766,-32766, 309, 308, - 80, 336,-32766,-32766,-32766,-32766, 307, 420, 650, 887, - 306, 293, 292, 671, 911, 284, -397, 208, 464, 465, - -32766, 420,-32766,-32766,-32766,-32766,-32766, 670, 714, 469, - 470, 81, 464, 465, 30, 906, -119, 420, 972, 774, - 915, 670, 714, 469, 470, 912, 605, 545, 464, 465, - 455, 420, 451, 449, 444, 420, 710, 670, 714, 469, - 470, 386, 464, 465, 25, 24, 464, 465, 420, 23, - 807, 670, 714, 469, 470, 670, 714, 469, 470, 464, - 465, -118, 584, 562, 0, 1028, 701, 973, 670, 714, - 469, 470, 1075,-32766,-32766,-32766, 946, 1045, 420, 608, - 910, 1029, 1033, 1047, 909, 599, 932, 919, 920, 464, - 465,-32766, 420,-32766,-32766,-32766, 420, 703, 670, 714, - 469, 470, 590, 464, 465, 917, 918, 464, 465, 916, - 0, 420, 670, 714, 469, 470, 670, 714, 469, 470, - 0, 0, 464, 465, 420, 0, 0, 0, 0, 0, - 0, 670, 714, 469, 470, 464, 465, 0, 0, 0, - 0, 0, 0, 0, 670, 714, 469, 470 + 60, 61, 418, 62, 63,-32766,-32766,-32766,-32766, 64, + 65, 66, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 0, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243,-32766,-32766,-32766,-32766,-32766,-32767, + -32767,-32767,-32767, 58, 67, 68, 432, 244, 245, 615, + 69, 377, 70, 296, 297, 71, 72, 73, 74, 75, + 76, 77, 78, 435, 32, 306, 79, 410, 419, 287, + 443, 415, 959, 960, 459, 744, 1052, 336, 690, 346, + 460, 46, 27, 420, 1056, 461, 811, 462, 129, 463, + 303, 592, 421, 768, 769, 417, 36, 37, 464, 426, + 422, 38, 465, 35, 328, 80, 221, 222, 358, 359, + 438, 466, 467, 39, 299, -122, 468, 469, 470, 715, + 672, 716, 471, 472, 207, 910, 128, 473, 474, 31, + 965, 966, 967, 968, 962, 963, 314, 84, 85, 86, + 534, 487, 969, 964, 423, 440, 696, 613, 365, 47, + 456, 339, 326, 784, 330, 644, 40, 134, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 910, 307,-32766, 436, 473, 220, 221, 222, 644, + 387, 1018, 57,-32766, 110, 745,-32766,-32766,-32766, 135, + -32766, 211,-32766, 300,-32766, 207, 570,-32766,-32766,-32766, + -32766,-32766,-32766,-32766, 1059, 22,-32766,-32766, 133, 54, + -32766, 422, 487,-32766, 486, 423, 612,-32766, 289,-32766, + -32766,-32766, 466, 467, 312, 300, 220, 221, 222,-32766, + 926, 672, 716, 471, 472, 644, 220, 221, 222,-32766, + 341, 688,-32766,-32766,-32766, 207,-32766, 1017,-32766, 302, + -32766,-32766,-32766,-32766, 971, 207, 437,-32766,-32766,-32766, + 623,-32766,-32766,-32766, 775, 126,-32766, 644, 603,-32766, + 486,-32766, 442, 1081,-32766,-32766,-32766,-32766,-32766, 687, + -32766, 793,-32766, 910, 1084,-32766, 1086, 1085, 803,-32766, + -32766,-32766, 124, 1018,-32766,-32766, 246, 1046,-32766, 355, + 356,-32766, 486,-32766,-32766, 298, 132,-32766,-32766,-32766, + -32766,-32766,-32766,-32766,-32766, 910, 819, 820, 821, 818, + 817, 816, 41, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 55, 1052, 288, 132,-32766, + -32766,-32766, 798, 774, 414, 133, 1074, 644,-32766,-32766, + -32766,-32766, 357, 285,-32766,-32766,-32766,-32766,-32766, 207, + -32766, 415,-32766, 849, 851,-32766, 123, 336, 910,-32766, + -32766,-32766, 347,-32766,-32766,-32766, 811, -118,-32766, 644, + 1010,-32766, 486,-32766, 131, 249,-32766,-32766,-32766,-32766, + -32766, 331,-32766, 214,-32766, 1074, 213,-32766,-32766,-32766, + 910,-32766,-32766,-32766, 1016, 636,-32766,-32766, 212, 713, + -32766, 339, 629,-32766, 486,-32766,-32766,-32766, 125,-32766, + -32766,-32766, 301,-32766,-32766,-32766,-32766, 220, 221, 222, + 244, 245, 644, 137,-32766, -398,-32766, 562, 250,-32766, + -32766,-32766, 415,-32766, 222,-32766, 207,-32766, 336, 971, + -32766,-32766,-32766, 910,-32766,-32766,-32766, 811,-32766,-32766, + -32766, 207,-32766,-32766, 644, 136,-32766, 486,-32766, 709, + 1015,-32766,-32766,-32766,-32766,-32766, 618,-32766, 700,-32766, + 450, 576,-32766, 445, 28, 910,-32766,-32766,-32766, 307, + 714,-32766,-32766, 138, 366,-32766, 583, 584,-32766, 486, + 220, 221, 222, 633,-32766,-32766,-32766, 238, 239, 240, + 628,-32766, 104, 105, 106, 768, 769, 644, 313, 207, + 248,-32766, 808, 639,-32766,-32766,-32766, 625,-32766, 616, + -32766, 51,-32766, 110, 306,-32766,-32766,-32766, 910,-32766, + -32766,-32766, 59,-32766,-32766,-32766, 797, 632,-32766, 644, + 56,-32766, 486,-32766, 651, 620,-32766,-32766,-32766,-32766, + -32766, 53,-32766, 52,-32766, 611, 50,-32766, 49, 588, + 910,-32766,-32766,-32766, 1009, 344,-32766,-32766, 434, 433, + -32766, 600, 525,-32766, 486, 524, 431, 644, 805, 682, + -32766,-32766, 645, 512, 661, 508,-32766, 1079, 663, 507, + 555, 345, 644, 107, 108, 109,-32766, 307, -170,-32766, + -32766,-32766, 511,-32766, 585,-32766, 595,-32766, 929, 110, + -32766, 680,-32766, 602,-32766,-32766,-32766, 1074,-32766,-32766, + -32766, -398, 284,-32766, 644, 305,-32766, 486,-32766, 579, + 527,-32766,-32766,-32766,-32766,-32766, -167,-32766, 737,-32766, + 567, 430,-32766, 454, 247, 718,-32766,-32766,-32766, 580, + 340,-32766,-32766, 717, -399,-32766, 337, 970,-32766, 486, + 327, 317, 215, 216, 684,-32766,-32766, 127, 217, 711, + 218, 334, 413,-32766,-32766,-32766,-32766,-32766,-32766,-32766, + -32766,-32766, 209,-32767,-32767,-32767,-32767, 335, 42, 329, + 959, 960, 473,-32766,-32766, -305,-32766,-32766, 961, 644, + -297, 608, 517,-32766, 130, 794,-32766,-32766,-32766, 380, + -32766, 367,-32766, 333,-32766, -306, 432,-32766, 414, 409, + 908,-32766,-32766,-32766, 802, 654,-32766,-32766, 689, 728, + -32766, 730, 732,-32766, 486, 675, 739, 738, 747, 692, + 677,-32766, 241, 242, 243, 699, 552, 686, 965, 966, + 967, 968, 962, 963, 393, 622, 215, 216, 244, 245, + 969, 964, 217, 621, 218, 45, 44, 219, 657,-32766, + 656,-32766,-32766, 655, 804, 952, 209, 698, 685, 683, + 681,-32766, 691, 801, 959, 960, 83, 644,-32766, 614, + 619,-32766, 961, 624,-32766,-32766,-32766, 626,-32766, 631, + -32766, 634,-32766, 635, 637,-32766, 638, 342, 736,-32766, + -32766,-32766, 449, 1080,-32766,-32766, 422, 411,-32766, 1053, + 1051,-32766, 486, 325, 1037, 1049, 1047, 466, 467,-32766, + 1057, 1082, 1083, 786, 950, 0, 650, 716, 471, 472, + 552, 33, 965, 966, 967, 968, 962, 963, 393,-32766, + -32766,-32766, 34, 43, 969, 964, 48, 311, 338,-32766, + -32766, 219, 586,-32766, 310, 653, 890, 81,-32766,-32766, + -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, + -32767, 422, 411, 309, 308, 295, 294, 286, 325, 210, + 82, 30, 466, 467, 556, 889, 914, -119, 422, 411, + 975, 650, 716, 471, 472, 325, 776, 918, 915, 466, + 467, 607,-32766,-32766,-32766, 547, 457, 453, 650, 716, + 471, 472, 451, 338,-32766,-32766,-32766, 446, 388, 25, + 652,-32766, 0,-32766,-32766,-32766,-32766,-32766,-32766, 24, + 338, 23, -118,-32766, 0,-32766,-32766,-32766,-32766,-32766, + -32767,-32767,-32767,-32767, 102, 103, 104, 105, 106, 422, + 1031, 976, 1078, 422, 949, 1048, 1032, 1036, 1050, 935, + 466, 467, 922, 923, 466, 467, 422, 920, 921, 672, + 716, 471, 472, 672, 716, 471, 472, 466, 467, 919, + 0, 0, 0, 422, 0, 0, 672, 716, 471, 472, + 0, 0, 0, 0, 466, 467, 422, 0, 673, 0, + 422, 0, 712, 672, 716, 471, 472, 466, 467, 0, + 0, 466, 467, 422, 0, 809, 672, 716, 471, 472, + 672, 716, 471, 472, 466, 467, 0, 0, 564, 0, + 0, 0, 703, 672, 716, 471, 472,-32766,-32766,-32766, + 0, 0, 0, 422, 610, 913, 0, 0, 0, 912, + 601, 644, 0, 1052, 466, 467,-32766, 422,-32766,-32766, + -32766, 422, 705, 672, 716, 471, 472, 0, 466, 467, + 0, 0, 466, 467,-32766,-32766,-32766, 672, 716, 471, + 472, 672, 716, 471, 472, 0, 936, 0, 422, 0, + 0, 0, 0,-32766, 0,-32766,-32766,-32766,-32766, 466, + 467, 0, 0, 0, 0, 0, 0, 0, 672, 716, + 471, 472, 0, 0, 0, 0, 0, 0, 487, 0, + 0, 423, 0, 0, 0, 0, 427, 0, 339 ); protected $actionCheck = array( - 2, 3, 4, 5, 6, 29, 30, 31, 32, 11, - 12, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 75, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 7, 45, 46, 127, 64, 65, 0, 51, - 7, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 7, 65, 66, 67, 68, 69, 65, 151, - 101, 73, 74, 75, 75, 77, 107, 79, 65, 81, - 82, 83, 84, 75, 86, 116, 88, 142, 90, 7, - 145, 93, 8, 9, 10, 97, 98, 99, 100, 65, - 102, 103, 100, 101, 106, 7, 33, 109, 110, 107, - 26, 27, 7, 111, 112, 117, 118, 119, 149, 7, - 121, 77, 120, 121, 122, 123, 128, 129, 12, 131, - 132, 133, 134, 135, 136, 137, 8, 9, 10, 126, - 142, 143, 144, 145, 142, 147, 148, 148, 150, 33, - 152, 153, 149, 155, 26, 147, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 8, - 52, 33, 148, 139, 140, 69, 151, 8, 9, 10, - 147, 75, 64, 27, 65, 79, 8, 9, 82, 83, - 84, 128, 86, 7, 88, 26, 90, 28, 29, 93, - 8, 9, 10, 97, 98, 99, 7, 69, 102, 103, - 9, 10, 106, 75, 7, 109, 110, 79, 26, 147, - 82, 83, 84, 117, 86, 12, 88, 26, 90, 129, - 130, 93, 8, 9, 10, 97, 98, 99, 27, 151, - 102, 103, 100, 101, 106, 126, 33, 109, 110, 147, - 26, 151, 146, 147, 148, 117, 7, 12, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 148, 39, 40, - 41, 42, 110, 111, 112, 113, 114, 115, 33, 8, - 9, 10, 69, 65, 146, 147, 148, 145, 75, 151, - 80, 75, 79, 77, 78, 82, 83, 84, 7, 86, - 12, 88, 77, 90, 148, 77, 93, 8, 9, 10, - 97, 98, 99, 75, 69, 102, 103, 64, 65, 106, - 75, 75, 109, 110, 79, 26, 75, 82, 83, 84, - 117, 86, 65, 88, 75, 90, 77, 151, 93, 29, - 30, 31, 97, 98, 99, 75, 154, 102, 103, 145, - 151, 106, 148, 12, 109, 110, 80, 69, 147, 121, - 147, 148, 117, 75, 76, 155, 148, 79, 27, 110, - 82, 83, 84, 101, 86, 151, 88, 152, 90, 107, - 152, 93, 8, 9, 10, 97, 98, 99, 116, 7, - 102, 103, 147, 148, 106, 149, 12, 109, 110, 148, - 26, 142, 148, 10, 145, 117, 152, 101, 7, 150, - 69, 152, 7, 107, 138, 148, 75, 33, 148, 26, - 79, 149, 116, 82, 83, 84, 127, 86, 12, 88, - 77, 90, 29, 30, 93, 147, 148, 13, 97, 98, - 99, 70, 71, 102, 103, 70, 71, 106, 13, 80, - 109, 110, 13, 69, 13, 149, 95, 96, 117, 75, - 48, 49, 50, 79, 52, 80, 82, 83, 84, 13, - 86, 12, 88, 13, 90, 26, 64, 93, 8, 9, - 10, 97, 98, 99, 27, 69, 102, 103, 147, 148, - 106, 75, 29, 109, 110, 79, 26, 33, 82, 83, - 84, 117, 86, 12, 88, 152, 90, 138, 27, 93, - 45, 46, 47, 97, 98, 99, 129, 130, 102, 103, - 147, 148, 106, 138, 27, 109, 110, 27, 69, 104, - 105, 147, 148, 117, 75, 45, 46, 47, 79, 147, - 148, 82, 83, 84, 27, 86, 12, 88, 27, 90, - 27, 27, 93, 147, 148, 27, 97, 98, 99, 27, - 69, 102, 103, 147, 148, 106, 75, 52, 109, 110, - 79, 64, 66, 82, 83, 84, 117, 86, 65, 88, - 72, 90, 77, 65, 93, 65, 75, 65, 97, 98, - 99, 65, 65, 102, 103, 65, 77, 106, 84, 100, - 109, 110, 77, 69, 75, 107, 147, 148, 117, 75, - 75, 75, 75, 79, 75, 75, 82, 83, 84, 75, - 86, 75, 88, 27, 90, 75, 75, 93, 75, 75, - 75, 97, 98, 99, 75, 77, 102, 103, 147, 148, - 106, 45, 46, 109, 110, 77, 77, 51, 92, 53, - 80, 117, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 65, 48, 49, 50, 80, 80, 92, 92, 73, - 74, 92, 92, 77, 69, 94, 94, 81, 64, 65, - 75, 147, 148, 100, 79, 108, 121, 82, 83, 84, - 124, 86, 121, 88, 127, 90, 124, 145, 93, 125, - 127, 138, 97, 98, 99, 141, 128, 102, 103, 147, - 126, 106, 151, 126, 109, 110, 29, 30, 31, 32, - 33, 126, 117, 126, -1, 129, -1, 131, 132, 133, - 134, 135, 136, 137, 141, 45, 46, 145, 147, 143, - 144, 51, 141, 53, 141, 141, 150, 141, 152, 141, - 141, 149, 147, 148, 147, 65, 151, 145, 147, 149, - 69, 146, -1, 73, 74, 147, 75, 77, 147, 147, - 79, 81, 147, 82, 83, 84, 147, 86, 147, 88, - 147, 90, 147, 147, 93, 147, 147, 147, 97, 98, - 99, 147, 100, 102, 103, 147, 147, 106, 147, 147, - 109, 110, 147, 111, 112, 147, 147, 147, 117, 147, - 147, 147, 120, 121, 122, 123, 147, 149, 148, 129, - 148, 131, 132, 133, 134, 135, 136, 137, 148, 148, - 148, 148, 148, 143, 144, 149, 148, 148, 147, 148, - 150, 149, 152, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 8, 9, 10, 148, - 100, 101, 148, 150, 149, 149, 149, 107, 8, 9, - 10, 111, 112, 149, 26, 149, 28, 29, 30, 31, - 120, 121, 122, 123, 54, 55, 26, 149, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 100, - 101, 149, 142, 149, 100, 149, 107, 149, 151, 149, - 111, 112, 8, 9, 10, 111, 112, 150, 150, 120, - 121, 122, 123, 150, 120, 121, 122, 123, 150, 150, - 26, 150, 28, 29, 30, 31, 32, 33, 150, 150, - 150, 142, 8, 9, 10, 150, 150, 100, 149, 151, - 150, 150, 150, 149, 151, 150, 126, 150, 111, 112, - 26, 100, 28, 29, 30, 31, 32, 120, 121, 122, - 123, 150, 111, 112, 150, 153, 151, 100, 151, 151, - 151, 120, 121, 122, 123, 151, 151, 151, 111, 112, - 151, 100, 151, 151, 151, 100, 149, 120, 121, 122, - 123, 151, 111, 112, 151, 151, 111, 112, 100, 151, - 149, 120, 121, 122, 123, 120, 121, 122, 123, 111, - 112, 151, 154, 85, -1, 154, 149, 154, 120, 121, - 122, 123, 154, 8, 9, 10, 154, 154, 100, 87, - 149, 154, 154, 154, 149, 89, 154, 154, 154, 111, - 112, 26, 100, 28, 29, 30, 100, 149, 120, 121, - 122, 123, 91, 111, 112, 154, 154, 111, 112, 154, - -1, 100, 120, 121, 122, 123, 120, 121, 122, 123, - -1, -1, 111, 112, 100, -1, -1, -1, -1, -1, - -1, 120, 121, 122, 123, 111, 112, -1, -1, -1, - -1, -1, -1, -1, 120, 121, 122, 123 + 2, 3, 4, 5, 6, 30, 31, 32, 33, 11, + 12, 13, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 0, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 66, 46, 47, 146, 65, 66, 149, + 52, 78, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 28, 66, 67, 68, 69, 70, 7, + 7, 102, 74, 75, 76, 28, 78, 108, 80, 66, + 82, 83, 84, 85, 76, 87, 117, 89, 7, 91, + 34, 92, 94, 130, 131, 7, 98, 99, 100, 101, + 101, 103, 104, 7, 127, 107, 9, 10, 110, 111, + 7, 112, 113, 140, 141, 152, 118, 119, 120, 150, + 121, 122, 123, 124, 27, 12, 149, 129, 130, 7, + 132, 133, 134, 135, 136, 137, 138, 8, 9, 10, + 127, 143, 144, 145, 146, 76, 148, 149, 7, 151, + 7, 153, 154, 78, 156, 76, 27, 149, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 12, 53, 70, 149, 129, 8, 9, 10, 76, + 77, 122, 66, 80, 65, 148, 83, 84, 85, 66, + 87, 7, 89, 34, 91, 27, 81, 94, 8, 9, + 10, 98, 99, 100, 152, 152, 103, 104, 149, 66, + 107, 101, 143, 110, 111, 146, 76, 27, 153, 29, + 30, 118, 112, 113, 7, 34, 8, 9, 10, 70, + 152, 121, 122, 123, 124, 76, 8, 9, 10, 80, + 7, 148, 83, 84, 85, 27, 87, 76, 89, 7, + 91, 148, 149, 94, 139, 27, 7, 98, 99, 100, + 150, 70, 103, 104, 152, 149, 107, 76, 76, 110, + 111, 80, 76, 150, 83, 84, 85, 118, 87, 148, + 89, 148, 91, 12, 76, 94, 78, 79, 148, 98, + 99, 100, 149, 122, 103, 104, 128, 78, 107, 101, + 102, 110, 111, 8, 9, 34, 147, 148, 149, 118, + 30, 31, 32, 33, 34, 12, 111, 112, 113, 114, + 115, 116, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 66, 78, 34, 147, 148, + 149, 70, 150, 152, 146, 149, 81, 76, 30, 31, + 32, 80, 7, 128, 83, 84, 85, 8, 87, 27, + 89, 102, 91, 55, 56, 94, 14, 108, 12, 98, + 99, 100, 153, 70, 103, 104, 117, 152, 107, 76, + 152, 110, 111, 80, 28, 14, 83, 84, 85, 118, + 87, 81, 89, 14, 91, 81, 14, 94, 30, 31, + 12, 98, 99, 100, 139, 28, 103, 104, 14, 150, + 107, 153, 28, 110, 111, 8, 9, 10, 149, 148, + 149, 118, 34, 8, 9, 10, 70, 8, 9, 10, + 65, 66, 76, 149, 27, 127, 80, 153, 14, 83, + 84, 85, 102, 87, 10, 89, 27, 91, 108, 139, + 94, 148, 149, 12, 98, 99, 100, 117, 70, 103, + 104, 27, 30, 107, 76, 28, 110, 111, 80, 34, + 156, 83, 84, 85, 118, 87, 28, 89, 28, 91, + 71, 72, 94, 71, 72, 12, 98, 99, 100, 53, + 150, 103, 104, 96, 97, 107, 105, 106, 110, 111, + 8, 9, 10, 28, 148, 149, 118, 46, 47, 48, + 28, 70, 46, 47, 48, 130, 131, 76, 28, 27, + 28, 80, 148, 149, 83, 84, 85, 28, 87, 28, + 89, 66, 91, 65, 67, 94, 148, 149, 12, 98, + 99, 100, 66, 70, 103, 104, 148, 149, 107, 76, + 66, 110, 111, 80, 148, 149, 83, 84, 85, 118, + 87, 66, 89, 66, 91, 76, 66, 94, 66, 73, + 12, 98, 99, 100, 155, 81, 103, 104, 85, 76, + 107, 76, 76, 110, 111, 76, 76, 76, 76, 148, + 149, 118, 76, 76, 76, 76, 70, 76, 76, 76, + 93, 81, 76, 49, 50, 51, 80, 53, 78, 83, + 84, 85, 78, 87, 78, 89, 78, 91, 78, 65, + 94, 148, 149, 78, 98, 99, 100, 81, 70, 103, + 104, 127, 93, 107, 76, 93, 110, 111, 80, 95, + 93, 83, 84, 85, 118, 87, 93, 89, 150, 91, + 95, 101, 94, 101, 28, 122, 98, 99, 100, 108, + 125, 103, 104, 122, 127, 107, 109, 139, 110, 111, + 127, 142, 46, 47, 148, 149, 118, 128, 52, 147, + 54, 125, 151, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 66, 40, 41, 42, 43, 126, 128, 127, + 74, 75, 129, 70, 78, 142, 148, 149, 82, 76, + 142, 142, 146, 80, 149, 148, 83, 84, 85, 142, + 87, 142, 89, 142, 91, 142, 146, 94, 146, 151, + 154, 98, 99, 100, 148, 148, 103, 104, 148, 148, + 107, 148, 148, 110, 111, 148, 148, 148, 148, 148, + 148, 118, 49, 50, 51, 148, 130, 148, 132, 133, + 134, 135, 136, 137, 138, 148, 46, 47, 65, 66, + 144, 145, 52, 148, 54, 148, 148, 151, 148, 153, + 148, 148, 149, 148, 148, 152, 66, 148, 148, 148, + 148, 70, 148, 148, 74, 75, 149, 76, 78, 149, + 149, 80, 82, 149, 83, 84, 85, 149, 87, 149, + 89, 149, 91, 149, 149, 94, 149, 151, 150, 98, + 99, 100, 150, 150, 103, 104, 101, 102, 107, 150, + 150, 110, 111, 108, 150, 150, 150, 112, 113, 118, + 150, 150, 150, 150, 150, -1, 121, 122, 123, 124, + 130, 151, 132, 133, 134, 135, 136, 137, 138, 8, + 9, 10, 151, 151, 144, 145, 151, 151, 143, 148, + 149, 151, 155, 153, 151, 150, 152, 151, 27, 151, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 101, 102, 151, 151, 151, 151, 151, 108, 151, + 151, 151, 112, 113, 152, 152, 152, 152, 101, 102, + 152, 121, 122, 123, 124, 108, 152, 152, 152, 112, + 113, 152, 8, 9, 10, 152, 152, 152, 121, 122, + 123, 124, 152, 143, 8, 9, 10, 152, 152, 152, + 150, 27, -1, 29, 30, 31, 32, 33, 34, 152, + 143, 152, 152, 27, -1, 29, 30, 31, 32, 33, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 101, + 155, 155, 155, 101, 155, 155, 155, 155, 155, 155, + 112, 113, 155, 155, 112, 113, 101, 155, 155, 121, + 122, 123, 124, 121, 122, 123, 124, 112, 113, 155, + -1, -1, -1, 101, -1, -1, 121, 122, 123, 124, + -1, -1, -1, -1, 112, 113, 101, -1, 150, -1, + 101, -1, 150, 121, 122, 123, 124, 112, 113, -1, + -1, 112, 113, 101, -1, 150, 121, 122, 123, 124, + 121, 122, 123, 124, 112, 113, -1, -1, 86, -1, + -1, -1, 150, 121, 122, 123, 124, 8, 9, 10, + -1, -1, -1, 101, 88, 150, -1, -1, -1, 150, + 90, 76, -1, 78, 112, 113, 27, 101, 29, 30, + 31, 101, 150, 121, 122, 123, 124, -1, 112, 113, + -1, -1, 112, 113, 8, 9, 10, 121, 122, 123, + 124, 121, 122, 123, 124, -1, 111, -1, 101, -1, + -1, -1, -1, 27, -1, 29, 30, 31, 32, 112, + 113, -1, -1, -1, -1, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, -1, -1, -1, 143, -1, + -1, 146, -1, -1, -1, -1, 151, -1, 153 ); protected $actionBase = array( - 0, 770, 809, 2, 814, 702, 948, 981, 966, 918, - 857, 905, 962, 901, 887, 871, 994, 994, 994, 994, - 994, 510, 538, 491, 467, 491, 542, -2, -2, -2, - 148, 116, 223, 223, 615, 223, 469, 426, 501, 298, - 351, 255, 394, 544, 544, 544, 544, 701, 701, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 221, 674, - 577, 583, 673, 672, 670, 669, 813, 585, 571, 696, - 725, 507, 726, 727, 734, 768, 766, 678, 748, 878, - 736, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 171, 309, 234, 84, 202, 188, 384, 384, - 384, 384, 384, 384, 281, 281, 281, 281, 281, 281, - 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, - 211, 480, 480, 480, 403, 606, 459, 700, 700, 700, - 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, - 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, - 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, - 700, 700, 700, 700, 700, 700, 700, 700, 700, 179, - -18, -18, 1035, 473, 858, 413, 944, 320, 914, 870, - 870, 870, 870, 870, -24, 697, 4, 4, 4, 4, - 840, 623, 623, 623, 623, 239, 239, 239, 239, -31, - 316, 282, 73, 73, 588, 588, 516, 680, 500, 500, - 475, 475, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 515, 521, 805, 805, 110, 110, 110, 110, - 397, 397, 395, 379, 220, -1, 422, 422, 422, 624, - 624, 624, 256, 152, 580, 261, 261, 261, 595, 573, - 596, 280, -55, -55, -55, -55, 214, 682, -55, -55, - -55, 277, 44, 44, 226, 264, 592, 620, 591, 612, - 402, 619, 129, 622, 622, 622, 235, 509, 385, 381, - 435, 611, 166, 235, 221, 248, 383, 34, 525, 621, - 546, 661, 617, 82, 43, 13, 416, 228, 238, 98, - 665, 662, 767, 808, 35, 3, 597, 525, 525, 525, - 209, 286, 228, -82, 263, 263, 263, 263, 263, 263, - 263, 263, 572, 112, 196, 679, 8, 474, 788, 563, - 834, 547, 550, 563, 535, 474, 791, 791, 791, 791, - 474, 550, 834, 834, 474, 516, 834, 105, 474, 582, - 550, 576, 791, 654, 650, 563, 529, 584, 834, 834, - 834, 547, 474, 791, 508, 625, 217, 834, 791, 534, - 534, 508, 474, 534, 535, 534, 48, 527, 540, 789, - 800, 723, 569, 690, 581, 575, 812, 811, 831, 560, - 549, 815, 783, 562, 649, 539, 434, 537, 523, 536, - 532, 574, 530, 605, 509, 602, 517, 517, 517, 594, - 618, 594, 517, 517, 517, 517, 517, 517, 517, 517, - 925, 614, 603, 607, 524, 648, 466, 562, 589, 451, - 691, 562, 844, 860, 832, 556, 810, 846, 594, 922, - 659, 55, 449, 806, 566, 561, 594, 799, 594, 692, - 594, 839, 564, 764, 562, 517, 838, 921, 904, 903, - 902, 899, 898, 897, 893, 528, 892, 646, 853, 259, - 817, 611, 616, 565, 645, 301, 888, 594, 594, 693, - 682, 594, 643, 658, 868, 641, 852, 883, 573, 851, - 594, 593, 881, 301, 533, 518, 835, 639, 777, 568, - 837, 778, 694, 445, 762, 531, 635, 864, 863, 880, - 632, 698, 699, 470, 545, 578, 579, 721, 798, 631, - 845, 590, 613, 587, 586, 724, 554, 849, 628, 668, - 601, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 735, 800, 817, 878, 120, 972, -1, 990, 942, + 882, 929, 986, 925, 912, 895, 1017, 1017, 1017, 1017, + 1017, 458, 509, 394, 387, 394, 511, -2, -2, -2, + 201, 169, 281, 281, 643, 281, 483, 451, 536, 113, + 366, 313, 398, 568, 568, 568, 568, 731, 731, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 47, + 654, 559, 580, 652, 651, 650, 649, 764, 549, 734, + 683, 689, 447, 690, 694, 695, 704, 703, 682, 700, + 727, 696, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 359, 178, 238, 502, 429, 305, 228, + 228, 228, 228, 228, 228, 425, 425, 425, 425, 425, + 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, + 425, 425, 97, 417, 417, 417, 444, 636, 342, 730, + 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, + 730, 200, -18, -18, 1059, 442, 1096, 378, 936, 328, + 924, 861, 861, 861, 861, 861, -25, 290, 4, 4, + 4, 4, 318, 930, 930, 930, 930, 663, 663, 663, + 663, -31, 350, 269, 56, 56, 583, 583, 477, 575, + 476, 476, 471, 471, 1005, 1005, 1005, 1005, 1005, 1005, + 1005, 1005, 1005, 1005, 540, 499, 738, 738, -37, -37, + -37, -37, 395, 395, 320, 275, 324, 69, 564, 564, + 564, 713, 713, 713, 202, 208, 504, 8, 8, 8, + 530, 538, 556, 206, 79, 79, 79, 79, -100, 657, + 79, 79, 79, 279, -27, -27, 218, 294, 565, 678, + 554, 508, 408, 593, -23, 592, 592, 592, 75, 560, + 422, 419, 401, 578, 35, 75, 47, 181, 384, 126, + 446, 600, 516, 640, 597, 141, 103, 13, 416, 153, + 229, 63, 645, 642, 762, 763, 62, 133, 547, 446, + 446, 446, 122, 125, 153, 235, 375, 375, 375, 375, + 375, 375, 375, 375, 577, 143, 88, 655, 150, 445, + 721, 529, 760, 519, 521, 529, 546, 445, 725, 725, + 725, 725, 445, 521, 760, 760, 445, 477, 760, 96, + 445, 566, 521, 545, 725, 635, 627, 529, 544, 581, + 760, 760, 760, 519, 445, 725, 561, 542, 194, 760, + 725, 500, 500, 561, 445, 500, 546, 500, 21, 460, + 512, 722, 736, 541, 533, 660, 551, 543, 755, 754, + 759, 527, 520, 756, 710, 576, 619, 513, 362, 510, + 475, 507, 505, 539, 494, 553, 560, 590, 478, 478, + 478, 514, 591, 514, 478, 478, 478, 478, 478, 478, + 478, 478, 854, 587, 573, 582, 503, 617, 404, 576, + 557, 392, 661, 576, 776, 796, 586, 526, 753, 783, + 514, 843, 638, 81, 389, 752, 517, 528, 514, 733, + 514, 664, 514, 775, 531, 702, 576, 478, 774, 842, + 838, 837, 834, 833, 832, 831, 830, 486, 829, 612, + 795, 227, 758, 578, 589, 532, 611, 243, 827, 514, + 514, 668, 657, 514, 610, 637, 809, 609, 790, 826, + 538, 785, 514, 562, 825, 243, 492, 506, 765, 608, + 588, 548, 768, 676, 670, 381, 701, 485, 607, 807, + 797, 810, 604, 672, 674, 434, 515, 550, 555, 675, + 726, 603, 779, 563, 579, 567, 552, 677, 522, 784, + 601, 646, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, 0, 0, 0, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128, -18, -18, -18, -18, 128, -18, -18, -18, -18, - -18, -18, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, -18, 128, - 128, 128, -18, 269, -18, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 128, 0, 0, - 128, -18, 128, -18, 128, -18, 128, 128, 128, 128, - 128, 128, -18, -18, -18, -18, -18, -18, 0, 422, - 422, 422, 422, -18, -18, -18, -18, 172, 172, 172, - 269, 269, 269, 269, 269, 269, 422, 422, 624, 624, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 172, 172, 269, 269, -55, -55, -55, -55, -55, -55, - 44, 44, 44, 238, 0, 0, 0, 0, 0, 0, - -55, 550, 44, 363, 363, 363, 44, 44, 44, 238, - 0, 0, 0, 0, 550, 363, 0, 0, 0, 834, - 0, 0, 0, 363, 371, 371, 371, 371, 301, 228, - 0, 550, 550, 550, 0, 529, 0, 0, 0, 834, - 0, 0, 0, 0, 0, 0, 517, 55, 810, 411, - 415, 0, 0, 0, 0, 0, 0, 0, 415, 415, - 392, 392, 0, 0, 528, 517, 517, 517, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 411, 0, 0, 301 + 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, 0, 0, 0, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, -18, -18, -18, -18, 129, -18, + -18, -18, -18, -18, -18, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, -18, 129, 129, 129, -18, 1005, -18, 1005, + 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1005, 129, 0, 0, 129, -18, 129, -18, 129, -18, + 129, 129, 129, 129, 129, 129, -18, -18, -18, -18, + -18, -18, 0, 564, 564, 564, 564, -18, -18, -18, + -18, 215, 215, 215, 1005, 1005, 1005, 1005, 1005, 1005, + 564, 564, 713, 713, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 215, 215, 1005, 1005, 79, 79, + 79, 79, 79, 79, -27, -27, -27, 229, 0, 0, + 0, 0, 0, 0, 79, 521, -27, 268, 268, 268, + -27, -27, -27, 229, 0, 0, 0, 0, 521, 268, + 0, 0, 0, 760, 0, 0, 0, 268, 407, 407, + 407, 407, 243, 153, 0, 521, 521, 521, 0, 544, + 0, 0, 0, 760, 0, 0, 0, 0, 0, 0, + 478, 81, 753, 259, 355, 0, 0, 0, 0, 0, + 0, 0, 355, 355, 252, 252, 0, 0, 486, 478, + 478, 478, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 259, 0, 0, 243 ); protected $actionDefault = array( 3,32767,32767, 1,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767, 111, 103, 117, 102, 113,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 424, 424,32767, 381,32767,32767,32767,32767, - 32767,32767,32767, 188, 188, 188,32767,32767,32767, 413, - 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, + 32767,32767, 425, 425,32767, 382,32767,32767,32767,32767, + 32767,32767,32767, 188, 188, 188,32767,32767,32767, 414, + 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 32767,32767,32767,32767,32767, 270,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, @@ -713,117 +723,114 @@ class Parser extends ParserAbstract 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 275, 429,32767,32767,32767,32767,32767,32767,32767,32767, + 32767, 276, 430,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 251, 252, 254, 255, 187, 414, 139, 276, 428, - 186, 141, 215, 385,32767,32767,32767, 217, 26, 150, - 95, 384, 185, 126, 269, 216, 192, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 191, - 339, 248, 247, 246, 341,32767, 340, 378, 378, 381, + 32767,32767, 251, 252, 254, 255, 187, 415, 139, 277, + 429, 186, 141, 215, 386,32767,32767,32767, 217, 26, + 150, 95, 385, 185, 126, 269, 271, 216, 192, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 191, 340, 248, 247, 246, 342,32767, 341, 379, + 379, 382,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767, 213, - 367, 366, 214, 337, 218, 338, 220, 342, 219, 236, - 237, 234, 235, 238, 344, 343, 360, 361, 358, 359, - 190, 239, 240, 241, 242, 362, 363, 364, 365, 172, - 172, 172,32767,32767, 423, 423,32767,32767, 227, 228, - 351, 352,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 173,32767,32767,32767, 130, 130, 130, 130, - 130,32767,32767,32767,32767,32767, 222, 223, 221, 346, - 347, 345,32767,32767, 313,32767,32767,32767,32767,32767, - 315,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 386, 314,32767,32767,32767,32767,32767,32767,32767, - 32767, 399, 302,32767,32767,32767,32767, 295, 114, 116, - 64, 370,32767,32767,32767,32767,32767, 404, 232,32767, - 32767,32767,32767,32767,32767, 436,32767, 399,32767,32767, - 32767,32767,32767,32767,32767,32767, 245, 224, 225, 226, - 32767,32767, 403, 397, 354, 355, 356, 357, 348, 349, - 350, 353,32767,32767,32767,32767,32767, 68, 310,32767, - 316,32767,32767,32767,32767, 68,32767,32767,32767,32767, - 68,32767, 402, 401, 68,32767, 296, 380, 68, 81, - 32767, 79,32767, 100, 100,32767,32767, 83, 376, 392, - 32767,32767, 68,32767, 284, 70, 380,32767,32767, 132, - 132, 284, 68, 132,32767, 132,32767, 4, 320,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767, 297,32767,32767,32767, 266, 267, 373, - 388,32767, 389,32767, 295,32767, 230, 231, 233, 210, - 32767, 212, 256, 257, 258, 259, 260, 261, 262, 264, - 32767,32767, 300, 303,32767,32767,32767, 6, 20, 149, - 32767, 298,32767, 195,32767,32767,32767,32767, 431,32767, - 32767, 189,32767,32767, 22,32767, 145,32767, 66,32767, - 421,32767,32767, 397, 299, 229,32767,32767,32767,32767, - 32767,32767,32767,32767,32767, 398,32767,32767,32767, 121, - 32767, 333,32767,32767,32767, 82,32767, 193, 140,32767, - 32767, 430,32767,32767,32767,32767,32767,32767,32767,32767, - 67,32767,32767, 84,32767,32767, 397,32767,32767,32767, - 32767,32767,32767, 184,32767,32767,32767,32767,32767, 397, - 32767,32767,32767, 125,32767,32767,32767,32767,32767,32767, - 32767, 4,32767, 166,32767,32767,32767,32767,32767,32767, - 32767, 28, 28, 3, 28, 108, 28, 152, 3, 100, - 100, 61, 152, 28, 152, 28, 28, 28, 28, 28, - 159, 28, 28, 28, 28, 28, 28, 28 + 32767, 213, 368, 367, 214, 338, 218, 339, 220, 343, + 219, 236, 237, 234, 235, 238, 345, 344, 361, 362, + 359, 360, 190, 239, 240, 241, 242, 363, 364, 365, + 366, 172, 172, 172,32767,32767, 424, 424,32767,32767, + 227, 228, 352, 353,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767, 173,32767,32767,32767, 130, 130, + 130, 130, 130,32767,32767,32767,32767,32767, 222, 223, + 221, 347, 348, 346,32767,32767, 314,32767,32767,32767, + 32767,32767, 316,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767, 387, 315,32767,32767,32767,32767,32767, + 32767,32767,32767, 400, 303,32767,32767,32767,32767, 296, + 114, 116, 64, 371,32767,32767,32767,32767,32767, 405, + 232,32767,32767,32767,32767,32767,32767, 437,32767, 400, + 32767,32767,32767,32767,32767,32767,32767,32767, 245, 224, + 225, 226,32767,32767, 404, 398, 355, 356, 357, 358, + 349, 350, 351, 354,32767,32767,32767,32767,32767, 68, + 311,32767, 317,32767,32767,32767,32767, 68,32767,32767, + 32767,32767, 68,32767, 403, 402, 68,32767, 297, 381, + 68, 81,32767, 79,32767, 100, 100,32767,32767, 83, + 377, 393,32767,32767, 68,32767, 285, 70, 381,32767, + 32767, 132, 132, 285, 68, 132,32767, 132,32767, 4, + 321,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767, 298,32767,32767,32767, 266, + 267, 374, 389,32767, 390,32767, 296,32767, 230, 231, + 233, 210,32767, 212, 256, 257, 258, 259, 260, 261, + 262, 264,32767,32767, 301, 304,32767,32767,32767, 6, + 20, 149,32767, 299,32767, 195,32767,32767,32767,32767, + 432,32767,32767, 189,32767,32767, 22,32767, 145,32767, + 66,32767, 422,32767,32767, 398, 300, 229,32767,32767, + 32767,32767,32767,32767,32767,32767,32767, 399,32767,32767, + 32767, 121,32767, 334,32767,32767,32767, 82,32767, 193, + 140,32767,32767, 431,32767,32767,32767,32767,32767,32767, + 32767,32767, 67,32767,32767, 84,32767,32767, 398,32767, + 32767,32767,32767,32767,32767, 184,32767,32767,32767,32767, + 32767, 398,32767,32767,32767, 125,32767,32767,32767,32767, + 32767,32767,32767, 4,32767, 166,32767,32767,32767,32767, + 32767,32767,32767, 28, 28, 3, 28, 108, 28, 152, + 3, 100, 100, 61, 152, 28, 152, 28, 28, 28, + 28, 28, 159, 28, 28, 28, 28, 28, 28, 28 ); protected $goto = array( - 167, 167, 141, 141, 146, 141, 142, 143, 144, 149, - 151, 186, 169, 165, 165, 165, 165, 146, 146, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 161, 162, 163, 164, 184, 140, 486, 487, 368, 488, - 492, 493, 494, 495, 496, 497, 498, 499, 834, 145, - 147, 148, 150, 172, 177, 185, 201, 249, 252, 254, - 256, 258, 259, 260, 261, 262, 263, 271, 272, 273, - 274, 288, 289, 316, 317, 318, 387, 388, 389, 535, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 152, 153, 154, 168, 155, 170, 156, - 202, 171, 157, 158, 159, 203, 160, 138, 551, 692, - 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, - 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, - 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, - 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, - 551, 551, 490, 490, 490, 490, 490, 490, 1039, 1039, - 563, 587, 490, 490, 490, 490, 490, 490, 490, 490, - 490, 490, 776, 1, 501, 501, 1070, 1070, 2, 1055, - 1055, 1055, 647, 647, 647, 426, 426, 426, 426, 426, - 426, 1038, 1073, 1070, 513, 426, 426, 426, 426, 426, - 426, 426, 426, 426, 426, 1073, 1073, 934, 934, 765, - 765, 765, 765, 765, 765, 537, 538, 539, 540, 541, - 542, 543, 544, 546, 572, 602, 758, 758, 1060, 1060, - 646, 646, 646, 813, 406, 723, 723, 723, 723, 503, - 503, 718, 724, 596, 552, 347, 552, 552, 552, 552, - 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, - 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, - 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, - 552, 552, 552, 552, 552, 552, 552, 552, 969, 531, - 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, - 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, - 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, - 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, - 969, 969, 592, 1064, 330, 597, 369, 366, 314, 280, - 175, 281, 580, 502, 502, 178, 179, 180, 394, 395, - 396, 397, 174, 200, 204, 206, 253, 255, 257, 264, - 265, 266, 267, 268, 269, 275, 276, 277, 278, 290, - 291, 319, 320, 321, 398, 399, 400, 401, 176, 181, - 250, 251, 182, 183, 5, 1032, 16, 1020, 6, 566, - 569, 607, 573, 350, 405, 7, 588, 17, 18, 8, - 19, 9, 376, 20, 10, 11, 12, 13, 14, 15, - 393, 589, 530, 530, 557, 526, 645, 645, 645, 507, - 528, 528, 489, 491, 518, 533, 558, 561, 570, 576, - 348, 349, 507, 832, 1040, 1040, 744, 729, 727, 725, - 727, 615, 504, 753, 748, 377, 377, 377, 370, 507, - 507, 507, 516, 950, 955, 536, 527, 377, 1057, 512, - 383, 891, 26, 21, 362, 392, 930, 931, 945, 944, - 445, 881, 512, 512, 380, 381, 625, 547, 524, 762, - 594, 771, 928, 1031, 928, 780, 656, 402, 29, 970, - 925, 929, 662, 585, 785, 732, 1017, 453, 0, 0, - 0, 821, 0, 0, 0, 0, 0, 0, 507, 0, - 0, 0, 0, 0, 0, 0, 0, 511, 0, 0, - 0, 0, 0, 0, 0, 0, 534, 0, 0, 0, + 168, 168, 142, 142, 147, 142, 143, 144, 145, 150, + 152, 188, 170, 166, 166, 166, 166, 147, 147, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 162, 163, 164, 165, 185, 141, 186, 488, 489, 370, + 490, 494, 495, 496, 497, 498, 499, 500, 501, 836, + 146, 148, 149, 151, 173, 178, 187, 203, 251, 254, + 256, 258, 260, 261, 262, 263, 264, 265, 273, 274, + 275, 276, 290, 291, 318, 319, 320, 389, 390, 391, + 537, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 153, 154, 155, 169, 156, 171, + 157, 204, 172, 158, 159, 160, 205, 161, 139, 553, + 694, 553, 553, 553, 553, 553, 553, 553, 553, 553, + 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, + 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, + 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, + 553, 553, 553, 492, 492, 492, 492, 492, 492, 1042, + 1042, 778, 515, 492, 492, 492, 492, 492, 492, 492, + 492, 492, 492, 533, 1, 503, 503, 1073, 1073, 2, + 1058, 1058, 1058, 649, 649, 649, 428, 428, 428, 428, + 428, 428, 1041, 1076, 1073, 1067, 428, 428, 428, 428, + 428, 428, 428, 428, 428, 428, 1076, 1076, 937, 937, + 767, 767, 767, 767, 767, 767, 539, 540, 541, 542, + 543, 544, 545, 546, 548, 574, 604, 760, 760, 1063, + 1063, 648, 648, 648, 565, 589, 725, 725, 725, 725, + 815, 408, 720, 726, 598, 554, 349, 554, 554, 554, + 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, + 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, + 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, + 554, 554, 554, 554, 554, 554, 554, 554, 554, 972, + 371, 972, 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 594, 1023, 332, 599, 590, 368, 316, + 282, 176, 283, 582, 504, 504, 179, 180, 181, 396, + 397, 398, 399, 175, 202, 206, 208, 255, 257, 259, + 266, 267, 268, 269, 270, 271, 277, 278, 279, 280, + 292, 293, 321, 322, 323, 400, 401, 402, 403, 177, + 182, 252, 253, 183, 184, 5, 1035, 16, 1060, 6, + 568, 571, 609, 575, 352, 407, 7, 385, 17, 18, + 8, 19, 9, 834, 20, 10, 11, 12, 13, 14, + 15, 395, 591, 532, 532, 559, 528, 647, 647, 647, + 509, 530, 530, 491, 493, 520, 535, 560, 563, 572, + 578, 350, 351, 509, 378, 505, 505, 746, 731, 729, + 727, 729, 617, 506, 755, 750, 379, 379, 379, 372, + 509, 509, 509, 518, 953, 958, 538, 529, 379, 883, + 514, 764, 893, 26, 21, 364, 394, 933, 934, 1043, + 1043, 447, 773, 514, 514, 948, 947, 658, 549, 382, + 383, 596, 782, 931, 1034, 931, 404, 627, 664, 29, + 928, 787, 932, 973, 587, 1020, 823, 734, 455, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 509, + 526, 0, 0, 0, 0, 0, 0, 0, 513, 0, + 0, 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 517 + 0, 0, 519 ); protected $gotoCheck = array( @@ -837,86 +844,83 @@ class Parser extends ParserAbstract 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 39, 32, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 39, + 32, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 94, 94, 94, 94, 94, 94, 96, 96, - 22, 22, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 63, 2, 94, 94, 119, 119, 2, 96, - 96, 96, 8, 8, 8, 39, 39, 39, 39, 39, - 39, 96, 119, 119, 79, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 119, 119, 39, 39, 39, - 39, 39, 39, 39, 39, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 39, 56, 56, 56, 56, - 7, 7, 7, 76, 76, 39, 39, 39, 39, 100, - 100, 39, 39, 39, 97, 51, 97, 97, 97, 97, + 39, 39, 39, 94, 94, 94, 94, 94, 94, 96, + 96, 63, 79, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 87, 2, 94, 94, 119, 119, 2, + 96, 96, 96, 8, 8, 8, 39, 39, 39, 39, + 39, 39, 96, 119, 119, 118, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 119, 119, 39, 39, + 39, 39, 39, 39, 39, 39, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 39, 56, 56, 56, + 56, 7, 7, 7, 22, 22, 39, 39, 39, 39, + 76, 76, 39, 39, 39, 97, 51, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 104, 87, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 104, + 29, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 43, 118, 103, 43, 29, 43, 103, 47, - 13, 47, 106, 97, 97, 13, 13, 13, 13, 13, + 104, 104, 104, 43, 110, 103, 43, 31, 43, 103, + 47, 13, 47, 106, 97, 97, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 14, 61, 14, 110, 14, 42, - 42, 42, 49, 49, 49, 14, 31, 14, 14, 14, - 14, 14, 5, 14, 14, 14, 14, 14, 14, 14, - 33, 33, 33, 33, 33, 33, 6, 6, 6, 4, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 51, 51, 4, 79, 95, 95, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 101, 101, 101, 40, 4, - 4, 4, 40, 16, 61, 26, 40, 101, 116, 26, - 30, 16, 16, 16, 16, 101, 61, 61, 102, 102, - 40, 80, 26, 26, 9, 9, 53, 16, 5, 58, - 40, 60, 61, 61, 61, 64, 11, 10, 16, 105, - 92, 61, 12, 16, 65, 50, 109, 86, -1, -1, - -1, 78, -1, -1, -1, -1, -1, -1, 4, -1, + 13, 13, 13, 13, 13, 14, 61, 14, 116, 14, + 42, 42, 42, 49, 49, 49, 14, 30, 14, 14, + 14, 14, 14, 79, 14, 14, 14, 14, 14, 14, + 14, 33, 33, 33, 33, 33, 33, 6, 6, 6, + 4, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 51, 51, 4, 5, 100, 100, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 101, 101, 101, 40, + 4, 4, 4, 40, 16, 61, 26, 40, 101, 80, + 26, 58, 16, 16, 16, 16, 101, 61, 61, 95, + 95, 40, 60, 26, 26, 102, 102, 11, 16, 9, + 9, 40, 64, 61, 61, 61, 10, 53, 12, 16, + 92, 65, 61, 105, 16, 109, 78, 50, 86, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, + 5, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, - -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79 ); protected $gotoBase = array( - 0, 0, -440, 0, 96, 66, 415, 229, 181, 121, - 74, 131, 57, 135, -228, 0, 45, 0, 0, 0, - 0, 0, 116, 0, 0, -30, 425, 0, 0, 290, - 167, 113, 84, 128, 0, 0, 0, 0, 0, -97, - 28, 0, 82, -118, 0, 0, 0, -283, 0, 59, - 54, -189, 0, 112, 0, 0, -56, 0, 169, 0, - 170, 44, 0, 141, 122, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -69, 0, 47, 147, - 166, 0, 0, 0, 0, 0, 46, 256, 165, 0, - 0, 0, 75, 0, -130, 130, -146, 39, 0, 0, - -65, 120, 142, 10, 83, 124, 134, 0, 0, 50, - 178, 0, 0, 0, 0, 0, 173, 0, 298, -137, + 0, 0, -441, 0, 95, 96, 416, 230, 182, 124, + 71, 120, 51, 134, -229, 0, 44, 0, 0, 0, + 0, 0, 190, 0, 0, -30, 426, 0, 0, 244, + 102, 52, 85, 127, 0, 0, 0, 0, 0, -98, + 27, 0, 81, -119, 0, 0, 0, -284, 0, 58, + 54, -190, 0, 121, 0, 0, -57, 0, 149, 0, + 159, 43, 0, 130, 117, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -64, 0, 40, 115, + 152, 0, 0, 0, 0, 0, 45, 140, 166, 0, + 0, 0, 73, 0, -131, 163, -147, 38, 0, 0, + 129, 119, 147, 9, 82, 126, 133, 0, 0, 47, + 123, 0, 0, 0, 0, 0, 101, 0, 160, -138, 0 ); protected $gotoDefault = array( - -32768, 456, 3, 640, 473, 508, 667, 668, 669, 372, - 371, 657, 663, 173, 4, 665, 882, 358, 672, 359, - 575, 674, 520, 676, 677, 139, 474, 373, 374, 521, - 382, 564, 691, 270, 379, 693, 360, 695, 700, 361, - 595, 579, 548, 591, 475, 437, 559, 279, 529, 555, - 731, 346, 739, 628, 747, 750, 476, 549, 761, 442, - 769, 927, 390, 775, 781, 786, 789, 414, 403, 571, - 793, 794, 322, 798, 603, 604, 812, 302, 820, 833, - 410, 901, 903, 477, 478, 514, 450, 500, 519, 479, - 921, 404, 924, 480, 481, 422, 423, 942, 939, 352, - 1025, 351, 439, 313, 1010, 1009, 567, 974, 446, 1063, - 1021, 341, 482, 483, 367, 384, 1058, 427, 1065, 1072, - 556 + -32768, 458, 3, 642, 475, 510, 669, 670, 671, 374, + 373, 659, 665, 174, 4, 667, 884, 360, 674, 361, + 577, 676, 522, 678, 679, 140, 476, 375, 376, 523, + 384, 566, 693, 272, 381, 695, 362, 697, 702, 363, + 597, 581, 550, 593, 477, 439, 561, 281, 531, 557, + 733, 348, 741, 630, 749, 752, 478, 551, 763, 444, + 771, 930, 392, 777, 783, 788, 791, 416, 405, 573, + 795, 796, 324, 800, 605, 606, 814, 304, 822, 835, + 412, 903, 905, 479, 480, 516, 452, 502, 521, 481, + 924, 406, 927, 482, 483, 424, 425, 945, 942, 354, + 1028, 353, 441, 315, 1013, 1012, 569, 977, 448, 1066, + 1024, 343, 484, 485, 369, 386, 1061, 429, 1068, 1075, + 558 ); protected $ruleToNonTerminal = array( @@ -947,24 +951,24 @@ class Parser extends ParserAbstract 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 16, 16, 26, 26, 83, 83, 84, - 84, 84, 84, 79, 86, 86, 91, 91, 92, 93, - 93, 93, 93, 93, 93, 97, 97, 39, 39, 39, - 80, 80, 98, 98, 94, 94, 99, 99, 99, 99, - 81, 81, 81, 85, 85, 85, 90, 90, 104, 104, + 25, 25, 25, 25, 16, 16, 26, 26, 83, 83, + 84, 84, 84, 84, 79, 86, 86, 91, 91, 92, + 93, 93, 93, 93, 93, 93, 97, 97, 39, 39, + 39, 80, 80, 98, 98, 94, 94, 99, 99, 99, + 99, 81, 81, 81, 85, 85, 85, 90, 90, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 13, 13, 13, 13, 13, 13, 107, 107, 107, + 104, 104, 13, 13, 13, 13, 13, 13, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 89, 89, 82, 82, 82, 82, 105, 105, 106, 106, - 109, 109, 108, 108, 110, 110, 33, 33, 33, 33, - 112, 112, 111, 111, 111, 111, 111, 113, 113, 96, - 96, 100, 100, 95, 95, 114, 114, 114, 114, 101, - 101, 101, 101, 88, 88, 102, 102, 102, 56, 115, - 115, 116, 116, 116, 87, 87, 117, 117, 118, 118, - 118, 118, 103, 103, 103, 103, 119, 119, 119, 119, - 119, 119, 119, 120, 120, 120 + 107, 89, 89, 82, 82, 82, 82, 105, 105, 106, + 106, 109, 109, 108, 108, 110, 110, 33, 33, 33, + 33, 112, 112, 111, 111, 111, 111, 111, 113, 113, + 96, 96, 100, 100, 95, 95, 114, 114, 114, 114, + 101, 101, 101, 101, 88, 88, 102, 102, 102, 56, + 115, 115, 116, 116, 116, 87, 87, 117, 117, 118, + 118, 118, 118, 103, 103, 103, 103, 119, 119, 119, + 119, 119, 119, 119, 120, 120, 120 ); protected $ruleToLength = array( @@ -995,24 +999,24 @@ class Parser extends ParserAbstract 3, 3, 3, 3, 1, 3, 5, 4, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 2, - 1, 10, 11, 3, 3, 2, 4, 4, 3, 4, - 4, 4, 4, 3, 0, 4, 1, 3, 2, 2, - 4, 6, 2, 2, 4, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, - 0, 2, 1, 0, 1, 1, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 2, 1, 3, 1, 4, 3, 1, 3, 3, 3, + 1, 2, 10, 11, 3, 3, 2, 4, 4, 3, + 4, 4, 4, 4, 3, 0, 4, 1, 3, 2, + 2, 4, 6, 2, 2, 4, 1, 1, 1, 2, + 3, 1, 1, 1, 1, 1, 1, 3, 3, 4, + 4, 0, 2, 1, 0, 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 2, 1, 3, 1, 4, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, - 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, - 1, 3, 1, 1, 3, 3, 1, 1, 0, 2, - 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, - 6, 4, 3, 4, 2, 4, 4, 1, 3, 1, - 2, 1, 1, 4, 1, 3, 6, 4, 4, 4, - 4, 1, 4, 0, 1, 1, 3, 1, 4, 3, - 1, 1, 1, 0, 0, 2, 3, 1, 3, 1, - 4, 2, 2, 2, 1, 2, 1, 4, 3, 3, - 3, 6, 3, 1, 1, 1 + 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, + 3, 1, 3, 1, 1, 3, 3, 1, 1, 0, + 2, 0, 1, 3, 1, 3, 1, 1, 1, 1, + 1, 6, 4, 3, 4, 2, 4, 4, 1, 3, + 1, 2, 1, 1, 4, 1, 3, 6, 4, 4, + 4, 4, 1, 4, 0, 1, 1, 3, 1, 4, + 3, 1, 1, 1, 0, 0, 2, 3, 1, 3, + 1, 4, 2, 2, 2, 1, 2, 1, 4, 3, + 3, 3, 6, 3, 1, 1, 1 ); protected function reduceRule0() { @@ -2100,15 +2104,15 @@ class Parser extends ParserAbstract } protected function reduceRule271() { - $this->semValue = new Node\Expr\Closure(array('static' => false, 'byRef' => $this->semStack[$this->stackPos-(10-2)], 'params' => $this->semStack[$this->stackPos-(10-4)], 'uses' => $this->semStack[$this->stackPos-(10-6)], 'returnType' => $this->semStack[$this->stackPos-(10-7)], 'stmts' => $this->semStack[$this->stackPos-(10-9)]), $this->startAttributeStack[$this->stackPos-(10-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\YieldFrom($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); } protected function reduceRule272() { - $this->semValue = new Node\Expr\Closure(array('static' => true, 'byRef' => $this->semStack[$this->stackPos-(11-3)], 'params' => $this->semStack[$this->stackPos-(11-5)], 'uses' => $this->semStack[$this->stackPos-(11-7)], 'returnType' => $this->semStack[$this->stackPos-(11-8)], 'stmts' => $this->semStack[$this->stackPos-(11-10)]), $this->startAttributeStack[$this->stackPos-(11-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\Closure(array('static' => false, 'byRef' => $this->semStack[$this->stackPos-(10-2)], 'params' => $this->semStack[$this->stackPos-(10-4)], 'uses' => $this->semStack[$this->stackPos-(10-6)], 'returnType' => $this->semStack[$this->stackPos-(10-7)], 'stmts' => $this->semStack[$this->stackPos-(10-9)]), $this->startAttributeStack[$this->stackPos-(10-1)] + $this->endAttributes); } protected function reduceRule273() { - $this->semValue = $this->semStack[$this->stackPos-(3-2)]; + $this->semValue = new Node\Expr\Closure(array('static' => true, 'byRef' => $this->semStack[$this->stackPos-(11-3)], 'params' => $this->semStack[$this->stackPos-(11-5)], 'uses' => $this->semStack[$this->stackPos-(11-7)], 'returnType' => $this->semStack[$this->stackPos-(11-8)], 'stmts' => $this->semStack[$this->stackPos-(11-10)]), $this->startAttributeStack[$this->stackPos-(11-1)] + $this->endAttributes); } protected function reduceRule274() { @@ -2116,31 +2120,31 @@ class Parser extends ParserAbstract } protected function reduceRule275() { - $this->semValue = new Node\Expr\Yield_($this->semStack[$this->stackPos-(2-2)], null, $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$this->stackPos-(3-2)]; } protected function reduceRule276() { - $this->semValue = new Node\Expr\Yield_($this->semStack[$this->stackPos-(4-4)], $this->semStack[$this->stackPos-(4-2)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\Yield_($this->semStack[$this->stackPos-(2-2)], null, $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); } protected function reduceRule277() { - $this->semValue = new Node\Expr\Array_($this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\Yield_($this->semStack[$this->stackPos-(4-4)], $this->semStack[$this->stackPos-(4-2)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule278() { - $this->semValue = new Node\Expr\Array_($this->semStack[$this->stackPos-(3-2)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\Array_($this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule279() { - $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\Array_($this->semStack[$this->stackPos-(3-2)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } protected function reduceRule280() { - $this->semValue = new Node\Expr\ArrayDimFetch(new Node\Scalar\String_(Node\Scalar\String_::parse($this->semStack[$this->stackPos-(4-1)]), $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes), $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule281() { - $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ArrayDimFetch(new Node\Scalar\String_(Node\Scalar\String_::parse($this->semStack[$this->stackPos-(4-1)]), $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes), $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule282() { @@ -2148,42 +2152,46 @@ class Parser extends ParserAbstract } protected function reduceRule283() { - $this->semValue = new Node\Expr\New_($this->semStack[$this->stackPos-(3-2)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule284() { - $this->semValue = array(); + $this->semValue = new Node\Expr\New_($this->semStack[$this->stackPos-(3-2)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } protected function reduceRule285() { - $this->semValue = $this->semStack[$this->stackPos-(4-3)]; + $this->semValue = array(); } protected function reduceRule286() { - $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); + $this->semValue = $this->semStack[$this->stackPos-(4-3)]; } protected function reduceRule287() { - $this->semStack[$this->stackPos-(3-1)][] = $this->semStack[$this->stackPos-(3-3)]; $this->semValue = $this->semStack[$this->stackPos-(3-1)]; + $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); } protected function reduceRule288() { - $this->semValue = new Node\Expr\ClosureUse(substr($this->semStack[$this->stackPos-(2-2)], 1), $this->semStack[$this->stackPos-(2-1)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + $this->semStack[$this->stackPos-(3-1)][] = $this->semStack[$this->stackPos-(3-3)]; $this->semValue = $this->semStack[$this->stackPos-(3-1)]; } protected function reduceRule289() { - $this->semValue = new Node\Expr\FuncCall($this->semStack[$this->stackPos-(2-1)], $this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ClosureUse(substr($this->semStack[$this->stackPos-(2-2)], 1), $this->semStack[$this->stackPos-(2-1)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); } protected function reduceRule290() { - $this->semValue = new Node\Expr\StaticCall($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->semStack[$this->stackPos-(4-4)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\FuncCall($this->semStack[$this->stackPos-(2-1)], $this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); } protected function reduceRule291() { - $this->semValue = new Node\Expr\StaticCall($this->semStack[$this->stackPos-(6-1)], $this->semStack[$this->stackPos-(6-4)], $this->semStack[$this->stackPos-(6-6)], $this->startAttributeStack[$this->stackPos-(6-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\StaticCall($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->semStack[$this->stackPos-(4-4)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule292() { + $this->semValue = new Node\Expr\StaticCall($this->semStack[$this->stackPos-(6-1)], $this->semStack[$this->stackPos-(6-4)], $this->semStack[$this->stackPos-(6-6)], $this->startAttributeStack[$this->stackPos-(6-1)] + $this->endAttributes); + } + + protected function reduceRule293() { if ($this->semStack[$this->stackPos-(2-1)] instanceof Node\Expr\StaticPropertyFetch) { $this->semValue = new Node\Expr\StaticCall($this->semStack[$this->stackPos-(2-1)]->class, new Node\Expr\Variable($this->semStack[$this->stackPos-(2-1)]->name, $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes), $this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); @@ -2201,36 +2209,32 @@ class Parser extends ParserAbstract } - protected function reduceRule293() { + protected function reduceRule294() { $this->semValue = new Node\Expr\FuncCall($this->semStack[$this->stackPos-(2-1)], $this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); } - protected function reduceRule294() { + protected function reduceRule295() { $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } - protected function reduceRule295() { - $this->semValue = new Node\Name($this->semStack[$this->stackPos-(1-1)], $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); - } - protected function reduceRule296() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = new Node\Name($this->semStack[$this->stackPos-(1-1)], $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule297() { - $this->semValue = new Node\Name($this->semStack[$this->stackPos-(1-1)], $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule298() { - $this->semValue = new Node\Name\FullyQualified($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Node\Name($this->semStack[$this->stackPos-(1-1)], $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule299() { - $this->semValue = new Node\Name\Relative($this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Node\Name\FullyQualified($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); } protected function reduceRule300() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = new Node\Name\Relative($this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } protected function reduceRule301() { @@ -2254,7 +2258,7 @@ class Parser extends ParserAbstract } protected function reduceRule306() { - $this->semValue = new Node\Expr\PropertyFetch($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule307() { @@ -2262,7 +2266,7 @@ class Parser extends ParserAbstract } protected function reduceRule308() { - $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\PropertyFetch($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } protected function reduceRule309() { @@ -2270,7 +2274,7 @@ class Parser extends ParserAbstract } protected function reduceRule310() { - $this->semValue = null; + $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule311() { @@ -2278,279 +2282,279 @@ class Parser extends ParserAbstract } protected function reduceRule312() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = null; } protected function reduceRule313() { - $this->semValue = array(); + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule314() { - $this->semValue = array(Node\Scalar\String_::parseEscapeSequences($this->semStack[$this->stackPos-(1-1)], '`')); - } - - protected function reduceRule315() { - foreach ($this->semStack[$this->stackPos-(1-1)] as &$s) { if (is_string($s)) { $s = Node\Scalar\String_::parseEscapeSequences($s, '`'); } }; $this->semValue = $this->semStack[$this->stackPos-(1-1)]; - } - - protected function reduceRule316() { $this->semValue = array(); } + protected function reduceRule315() { + $this->semValue = array(Node\Scalar\String_::parseEscapeSequences($this->semStack[$this->stackPos-(1-1)], '`')); + } + + protected function reduceRule316() { + foreach ($this->semStack[$this->stackPos-(1-1)] as &$s) { if (is_string($s)) { $s = Node\Scalar\String_::parseEscapeSequences($s, '`'); } }; $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + } + protected function reduceRule317() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = array(); } protected function reduceRule318() { - $this->semValue = new Node\Scalar\LNumber(Node\Scalar\LNumber::parse($this->semStack[$this->stackPos-(1-1)]), $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule319() { - $this->semValue = new Node\Scalar\DNumber(Node\Scalar\DNumber::parse($this->semStack[$this->stackPos-(1-1)]), $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\LNumber(Node\Scalar\LNumber::parse($this->semStack[$this->stackPos-(1-1)]), $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule320() { - $this->semValue = new Node\Scalar\String_(Node\Scalar\String_::parse($this->semStack[$this->stackPos-(1-1)]), $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\DNumber(Node\Scalar\DNumber::parse($this->semStack[$this->stackPos-(1-1)]), $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule321() { - $this->semValue = new Node\Scalar\MagicConst\Line($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\String_(Node\Scalar\String_::parse($this->semStack[$this->stackPos-(1-1)]), $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule322() { - $this->semValue = new Node\Scalar\MagicConst\File($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\MagicConst\Line($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule323() { - $this->semValue = new Node\Scalar\MagicConst\Dir($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\MagicConst\File($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule324() { - $this->semValue = new Node\Scalar\MagicConst\Class_($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\MagicConst\Dir($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule325() { - $this->semValue = new Node\Scalar\MagicConst\Trait_($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\MagicConst\Class_($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule326() { - $this->semValue = new Node\Scalar\MagicConst\Method($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\MagicConst\Trait_($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule327() { - $this->semValue = new Node\Scalar\MagicConst\Function_($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\MagicConst\Method($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule328() { - $this->semValue = new Node\Scalar\MagicConst\Namespace_($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\MagicConst\Function_($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule329() { - $this->semValue = new Node\Scalar\String_(Node\Scalar\String_::parseDocString($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-2)]), $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\MagicConst\Namespace_($this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule330() { - $this->semValue = new Node\Scalar\String_('', $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Node\Scalar\String_(Node\Scalar\String_::parseDocString($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-2)]), $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } protected function reduceRule331() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = new Node\Scalar\String_('', $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); } protected function reduceRule332() { - $this->semValue = new Node\Expr\ClassConstFetch($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule333() { - $this->semValue = new Node\Expr\ConstFetch($this->semStack[$this->stackPos-(1-1)], $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); - } - - protected function reduceRule334() { - $this->semValue = new Node\Expr\Array_($this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); - } - - protected function reduceRule335() { - $this->semValue = new Node\Expr\Array_($this->semStack[$this->stackPos-(3-2)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule336() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; - } - - protected function reduceRule337() { - $this->semValue = new Node\Expr\BinaryOp\BooleanOr($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule338() { - $this->semValue = new Node\Expr\BinaryOp\BooleanAnd($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule339() { - $this->semValue = new Node\Expr\BinaryOp\LogicalOr($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule340() { - $this->semValue = new Node\Expr\BinaryOp\LogicalAnd($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule341() { - $this->semValue = new Node\Expr\BinaryOp\LogicalXor($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule342() { - $this->semValue = new Node\Expr\BinaryOp\BitwiseOr($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule343() { - $this->semValue = new Node\Expr\BinaryOp\BitwiseAnd($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule344() { - $this->semValue = new Node\Expr\BinaryOp\BitwiseXor($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule345() { - $this->semValue = new Node\Expr\BinaryOp\Concat($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule346() { - $this->semValue = new Node\Expr\BinaryOp\Plus($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule347() { - $this->semValue = new Node\Expr\BinaryOp\Minus($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule348() { - $this->semValue = new Node\Expr\BinaryOp\Mul($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule349() { - $this->semValue = new Node\Expr\BinaryOp\Div($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule350() { - $this->semValue = new Node\Expr\BinaryOp\Mod($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule351() { - $this->semValue = new Node\Expr\BinaryOp\ShiftLeft($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule352() { - $this->semValue = new Node\Expr\BinaryOp\ShiftRight($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule353() { - $this->semValue = new Node\Expr\BinaryOp\Pow($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule354() { - $this->semValue = new Node\Expr\UnaryPlus($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); - } - - protected function reduceRule355() { - $this->semValue = new Node\Expr\UnaryMinus($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); - } - - protected function reduceRule356() { - $this->semValue = new Node\Expr\BooleanNot($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); - } - - protected function reduceRule357() { - $this->semValue = new Node\Expr\BitwiseNot($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); - } - - protected function reduceRule358() { - $this->semValue = new Node\Expr\BinaryOp\Identical($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule359() { - $this->semValue = new Node\Expr\BinaryOp\NotIdentical($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule360() { - $this->semValue = new Node\Expr\BinaryOp\Equal($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule361() { - $this->semValue = new Node\Expr\BinaryOp\NotEqual($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule362() { - $this->semValue = new Node\Expr\BinaryOp\Smaller($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule363() { - $this->semValue = new Node\Expr\BinaryOp\SmallerOrEqual($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule364() { - $this->semValue = new Node\Expr\BinaryOp\Greater($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule365() { - $this->semValue = new Node\Expr\BinaryOp\GreaterOrEqual($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule366() { - $this->semValue = new Node\Expr\Ternary($this->semStack[$this->stackPos-(5-1)], $this->semStack[$this->stackPos-(5-3)], $this->semStack[$this->stackPos-(5-5)], $this->startAttributeStack[$this->stackPos-(5-1)] + $this->endAttributes); - } - - protected function reduceRule367() { - $this->semValue = new Node\Expr\Ternary($this->semStack[$this->stackPos-(4-1)], null, $this->semStack[$this->stackPos-(4-4)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); - } - - protected function reduceRule368() { - $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); - } - - protected function reduceRule369() { - $this->semValue = $this->semStack[$this->stackPos-(3-2)]; - } - - protected function reduceRule370() { - $this->semValue = new Node\Expr\ConstFetch($this->semStack[$this->stackPos-(1-1)], $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); - } - - protected function reduceRule371() { $this->semValue = new Node\Expr\ClassConstFetch($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } - protected function reduceRule372() { + protected function reduceRule334() { + $this->semValue = new Node\Expr\ConstFetch($this->semStack[$this->stackPos-(1-1)], $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + } + + protected function reduceRule335() { + $this->semValue = new Node\Expr\Array_($this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + } + + protected function reduceRule336() { + $this->semValue = new Node\Expr\Array_($this->semStack[$this->stackPos-(3-2)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule337() { $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } + protected function reduceRule338() { + $this->semValue = new Node\Expr\BinaryOp\BooleanOr($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule339() { + $this->semValue = new Node\Expr\BinaryOp\BooleanAnd($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule340() { + $this->semValue = new Node\Expr\BinaryOp\LogicalOr($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule341() { + $this->semValue = new Node\Expr\BinaryOp\LogicalAnd($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule342() { + $this->semValue = new Node\Expr\BinaryOp\LogicalXor($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule343() { + $this->semValue = new Node\Expr\BinaryOp\BitwiseOr($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule344() { + $this->semValue = new Node\Expr\BinaryOp\BitwiseAnd($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule345() { + $this->semValue = new Node\Expr\BinaryOp\BitwiseXor($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule346() { + $this->semValue = new Node\Expr\BinaryOp\Concat($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule347() { + $this->semValue = new Node\Expr\BinaryOp\Plus($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule348() { + $this->semValue = new Node\Expr\BinaryOp\Minus($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule349() { + $this->semValue = new Node\Expr\BinaryOp\Mul($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule350() { + $this->semValue = new Node\Expr\BinaryOp\Div($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule351() { + $this->semValue = new Node\Expr\BinaryOp\Mod($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule352() { + $this->semValue = new Node\Expr\BinaryOp\ShiftLeft($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule353() { + $this->semValue = new Node\Expr\BinaryOp\ShiftRight($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule354() { + $this->semValue = new Node\Expr\BinaryOp\Pow($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule355() { + $this->semValue = new Node\Expr\UnaryPlus($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + } + + protected function reduceRule356() { + $this->semValue = new Node\Expr\UnaryMinus($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + } + + protected function reduceRule357() { + $this->semValue = new Node\Expr\BooleanNot($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + } + + protected function reduceRule358() { + $this->semValue = new Node\Expr\BitwiseNot($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + } + + protected function reduceRule359() { + $this->semValue = new Node\Expr\BinaryOp\Identical($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule360() { + $this->semValue = new Node\Expr\BinaryOp\NotIdentical($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule361() { + $this->semValue = new Node\Expr\BinaryOp\Equal($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule362() { + $this->semValue = new Node\Expr\BinaryOp\NotEqual($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule363() { + $this->semValue = new Node\Expr\BinaryOp\Smaller($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule364() { + $this->semValue = new Node\Expr\BinaryOp\SmallerOrEqual($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule365() { + $this->semValue = new Node\Expr\BinaryOp\Greater($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule366() { + $this->semValue = new Node\Expr\BinaryOp\GreaterOrEqual($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule367() { + $this->semValue = new Node\Expr\Ternary($this->semStack[$this->stackPos-(5-1)], $this->semStack[$this->stackPos-(5-3)], $this->semStack[$this->stackPos-(5-5)], $this->startAttributeStack[$this->stackPos-(5-1)] + $this->endAttributes); + } + + protected function reduceRule368() { + $this->semValue = new Node\Expr\Ternary($this->semStack[$this->stackPos-(4-1)], null, $this->semStack[$this->stackPos-(4-4)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + } + + protected function reduceRule369() { + $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + } + + protected function reduceRule370() { + $this->semValue = $this->semStack[$this->stackPos-(3-2)]; + } + + protected function reduceRule371() { + $this->semValue = new Node\Expr\ConstFetch($this->semStack[$this->stackPos-(1-1)], $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + } + + protected function reduceRule372() { + $this->semValue = new Node\Expr\ClassConstFetch($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + protected function reduceRule373() { $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule374() { - foreach ($this->semStack[$this->stackPos-(3-2)] as &$s) { if (is_string($s)) { $s = Node\Scalar\String_::parseEscapeSequences($s, '"'); } }; $this->semValue = new Node\Scalar\Encapsed($this->semStack[$this->stackPos-(3-2)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule375() { - foreach ($this->semStack[$this->stackPos-(3-2)] as &$s) { if (is_string($s)) { $s = Node\Scalar\String_::parseEscapeSequences($s, null); } } $s = preg_replace('~(\r\n|\n|\r)$~', '', $s); if ('' === $s) array_pop($this->semStack[$this->stackPos-(3-2)]);; $this->semValue = new Node\Scalar\Encapsed($this->semStack[$this->stackPos-(3-2)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); - } - - protected function reduceRule376() { $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } + protected function reduceRule375() { + foreach ($this->semStack[$this->stackPos-(3-2)] as &$s) { if (is_string($s)) { $s = Node\Scalar\String_::parseEscapeSequences($s, '"'); } }; $this->semValue = new Node\Scalar\Encapsed($this->semStack[$this->stackPos-(3-2)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + + protected function reduceRule376() { + foreach ($this->semStack[$this->stackPos-(3-2)] as &$s) { if (is_string($s)) { $s = Node\Scalar\String_::parseEscapeSequences($s, null); } } $s = preg_replace('~(\r\n|\n|\r)$~', '', $s); if ('' === $s) array_pop($this->semStack[$this->stackPos-(3-2)]);; $this->semValue = new Node\Scalar\Encapsed($this->semStack[$this->stackPos-(3-2)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + } + protected function reduceRule377() { - $this->semValue = 'class'; + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule378() { - $this->semValue = array(); + $this->semValue = 'class'; } protected function reduceRule379() { - $this->semValue = $this->semStack[$this->stackPos-(2-1)]; + $this->semValue = array(); } protected function reduceRule380() { - $this->semValue = $this->semStack[$this->stackPos]; + $this->semValue = $this->semStack[$this->stackPos-(2-1)]; } protected function reduceRule381() { @@ -2558,23 +2562,23 @@ class Parser extends ParserAbstract } protected function reduceRule382() { - $this->semStack[$this->stackPos-(3-1)][] = $this->semStack[$this->stackPos-(3-3)]; $this->semValue = $this->semStack[$this->stackPos-(3-1)]; + $this->semValue = $this->semStack[$this->stackPos]; } protected function reduceRule383() { - $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); + $this->semStack[$this->stackPos-(3-1)][] = $this->semStack[$this->stackPos-(3-3)]; $this->semValue = $this->semStack[$this->stackPos-(3-1)]; } protected function reduceRule384() { - $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(3-3)], $this->semStack[$this->stackPos-(3-1)], false, $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); } protected function reduceRule385() { - $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(1-1)], null, false, $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(3-3)], $this->semStack[$this->stackPos-(3-1)], false, $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } protected function reduceRule386() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(1-1)], null, false, $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule387() { @@ -2590,27 +2594,27 @@ class Parser extends ParserAbstract } protected function reduceRule390() { - $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(6-2)], $this->semStack[$this->stackPos-(6-5)], $this->startAttributeStack[$this->stackPos-(6-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule391() { - $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(6-2)], $this->semStack[$this->stackPos-(6-5)], $this->startAttributeStack[$this->stackPos-(6-1)] + $this->endAttributes); } protected function reduceRule392() { - $this->semValue = new Node\Expr\PropertyFetch($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule393() { - $this->semValue = new Node\Expr\MethodCall($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->semStack[$this->stackPos-(4-4)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\PropertyFetch($this->semStack[$this->stackPos-(3-1)], $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } protected function reduceRule394() { - $this->semValue = new Node\Expr\FuncCall($this->semStack[$this->stackPos-(2-1)], $this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\MethodCall($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->semStack[$this->stackPos-(4-4)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule395() { - $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\FuncCall($this->semStack[$this->stackPos-(2-1)], $this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); } protected function reduceRule396() { @@ -2618,23 +2622,23 @@ class Parser extends ParserAbstract } protected function reduceRule397() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule398() { - $this->semValue = $this->semStack[$this->stackPos-(3-2)]; + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule399() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = $this->semStack[$this->stackPos-(3-2)]; } protected function reduceRule400() { - $this->semValue = new Node\Expr\Variable($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule401() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = new Node\Expr\Variable($this->semStack[$this->stackPos-(2-2)], $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); } protected function reduceRule402() { @@ -2642,23 +2646,23 @@ class Parser extends ParserAbstract } protected function reduceRule403() { - $this->semValue = new Node\Expr\StaticPropertyFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-4)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); - } - - protected function reduceRule404() { $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } + protected function reduceRule404() { + $this->semValue = new Node\Expr\StaticPropertyFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-4)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + } + protected function reduceRule405() { - $this->semValue = new Node\Expr\StaticPropertyFetch($this->semStack[$this->stackPos-(3-1)], substr($this->semStack[$this->stackPos-(3-3)], 1), $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule406() { - $this->semValue = new Node\Expr\StaticPropertyFetch($this->semStack[$this->stackPos-(6-1)], $this->semStack[$this->stackPos-(6-5)], $this->startAttributeStack[$this->stackPos-(6-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\StaticPropertyFetch($this->semStack[$this->stackPos-(3-1)], substr($this->semStack[$this->stackPos-(3-3)], 1), $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } protected function reduceRule407() { - $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\StaticPropertyFetch($this->semStack[$this->stackPos-(6-1)], $this->semStack[$this->stackPos-(6-5)], $this->startAttributeStack[$this->stackPos-(6-1)] + $this->endAttributes); } protected function reduceRule408() { @@ -2674,19 +2678,19 @@ class Parser extends ParserAbstract } protected function reduceRule411() { - $this->semValue = new Node\Expr\Variable(substr($this->semStack[$this->stackPos-(1-1)], 1), $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ArrayDimFetch($this->semStack[$this->stackPos-(4-1)], $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule412() { - $this->semValue = new Node\Expr\Variable($this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\Variable(substr($this->semStack[$this->stackPos-(1-1)], 1), $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule413() { - $this->semValue = null; + $this->semValue = new Node\Expr\Variable($this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule414() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = null; } protected function reduceRule415() { @@ -2694,27 +2698,27 @@ class Parser extends ParserAbstract } protected function reduceRule416() { - $this->semValue = $this->semStack[$this->stackPos-(3-2)]; + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule417() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = $this->semStack[$this->stackPos-(3-2)]; } protected function reduceRule418() { - $this->semValue = new Node\Expr\List_($this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule419() { - $this->semStack[$this->stackPos-(3-1)][] = $this->semStack[$this->stackPos-(3-3)]; $this->semValue = $this->semStack[$this->stackPos-(3-1)]; + $this->semValue = new Node\Expr\List_($this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule420() { - $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); + $this->semStack[$this->stackPos-(3-1)][] = $this->semStack[$this->stackPos-(3-3)]; $this->semValue = $this->semStack[$this->stackPos-(3-1)]; } protected function reduceRule421() { - $this->semValue = $this->semStack[$this->stackPos-(1-1)]; + $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); } protected function reduceRule422() { @@ -2722,43 +2726,43 @@ class Parser extends ParserAbstract } protected function reduceRule423() { - $this->semValue = null; + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule424() { - $this->semValue = array(); + $this->semValue = null; } protected function reduceRule425() { - $this->semValue = $this->semStack[$this->stackPos-(2-1)]; + $this->semValue = array(); } protected function reduceRule426() { - $this->semStack[$this->stackPos-(3-1)][] = $this->semStack[$this->stackPos-(3-3)]; $this->semValue = $this->semStack[$this->stackPos-(3-1)]; + $this->semValue = $this->semStack[$this->stackPos-(2-1)]; } protected function reduceRule427() { - $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); + $this->semStack[$this->stackPos-(3-1)][] = $this->semStack[$this->stackPos-(3-3)]; $this->semValue = $this->semStack[$this->stackPos-(3-1)]; } protected function reduceRule428() { - $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(3-3)], $this->semStack[$this->stackPos-(3-1)], false, $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); } protected function reduceRule429() { - $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(1-1)], null, false, $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(3-3)], $this->semStack[$this->stackPos-(3-1)], false, $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } protected function reduceRule430() { - $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(4-4)], $this->semStack[$this->stackPos-(4-1)], true, $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(1-1)], null, false, $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule431() { - $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(2-2)], null, true, $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(4-4)], $this->semStack[$this->stackPos-(4-1)], true, $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule432() { - $this->semStack[$this->stackPos-(2-1)][] = $this->semStack[$this->stackPos-(2-2)]; $this->semValue = $this->semStack[$this->stackPos-(2-1)]; + $this->semValue = new Node\Expr\ArrayItem($this->semStack[$this->stackPos-(2-2)], null, true, $this->startAttributeStack[$this->stackPos-(2-1)] + $this->endAttributes); } protected function reduceRule433() { @@ -2766,27 +2770,27 @@ class Parser extends ParserAbstract } protected function reduceRule434() { - $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); + $this->semStack[$this->stackPos-(2-1)][] = $this->semStack[$this->stackPos-(2-2)]; $this->semValue = $this->semStack[$this->stackPos-(2-1)]; } protected function reduceRule435() { - $this->semValue = array($this->semStack[$this->stackPos-(2-1)], $this->semStack[$this->stackPos-(2-2)]); + $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); } protected function reduceRule436() { - $this->semValue = new Node\Expr\Variable(substr($this->semStack[$this->stackPos-(1-1)], 1), $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$this->stackPos-(2-1)], $this->semStack[$this->stackPos-(2-2)]); } protected function reduceRule437() { - $this->semValue = new Node\Expr\ArrayDimFetch(new Node\Expr\Variable(substr($this->semStack[$this->stackPos-(4-1)], 1), $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes), $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\Variable(substr($this->semStack[$this->stackPos-(1-1)], 1), $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } protected function reduceRule438() { - $this->semValue = new Node\Expr\PropertyFetch(new Node\Expr\Variable(substr($this->semStack[$this->stackPos-(3-1)], 1), $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes), $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\ArrayDimFetch(new Node\Expr\Variable(substr($this->semStack[$this->stackPos-(4-1)], 1), $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes), $this->semStack[$this->stackPos-(4-3)], $this->startAttributeStack[$this->stackPos-(4-1)] + $this->endAttributes); } protected function reduceRule439() { - $this->semValue = new Node\Expr\Variable($this->semStack[$this->stackPos-(3-2)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\PropertyFetch(new Node\Expr\Variable(substr($this->semStack[$this->stackPos-(3-1)], 1), $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes), $this->semStack[$this->stackPos-(3-3)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } protected function reduceRule440() { @@ -2794,15 +2798,15 @@ class Parser extends ParserAbstract } protected function reduceRule441() { - $this->semValue = new Node\Expr\ArrayDimFetch(new Node\Expr\Variable($this->semStack[$this->stackPos-(6-2)], $this->startAttributeStack[$this->stackPos-(6-1)] + $this->endAttributes), $this->semStack[$this->stackPos-(6-4)], $this->startAttributeStack[$this->stackPos-(6-1)] + $this->endAttributes); + $this->semValue = new Node\Expr\Variable($this->semStack[$this->stackPos-(3-2)], $this->startAttributeStack[$this->stackPos-(3-1)] + $this->endAttributes); } protected function reduceRule442() { - $this->semValue = $this->semStack[$this->stackPos-(3-2)]; + $this->semValue = new Node\Expr\ArrayDimFetch(new Node\Expr\Variable($this->semStack[$this->stackPos-(6-2)], $this->startAttributeStack[$this->stackPos-(6-1)] + $this->endAttributes), $this->semStack[$this->stackPos-(6-4)], $this->startAttributeStack[$this->stackPos-(6-1)] + $this->endAttributes); } protected function reduceRule443() { - $this->semValue = new Node\Scalar\String_($this->semStack[$this->stackPos-(1-1)], $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$this->stackPos-(3-2)]; } protected function reduceRule444() { @@ -2810,6 +2814,10 @@ class Parser extends ParserAbstract } protected function reduceRule445() { + $this->semValue = new Node\Scalar\String_($this->semStack[$this->stackPos-(1-1)], $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); + } + + protected function reduceRule446() { $this->semValue = new Node\Expr\Variable(substr($this->semStack[$this->stackPos-(1-1)], 1), $this->startAttributeStack[$this->stackPos-(1-1)] + $this->endAttributes); } } diff --git a/lib/PhpParser/PrettyPrinter/Standard.php b/lib/PhpParser/PrettyPrinter/Standard.php index a52eefe..754cc4a 100644 --- a/lib/PhpParser/PrettyPrinter/Standard.php +++ b/lib/PhpParser/PrettyPrinter/Standard.php @@ -312,6 +312,10 @@ class Standard extends PrettyPrinterAbstract return $this->pPrefixOp('Expr_ErrorSuppress', '@', $node->expr); } + public function pExpr_YieldFrom(Expr\YieldFrom $node) { + return $this->pPrefixOp('Expr_YieldFrom', 'yield from ', $node->expr); + } + // Casts public function pExpr_Cast_Int(Cast\Int_ $node) { diff --git a/lib/PhpParser/PrettyPrinterAbstract.php b/lib/PhpParser/PrettyPrinterAbstract.php index 94578ca..ff1ace5 100644 --- a/lib/PhpParser/PrettyPrinterAbstract.php +++ b/lib/PhpParser/PrettyPrinterAbstract.php @@ -66,6 +66,7 @@ abstract class PrettyPrinterAbstract 'Expr_AssignOp_ShiftLeft' => array(160, 1), 'Expr_AssignOp_ShiftRight' => array(160, 1), 'Expr_AssignOp_Pow' => array(160, 1), + 'Expr_YieldFrom' => array(165, 1), 'Expr_BinaryOp_LogicalAnd' => array(170, -1), 'Expr_BinaryOp_LogicalXor' => array(180, -1), 'Expr_BinaryOp_LogicalOr' => array(190, -1), diff --git a/test/PhpParser/Lexer/EmulativeTest.php b/test/PhpParser/Lexer/EmulativeTest.php index 34eb65e..7743428 100644 --- a/test/PhpParser/Lexer/EmulativeTest.php +++ b/test/PhpParser/Lexer/EmulativeTest.php @@ -87,6 +87,12 @@ class EmulativeTest extends LexerTest public function provideTestLexNewFeatures() { return array( + array('yield from', array( + array(Parser::T_YIELD_FROM, 'yield from'), + )), + array("yield\r\nfrom", array( + array(Parser::T_YIELD_FROM, "yield\r\nfrom"), + )), array('...', array( array(Parser::T_ELLIPSIS, '...'), )), diff --git a/test/code/parser/stmt/function/generator.test b/test/code/parser/stmt/function/generator.test index 8b993d8..f18b4b7 100644 --- a/test/code/parser/stmt/function/generator.test +++ b/test/code/parser/stmt/function/generator.test @@ -1,4 +1,4 @@ -Generators (yield expression +Generators (yield expression) ----- func(yield $foo); new Foo(yield $foo); + + yield from $foo; + yield from $foo and yield from $bar; + yield from $foo + $bar; } ----- array( @@ -226,6 +230,33 @@ array( ) ) ) + 15: Expr_YieldFrom( + expr: Expr_Variable( + name: foo + ) + ) + 16: Expr_BinaryOp_LogicalAnd( + left: Expr_YieldFrom( + expr: Expr_Variable( + name: foo + ) + ) + right: Expr_YieldFrom( + expr: Expr_Variable( + name: bar + ) + ) + ) + 17: Expr_YieldFrom( + expr: Expr_BinaryOp_Plus( + left: Expr_Variable( + name: foo + ) + right: Expr_Variable( + name: bar + ) + ) + ) ) ) ) diff --git a/test/code/prettyPrinter/parentheses.test b/test/code/prettyPrinter/parentheses.test index f540b97..4dbe17c 100644 --- a/test/code/prettyPrinter/parentheses.test +++ b/test/code/prettyPrinter/parentheses.test @@ -33,6 +33,9 @@ $a ** $b ** $c; ($a ** $b) ** $c; -1 ** 2; +yield from $a and yield from $b; +yield from ($a and yield from $b); + // The following will currently add unnecessary parentheses, because the pretty printer is not aware that assignment // and incdec only work on variables. !$a = $b; @@ -62,6 +65,8 @@ $a + $b++; $a ** $b ** $c; ($a ** $b) ** $c; -1 ** 2; +yield from $a and yield from $b; +yield from ($a and yield from $b); // The following will currently add unnecessary parentheses, because the pretty printer is not aware that assignment // and incdec only work on variables. !($a = $b);