diff --git a/grammar/php.y b/grammar/php.y index b3905253..f82f045b 100644 --- a/grammar/php.y +++ b/grammar/php.y @@ -26,6 +26,7 @@ %left '+' '-' '.' #endif #if PHP8 +%left T_PIPE %left '.' %left T_SL T_SR %left '+' '-' @@ -1085,6 +1086,9 @@ expr: | expr T_IS_SMALLER_OR_EQUAL expr { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; } | expr '>' expr { $$ = Expr\BinaryOp\Greater [$1, $3]; } | expr T_IS_GREATER_OR_EQUAL expr { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; } +#if PHP8 + | expr T_PIPE expr { $$ = Expr\BinaryOp\Pipe[$1, $3]; } +#endif | expr T_INSTANCEOF class_name_reference { $$ = Expr\Instanceof_[$1, $3]; } | '(' expr ')' { $$ = $2; } | expr '?' expr ':' expr { $$ = Expr\Ternary[$1, $3, $5]; } diff --git a/lib/PhpParser/ConstExprEvaluator.php b/lib/PhpParser/ConstExprEvaluator.php index 73e59fc5..95267871 100644 --- a/lib/PhpParser/ConstExprEvaluator.php +++ b/lib/PhpParser/ConstExprEvaluator.php @@ -215,6 +215,9 @@ class ConstExprEvaluator { case '<': return $this->evaluate($l) < $this->evaluate($r); case '<=': return $this->evaluate($l) <= $this->evaluate($r); case '<=>': return $this->evaluate($l) <=> $this->evaluate($r); + case '|>': + $lval = $this->evaluate($l); + return $this->evaluate($r)($lval); } throw new \Exception('Should not happen'); diff --git a/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php b/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php index 948d1d12..b5616923 100644 --- a/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php +++ b/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php @@ -6,8 +6,7 @@ use PhpParser\Lexer\TokenEmulator\TokenEmulator; use PhpParser\PhpVersion; use PhpParser\Token; -class PipeOperatorEmulator extends TokenEmulator -{ +class PipeOperatorEmulator extends TokenEmulator { public function getPhpVersion(): PhpVersion { return PhpVersion::fromComponents(8, 5); } @@ -16,8 +15,7 @@ class PipeOperatorEmulator extends TokenEmulator return \strpos($code, '|>') !== false; } - public function emulate(string $code, array $tokens): array - { + public function emulate(string $code, array $tokens): array { for ($i = 0, $c = count($tokens); $i < $c; ++$i) { $token = $tokens[$i]; if ($token->text === '|' && isset($tokens[$i + 1]) && $tokens[$i + 1]->text === '>') { @@ -30,8 +28,7 @@ class PipeOperatorEmulator extends TokenEmulator return $tokens; } - public function reverseEmulate(string $code, array $tokens): array - { + public function reverseEmulate(string $code, array $tokens): array { for ($i = 0, $c = count($tokens); $i < $c; ++$i) { $token = $tokens[$i]; if ($token->id === \T_PIPE) { @@ -45,4 +42,4 @@ class PipeOperatorEmulator extends TokenEmulator } return $tokens; } -} \ No newline at end of file +} diff --git a/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php b/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php new file mode 100644 index 00000000..8dd8890b --- /dev/null +++ b/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php @@ -0,0 +1,15 @@ +'; + } + + public function getType(): string { + return 'Expr_BinaryOp_Pipe'; + } +} diff --git a/lib/PhpParser/Parser/Php8.php b/lib/PhpParser/Parser/Php8.php index 52af8946..8327f110 100644 --- a/lib/PhpParser/Parser/Php8.php +++ b/lib/PhpParser/Parser/Php8.php @@ -57,123 +57,124 @@ class Php8 extends \PhpParser\ParserAbstract public const T_SPACESHIP = 292; public const T_IS_SMALLER_OR_EQUAL = 293; public const T_IS_GREATER_OR_EQUAL = 294; - public const T_SL = 295; - public const T_SR = 296; - public const T_INSTANCEOF = 297; - public const T_INC = 298; - public const T_DEC = 299; - public const T_INT_CAST = 300; - public const T_DOUBLE_CAST = 301; - public const T_STRING_CAST = 302; - public const T_ARRAY_CAST = 303; - public const T_OBJECT_CAST = 304; - public const T_BOOL_CAST = 305; - public const T_UNSET_CAST = 306; - public const T_POW = 307; - public const T_NEW = 308; - public const T_CLONE = 309; - public const T_EXIT = 310; - public const T_IF = 311; - public const T_ELSEIF = 312; - public const T_ELSE = 313; - public const T_ENDIF = 314; - public const T_LNUMBER = 315; - public const T_DNUMBER = 316; - public const T_STRING = 317; - public const T_STRING_VARNAME = 318; - public const T_VARIABLE = 319; - public const T_NUM_STRING = 320; - public const T_INLINE_HTML = 321; - public const T_ENCAPSED_AND_WHITESPACE = 322; - public const T_CONSTANT_ENCAPSED_STRING = 323; - public const T_ECHO = 324; - public const T_DO = 325; - public const T_WHILE = 326; - public const T_ENDWHILE = 327; - public const T_FOR = 328; - public const T_ENDFOR = 329; - public const T_FOREACH = 330; - public const T_ENDFOREACH = 331; - public const T_DECLARE = 332; - public const T_ENDDECLARE = 333; - public const T_AS = 334; - public const T_SWITCH = 335; - public const T_MATCH = 336; - public const T_ENDSWITCH = 337; - public const T_CASE = 338; - public const T_DEFAULT = 339; - public const T_BREAK = 340; - public const T_CONTINUE = 341; - public const T_GOTO = 342; - public const T_FUNCTION = 343; - public const T_FN = 344; - public const T_CONST = 345; - public const T_RETURN = 346; - public const T_TRY = 347; - public const T_CATCH = 348; - public const T_FINALLY = 349; - public const T_USE = 350; - public const T_INSTEADOF = 351; - public const T_GLOBAL = 352; - public const T_STATIC = 353; - public const T_ABSTRACT = 354; - public const T_FINAL = 355; - public const T_PRIVATE = 356; - public const T_PROTECTED = 357; - public const T_PUBLIC = 358; - public const T_READONLY = 359; - public const T_PUBLIC_SET = 360; - public const T_PROTECTED_SET = 361; - public const T_PRIVATE_SET = 362; - public const T_VAR = 363; - public const T_UNSET = 364; - public const T_ISSET = 365; - public const T_EMPTY = 366; - public const T_HALT_COMPILER = 367; - public const T_CLASS = 368; - public const T_TRAIT = 369; - public const T_INTERFACE = 370; - public const T_ENUM = 371; - public const T_EXTENDS = 372; - public const T_IMPLEMENTS = 373; - public const T_OBJECT_OPERATOR = 374; - public const T_NULLSAFE_OBJECT_OPERATOR = 375; - public const T_LIST = 376; - public const T_ARRAY = 377; - public const T_CALLABLE = 378; - public const T_CLASS_C = 379; - public const T_TRAIT_C = 380; - public const T_METHOD_C = 381; - public const T_FUNC_C = 382; - public const T_PROPERTY_C = 383; - public const T_LINE = 384; - public const T_FILE = 385; - public const T_START_HEREDOC = 386; - public const T_END_HEREDOC = 387; - public const T_DOLLAR_OPEN_CURLY_BRACES = 388; - public const T_CURLY_OPEN = 389; - public const T_PAAMAYIM_NEKUDOTAYIM = 390; - public const T_NAMESPACE = 391; - public const T_NS_C = 392; - public const T_DIR = 393; - public const T_NS_SEPARATOR = 394; - public const T_ELLIPSIS = 395; - public const T_NAME_FULLY_QUALIFIED = 396; - public const T_NAME_QUALIFIED = 397; - public const T_NAME_RELATIVE = 398; - public const T_ATTRIBUTE = 399; + public const T_PIPE = 295; + public const T_SL = 296; + public const T_SR = 297; + public const T_INSTANCEOF = 298; + public const T_INC = 299; + public const T_DEC = 300; + public const T_INT_CAST = 301; + public const T_DOUBLE_CAST = 302; + public const T_STRING_CAST = 303; + public const T_ARRAY_CAST = 304; + public const T_OBJECT_CAST = 305; + public const T_BOOL_CAST = 306; + public const T_UNSET_CAST = 307; + public const T_POW = 308; + public const T_NEW = 309; + public const T_CLONE = 310; + public const T_EXIT = 311; + public const T_IF = 312; + public const T_ELSEIF = 313; + public const T_ELSE = 314; + public const T_ENDIF = 315; + public const T_LNUMBER = 316; + public const T_DNUMBER = 317; + public const T_STRING = 318; + public const T_STRING_VARNAME = 319; + public const T_VARIABLE = 320; + public const T_NUM_STRING = 321; + public const T_INLINE_HTML = 322; + public const T_ENCAPSED_AND_WHITESPACE = 323; + public const T_CONSTANT_ENCAPSED_STRING = 324; + public const T_ECHO = 325; + public const T_DO = 326; + public const T_WHILE = 327; + public const T_ENDWHILE = 328; + public const T_FOR = 329; + public const T_ENDFOR = 330; + public const T_FOREACH = 331; + public const T_ENDFOREACH = 332; + public const T_DECLARE = 333; + public const T_ENDDECLARE = 334; + public const T_AS = 335; + public const T_SWITCH = 336; + public const T_MATCH = 337; + public const T_ENDSWITCH = 338; + public const T_CASE = 339; + public const T_DEFAULT = 340; + public const T_BREAK = 341; + public const T_CONTINUE = 342; + public const T_GOTO = 343; + public const T_FUNCTION = 344; + public const T_FN = 345; + public const T_CONST = 346; + public const T_RETURN = 347; + public const T_TRY = 348; + public const T_CATCH = 349; + public const T_FINALLY = 350; + public const T_USE = 351; + public const T_INSTEADOF = 352; + public const T_GLOBAL = 353; + public const T_STATIC = 354; + public const T_ABSTRACT = 355; + public const T_FINAL = 356; + public const T_PRIVATE = 357; + public const T_PROTECTED = 358; + public const T_PUBLIC = 359; + public const T_READONLY = 360; + public const T_PUBLIC_SET = 361; + public const T_PROTECTED_SET = 362; + public const T_PRIVATE_SET = 363; + public const T_VAR = 364; + public const T_UNSET = 365; + public const T_ISSET = 366; + public const T_EMPTY = 367; + public const T_HALT_COMPILER = 368; + public const T_CLASS = 369; + public const T_TRAIT = 370; + public const T_INTERFACE = 371; + public const T_ENUM = 372; + public const T_EXTENDS = 373; + public const T_IMPLEMENTS = 374; + public const T_OBJECT_OPERATOR = 375; + public const T_NULLSAFE_OBJECT_OPERATOR = 376; + public const T_LIST = 377; + public const T_ARRAY = 378; + public const T_CALLABLE = 379; + public const T_CLASS_C = 380; + public const T_TRAIT_C = 381; + public const T_METHOD_C = 382; + public const T_FUNC_C = 383; + public const T_PROPERTY_C = 384; + public const T_LINE = 385; + public const T_FILE = 386; + public const T_START_HEREDOC = 387; + public const T_END_HEREDOC = 388; + public const T_DOLLAR_OPEN_CURLY_BRACES = 389; + public const T_CURLY_OPEN = 390; + public const T_PAAMAYIM_NEKUDOTAYIM = 391; + public const T_NAMESPACE = 392; + public const T_NS_C = 393; + public const T_DIR = 394; + public const T_NS_SEPARATOR = 395; + public const T_ELLIPSIS = 396; + public const T_NAME_FULLY_QUALIFIED = 397; + public const T_NAME_QUALIFIED = 398; + public const T_NAME_RELATIVE = 399; + public const T_ATTRIBUTE = 400; - protected int $tokenToSymbolMapSize = 400; - protected int $actionTableSize = 1638; - protected int $gotoTableSize = 674; + protected int $tokenToSymbolMapSize = 401; + protected int $actionTableSize = 1528; + protected int $gotoTableSize = 715; - protected int $invalidSymbol = 172; + protected int $invalidSymbol = 173; protected int $errorSymbol = 1; protected int $defaultAction = -32766; protected int $unexpectedTokenRule = 32767; - protected int $YY2TBLSTATE = 448; - protected int $numNonLeafStates = 763; + protected int $YY2TBLSTATE = 450; + protected int $numNonLeafStates = 765; protected array $symbolToName = array( "EOF", @@ -224,6 +225,7 @@ class Php8 extends \PhpParser\ParserAbstract "T_IS_SMALLER_OR_EQUAL", "'>'", "T_IS_GREATER_OR_EQUAL", + "T_PIPE", "'.'", "T_SL", "T_SR", @@ -351,37 +353,37 @@ class Php8 extends \PhpParser\ParserAbstract ); protected array $tokenToSymbol = array( - 0, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 56, 170, 172, 171, 55, 172, 172, - 165, 166, 53, 51, 8, 52, 48, 54, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 31, 163, - 44, 16, 46, 30, 68, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 70, 172, 164, 36, 172, 169, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 167, 35, 168, 58, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 1, 2, 3, 4, + 0, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 57, 171, 173, 172, 56, 173, 173, + 166, 167, 54, 52, 8, 53, 49, 55, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 31, 164, + 44, 16, 46, 30, 69, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 71, 173, 165, 36, 173, 170, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 168, 35, 169, 59, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 39, 40, - 41, 42, 43, 45, 47, 49, 50, 57, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 69, 71, 72, + 41, 42, 43, 45, 47, 48, 50, 51, 58, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, @@ -390,623 +392,606 @@ class Php8 extends \PhpParser\ParserAbstract 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162 + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163 ); protected array $action = array( - 130, 131, 132, 578, 133, 134, 966, 775, 776, 777, - 135, 41, 859, 498, 574, 1397,-32766,-32766,-32766, 0, - 850, 1154, 1155, 1156, 1150, 1149, 1148, 1157, 1151, 1152, - 1153,-32766,-32766,-32766, -340, 769, 768,-32766, 861,-32766, - -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, - -32767, 1017,-32766,-32766,-32766, 778, 1154, 1155, 1156, 1150, - 1149, 1148, 1157, 1151, 1152, 1153, 391, 392, 451, 267, - 53, 394, 782, 783, 784, 785, 436, 855, 437, 1334, - -581, 39, 250, 51, 296, 839, 786, 787, 788, 789, - 790, 791, 792, 793, 794, 795, 815, 579, 816, 817, - 818, 819, 807, 808, 349, 350, 810, 811, 796, 797, - 798, 800, 801, 802, 364, 842, 843, 844, 845, 846, - 580, 4, 301, -195, 803, 804, 581, 582, -194, 827, - 825, 826, 838, 822, 823, 1057, 1322, 583, 584, 821, - 585, 586, 587, 588, 329, 589, 590, -581, -581, 499, - 302, 303, 824, 591, 592, 5, 136, 856, 130, 131, - 132, 578, 133, 134, 1093, 775, 776, 777, 135, 41, - -32766, 29, 745, 1050, 1049, 1048, 1054, 1051, 1052, 1053, - -32766,-32766,-32766, 1018, 108, 109, 110, 111, 112, 887, - 279, 888, -340, 769, 768, 1066, 945,-32766,-32766,-32766, - 860,-32766, 113,-32766,-32766,-32766,-32766,-32766,-32766,-32766, - -32766, 484, 485, 778,-32766,-32766,-32766, 859,-32766, 295, - -32766,-32766,-32766,-32766,-32766, 38, 735, 267, 53, 394, - 782, 783, 784, 785,-32766,-32766, 437,-32766,-32766,-32766, - -32766, 240, 858, 839, 786, 787, 788, 789, 790, 791, - 792, 793, 794, 795, 815, 579, 816, 817, 818, 819, - 807, 808, 349, 350, 810, 811, 796, 797, 798, 800, - 801, 802, 364, 842, 843, 844, 845, 846, 580, 935, - 27, -195, 803, 804, 581, 582, -194, 827, 825, 826, - 838, 822, 823, 1295, 137, 583, 584, 821, 585, 586, - 587, 588, 141, 589, 590, 1143, 328,-32766,-32766,-32766, - 824, 591, 592, -578, 136, 632, 130, 131, 132, 578, - 133, 134, 1090, 775, 776, 777, 135, 41,-32766, 1293, - -32766,-32766,-32766,-32767,-32767,-32767,-32767, 105, 106, 107, - -32766,-32766,-32766, 1407, 391, 392, 1408, 146, 164, 1089, - 253, 769, 768, 1065, 436, 945, 1302, -382, 947, -382, - 3,-32766, 730,-32766,-32766,-32766,-32766,-32766, 945, 945, - 129, 778, 1297, 1296, 1298,-32766,-32766,-32766, 290, 296, - -578, -578, 393, 392, 1378, 267, 53, 394, 782, 783, - 784, 785, 436, -275, 437, 312, -578, 626, 736, 737, - 301, 839, 786, 787, 788, 789, 790, 791, 792, 793, - 794, 795, 815, 579, 816, 817, 818, 819, 807, 808, - 349, 350, 810, 811, 796, 797, 798, 800, 801, 802, - 364, 842, 843, 844, 845, 846, 580, 859, 935, -575, - 803, 804, 581, 582, 437, 827, 825, 826, 838, 822, - 823, 935, 935, 583, 584, 821, 585, 586, 587, 588, - 316, 589, 590, 850, 1063,-32766, 325, 160, 824, 591, - 592, 852, 149, 52, 130, 131, 132, 578, 133, 134, - 1095, 775, 776, 777, 135, 41, 970, 969, 345, 1066, - 1066, 986, 987, 239, 850,-32766, 988, 1170, 769, 768, - 346, 750,-32766, 1363, 1382, 982, -575, -575,-32766, 769, - 768, 1381, 945, 286, 295, 106, 107, 947, 319,-32766, - 78, 730, -575, 1297, 1296, 1298, 328, 1066, 1063, 778, - 947, 1003, 1129, 1066, 730, 730, 968, 473, 474, 475, - 304, 305, 740, 267, 53, 394, 782, 783, 784, 785, - 142, 854, 437, 1066, 328, -85, 384, 295, 732, 839, - 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 815, 579, 816, 817, 818, 819, 807, 808, 349, 350, - 810, 811, 796, 797, 798, 800, 801, 802, 364, 842, - 843, 844, 845, 846, 580, 935,-32766,-32766, 803, 804, - 581, 582, 379, 827, 825, 826, 838, 822, 823, 675, - 24, 583, 584, 821, 585, 586, 587, 588, 760, 589, - 590, -85, 86, 87, 88, 1128, 824, 591, 592, 758, - 149, 799, 770, 771, 772, 773, 774, 151, 775, 776, - 777, 812, 813, 40, 385, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 85, - 279, 694, 695, 328, 947, 403, 401, 10, 730, 887, - 455, 888, 113, -617, 456, -617, 778, 150, 419, 389, - 390, 395, 396, 1127, 457, 666, 667, 458, 865, 152, - 779, 780, 781, 782, 783, 784, 785, 154, 155, 848, - 156, -579, 158, 36, -87, -84, 839, 786, 787, 788, - 789, 790, 791, 792, 793, 794, 795, 815, 837, 816, - 817, 818, 819, 807, 808, 809, 836, 810, 811, 796, - 797, 798, 800, 801, 802, 841, 842, 843, 844, 845, - 846, 847, -78, -58, -57, 803, 804, 805, 806, 127, - 827, 825, 826, 838, 822, 823, 128, 138, 814, 820, - 821, 828, 829, 831, 830, 139, 832, 833, -579, -579, - 145, 159, 161, 824, 835, 834, 54, 55, 56, 530, - 57, 58, 162, -110, -579, 163, 59, 60, -110, 61, - -110, -577, -78, -73, 1063, 308, -585, 291, -110, -110, - -110, -110, -110, -110, -110, -110, -110, -110, -110, -72, - -71, -70, -69, -68, -67, -66, -65, -46, -18, 1066, - 143, 290, 279, 278, 287, 62, 63, 945, 746, 749, - 64, -308, 65, 247, 248, 66, 67, 68, 69, 70, - 71, 72, 73, 286, 31, 269, 47, 453, 531, 944, - -356, 148, 1328, 1329, 532, 962, 859, 747, -577, -577, - 1326, 45, 23, 533, -304, 534, 945, 535, 284, 536, - -576, 708, 537, 538, -577, 285, 288, 48, 49, 459, - 388, 387, 289, 50, 539, 334, -584, 704, 292, 377, - 344, 297, 1302, 298, 113, 850, 1288, 147, 859, 719, - 596, 541, 542, 543, 1161, 721, 1409, 709, 697,-32766, - 935, 676, 682, 545, 546, 664, 1314, 1315, 1316, 1317, - 1319, 1311, 1312, 300, 681, 983, 307, 13, 481, 1318, - 1313, 710, 711, 1297, 1296, 1298, 301, -576, -576, 74, - -154, -154, -154, 323, 324, 328, 509,-32766, 698, 935, - 1297, 1296, 1298, -576, 1333, -154, 286, -154, 309, -154, - 602, -154, -541, 630, 858, -583, 964, 769, 768, 306, - 315, 386, 328, 859, 0, 0, 0, 0, 0, 0, - 0, 0, 986, 987, 0, -531, 1335, 540, 0, 947, - 11, 30, 383, 730, 0, 921, 982, -110, -110, -110, - 31, 270, 0, 0, 301, 0, 43, 0, -110, -110, - 1323, -278, 859, -110, 0, 44, 1326, 870, 755, 0, - 756, 878, -110, 926, 1027, 1004, 1011, 1001, 947, 1012, - 924,-32766, 730, -154, 999, 1132, 35, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 1135, 1136, 1288, 301, 769, 768, 78, 1133, 1172, 1134, - 1140, 418, 328, -4, 945, 1350, 1367, 1400, 669, 545, - 546, -611, 1314, 1315, 1316, 1317, 1319, 1311, 1312, 1204, - 1206, -610, -609, -585, -584, 1318, 1313, 769, 768, -583, - -575,-32766, -582, -525, 1, 76, 32, 1295, 33, 42, - 324, 328, 46, 75,-32766,-32766,-32766, 79,-32766, 80, - -32766, 81,-32766, 82, 83,-32766, 84, 144, 153, 157, - -32766,-32766,-32766, 245,-32766, 330,-32766,-32766, 365, 366, - 1295, 367,-32766, 433, 31, 269, 368,-32766,-32766,-32766, - 369,-32766, 370,-32766,-32766,-32766, 859, 935,-32766, 371, - 1326, 372, 373,-32766,-32766,-32766, 374, -575, -575,-32766, - -32766, 375, 378, 450, 573,-32766, 433, 376, 37, 386, - -276, 449, -275, -575, 16, 77, 299,-32766, 17, 18, - 986, 987, 19, 422, 21, 540, 1288, 31, 270, 359, - 417, 500, 501, 544, 982, -110, -110, -110, 508, 859, - 511, 512, 513, 1326, 546, 514, 1314, 1315, 1316, 1317, - 1319, 1311, 1312, 518, 519, 520, 1327, 14, 527, 1318, - 1313, 607, 714, 1096, 1092, 1244, 947, 1324, 1094, 76, - 730, -4, 1091, 1072, 324, 328, -50, 1283, 1068, 1288, - -280, -102, 15, 20, 25, 319, 416, 621, 627, 655, - 720, 1248, 1301, 1245, 1379, 0, 322, 546, 380, 1314, - 1315, 1316, 1317, 1319, 1311, 1312, 731, 734, 738, 140, - 739, 741, 1318, 1313, 742, 743, 744, 748, 760,-32766, - 733, 761, 76, 752, 922, 1295, 1404, 324, 328, 1406, - 881, 880,-32766,-32766,-32766, 976,-32766, 1019,-32766, 1405, - -32766, 975, 973,-32766, 974, 977, 1276, 955,-32766,-32766, - -32766, 965,-32766, 953,-32766,-32766, 1171, 1167, 1295, 1121, - -32766, 433, 1009, 1010, 653,-32766,-32766,-32766, 1403,-32766, - 1361,-32766,-32766,-32766, 1376, 0,-32766, 1261, 0, 0, - 0,-32766,-32766,-32766, 945,-32766, 0,-32766,-32766, 0, - 0, 1295, 0,-32766, 433, 0, 0, 0,-32766,-32766, - -32766, 0,-32766, 0,-32766,-32766,-32766, 945, 0,-32766, - 0, 0, 0, 0,-32766,-32766,-32766, 0,-32766, 0, - -32766,-32766, 0, 0, 1295, 0,-32766, 433, 0, 0, - 0,-32766,-32766,-32766, 0,-32766, 0,-32766,-32766,-32766, - 0, 0,-32766, 0, 0, 0, 504,-32766,-32766,-32766, - 0,-32766, 0,-32766,-32766, 0, 0, 1295, 609,-32766, - 433, 0, 0, 0,-32766,-32766,-32766, 935,-32766, 0, - -32766,-32766,-32766, 0, 0,-32766, 2, 0, 0, 0, - -32766,-32766,-32766, -253, -253, -253,-32766,-32766, 0, 386, - 935, 0,-32766, 433, 0, 0, 0, 1302, 0, 0, - 986, 987, 0, 0,-32766, 540, -252, -252, -252, 0, - 0, 0, 386, 921, 982, -110, -110, -110, 0, 0, - 0, 0, 0, 986, 987, 0, 0, -16, 540, 0, - 0, 0, 0, 0, 0, 0, 921, 982, -110, -110, - -110,-32766, 0, 0, 0, 0, 947, 1295, 0, 0, - 730, -253, 0, 0,-32766,-32766,-32766, 0,-32766, 0, - -32766, 0,-32766, 0, 0,-32766, 0, 0, 0, 947, - -32766,-32766,-32766, 730, -252, 0,-32766,-32766, 859, 0, - 0, 0,-32766, 433, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,-32766, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -110, -110, 0, 0, 0, -110, 0, - 0, 0, 0, 0, 0, 0, 0, -110, 0, 0, - 0, 0, 0, 0, 0, 0,-32766, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 301, 0, - 0, 78, 0, 0, 0, 0, 0, 328 + 131, 132, 133, 580, 134, 135, 0, 777, 778, 779, + 136, 41, 861,-32766, 863, 1400, -582, 972, 971, 1298, + 576, 393, 394, 453, 1059, 852,-32766,-32766,-32766, 4, + -32766, 438,-32766, 968,-32766, 771, 770,-32766,-32766,-32766, + -32766, 506,-32766,-32766,-32766, 244, 988, 989,-32766,-32766, + -382, 990, -382, -340,-32766, 435, 780, 1381, 5,-32766, + 984,-32766,-32766,-32766,-32766,-32766,-32766, 970, 29, 298, + 268, 53, 396, 784, 785, 786, 787, 303, -195, 439, + 38, 39, 252, -582, -582, 1337, 841, 788, 789, 790, + 791, 792, 793, 794, 795, 796, 797, 817, 581, 818, + 819, 820, 821, 809, 810, 351, 352, 812, 813, 798, + 799, 800, 802, 803, 804, 366, 844, 845, 846, 847, + 848, 582,-32766,-32766,-32766, 805, 806, 583, 584, 138, + 829, 827, 828, 840, 824, 825, -194, 852, 585, 586, + 823, 587, 588, 589, 590, 3, 591, 592, 393, 394, + -32766,-32766,-32766, 826, 593, 594,-32766, 137, 438, 131, + 132, 133, 580, 134, 135, 1095, 777, 778, 779, 136, + 41,-32766,-32766,-32766,-32766,-32766,-32766, 862, 1298, 611, + 1366, 1068, 106, 107, 108,-32766,-32766,-32766, 165,-32766, + 889,-32766, 890,-32766, 771, 770,-32766, 161, -275, 1305, + 747,-32766,-32766,-32766, 303, 297, 500,-32766,-32766, 475, + 476, 477, -340,-32766, 435, 780,-32767,-32767,-32767,-32767, + 105, 106, 107, 108, 143,-32766, 395, 394, 330, 268, + 53, 396, 784, 785, 786, 787, 438, -195, 439,-32766, + -32766,-32766, 147, 860, 130, 841, 788, 789, 790, 791, + 792, 793, 794, 795, 796, 797, 817, 581, 818, 819, + 820, 821, 809, 810, 351, 352, 812, 813, 798, 799, + 800, 802, 803, 804, 366, 844, 845, 846, 847, 848, + 582, 861, 255, 857, 805, 806, 583, 584, 854, 829, + 827, 828, 840, 824, 825, -194, 314, 585, 586, 823, + 587, 588, 589, 590, 321, 591, 592, 1019,-32766,-32766, + -32766,-32766, 826, 593, 594, -85, 137,-32766, 131, 132, + 133, 580, 134, 135, 1092, 777, 778, 779, 136, 41, + -32766,-32766,-32766,-32766,-32766, 51, 152, 1298, 1172,-32766, + 27,-32766, 752, 501,-32766,-32766,-32766, 85,-32766, 762, + -32766, 330,-32766, 771, 770,-32766, 405, 628, 10, 318, + -32766,-32766,-32766, 858, 78, 1145,-32766,-32766, 856, 327, + 330,-32766,-32766, 435, 780, 734, 1065, 109, 110, 111, + 112, 113, -85, 281,-32766, 889, 347, 890, 268, 53, + 396, 784, 785, 786, 787, 114, 1068, 439, -618, 331, + -618, 1068, 304, 305, 841, 788, 789, 790, 791, 792, + 793, 794, 795, 796, 797, 817, 581, 818, 819, 820, + 821, 809, 810, 351, 352, 812, 813, 798, 799, 800, + 802, 803, 804, 366, 844, 845, 846, 847, 848, 582, + 1020, 348, -580, 805, 806, 583, 584, 381, 829, 827, + 828, 840, 824, 825, 243, 387, 585, 586, 823, 587, + 588, 589, 590, 403, 591, 592, 486, 487,-32766,-32766, + -32766, 826, 593, 594, 457, 150, -579, 131, 132, 133, + 580, 134, 135, 1097, 777, 778, 779, 136, 41,-32766, + 458,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767, + -32767,-32767,-32767,-32766,-32766,-32766, 459, 1130, 460, -580, + -580, 760, 771, 770, 1156, 1157, 1158, 1152, 1151, 1150, + 1159, 1153, 1154, 1155,-32766, -580,-32766,-32766,-32766,-32766, + -32766,-32766,-32766, 780,-32766,-32766,-32766, -586, 1385,-32766, + -32766,-32766, 867, -579, -579, 1384, -87, 268, 53, 396, + 784, 785, 786, 787, 153,-32766, 439,-32766,-32766, -579, + -32766,-32766,-32766, 841, 788, 789, 790, 791, 792, 793, + 794, 795, 796, 797, 817, 581, 818, 819, 820, 821, + 809, 810, 351, 352, 812, 813, 798, 799, 800, 802, + 803, 804, 366, 844, 845, 846, 847, 848, 582, 771, + 770, 155, 805, 806, 583, 584, 156, 829, 827, 828, + 840, 824, 825, 439, 157, 585, 586, 823, 587, 588, + 589, 590, 159, 591, 592, 36, 86, 87, 88, -78, + 826, 593, 594, -84, 150, 801, 772, 773, 774, 775, + 776, 852, 777, 778, 779, 814, 815, 40, -58, 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, -57, 281, 128, 1156, 1157, 1158, + 1152, 1151, 1150, 1159, 1153, 1154, 1155, 114, 129, 634, + 139, 780, 1300, 1299, 1301,-32766,-32766, 1129, 107, 108, + 140, 1131, 677, 24, 1325, 781, 782, 783, 784, 785, + 786, 787, 151, 421, 850, 146, -578, 1410, 696, 697, + 1411, 841, 788, 789, 790, 791, 792, 793, 794, 795, + 796, 797, 817, 839, 818, 819, 820, 821, 809, 810, + 811, 838, 812, 813, 798, 799, 800, 802, 803, 804, + 843, 844, 845, 846, 847, 848, 849, 391, 392, 160, + 805, 806, 807, 808, 1298, 829, 827, 828, 840, 824, + 825, 397, 398, 816, 822, 823, 830, 831, 833, 832, + 162, 834, 835, -578, -578, 163, 861, 164, 826, 837, + 836, 54, 55, 56, 532, 57, 58, -78, -110, -578, + 1296, 59, 60, -110, 61, -110, 947, 947, -73, -72, + 310, -585, -71, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, 1067, 947, 668, 669, -70, -69, + -68, -67, -66, -65, -46, -18, 737, 738, 144, 279, + 289, 62, 63, 1300, 1299, 1301, 64, 748, 65, 249, + 250, 66, 67, 68, 69, 70, 71, 72, 73, -577, + 31, 274, 47, 455, 533, -356, 751,-32766, 1331, 1332, + 534, 142, 861, 946, 1091, 330, 1329, 45, 23, 535, + 149, 536, 1065, 537, 293, 538, -308, 947, 539, 540, + 937, 937, 1068, 48, 49, 461, 390, 389, -304, 50, + 541, 286, 287, 292, 298, 379, 346, 1068, 294, 937, + 290, 291, 1291, 336, 299, 281, 297, 543, 544, 545, + 300, 148, 771, 770, 114, 964, -577, -577, 947, 547, + 548, 288, 1317, 1318, 1319, 1320, 1322, 1314, 1315, 302, + 706, 852, -577, 1412, 861, 1321, 1316, 1163, 598, 1300, + 1299, 1301, 303, 721, -584, 74, 31, 275, 739, 325, + 326, 330, -154, -154, -154,-32766, 683, 666, 861, 949, + 949, 937, 1329, 732, 732, 678, 699, -154, 13, -154, + 483, -154, 723, -154, 985, 311, 511,-32766, 949, 1336, + 1065,-32766, 732, 388, 1052, 1051, 1050, 1056, 1053, 1054, + 1055, 684, 700, 604, 988, 989, 1338, 966, 1291, 542, + -576, -278, 937, 1264, 632, 1068, 1068, 923, 984, -110, + -110, -110, -542, 0, 0, 547, 548, 308, 1317, 1318, + 1319, 1320, 1322, 1314, 1315, 317, 1330, 771, 770, 288, + 297, 1321, 1316, 309, -532, 0, 11, 52, 30, 385, + 949, 76, 0, 860, 732, -154, 326, 330, 35, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 303, 1326, 43,-32766, 44, -576, -576, -4, + 947, 1298, 771, 770, 757, 758, 880, 928,-32766,-32766, + -32766, 1005,-32766, -576,-32766, 732,-32766, 1029, 1006,-32766, + 1013, 1003, 1206, 1208,-32766,-32766,-32766, 1014, 926, 1001, + -32766,-32766, 1134, -576, 306, 307,-32766, 435, 1137, 1138, + -32766, 1135, 1174, 1136, 1142, 420, 1298, 872,-32766, 1353, + 386, 31, 274,-32766,-32766,-32766, 1370,-32766, 1403,-32766, + 671,-32766, 37, 861,-32766, -612, 947, 1329, -611,-32766, + -32766,-32766, -610, -586, -585,-32766,-32766, 947, -584, 77, + -583,-32766, 435, -526, 937, 1, 324, 32, 33, 42, + 46, 75, 79,-32766, 80, 81, 742, 82, 83, 84, + -576, -576, 145, 1291, 154, 158, 388, 749, 451, 247, + 332, 367, -50, 301, 368, 369, -576, 988, 989, 370, + 371, 548, 542, 1317, 1318, 1319, 1320, 1322, 1314, 1315, + 546, 984, -110, -110, -110, 372, 1321, 1316, 373, 374, + 375, 31, 275, 376, 377, 380, 76, 452, 575, 378, + 937, 326, 330, 861, 14, -276,-32766, 1329, -275, 16, + 17, 937, 1298, 949, 18, 19, 330, 732, -4,-32766, + -32766,-32766, 21,-32766, 361,-32766, 419,-32766, 502, 503, + -32766, 510, 513, 514, 515,-32766,-32766,-32766, 141, 516, + 520,-32766,-32766, 1291, 521, 522, 529,-32766, 435, 609, + 716, 1098, 1094, 947, 1247, 1327, 1096, 1093, 1074,-32766, + 1286, 548, 1070, 1317, 1318, 1319, 1320, 1322, 1314, 1315, + -280, -102, 15, 20, 25, 321, 1321, 1316, 418, 949, + 623, 629,-32766, 732, 657, 722, 76, 382, 1298, 1251, + 949, 326, 330, 947, 732,-32766,-32766,-32766, 733,-32766, + 1305,-32766, 1304,-32766, 1248, 1382,-32766, 736, 740, 741, + 743,-32766,-32766,-32766, 744,-32766, 745,-32766,-32766, 1305, + 746, 1298, 750,-32766, 435, 762, 735, 763,-32766,-32766, + -32766, 424,-32766, 754,-32766,-32766,-32766, 937, 924,-32766, + 1407, 1409, 883, 882,-32766,-32766,-32766, 978, 1021, -16, + -32766,-32766, 1408, -253, -253, -253,-32766, 435, 977, 388, + 975, 292, 976, 979, 1279, 957, 967, 955,-32766, 1173, + 988, 989, 1169, 1123, 1011, 542, 0, 937, 1012, 655, + 1406, 1364, 861, 923, 984, -110, -110, -110, 1379, 0, + 0, 0, 0, -252, -252, -252, 0, 0, 0, 388, + 0, 861, 0, 0, 0, 0, 2, 0, 0, 0, + 988, 989, 710, 0, 0, 542, 949, -110, -110, 0, + 732, -253, -110, 923, 984, -110, -110, -110, 0, 0, + 0, -110, 0, 0, 0, 0, -110, -110, 0, 0, + -32766, -110, 0, 0, 0, 0, 0, 0, 711, 0, + -110, 0, 0, 0, 0, 0, 949, 0, 0,-32766, + 732, -252, 303, 0, 0, 78, 0, 0, 0, 0, + 0, 330, 712, 713, 0, 0, 0, 0, 0, 0, + 0, 303, 0, 0, 78, 0, 0, 0, 0, 0, + 330, 1300, 1299, 1301, 0, 0, 0, 288 ); protected array $actionCheck = array( - 2, 3, 4, 5, 6, 7, 1, 9, 10, 11, - 12, 13, 82, 31, 85, 85, 9, 10, 11, 0, - 80, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 9, 10, 11, 8, 37, 38, 30, 1, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 31, 30, 9, 10, 57, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 106, 107, 108, 71, - 72, 73, 74, 75, 76, 77, 116, 80, 80, 150, - 70, 151, 152, 70, 30, 87, 88, 89, 90, 91, + 2, 3, 4, 5, 6, 7, 0, 9, 10, 11, + 12, 13, 83, 75, 1, 86, 71, 73, 74, 81, + 86, 107, 108, 109, 1, 81, 88, 89, 90, 8, + 92, 117, 94, 1, 96, 37, 38, 99, 9, 10, + 11, 103, 104, 105, 106, 14, 118, 119, 110, 111, + 107, 123, 109, 8, 116, 117, 58, 1, 8, 30, + 132, 32, 33, 34, 35, 36, 128, 123, 8, 30, + 72, 73, 74, 75, 76, 77, 78, 163, 8, 81, + 8, 152, 153, 138, 139, 151, 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, 8, 162, 8, 126, 127, 128, 129, 8, 131, - 132, 133, 134, 135, 136, 1, 1, 139, 140, 141, - 142, 143, 144, 145, 70, 147, 148, 137, 138, 167, - 137, 138, 154, 155, 156, 8, 158, 160, 2, 3, - 4, 5, 6, 7, 166, 9, 10, 11, 12, 13, - 116, 8, 167, 119, 120, 121, 122, 123, 124, 125, - 9, 10, 11, 163, 51, 52, 53, 54, 55, 106, - 57, 108, 166, 37, 38, 141, 1, 9, 10, 11, - 163, 30, 69, 32, 33, 34, 35, 36, 37, 38, - 116, 137, 138, 57, 9, 10, 11, 82, 30, 165, - 32, 33, 34, 35, 36, 8, 31, 71, 72, 73, - 74, 75, 76, 77, 140, 30, 80, 32, 33, 34, - 35, 14, 159, 87, 88, 89, 90, 91, 92, 93, + 122, 123, 9, 10, 11, 127, 128, 129, 130, 8, + 132, 133, 134, 135, 136, 137, 8, 81, 140, 141, + 142, 143, 144, 145, 146, 8, 148, 149, 107, 108, + 9, 10, 11, 155, 156, 157, 117, 159, 117, 2, + 3, 4, 5, 6, 7, 167, 9, 10, 11, 12, + 13, 30, 75, 32, 33, 34, 35, 164, 81, 82, + 1, 142, 49, 50, 51, 88, 89, 90, 14, 92, + 107, 94, 109, 96, 37, 38, 99, 16, 167, 1, + 168, 104, 105, 106, 163, 166, 31, 110, 111, 133, + 134, 135, 167, 116, 117, 58, 44, 45, 46, 47, + 48, 49, 50, 51, 168, 128, 107, 108, 172, 72, + 73, 74, 75, 76, 77, 78, 117, 167, 81, 9, + 10, 11, 8, 160, 14, 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, 83, 8, 81, 127, 128, 129, 130, 81, 132, + 133, 134, 135, 136, 137, 167, 8, 140, 141, 142, + 143, 144, 145, 146, 167, 148, 149, 31, 9, 9, + 10, 11, 155, 156, 157, 31, 159, 117, 2, 3, + 4, 5, 6, 7, 167, 9, 10, 11, 12, 13, + 30, 75, 32, 33, 34, 71, 14, 81, 164, 141, + 102, 141, 168, 168, 88, 89, 90, 168, 92, 168, + 94, 172, 96, 37, 38, 99, 107, 1, 109, 8, + 104, 105, 106, 161, 166, 127, 110, 111, 161, 8, + 172, 117, 116, 117, 58, 168, 117, 52, 53, 54, + 55, 56, 98, 58, 128, 107, 8, 109, 72, 73, + 74, 75, 76, 77, 78, 70, 142, 81, 165, 71, + 167, 142, 138, 139, 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, 84, - 101, 166, 126, 127, 128, 129, 166, 131, 132, 133, - 134, 135, 136, 80, 8, 139, 140, 141, 142, 143, - 144, 145, 167, 147, 148, 126, 171, 9, 10, 11, - 154, 155, 156, 70, 158, 52, 2, 3, 4, 5, - 6, 7, 166, 9, 10, 11, 12, 13, 30, 116, - 32, 33, 34, 44, 45, 46, 47, 48, 49, 50, - 9, 10, 11, 80, 106, 107, 83, 8, 14, 1, - 8, 37, 38, 140, 116, 1, 1, 106, 163, 108, - 8, 30, 167, 32, 33, 9, 10, 11, 1, 1, - 14, 57, 159, 160, 161, 9, 10, 11, 30, 30, - 137, 138, 106, 107, 1, 71, 72, 73, 74, 75, - 76, 77, 116, 166, 80, 8, 153, 1, 31, 31, - 162, 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, 82, 84, 70, - 126, 127, 128, 129, 80, 131, 132, 133, 134, 135, - 136, 84, 84, 139, 140, 141, 142, 143, 144, 145, - 8, 147, 148, 80, 116, 116, 8, 16, 154, 155, - 156, 80, 158, 70, 2, 3, 4, 5, 6, 7, - 166, 9, 10, 11, 12, 13, 72, 73, 8, 141, - 141, 117, 118, 97, 80, 140, 122, 163, 37, 38, - 8, 167, 116, 1, 1, 131, 137, 138, 116, 37, - 38, 8, 1, 165, 165, 49, 50, 163, 166, 9, - 165, 167, 153, 159, 160, 161, 171, 141, 116, 57, - 163, 163, 168, 141, 167, 167, 122, 132, 133, 134, - 137, 138, 31, 71, 72, 73, 74, 75, 76, 77, - 167, 160, 80, 141, 171, 31, 153, 165, 167, 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, 84, 51, 52, 126, 127, - 128, 129, 8, 131, 132, 133, 134, 135, 136, 75, - 76, 139, 140, 141, 142, 143, 144, 145, 167, 147, - 148, 97, 9, 10, 11, 163, 154, 155, 156, 167, - 158, 2, 3, 4, 5, 6, 7, 14, 9, 10, - 11, 12, 13, 30, 8, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 167, - 57, 75, 76, 171, 163, 106, 8, 108, 167, 106, - 8, 108, 69, 164, 8, 166, 57, 101, 102, 106, - 107, 106, 107, 1, 8, 111, 112, 8, 8, 14, - 71, 72, 73, 74, 75, 76, 77, 14, 14, 80, - 14, 70, 14, 14, 31, 31, 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, 16, 16, 16, 126, 127, 128, 129, 16, - 131, 132, 133, 134, 135, 136, 16, 16, 139, 140, - 141, 142, 143, 144, 145, 16, 147, 148, 137, 138, - 16, 16, 16, 154, 155, 156, 2, 3, 4, 5, - 6, 7, 16, 101, 153, 16, 12, 13, 106, 15, - 108, 70, 31, 31, 116, 113, 165, 37, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 141, - 31, 30, 57, 31, 31, 51, 52, 1, 31, 31, - 56, 35, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 165, 70, 71, 72, 73, 74, 31, - 168, 31, 78, 79, 80, 38, 82, 31, 137, 138, - 86, 87, 88, 89, 35, 91, 1, 93, 35, 95, - 70, 80, 98, 99, 153, 35, 35, 103, 104, 105, - 106, 107, 35, 109, 110, 35, 165, 77, 37, 115, - 116, 37, 1, 37, 69, 80, 122, 70, 82, 80, - 89, 127, 128, 129, 82, 92, 83, 116, 94, 85, - 84, 90, 100, 139, 140, 113, 142, 143, 144, 145, - 146, 147, 148, 149, 96, 131, 136, 97, 97, 155, - 156, 140, 141, 159, 160, 161, 162, 137, 138, 165, - 75, 76, 77, 169, 170, 171, 97, 140, 100, 84, - 159, 160, 161, 153, 150, 90, 165, 92, 114, 94, - 157, 96, 153, 157, 159, 165, 158, 37, 38, 135, - 135, 106, 171, 82, -1, -1, -1, -1, -1, -1, - -1, -1, 117, 118, -1, 153, 150, 122, -1, 163, - 153, 153, 153, 167, -1, 130, 131, 132, 133, 134, - 70, 71, -1, -1, 162, -1, 163, -1, 117, 118, - 164, 166, 82, 122, -1, 163, 86, 164, 163, -1, - 163, 163, 131, 163, 163, 163, 163, 163, 163, 163, - 163, 140, 167, 168, 163, 163, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 163, 163, 122, 162, 37, 38, 165, 163, 163, 163, - 163, 168, 171, 0, 1, 164, 164, 164, 164, 139, - 140, 165, 142, 143, 144, 145, 146, 147, 148, 59, - 60, 165, 165, 165, 165, 155, 156, 37, 38, 165, - 70, 74, 165, 165, 165, 165, 165, 80, 165, 165, - 170, 171, 165, 165, 87, 88, 89, 165, 91, 165, - 93, 165, 95, 165, 165, 98, 165, 165, 165, 165, - 103, 104, 105, 165, 74, 165, 109, 110, 165, 165, - 80, 165, 115, 116, 70, 71, 165, 87, 88, 89, - 165, 91, 165, 93, 127, 95, 82, 84, 98, 165, - 86, 165, 165, 103, 104, 105, 165, 137, 138, 109, - 110, 165, 165, 165, 165, 115, 116, 165, 167, 106, - 166, 108, 166, 153, 166, 158, 113, 127, 166, 166, - 117, 118, 166, 168, 166, 122, 122, 70, 71, 166, - 166, 166, 166, 130, 131, 132, 133, 134, 166, 82, - 166, 166, 166, 86, 140, 166, 142, 143, 144, 145, - 146, 147, 148, 166, 166, 166, 170, 154, 166, 155, - 156, 166, 166, 166, 166, 166, 163, 166, 166, 165, - 167, 168, 166, 166, 170, 171, 31, 166, 166, 122, - 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, -1, 167, 140, 167, 142, - 143, 144, 145, 146, 147, 148, 167, 167, 167, 31, - 167, 167, 155, 156, 167, 167, 167, 167, 167, 74, - 167, 167, 165, 168, 168, 80, 168, 170, 171, 168, - 168, 168, 87, 88, 89, 168, 91, 168, 93, 168, - 95, 168, 168, 98, 168, 168, 168, 168, 103, 104, - 105, 168, 74, 168, 109, 110, 168, 168, 80, 168, - 115, 116, 168, 168, 168, 87, 88, 89, 168, 91, - 168, 93, 127, 95, 168, -1, 98, 169, -1, -1, - -1, 103, 104, 105, 1, 74, -1, 109, 110, -1, - -1, 80, -1, 115, 116, -1, -1, -1, 87, 88, - 89, -1, 91, -1, 93, 127, 95, 1, -1, 98, - -1, -1, -1, -1, 103, 104, 105, -1, 74, -1, - 109, 110, -1, -1, 80, -1, 115, 116, -1, -1, - -1, 87, 88, 89, -1, 91, -1, 93, 127, 95, - -1, -1, 98, -1, -1, -1, 102, 103, 104, 105, - -1, 74, -1, 109, 110, -1, -1, 80, 81, 115, - 116, -1, -1, -1, 87, 88, 89, 84, 91, -1, - 93, 127, 95, -1, -1, 98, 165, -1, -1, -1, - 103, 104, 105, 100, 101, 102, 109, 110, -1, 106, - 84, -1, 115, 116, -1, -1, -1, 1, -1, -1, - 117, 118, -1, -1, 127, 122, 100, 101, 102, -1, - -1, -1, 106, 130, 131, 132, 133, 134, -1, -1, - -1, -1, -1, 117, 118, -1, -1, 31, 122, -1, - -1, -1, -1, -1, -1, -1, 130, 131, 132, 133, - 134, 74, -1, -1, -1, -1, 163, 80, -1, -1, - 167, 168, -1, -1, 87, 88, 89, -1, 91, -1, - 93, -1, 95, -1, -1, 98, -1, -1, -1, 163, - 103, 104, 105, 167, 168, -1, 109, 110, 82, -1, - -1, -1, 115, 116, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 117, 118, -1, -1, -1, 122, -1, - -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, - -1, -1, -1, -1, -1, -1, 140, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 162, -1, - -1, 165, -1, -1, -1, -1, -1, 171 + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 164, 8, 71, 127, 128, 129, 130, 8, 132, 133, + 134, 135, 136, 137, 98, 8, 140, 141, 142, 143, + 144, 145, 146, 8, 148, 149, 138, 139, 9, 10, + 11, 155, 156, 157, 8, 159, 71, 2, 3, 4, + 5, 6, 7, 167, 9, 10, 11, 12, 13, 30, + 8, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 9, 10, 11, 8, 164, 8, 138, + 139, 168, 37, 38, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 30, 154, 32, 33, 34, 35, + 36, 37, 38, 58, 9, 10, 11, 166, 1, 9, + 10, 11, 8, 138, 139, 8, 31, 72, 73, 74, + 75, 76, 77, 78, 14, 30, 81, 32, 33, 154, + 30, 9, 10, 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, 37, + 38, 14, 127, 128, 129, 130, 14, 132, 133, 134, + 135, 136, 137, 81, 14, 140, 141, 142, 143, 144, + 145, 146, 14, 148, 149, 14, 9, 10, 11, 16, + 155, 156, 157, 31, 159, 2, 3, 4, 5, 6, + 7, 81, 9, 10, 11, 12, 13, 30, 16, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 16, 58, 16, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 70, 16, 53, + 16, 58, 160, 161, 162, 52, 53, 1, 50, 51, + 16, 169, 76, 77, 1, 72, 73, 74, 75, 76, + 77, 78, 102, 103, 81, 16, 71, 81, 76, 77, + 84, 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, 107, 108, 16, + 127, 128, 129, 130, 81, 132, 133, 134, 135, 136, + 137, 107, 108, 140, 141, 142, 143, 144, 145, 146, + 16, 148, 149, 138, 139, 16, 83, 16, 155, 156, + 157, 2, 3, 4, 5, 6, 7, 31, 102, 154, + 117, 12, 13, 107, 15, 109, 1, 1, 31, 31, + 114, 166, 31, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 141, 1, 112, 113, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 52, 53, 160, 161, 162, 57, 31, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, + 71, 72, 73, 74, 75, 169, 31, 117, 79, 80, + 81, 168, 83, 31, 1, 172, 87, 88, 89, 90, + 31, 92, 117, 94, 37, 96, 35, 1, 99, 100, + 85, 85, 142, 104, 105, 106, 107, 108, 35, 110, + 111, 35, 35, 30, 30, 116, 117, 142, 37, 85, + 35, 35, 123, 35, 37, 58, 166, 128, 129, 130, + 37, 71, 37, 38, 70, 38, 138, 139, 1, 140, + 141, 166, 143, 144, 145, 146, 147, 148, 149, 150, + 78, 81, 154, 84, 83, 156, 157, 83, 90, 160, + 161, 162, 163, 81, 166, 166, 71, 72, 31, 170, + 171, 172, 76, 77, 78, 86, 97, 114, 83, 164, + 164, 85, 87, 168, 168, 91, 95, 91, 98, 93, + 98, 95, 93, 97, 132, 115, 98, 141, 164, 151, + 117, 117, 168, 107, 120, 121, 122, 123, 124, 125, + 126, 101, 101, 158, 118, 119, 151, 159, 123, 123, + 71, 167, 85, 170, 158, 142, 142, 131, 132, 133, + 134, 135, 154, -1, -1, 140, 141, 136, 143, 144, + 145, 146, 147, 148, 149, 136, 171, 37, 38, 166, + 166, 156, 157, 137, 154, -1, 154, 71, 154, 154, + 164, 166, -1, 160, 168, 169, 171, 172, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 163, 165, 164, 75, 164, 138, 139, 0, + 1, 81, 37, 38, 164, 164, 164, 164, 88, 89, + 90, 164, 92, 154, 94, 168, 96, 164, 164, 99, + 164, 164, 60, 61, 104, 105, 106, 164, 164, 164, + 110, 111, 164, 71, 138, 139, 116, 117, 164, 164, + 75, 164, 164, 164, 164, 169, 81, 165, 128, 165, + 154, 71, 72, 88, 89, 90, 165, 92, 165, 94, + 165, 96, 168, 83, 99, 166, 1, 87, 166, 104, + 105, 106, 166, 166, 166, 110, 111, 1, 166, 159, + 166, 116, 117, 166, 85, 166, 168, 166, 166, 166, + 166, 166, 166, 128, 166, 166, 31, 166, 166, 166, + 138, 139, 166, 123, 166, 166, 107, 31, 109, 166, + 166, 166, 31, 114, 166, 166, 154, 118, 119, 166, + 166, 141, 123, 143, 144, 145, 146, 147, 148, 149, + 131, 132, 133, 134, 135, 166, 156, 157, 166, 166, + 166, 71, 72, 166, 166, 166, 166, 166, 166, 166, + 85, 171, 172, 83, 155, 167, 75, 87, 167, 167, + 167, 85, 81, 164, 167, 167, 172, 168, 169, 88, + 89, 90, 167, 92, 167, 94, 167, 96, 167, 167, + 99, 167, 167, 167, 167, 104, 105, 106, 31, 167, + 167, 110, 111, 123, 167, 167, 167, 116, 117, 167, + 167, 167, 167, 1, 167, 167, 167, 167, 167, 128, + 167, 141, 167, 143, 144, 145, 146, 147, 148, 149, + 167, 167, 167, 167, 167, 167, 156, 157, 167, 164, + 167, 167, 75, 168, 167, 167, 166, 168, 81, 167, + 164, 171, 172, 1, 168, 88, 89, 90, 168, 92, + 1, 94, 167, 96, 167, 167, 99, 168, 168, 168, + 168, 104, 105, 106, 168, 75, 168, 110, 111, 1, + 168, 81, 168, 116, 117, 168, 168, 168, 88, 89, + 90, 169, 92, 169, 94, 128, 96, 85, 169, 99, + 169, 169, 169, 169, 104, 105, 106, 169, 169, 31, + 110, 111, 169, 101, 102, 103, 116, 117, 169, 107, + 169, 30, 169, 169, 169, 169, 169, 169, 128, 169, + 118, 119, 169, 169, 169, 123, -1, 85, 169, 169, + 169, 169, 83, 131, 132, 133, 134, 135, 169, -1, + -1, -1, -1, 101, 102, 103, -1, -1, -1, 107, + -1, 83, -1, -1, -1, -1, 166, -1, -1, -1, + 118, 119, 81, -1, -1, 123, 164, 118, 119, -1, + 168, 169, 123, 131, 132, 133, 134, 135, -1, -1, + -1, 132, -1, -1, -1, -1, 118, 119, -1, -1, + 141, 123, -1, -1, -1, -1, -1, -1, 117, -1, + 132, -1, -1, -1, -1, -1, 164, -1, -1, 141, + 168, 169, 163, -1, -1, 166, -1, -1, -1, -1, + -1, 172, 141, 142, -1, -1, -1, -1, -1, -1, + -1, 163, -1, -1, 166, -1, -1, -1, -1, -1, + 172, 160, 161, 162, -1, -1, -1, 166 ); protected array $actionBase = array( - 0, 156, -2, 314, 472, 472, 875, 1073, 1353, 1376, - 801, 135, 364, -60, 391, 367, 511, 511, 836, 511, - 195, 368, 906, 354, 354, 354, 829, 629, 629, 829, - 629, 1027, 1027, 1027, 1027, 1060, 1060, 1314, 1314, 1347, - 1248, 1215, 1437, 1437, 1437, 1437, 1437, 1281, 1437, 1437, - 1437, 1437, 1437, 1281, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 37, 20, 352, 396, 1121, - 699, 1089, 1095, 1091, 1096, 1087, 1086, 1090, 1092, 1097, - 1170, 1172, 830, 1166, 1176, 1093, 914, 1088, 1094, 905, - 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 613, 613, 613, 613, 510, 356, 44, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 940, - 940, 22, 22, 22, 331, 1127, 1074, 1127, 1127, 1127, - 1127, 1127, 1127, 1127, 1127, 298, 205, 188, 1030, 171, - 171, 7, 7, 7, 7, 7, 692, 1466, 54, 901, - 901, 289, 289, 289, 289, 179, 461, 251, 348, 355, - -40, 466, 349, 238, 688, 688, 412, 412, 392, 392, - 412, 412, 412, 133, 133, 386, 386, 386, 386, 83, - -71, 817, 383, 383, 383, 383, 817, 817, 817, 817, - 846, 1056, 817, 973, 987, 817, 817, 641, 731, 810, - 545, 545, 573, -70, -70, 573, 374, -70, 502, 263, - 94, 804, 276, 519, 94, 1012, 243, 369, 369, 403, - 369, 369, 369, 815, 583, 815, 1085, 834, 834, 796, - 772, 907, 1123, 1098, 822, 1164, 858, 1165, 1124, 334, - 405, 10, 13, 74, 771, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 811, 461, 1085, - -3, 1159, 1161, 811, 811, 811, 461, 461, 461, 461, - 461, 461, 461, 461, 797, 461, 461, 584, -3, 534, - 596, -3, 860, 461, 842, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, -18, 37, 37, 20, - 5, 5, 37, 462, 134, 5, 5, 5, 451, 5, - 37, 37, 37, 583, 775, 813, 585, 524, 816, 120, - 775, 775, 775, 26, 227, 115, 806, 839, 569, 825, - 825, 825, 832, 939, 939, 825, 826, 825, 832, 825, - 825, 939, 939, 852, 939, 286, 672, 480, 636, 676, - 939, 387, 825, 825, 825, 825, 845, 939, 113, 147, - 686, 825, 342, 339, 825, 825, 845, 844, 803, 800, - 939, 939, 939, 845, 594, 800, 800, 800, 865, 867, - 812, 802, 458, 452, 690, 217, 827, 802, 802, 825, - 668, 812, 802, 812, 802, 818, 802, 802, 802, 812, - 802, 826, 492, 802, 765, 689, 163, 802, 825, 19, - 948, 952, 683, 954, 944, 956, 1008, 958, 959, 1109, - 938, 968, 947, 961, 1009, 943, 941, 828, 743, 750, - 847, 819, 937, 835, 835, 835, 928, 929, 835, 835, - 835, 835, 835, 835, 835, 835, 743, 856, 849, 821, - 974, 751, 759, 1065, 814, 1126, 1178, 973, 948, 959, - 684, 947, 961, 943, 941, 795, 794, 792, 793, 791, - 790, 788, 789, 799, 1067, 1068, 962, 853, 764, 1028, - 976, 1125, 1099, 981, 985, 1034, 1069, 868, 1071, 1128, - 837, 1131, 1132, 863, 994, 1110, 835, 927, 916, 911, - 987, 934, 743, 912, 1072, 1076, 1018, 1011, 1035, 1036, - 1101, 841, 833, 913, 1133, 996, 997, 1001, 1111, 1113, - 862, 1022, 855, 1042, 859, 903, 1044, 1045, 1046, 1049, - 1114, 1137, 1117, 926, 1118, 870, 831, 1014, 838, 1139, - 623, 851, 857, 866, 1007, 685, 970, 1119, 1025, 1141, - 1057, 1058, 1059, 1143, 1144, 963, 871, 1023, 824, 1026, - 1016, 872, 873, 693, 864, 1077, 843, 850, 861, 694, - 696, 1146, 1147, 1148, 964, 807, 820, 874, 876, 1081, - 770, 1082, 1149, 698, 877, 1153, 1066, 766, 776, 736, - 738, 737, 779, 823, 1120, 848, 854, 840, 1006, 776, - 808, 881, 1155, 882, 897, 898, 1062, 904, 1033, 1158, + 0, 157, -2, 316, 475, 475, 886, 1079, 1282, 1322, + 1361, 703, 532, 560, 207, 806, 1145, 1145, 1156, 1145, + 805, 927, 959, 824, 824, 824, 872, 633, 633, 872, + 633, 1000, 1000, 1000, 1000, 1045, 1045, -62, -62, 97, + 1237, 1161, 256, 256, 256, 256, 256, 1270, 256, 256, + 256, 256, 256, 1270, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 13, 276, 137, 356, + 1187, 611, 1138, 1152, 1143, 1165, 1136, 1135, 1141, 1144, + 1167, 1241, 1242, 849, 1240, 1249, 1147, 975, 1137, 1148, + 958, 617, 617, 617, 617, 617, 617, 617, 617, 617, + 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, + 617, 617, 617, 617, 617, 617, 617, 299, 230, 552, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 530, 530, 530, 885, 885, 525, 300, 1150, 1060, 1150, + 1150, 1150, 1150, 1150, 1150, 1150, 1150, 141, 29, 1042, + 494, 494, 459, 459, 459, 459, 459, 696, 1348, 874, + 172, 172, 172, 172, 1329, 1329, 238, 562, -57, 873, + 133, 198, -86, 648, 39, 41, 765, 765, 259, 259, + 750, 750, 259, 259, 259, 325, 325, 254, 254, 254, + 254, 83, -66, 846, 56, 56, 56, 56, 846, 846, + 846, 846, 855, 865, 846, 1025, 1049, 846, 846, 371, + 645, 788, 643, 643, 278, -71, -71, 278, -72, -71, + 179, 636, 200, 852, 119, 233, 200, 1063, 405, 939, + 939, 976, 939, 939, 939, 893, 650, 893, 1134, 879, + 879, 803, 777, 960, 1188, 1168, 900, 1235, 901, 1239, + 1189, 174, 76, -55, 264, 328, 766, 1133, 1133, 1133, + 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1074, + 562, 1134, 202, 1233, 1234, 1074, 1074, 1074, 562, 562, + 562, 562, 562, 562, 562, 562, 804, 562, 562, 714, + 202, 626, 642, 202, 878, 562, 890, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 175, 13, + 13, 276, 32, 32, 13, 343, 23, 32, 32, 32, + 181, 32, 13, 13, 13, 650, 857, 845, 664, 284, + 856, 128, 857, 857, 857, 45, 31, 70, 851, 863, + 249, 860, 860, 860, 864, 999, 999, 860, 861, 860, + 864, 860, 860, 999, 999, 909, 999, 121, 466, 378, + 447, 482, 999, 288, 860, 860, 860, 860, 899, 999, + 21, 50, 498, 860, 274, 234, 860, 860, 899, 891, + 809, 906, 999, 999, 999, 899, 439, 906, 906, 906, + 920, 921, 853, 808, 361, 351, 534, 72, 887, 808, + 808, 860, 455, 853, 808, 853, 808, 848, 808, 808, + 808, 853, 808, 861, 433, 808, 743, 500, 60, 808, + 860, 6, 1005, 1006, 515, 1008, 1003, 1009, 1061, 1011, + 1012, 1160, 997, 1023, 1004, 1013, 1062, 1002, 1001, 842, + 660, 672, 892, 868, 994, 854, 854, 854, 987, 988, + 854, 854, 854, 854, 854, 854, 854, 854, 660, 908, + 895, 858, 1028, 674, 684, 1112, 838, 1199, 843, 1025, + 1005, 1012, 602, 1004, 1013, 1002, 1001, 802, 801, 799, + 800, 798, 797, 778, 781, 807, 1114, 1115, 1016, 910, + 699, 1085, 1029, 1194, 998, 1033, 1034, 1089, 1117, 922, + 1118, 1201, 850, 1202, 1203, 962, 1052, 1169, 854, 986, + 979, 964, 1049, 992, 660, 971, 1119, 1120, 1072, 974, + 1091, 1092, 1149, 882, 859, 973, 1204, 1053, 1054, 1057, + 1170, 1171, 912, 1073, 844, 1094, 888, 956, 1095, 1096, + 1097, 1102, 1172, 1208, 1176, 982, 1178, 923, 884, 1068, + 869, 1209, 322, 875, 876, 883, 1059, 540, 1024, 1182, + 1192, 1213, 1103, 1107, 1108, 1219, 1221, 1018, 933, 1077, + 881, 1078, 1071, 934, 936, 587, 877, 1121, 866, 867, + 871, 592, 600, 1223, 1224, 1225, 1019, 816, 862, 937, + 943, 1123, 847, 1125, 1226, 608, 944, 1227, 1113, 764, + 769, 613, 658, 632, 771, 889, 1184, 894, 870, 880, + 1058, 769, 835, 945, 1228, 948, 954, 955, 1109, 957, + 1087, 1230, 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, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 633, 633, 633, 633, 633, + 789, 789, 789, 789, 789, 789, 789, 633, 789, 789, + 789, 633, 0, 0, 633, 0, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 617, 617, 617, 617, 617, 617, 617, 617, 617, + 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, + 617, 617, 617, 617, 617, 617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 629, 629, 629, 629, 629, 784, 784, - 784, 784, 784, 784, 784, 629, 784, 784, 784, 629, - 0, 0, 629, 0, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 613, 613, - 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 613, 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, 613, - 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 213, 213, 613, 613, 613, 613, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 613, 613, - 613, 0, 613, 613, 613, 613, 613, 613, 613, 852, - 213, 213, 213, 213, 133, 133, 133, 133, -95, -95, - -95, 213, 213, 374, 133, 213, 374, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 0, 0, 213, 213, - 213, 213, -3, -70, 213, 826, 826, 826, 826, 213, - 213, 213, 213, -70, -70, 213, 414, 414, 213, 213, - 0, 0, 0, 133, 133, -3, 0, 0, -3, 0, - 0, 826, 826, 213, 374, 852, 503, 213, 334, 0, - 0, 0, 0, 0, 0, 0, -3, 826, -3, 461, - -70, -70, 461, 461, 5, 37, 503, 586, 586, 586, - 586, 37, 0, 0, 0, 0, 0, 583, 852, 852, - 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, - 826, 0, 852, 0, 852, 852, 826, 826, 826, 0, - 0, 0, 0, 0, 0, 0, 0, 939, 0, 0, - 0, 0, 0, 0, 0, 826, 0, 939, 0, 0, + 0, 0, 617, 617, 617, 617, 617, 617, 617, 617, + 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, + 617, 617, 617, 617, 617, 617, 617, 617, 683, 683, + 617, 617, 683, 683, 683, 683, 683, 683, 683, 683, + 683, 683, 617, 617, 0, 617, 617, 617, 617, 617, + 617, 617, 909, 683, 683, 325, 325, 325, 325, 683, + 683, 397, 397, 397, 683, 325, 683, -72, 325, 683, + -72, 683, 683, 683, 683, 683, 683, 683, 683, 683, + 0, 0, 683, 683, 683, 683, 202, -71, 683, 861, + 861, 861, 861, 683, 683, 683, 683, -71, -71, 683, + -56, -56, 683, 683, 0, 0, 0, 325, 325, 202, + 0, 0, 202, 0, 0, 861, 861, 683, -72, 909, + 537, 683, 174, 0, 0, 0, 0, 0, 0, 0, + 202, 861, 202, 562, -71, -71, 562, 562, 32, 13, + 537, 610, 610, 610, 610, 13, 0, 0, 0, 0, + 0, 650, 909, 909, 909, 909, 909, 909, 909, 909, + 909, 909, 909, 909, 861, 0, 909, 0, 909, 909, + 861, 861, 861, 0, 0, 0, 0, 0, 0, 0, + 0, 999, 0, 0, 0, 0, 0, 0, 0, 861, + 0, 999, 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, 826, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 835, 841, 0, - 0, 841, 0, 835, 835, 835, 0, 0, 0, 864, - 770 + 0, 861, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 854, 882, 0, 0, 882, 0, 854, 854, 854, + 0, 0, 0, 877, 847 ); protected array $actionDefault = array( 3,32767,32767,32767, 102, 102,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767, 100, - 32767, 629, 629, 629, 629,32767,32767, 257, 102,32767, - 32767, 500, 416, 416, 416,32767,32767,32767, 573, 573, - 573, 573, 573, 17,32767,32767,32767,32767,32767,32767, - 500,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767, 630, 630, 630, 630,32767,32767, 257, 102,32767, + 32767, 501, 416, 416, 416,32767,32767,32767, 574, 574, + 574, 574, 574, 17,32767,32767,32767,32767,32767,32767, + 501,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,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 36, 7, 8, 10, 11, 49, 337, 100,32767,32767, - 32767,32767,32767,32767,32767,32767, 102,32767,32767,32767, + 32767, 36, 7, 8, 10, 11, 49, 337, 100,32767, + 32767,32767,32767,32767,32767,32767,32767, 102,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767, 403, - 622,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 504, 483, 484, 486, 487, 415, 574, 628, 343, 625, - 341, 414, 146, 353, 342, 245, 261, 505, 262, 506, - 509, 510, 218, 400, 150, 151, 447, 501, 449, 499, - 503, 448, 421, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 419, 420, 502,32767, - 32767, 480, 479, 478, 445,32767,32767,32767,32767,32767, - 32767,32767,32767, 102,32767, 446, 450, 453, 418, 451, - 452, 469, 470, 467, 468, 471,32767,32767, 322,32767, - 32767, 472, 473, 474, 475, 381, 196, 379,32767,32767, - 111, 454, 322, 111,32767,32767,32767,32767,32767,32767, - 32767,32767,32767, 460, 461,32767,32767,32767,32767,32767, + 403, 623,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 102,32767,32767,32767, 100, 517, 567, 477, - 455, 456,32767, 542,32767, 102,32767, 544,32767,32767, - 32767,32767,32767,32767,32767,32767, 569, 442, 444, 537, - 623, 422, 626,32767, 530, 100, 196,32767, 543, 196, - 196,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 568,32767, 636, 530, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 110, 110, 110,32767, 196, 110, - 32767, 110, 110,32767,32767, 100, 196, 196, 196, 196, - 196, 196, 196, 196, 545, 196, 196, 191,32767, 271, - 273, 102, 591, 196, 547,32767,32767,32767,32767,32767, + 32767, 505, 484, 485, 487, 488, 415, 575, 629, 343, + 626, 341, 414, 146, 353, 342, 245, 261, 506, 262, + 507, 510, 511, 218, 400, 150, 151, 447, 502, 449, + 500, 504, 448, 421, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 419, 420, 503, + 481, 480, 479,32767,32767, 445, 446,32767,32767,32767, + 32767,32767,32767,32767,32767, 102,32767, 450, 453, 418, + 451, 452, 469, 470, 467, 468, 471,32767,32767, 322, + 472, 473, 474, 475,32767,32767, 381, 196, 379,32767, + 476,32767, 111, 454, 322, 111,32767,32767,32767,32767, + 32767,32767,32767,32767,32767, 460, 461,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767, 403,32767, - 32767,32767,32767, 530, 465, 139,32767, 532, 139, 575, - 457, 458, 459, 575, 575, 575, 318, 295,32767,32767, - 32767,32767,32767, 545, 545, 100, 100, 100, 100,32767, - 32767,32767,32767, 111, 516, 99, 99, 99, 99, 99, - 103, 101,32767,32767,32767,32767, 226,32767, 101, 101, - 99,32767, 101, 101,32767,32767, 226, 228, 215, 230, - 32767, 595, 596, 226, 101, 230, 230, 230, 250, 250, - 519, 324, 101, 99, 101, 101, 198, 324, 324,32767, - 101, 519, 324, 519, 324, 200, 324, 324, 324, 519, - 324,32767, 101, 324, 217, 99, 99, 324,32767,32767, - 32767,32767, 532,32767,32767,32767,32767,32767,32767,32767, - 225,32767,32767,32767,32767,32767,32767,32767,32767, 562, - 32767, 580, 593, 463, 464, 466, 579, 577, 488, 489, - 490, 491, 492, 493, 494, 496, 624,32767, 536,32767, - 32767,32767, 352,32767, 634,32767,32767,32767, 9, 74, - 525, 42, 43, 51, 57, 551, 552, 553, 554, 548, - 549, 555, 550,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767, 635, - 32767, 575,32767,32767,32767,32767, 462, 557, 601,32767, - 32767, 576, 627,32767,32767,32767,32767,32767,32767,32767, - 32767, 139,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 562,32767, 137,32767,32767,32767,32767,32767, - 32767,32767,32767, 558,32767,32767,32767, 575,32767,32767, - 32767,32767, 320, 317,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767, 102,32767,32767,32767, 100, 518, + 568, 478, 455, 456,32767, 543,32767, 102,32767, 545, + 32767,32767,32767,32767,32767,32767,32767,32767, 570, 442, + 444, 538, 624, 422, 627,32767, 531, 100, 196,32767, + 544, 196, 196,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767, 569,32767, 637, 531, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110,32767, + 196, 110,32767, 110, 110,32767,32767, 100, 196, 196, + 196, 196, 196, 196, 196, 196, 546, 196, 196, 191, + 32767, 271, 273, 102, 592, 196, 548,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 575,32767,32767,32767,32767,32767, 297,32767, 314,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 399, 532, 300, - 302, 303,32767,32767,32767,32767, 375,32767,32767,32767, + 403,32767,32767,32767,32767, 531, 465, 139,32767, 533, + 139, 576, 457, 458, 459, 576, 576, 576, 318, 295, + 32767,32767,32767,32767,32767, 546, 546, 100, 100, 100, + 100,32767,32767,32767,32767, 111, 517, 99, 99, 99, + 99, 99, 103, 101,32767,32767,32767,32767, 226,32767, + 101, 101, 99,32767, 101, 101,32767,32767, 226, 228, + 215, 230,32767, 596, 597, 226, 101, 230, 230, 230, + 250, 250, 520, 324, 101, 99, 101, 101, 198, 324, + 324,32767, 101, 520, 324, 520, 324, 200, 324, 324, + 324, 520, 324,32767, 101, 324, 217, 99, 99, 324, + 32767,32767,32767,32767, 533,32767,32767,32767,32767,32767, + 32767,32767, 225,32767,32767,32767,32767,32767,32767,32767, + 32767, 563,32767, 581, 594, 463, 464, 466, 580, 578, + 489, 490, 491, 492, 493, 494, 495, 497, 625,32767, + 537,32767,32767,32767, 352,32767, 635,32767,32767,32767, + 9, 74, 526, 42, 43, 51, 57, 552, 553, 554, + 555, 549, 550, 556, 551,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 153, 153, 3, 3, 355, 153, 153, 153, 355, 355, - 153, 355, 355, 355, 153, 153, 153, 153, 153, 153, - 153, 283, 186, 265, 268, 250, 250, 153, 367, 153, - 401, 401, 410 + 32767, 636,32767, 576,32767,32767,32767,32767, 462, 558, + 602,32767,32767, 577, 628,32767,32767,32767,32767,32767, + 32767,32767,32767, 139,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767, 563,32767, 137,32767,32767,32767, + 32767,32767,32767,32767,32767, 559,32767,32767,32767, 576, + 32767,32767,32767,32767, 320, 317,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767, 576,32767,32767,32767,32767,32767, 297,32767, + 314,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767, 399, + 533, 300, 302, 303,32767,32767,32767,32767, 375,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767, 153, 153, 3, 3, 355, 153, 153, 153, + 355, 355, 153, 355, 355, 355, 153, 153, 153, 153, + 153, 153, 153, 283, 186, 265, 268, 250, 250, 153, + 367, 153, 401, 401, 410 ); protected array $goto = array( - 198, 167, 198, 198, 198, 1064, 594, 715, 283, 280, - 283, 283, 629, 643, 646, 647, 648, 649, 670, 671, - 672, 726, 728, 724, 673, 674, 1098, 691, 692, 693, - 170, 170, 170, 170, 222, 199, 195, 195, 180, 182, - 217, 195, 195, 195, 195, 195, 1190, 196, 196, 196, - 196, 196, 1190, 190, 191, 192, 193, 194, 219, 217, - 220, 553, 554, 434, 555, 558, 559, 560, 561, 562, - 563, 564, 565, 171, 172, 173, 197, 174, 175, 176, - 168, 177, 178, 179, 181, 216, 218, 221, 241, 244, - 255, 256, 257, 259, 260, 261, 262, 263, 264, 265, - 271, 272, 273, 274, 281, 293, 294, 320, 321, 440, - 441, 442, 616, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 190, - 191, 192, 193, 194, 219, 200, 201, 202, 203, 242, - 183, 184, 204, 185, 205, 201, 186, 243, 200, 166, - 206, 207, 187, 208, 209, 210, 188, 211, 212, 169, - 213, 214, 215, 189, 879, 363, 568, 355, 568, 568, - 1120, 918, 875, 918, 918, 363, 363, 516, 568, 517, - 618, 566, 566, 566, 566, 523, 622, 851, 363, 363, - 483, 483, 363, 876, 1410, 1067, 1067, 700, 979, 483, - 470, 1059, 1075, 1076, 877, 996, 996, 996, 996, 572, - 1002, 470, 363, 363, 990, 997, 347, 934, 929, 930, - 943, 885, 931, 882, 932, 933, 883, 886, 1026, 937, - 890, 998, 528, 753, 889, 432, 569, 1035, 1030, 348, - 347, 601, 1126, 1122, 1123, 754, 656, 658, 472, 911, - 678, 472, 477, 608, 702, 705, 1037, 713, 722, 1033, - 729, 1239, 1294, 1064, 1294, 1294, 353, 1355, 463, 463, - 1383, 463, 463, 1064, 1294, 1023, 938, 1064, 939, 1064, - 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 495, 428, - 1064, 1064, 1064, 1064, 454, 497, 1294, 360, 360, 360, - 360, 1294, 1294, 1294, 1294, 577, 570, 1294, 640, 677, - 1294, 1294, 1375, 1375, 1375, 1375, 405, 407, 410, 619, - 623, 572, 712, 967, 967, 951, 853, 1070, 1069, 952, - 251, 251, 251, 251, 251, 438, 857, 631, 712, 617, - 1139, 712, 313, 570, 577, 603, 604, 314, 614, 620, - 727, 636, 637, 606, 872, 524, 718, 872, 1137, 28, - 249, 249, 249, 249, 246, 252, 679, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 1186, - 857, 463, 857, 463, 463, 1088, 1287, 444, 680, 1040, - 1040, 1073, 1074, 439, 341, 337, 338, 340, 611, 443, - 342, 445, 657, 642, 642, 8, 872, 9, 701, 1325, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1344, - 1344, 327, 311, 356, 357, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 685, 1366, 452, 1366, 1366, - 1097, 1099, 1102, 1341, 1341, 893, 1370, 1371, 1366, 1341, - 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 571, - 598, 571, 343, 905, 869, 571, 892, 598, 635, 408, - 476, 1377, 1377, 1377, 1377, 1146, 1174, 1147, 492, 1368, - 1369, 898, 486, 615, 487, 488, 994, 423, 723, 612, - 634, 903, 557, 557, 1401, 1402, 895, 1362, 557, 557, - 557, 557, 557, 557, 557, 557, 557, 557, 650, 652, - 654, 414, 556, 556, 906, 894, 1108, 1112, 556, 901, - 556, 556, 556, 556, 556, 556, 556, 556, 1005, 985, - 1169, 1109, 1289, 757, 1055, 1285, 415, 872, 335, 624, - 625, 1045, 493, 956, 1176, 907, 1111, 1113, 382, 1007, - 0, 995, 1364, 1364, 1111, 1042, 0, 275, 326, 1160, - 326, 326, 0, 897, 0, 683, 1021, 0, 254, 254, - 0, 891, 0, 1158, 910, 420, 421, 1393, 1393, 446, - 689, 0, 690, 1284, 425, 426, 427, 0, 703, 1290, - 1291, 429, 1277, 446, 1393, 351, 0, 0, 867, 1071, - 1071, 0, 0, 0, 0, 1277, 684, 1082, 1078, 1079, - 0, 0, 0, 0, 1396, 1396, 1270, 971, 1292, 1352, - 1353, 1271, 1274, 972, 0, 1275, 0, 0, 0, 0, + 199, 168, 199, 199, 199, 1066, 1004, 717, 446, 682, + 642, 679, 441, 343, 339, 340, 342, 613, 445, 344, + 447, 659, 479, 726, 568, 568, 568, 568, 1242, 624, + 171, 171, 171, 171, 223, 200, 196, 196, 181, 183, + 218, 196, 196, 196, 196, 196, 1192, 197, 197, 197, + 197, 197, 1192, 191, 192, 193, 194, 195, 220, 218, + 221, 555, 556, 436, 557, 560, 561, 562, 563, 564, + 565, 566, 567, 172, 173, 174, 198, 175, 176, 177, + 169, 178, 179, 180, 182, 217, 219, 222, 240, 245, + 246, 257, 258, 260, 261, 262, 263, 264, 265, 266, + 270, 271, 272, 273, 280, 283, 295, 296, 322, 323, + 442, 443, 444, 618, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 191, 192, 193, 194, 195, 220, 201, 202, 203, 204, + 241, 184, 185, 205, 186, 206, 202, 187, 242, 201, + 167, 207, 208, 188, 209, 210, 211, 189, 212, 213, + 170, 214, 215, 216, 190, 881, 285, 282, 285, 285, + 596, 1122, 253, 253, 253, 253, 253, 603, 485, 485, + 620, 756, 658, 660, 1072, 1071, 680, 485, 329, 313, + 704, 707, 1039, 715, 724, 1035, 731, 920, 877, 920, + 920, 1100, 251, 251, 251, 251, 248, 254, 1069, 1069, + 702, 981, 1396, 1396, 1061, 1077, 1078, 878, 936, 931, + 932, 945, 887, 933, 884, 934, 935, 885, 888, 1396, + 939, 892, 357, 497, 879, 891, 1042, 1042, 874, 853, + 499, 874, 913, 1128, 1124, 1125, 530, 644, 644, 1399, + 1399, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, + 1328, 619, 1141, 1297, 1066, 409, 412, 621, 625, 1297, + 1297, 940, 729, 941, 1066, 434, 1297, 526, 720, 1066, + 1139, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 874, 610, 1066, 1066, 1066, 1066, 675, 676, 1297, 693, + 694, 695, 355, 1297, 1297, 1297, 1297, 1386, 474, 1297, + 1025, 474, 1297, 1297, 1378, 1378, 1378, 1378, 349, 407, + 579, 572, 1075, 1076, 365, 969, 969, 953, 440, 859, + 633, 954, 1373, 1374, 365, 365, 362, 362, 362, 362, + 608, 350, 349, 570, 1099, 1101, 1104, 365, 365, 570, + 570, 365, 1292, 1413, 456, 681, 570, 315, 572, 579, + 605, 606, 316, 616, 622, 1188, 638, 639, 574, 614, + 636, 365, 365, 859, 28, 859, 1090, 454, 472, 518, + 8, 519, 9, 998, 998, 998, 998, 525, 703, 472, + 1347, 1347, 992, 999, 1347, 1347, 1347, 1347, 1347, 1347, + 1347, 1347, 1347, 1347, 687, 908, 896, 1110, 1114, 1293, + 1294, 345, 1280, 714, 256, 256, 871, 855, 869, 1007, + 987, 874, 1148, 1176, 1149, 1280, 1358, 465, 465, 714, + 637, 416, 714, 900, 465, 465, 897, 1369, 1295, 1355, + 1356, 1171, 997, 1369, 1369, 558, 558, 1288, 430, 558, + 1369, 558, 558, 558, 558, 558, 558, 558, 558, 1111, + 895, 573, 600, 573, 1160, 912, 1047, 573, 759, 600, + 1057, 410, 478, 1380, 1380, 1380, 1380, 417, 907, 495, + 574, 894, 909, 384, 488, 617, 489, 490, 358, 359, + 494, 1371, 1372, 905, 1115, 1162, 1404, 1405, 1009, 1365, + 1344, 1344, 0, 0, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1028, 0, 0, 1000, 0, 755, + 0, 903, 571, 1037, 1032, 0, 0, 465, 465, 465, + 465, 465, 465, 465, 465, 465, 465, 465, 465, 0, + 337, 465, 0, 465, 465, 1290, 0, 0, 1113, 996, + 425, 725, 0, 0, 1367, 1367, 1113, 559, 559, 0, + 0, 559, 559, 559, 559, 559, 559, 559, 559, 559, + 559, 631, 645, 648, 649, 650, 651, 672, 673, 674, + 728, 730, 0, 626, 627, 1273, 973, 958, 1178, 0, + 1274, 1277, 974, 0, 1278, 0, 0, 276, 328, 1044, + 0, 0, 0, 0, 328, 328, 0, 899, 0, 685, + 1023, 0, 0, 422, 423, 893, 448, 0, 691, 0, + 692, 0, 427, 428, 429, 0, 705, 1287, 0, 431, + 0, 448, 0, 353, 652, 654, 656, 1073, 1073, 0, + 0, 0, 0, 0, 686, 1084, 1080, 1081, 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, 762, 762 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 764, 764 ); protected array $gotoCheck = array( - 42, 42, 42, 42, 42, 73, 127, 73, 23, 23, - 23, 23, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 9, 86, 86, 131, 86, 86, 86, + 42, 42, 42, 42, 42, 73, 49, 73, 66, 66, + 56, 56, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 159, 9, 107, 107, 107, 107, 159, 107, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, @@ -1020,104 +1005,108 @@ class Php8 extends \PhpParser\ParserAbstract 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 15, 14, 19, 97, 19, 19, - 15, 25, 25, 25, 25, 14, 14, 163, 19, 163, - 134, 107, 107, 107, 107, 163, 107, 6, 14, 14, - 157, 157, 14, 26, 14, 89, 89, 89, 89, 157, - 19, 89, 89, 89, 27, 19, 19, 19, 19, 14, - 49, 19, 14, 14, 19, 19, 177, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 50, 15, - 15, 50, 76, 50, 15, 43, 50, 50, 50, 177, - 177, 48, 15, 15, 15, 48, 48, 48, 83, 45, - 48, 83, 159, 181, 48, 48, 48, 48, 48, 48, - 48, 159, 73, 73, 73, 73, 188, 14, 23, 23, - 190, 23, 23, 73, 73, 103, 65, 73, 65, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 84, 14, - 73, 73, 73, 73, 83, 84, 73, 24, 24, 24, - 24, 73, 73, 73, 73, 76, 76, 73, 56, 56, - 73, 73, 9, 9, 9, 9, 62, 59, 59, 59, - 59, 14, 7, 9, 9, 73, 7, 119, 119, 73, - 5, 5, 5, 5, 5, 13, 12, 13, 7, 8, - 8, 7, 76, 76, 76, 76, 76, 76, 76, 76, - 8, 76, 76, 104, 22, 8, 8, 22, 8, 76, - 5, 5, 5, 5, 5, 5, 64, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 158, - 12, 23, 12, 23, 23, 115, 14, 66, 66, 107, - 107, 120, 120, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 108, 108, 46, 22, 46, 117, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 179, - 179, 178, 178, 97, 97, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 121, 134, 113, 134, 134, - 130, 130, 130, 180, 180, 35, 187, 187, 134, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 9, - 9, 9, 29, 35, 18, 9, 35, 9, 80, 9, - 9, 134, 134, 134, 134, 149, 149, 149, 185, 185, - 185, 39, 9, 9, 9, 9, 93, 93, 93, 2, - 2, 9, 182, 182, 9, 9, 37, 134, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 85, 85, - 85, 28, 165, 165, 16, 16, 16, 16, 165, 9, - 165, 165, 165, 165, 165, 165, 165, 165, 16, 92, - 156, 133, 20, 99, 114, 169, 31, 22, 9, 17, - 17, 110, 160, 17, 17, 41, 134, 136, 141, 96, - -1, 16, 134, 134, 134, 17, -1, 24, 24, 152, - 24, 24, -1, 17, -1, 17, 17, -1, 5, 5, - -1, 17, -1, 16, 16, 82, 82, 191, 191, 118, - 82, -1, 82, 17, 82, 82, 82, -1, 82, 20, - 20, 82, 20, 118, 191, 82, -1, -1, 20, 118, - 118, -1, -1, -1, -1, 20, 118, 118, 118, 118, - -1, -1, -1, -1, 191, 191, 79, 79, 20, 20, - 20, 79, 79, 79, -1, 79, -1, -1, -1, -1, + 42, 42, 42, 42, 42, 15, 23, 23, 23, 23, + 127, 15, 5, 5, 5, 5, 5, 48, 157, 157, + 134, 48, 48, 48, 119, 119, 48, 157, 178, 178, + 48, 48, 48, 48, 48, 48, 48, 25, 25, 25, + 25, 131, 5, 5, 5, 5, 5, 5, 89, 89, + 89, 89, 191, 191, 89, 89, 89, 26, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 191, + 15, 15, 97, 84, 27, 15, 107, 107, 22, 6, + 84, 22, 45, 15, 15, 15, 76, 108, 108, 191, + 191, 108, 108, 108, 108, 108, 108, 108, 108, 108, + 108, 8, 8, 73, 73, 59, 59, 59, 59, 73, + 73, 65, 8, 65, 73, 43, 73, 8, 8, 73, + 8, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 22, 181, 73, 73, 73, 73, 86, 86, 73, 86, + 86, 86, 188, 73, 73, 73, 73, 190, 83, 73, + 103, 83, 73, 73, 9, 9, 9, 9, 177, 62, + 76, 76, 120, 120, 14, 9, 9, 73, 13, 12, + 13, 73, 187, 187, 14, 14, 24, 24, 24, 24, + 104, 177, 177, 19, 130, 130, 130, 14, 14, 19, + 19, 14, 20, 14, 83, 64, 19, 76, 76, 76, + 76, 76, 76, 76, 76, 158, 76, 76, 14, 2, + 2, 14, 14, 12, 76, 12, 115, 113, 19, 163, + 46, 163, 46, 19, 19, 19, 19, 163, 117, 19, + 179, 179, 19, 19, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 121, 16, 16, 16, 16, 20, + 20, 29, 20, 7, 5, 5, 18, 7, 20, 16, + 92, 22, 149, 149, 149, 20, 14, 23, 23, 7, + 80, 28, 7, 39, 23, 23, 37, 134, 20, 20, + 20, 156, 16, 134, 134, 165, 165, 169, 14, 165, + 134, 165, 165, 165, 165, 165, 165, 165, 165, 133, + 35, 9, 9, 9, 16, 16, 110, 9, 99, 9, + 114, 9, 9, 134, 134, 134, 134, 31, 35, 160, + 14, 35, 41, 141, 9, 9, 9, 9, 97, 97, + 185, 185, 185, 9, 136, 152, 9, 9, 96, 134, + 180, 180, -1, -1, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 50, -1, -1, 50, -1, 50, + -1, 9, 50, 50, 50, -1, -1, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, + 9, 23, -1, 23, 23, 14, -1, -1, 134, 93, + 93, 93, -1, -1, 134, 134, 134, 182, 182, -1, + -1, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, -1, 17, 17, 79, 79, 17, 17, -1, + 79, 79, 79, -1, 79, -1, -1, 24, 24, 17, + -1, -1, -1, -1, 24, 24, -1, 17, -1, 17, + 17, -1, -1, 82, 82, 17, 118, -1, 82, -1, + 82, -1, 82, 82, 82, -1, 82, 17, -1, 82, + -1, 118, -1, 82, 85, 85, 85, 118, 118, -1, + -1, -1, -1, -1, 118, 118, 118, 118, -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, 24, 24 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 24, 24 ); protected array $gotoBase = array( - 0, 0, -243, 0, 0, 329, 174, 312, 328, 10, - 0, 0, 37, -8, -135, -188, 48, 61, 152, -101, - 128, 0, 74, 2, 291, 165, 186, 197, 168, 163, - 0, 85, 0, 0, 0, 65, 0, 151, 0, 156, - 0, 90, -1, 209, 0, 220, -352, 0, -490, 189, - 213, 0, 0, 0, 0, 0, 265, 0, 0, 268, - 0, 0, 271, 0, 126, 259, 148, 0, 0, 0, - 0, 0, 0, -5, 0, 0, -44, 0, 0, 196, - 154, -354, 68, -32, -198, 13, -714, 0, 0, -89, - 0, 0, 198, 179, 0, 0, 92, -332, 0, 114, - 0, 0, 0, 237, 307, 0, 0, 150, 164, 0, - 162, 0, 0, 155, 106, 107, 0, 122, 311, 43, - 103, 140, 0, 0, 0, 0, 0, 4, 0, 0, - 437, 24, 0, 146, 169, 0, 91, 0, 0, 0, - 0, -213, 0, 0, 0, 0, 0, 0, 0, 200, - 0, 0, 101, 0, 0, 0, 171, 153, 133, -18, - 88, 0, 0, -334, 0, 273, 0, 0, 0, 157, - 0, 0, 0, 0, 0, 0, 0, -84, 98, 180, - 204, 221, 253, 0, 0, 175, 0, 63, 233, 0, - 236, 267, 0, 0 + 0, 0, -365, 0, 0, 171, 226, 403, 250, 10, + 0, 0, 28, -17, 22, -189, -63, 103, 102, 75, + -54, 0, -44, 160, 330, 191, 210, 227, 86, 110, + 0, 24, 0, 0, 0, 78, 0, 89, 0, 106, + 0, 25, -1, 249, 0, 213, -379, 0, -556, -15, + 499, 0, 0, 0, 0, 0, -33, 0, 0, 216, + 0, 0, 274, 0, 111, 254, -235, 0, 0, 0, + 0, 0, 0, -5, 0, 0, -31, 0, 0, 163, + 114, 203, 104, 26, -255, 137, -444, 0, 0, -78, + 0, 0, 87, 240, 0, 0, 39, -269, 0, 47, + 0, 0, 0, 272, 294, 0, 0, -7, 4, 0, + 85, 0, 0, 93, 40, 97, 0, 100, 347, -102, + 32, 107, 0, 0, 0, 0, 0, 168, 0, 0, + 341, 199, 0, 72, 169, 0, 36, 0, 0, 0, + 0, -280, 0, 0, 0, 0, 0, 0, 0, 146, + 0, 0, 35, 0, 0, 0, 80, 141, 117, -253, + 23, 0, 0, -134, 0, 202, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 16, -137, 147, + 257, 259, 314, 0, 0, 185, 0, -53, 269, 0, + 273, -100, 0, 0 ); protected array $gotoDefault = array( - -32768, 529, 764, 7, 765, 960, 840, 849, 593, 547, - 725, 352, 644, 435, 1360, 936, 1175, 613, 868, 1303, - 1309, 471, 871, 332, 751, 948, 919, 920, 411, 398, - 884, 409, 668, 645, 510, 904, 467, 896, 502, 899, - 466, 908, 165, 431, 526, 912, 6, 915, 575, 946, - 1000, 399, 923, 400, 696, 925, 597, 927, 928, 406, - 412, 413, 1180, 605, 641, 940, 258, 599, 941, 397, - 942, 950, 402, 404, 706, 482, 521, 515, 424, 1141, - 600, 628, 665, 460, 489, 639, 651, 638, 496, 447, - 430, 331, 984, 992, 503, 480, 1006, 354, 1014, 759, - 1188, 659, 505, 1022, 660, 1029, 1032, 548, 549, 494, - 1044, 268, 1047, 506, 1056, 26, 686, 1061, 1062, 687, - 661, 1084, 662, 688, 663, 1086, 479, 595, 1189, 478, - 1101, 1107, 468, 1110, 1349, 469, 1114, 266, 1117, 282, - 358, 381, 448, 1124, 1125, 12, 1131, 716, 717, 22, - 277, 525, 1159, 707, 1165, 276, 1168, 465, 1187, 464, - 1258, 1260, 576, 507, 1278, 317, 1281, 699, 522, 1286, - 461, 1351, 462, 550, 490, 339, 551, 1394, 310, 361, - 336, 567, 318, 362, 552, 491, 1357, 1365, 333, 34, - 1384, 1395, 610, 633 + -32768, 531, 766, 7, 767, 962, 842, 851, 595, 549, + 727, 354, 646, 437, 1363, 938, 1177, 615, 870, 1306, + 1312, 473, 873, 334, 753, 950, 921, 922, 413, 400, + 886, 411, 670, 647, 512, 906, 469, 898, 504, 901, + 468, 910, 166, 433, 528, 914, 6, 917, 577, 948, + 1002, 401, 925, 402, 698, 927, 599, 929, 930, 408, + 414, 415, 1182, 607, 643, 942, 259, 601, 943, 399, + 944, 952, 404, 406, 708, 484, 523, 517, 426, 1143, + 602, 630, 667, 462, 491, 641, 653, 640, 498, 449, + 432, 333, 986, 994, 505, 482, 1008, 356, 1016, 761, + 1190, 661, 507, 1024, 662, 1031, 1034, 550, 551, 496, + 1046, 269, 1049, 508, 1058, 26, 688, 1063, 1064, 689, + 663, 1086, 664, 690, 665, 1088, 481, 597, 1191, 480, + 1103, 1109, 470, 1112, 1352, 471, 1116, 267, 1119, 284, + 360, 383, 450, 1126, 1127, 12, 1133, 718, 719, 22, + 278, 527, 1161, 709, 1167, 277, 1170, 467, 1189, 466, + 1261, 1263, 578, 509, 1281, 319, 1284, 701, 524, 1289, + 463, 1354, 464, 552, 492, 341, 553, 1397, 312, 363, + 338, 569, 320, 364, 554, 493, 1360, 1368, 335, 34, + 1387, 1398, 612, 635 ); protected array $ruleToNonTerminal = array( @@ -1172,20 +1161,20 @@ class Php8 extends \PhpParser\ParserAbstract 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 164, 165, 165, 166, 158, 158, 163, - 163, 167, 168, 168, 169, 170, 171, 171, 171, 171, - 19, 19, 73, 73, 73, 73, 159, 159, 159, 159, - 173, 173, 162, 162, 162, 160, 160, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 180, 180, 180, - 108, 182, 182, 182, 182, 161, 161, 161, 161, 161, - 161, 161, 161, 59, 59, 176, 176, 176, 176, 176, - 183, 183, 172, 172, 172, 172, 184, 184, 184, 184, - 184, 74, 74, 66, 66, 66, 66, 134, 134, 134, - 134, 187, 186, 175, 175, 175, 175, 175, 175, 174, - 174, 174, 185, 185, 185, 185, 107, 181, 189, 189, - 188, 188, 190, 190, 190, 190, 190, 190, 190, 190, - 178, 178, 178, 178, 177, 192, 191, 191, 191, 191, - 191, 191, 191, 191, 193, 193, 193, 193 + 42, 42, 42, 42, 164, 165, 165, 166, 158, 158, + 163, 163, 167, 168, 168, 169, 170, 171, 171, 171, + 171, 19, 19, 73, 73, 73, 73, 159, 159, 159, + 159, 173, 173, 162, 162, 162, 160, 160, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 180, 180, + 180, 108, 182, 182, 182, 182, 161, 161, 161, 161, + 161, 161, 161, 161, 59, 59, 176, 176, 176, 176, + 176, 183, 183, 172, 172, 172, 172, 184, 184, 184, + 184, 184, 74, 74, 66, 66, 66, 66, 134, 134, + 134, 134, 187, 186, 175, 175, 175, 175, 175, 175, + 174, 174, 174, 185, 185, 185, 185, 107, 181, 189, + 189, 188, 188, 190, 190, 190, 190, 190, 190, 190, + 190, 178, 178, 178, 178, 177, 192, 191, 191, 191, + 191, 191, 191, 191, 191, 193, 193, 193, 193 ); protected array $ruleToLength = array( @@ -1236,24 +1225,24 @@ class Php8 extends \PhpParser\ParserAbstract 3, 2, 2, 2, 2, 3, 3, 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, 3, 3, 3, 5, 4, - 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, - 1, 2, 4, 2, 2, 8, 9, 8, 9, 9, - 10, 9, 10, 8, 3, 2, 2, 1, 1, 0, - 4, 2, 1, 3, 2, 1, 2, 2, 2, 4, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 5, 3, - 3, 4, 1, 1, 3, 1, 1, 1, 1, 1, - 3, 2, 3, 0, 1, 1, 3, 1, 1, 1, - 1, 1, 1, 3, 1, 1, 1, 4, 1, 4, - 4, 0, 1, 1, 1, 3, 3, 1, 4, 2, - 2, 1, 3, 1, 4, 3, 3, 3, 3, 1, - 3, 1, 1, 3, 1, 1, 4, 1, 1, 1, - 3, 1, 1, 2, 1, 3, 4, 3, 2, 0, - 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, - 3, 3, 6, 3, 1, 1, 2, 1 + 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, + 4, 3, 4, 4, 2, 2, 4, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, + 2, 1, 2, 4, 2, 2, 8, 9, 8, 9, + 9, 10, 9, 10, 8, 3, 2, 2, 1, 1, + 0, 4, 2, 1, 3, 2, 1, 2, 2, 2, + 4, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, + 3, 3, 4, 1, 1, 3, 1, 1, 1, 1, + 1, 3, 2, 3, 0, 1, 1, 3, 1, 1, + 1, 1, 1, 1, 3, 1, 1, 1, 4, 1, + 4, 4, 0, 1, 1, 1, 3, 3, 1, 4, + 2, 2, 1, 3, 1, 4, 3, 3, 3, 3, + 1, 3, 1, 1, 3, 1, 1, 4, 1, 1, + 1, 3, 1, 1, 2, 1, 3, 4, 3, 2, + 0, 2, 2, 1, 2, 1, 1, 1, 4, 3, + 3, 3, 3, 6, 3, 1, 1, 2, 1 ); protected function initReduceCallbacks(): void { @@ -2456,152 +2445,152 @@ class Php8 extends \PhpParser\ParserAbstract $self->semValue = new Expr\BinaryOp\GreaterOrEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, 476 => static function ($self, $stackPos) { - $self->semValue = new Expr\Instanceof_($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\BinaryOp\Pipe($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, 477 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; + $self->semValue = new Expr\Instanceof_($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, 478 => static function ($self, $stackPos) { - $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = $self->semStack[$stackPos-(3-2)]; }, 479 => static function ($self, $stackPos) { - $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(4-1)], null, $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); }, 480 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(4-1)], null, $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, 481 => static function ($self, $stackPos) { - $self->semValue = new Expr\Isset_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\BinaryOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, 482 => static function ($self, $stackPos) { - $self->semValue = new Expr\Empty_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\Isset_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, 483 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\Empty_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, 484 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, 485 => static function ($self, $stackPos) { - $self->semValue = new Expr\Eval_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, 486 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\Eval_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, 487 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, 488 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\Int_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, 489 => static function ($self, $stackPos) { + $self->semValue = new Expr\Cast\Int_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); + }, + 490 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = $self->getFloatCastKind($self->semStack[$stackPos-(2-1)]); $self->semValue = new Expr\Cast\Double($self->semStack[$stackPos-(2-2)], $attrs); }, - 490 => static function ($self, $stackPos) { + 491 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\String_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 491 => static function ($self, $stackPos) { + 492 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Array_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 492 => static function ($self, $stackPos) { + 493 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Object_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 493 => static function ($self, $stackPos) { + 494 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Bool_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 494 => static function ($self, $stackPos) { + 495 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Unset_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 495 => static function ($self, $stackPos) { + 496 => static function ($self, $stackPos) { $self->semValue = $self->createExitExpr($self->semStack[$stackPos-(2-1)], $stackPos-(2-1), $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 496 => static function ($self, $stackPos) { + 497 => static function ($self, $stackPos) { $self->semValue = new Expr\ErrorSuppress($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 497 => null, - 498 => static function ($self, $stackPos) { + 498 => null, + 499 => static function ($self, $stackPos) { $self->semValue = new Expr\ShellExec($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 499 => static function ($self, $stackPos) { + 500 => static function ($self, $stackPos) { $self->semValue = new Expr\Print_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 500 => static function ($self, $stackPos) { + 501 => static function ($self, $stackPos) { $self->semValue = new Expr\Yield_(null, null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 501 => static function ($self, $stackPos) { + 502 => static function ($self, $stackPos) { $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(2-2)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 502 => static function ($self, $stackPos) { + 503 => static function ($self, $stackPos) { $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 503 => static function ($self, $stackPos) { + 504 => static function ($self, $stackPos) { $self->semValue = new Expr\YieldFrom($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 504 => static function ($self, $stackPos) { + 505 => static function ($self, $stackPos) { $self->semValue = new Expr\Throw_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 505 => static function ($self, $stackPos) { + 506 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'returnType' => $self->semStack[$stackPos-(8-6)], 'expr' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); }, - 506 => static function ($self, $stackPos) { + 507 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 507 => static function ($self, $stackPos) { + 508 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'uses' => $self->semStack[$stackPos-(8-6)], 'returnType' => $self->semStack[$stackPos-(8-7)], 'stmts' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); }, - 508 => static function ($self, $stackPos) { + 509 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 509 => static function ($self, $stackPos) { + 510 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 510 => static function ($self, $stackPos) { + 511 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'returnType' => $self->semStack[$stackPos-(10-8)], 'expr' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); }, - 511 => static function ($self, $stackPos) { + 512 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 512 => static function ($self, $stackPos) { + 513 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'uses' => $self->semStack[$stackPos-(10-8)], 'returnType' => $self->semStack[$stackPos-(10-9)], 'stmts' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); }, - 513 => static function ($self, $stackPos) { + 514 => static function ($self, $stackPos) { $self->semValue = array(new Stmt\Class_(null, ['type' => $self->semStack[$stackPos-(8-2)], 'extends' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])), $self->semStack[$stackPos-(8-3)]); $self->checkClass($self->semValue[0], -1); }, - 514 => static function ($self, $stackPos) { + 515 => static function ($self, $stackPos) { $self->semValue = new Expr\New_($self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 515 => static function ($self, $stackPos) { + 516 => static function ($self, $stackPos) { list($class, $ctorArgs) = $self->semStack[$stackPos-(2-2)]; $self->semValue = new Expr\New_($class, $ctorArgs, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 516 => static function ($self, $stackPos) { + 517 => static function ($self, $stackPos) { $self->semValue = new Expr\New_($self->semStack[$stackPos-(2-2)], [], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 517 => null, 518 => null, - 519 => static function ($self, $stackPos) { + 519 => null, + 520 => static function ($self, $stackPos) { $self->semValue = array(); }, - 520 => static function ($self, $stackPos) { + 521 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(4-3)]; }, - 521 => null, - 522 => static function ($self, $stackPos) { + 522 => null, + 523 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(1-1)]); }, - 523 => static function ($self, $stackPos) { + 524 => static function ($self, $stackPos) { $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; }, - 524 => static function ($self, $stackPos) { + 525 => static function ($self, $stackPos) { $self->semValue = new Node\ClosureUse($self->semStack[$stackPos-(2-2)], $self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 525 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, 526 => static function ($self, $stackPos) { - $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, 527 => static function ($self, $stackPos) { $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); @@ -2610,304 +2599,307 @@ class Php8 extends \PhpParser\ParserAbstract $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, 529 => static function ($self, $stackPos) { - $self->semValue = new Expr\StaticCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, 530 => static function ($self, $stackPos) { + $self->semValue = new Expr\StaticCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + }, + 531 => static function ($self, $stackPos) { $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 531 => null, - 532 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, + 532 => null, 533 => static function ($self, $stackPos) { $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, 534 => static function ($self, $stackPos) { - $self->semValue = new Name\FullyQualified(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, 535 => static function ($self, $stackPos) { + $self->semValue = new Name\FullyQualified(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); + }, + 536 => static function ($self, $stackPos) { $self->semValue = new Name\Relative(substr($self->semStack[$stackPos-(1-1)], 10), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 536 => null, 537 => null, - 538 => static function ($self, $stackPos) { + 538 => null, + 539 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 539 => static function ($self, $stackPos) { + 540 => static function ($self, $stackPos) { $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 540 => null, 541 => null, - 542 => static function ($self, $stackPos) { - $self->semValue = array(); - }, + 542 => null, 543 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); foreach ($self->semValue as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; + $self->semValue = array(); }, 544 => static function ($self, $stackPos) { - foreach ($self->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = $self->semStack[$stackPos-(1-1)]; + $self->semValue = array($self->semStack[$stackPos-(1-1)]); foreach ($self->semValue as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; }, 545 => static function ($self, $stackPos) { + foreach ($self->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = $self->semStack[$stackPos-(1-1)]; + }, + 546 => static function ($self, $stackPos) { $self->semValue = array(); }, - 546 => null, - 547 => static function ($self, $stackPos) { + 547 => null, + 548 => static function ($self, $stackPos) { $self->semValue = new Expr\ConstFetch($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 548 => static function ($self, $stackPos) { + 549 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Line($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 549 => static function ($self, $stackPos) { + 550 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\File($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 550 => static function ($self, $stackPos) { + 551 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Dir($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 551 => static function ($self, $stackPos) { + 552 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Class_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 552 => static function ($self, $stackPos) { + 553 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Trait_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 553 => static function ($self, $stackPos) { + 554 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Method($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 554 => static function ($self, $stackPos) { + 555 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Function_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 555 => static function ($self, $stackPos) { + 556 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Namespace_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 556 => static function ($self, $stackPos) { + 557 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Property($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 557 => static function ($self, $stackPos) { + 558 => static function ($self, $stackPos) { $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 558 => static function ($self, $stackPos) { + 559 => static function ($self, $stackPos) { $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); }, - 559 => static function ($self, $stackPos) { + 560 => static function ($self, $stackPos) { $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)])), $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 560 => static function ($self, $stackPos) { + 561 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_SHORT; $self->semValue = new Expr\Array_($self->semStack[$stackPos-(3-2)], $attrs); }, - 561 => static function ($self, $stackPos) { + 562 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_LONG; $self->semValue = new Expr\Array_($self->semStack[$stackPos-(4-3)], $attrs); $self->createdArrays->attach($self->semValue); }, - 562 => static function ($self, $stackPos) { + 563 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->createdArrays->attach($self->semValue); }, - 563 => static function ($self, $stackPos) { + 564 => static function ($self, $stackPos) { $self->semValue = Scalar\String_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->supportsUnicodeEscapes()); }, - 564 => static function ($self, $stackPos) { + 565 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; foreach ($self->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = new Scalar\InterpolatedString($self->semStack[$stackPos-(3-2)], $attrs); }, - 565 => static function ($self, $stackPos) { + 566 => static function ($self, $stackPos) { $self->semValue = $self->parseLNumber($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->allowsInvalidOctals()); }, - 566 => static function ($self, $stackPos) { + 567 => static function ($self, $stackPos) { $self->semValue = Scalar\Float_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 567 => null, 568 => null, 569 => null, - 570 => static function ($self, $stackPos) { - $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); - }, + 570 => null, 571 => static function ($self, $stackPos) { - $self->semValue = $self->parseDocString($self->semStack[$stackPos-(2-1)], '', $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(2-2)], $self->tokenEndStack[$stackPos-(2-2)]), true); + $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); }, 572 => static function ($self, $stackPos) { - $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); + $self->semValue = $self->parseDocString($self->semStack[$stackPos-(2-1)], '', $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(2-2)], $self->tokenEndStack[$stackPos-(2-2)]), true); }, 573 => static function ($self, $stackPos) { + $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); + }, + 574 => static function ($self, $stackPos) { $self->semValue = null; }, - 574 => null, 575 => null, - 576 => static function ($self, $stackPos) { + 576 => null, + 577 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 577 => null, 578 => null, 579 => null, 580 => null, 581 => null, 582 => null, - 583 => static function ($self, $stackPos) { + 583 => null, + 584 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 584 => null, 585 => null, 586 => null, - 587 => static function ($self, $stackPos) { + 587 => null, + 588 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 588 => null, - 589 => static function ($self, $stackPos) { + 589 => null, + 590 => static function ($self, $stackPos) { $self->semValue = new Expr\MethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 590 => static function ($self, $stackPos) { + 591 => static function ($self, $stackPos) { $self->semValue = new Expr\NullsafeMethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 591 => static function ($self, $stackPos) { + 592 => static function ($self, $stackPos) { $self->semValue = null; }, - 592 => null, 593 => null, 594 => null, - 595 => static function ($self, $stackPos) { + 595 => null, + 596 => static function ($self, $stackPos) { $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 596 => static function ($self, $stackPos) { + 597 => static function ($self, $stackPos) { $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 597 => null, - 598 => static function ($self, $stackPos) { + 598 => null, + 599 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 599 => static function ($self, $stackPos) { + 600 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 600 => static function ($self, $stackPos) { + 601 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable(new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])), $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 601 => static function ($self, $stackPos) { + 602 => static function ($self, $stackPos) { $var = $self->semStack[$stackPos-(1-1)]->name; $self->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])) : $var; }, - 602 => static function ($self, $stackPos) { + 603 => static function ($self, $stackPos) { $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 603 => null, - 604 => static function ($self, $stackPos) { + 604 => null, + 605 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 605 => static function ($self, $stackPos) { + 606 => static function ($self, $stackPos) { $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 606 => static function ($self, $stackPos) { - $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, 607 => static function ($self, $stackPos) { - $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, 608 => static function ($self, $stackPos) { $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 609 => null, - 610 => static function ($self, $stackPos) { + 609 => static function ($self, $stackPos) { + $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + }, + 610 => null, + 611 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 611 => null, 612 => null, - 613 => static function ($self, $stackPos) { + 613 => null, + 614 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 614 => null, - 615 => static function ($self, $stackPos) { + 615 => null, + 616 => static function ($self, $stackPos) { $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 616 => static function ($self, $stackPos) { + 617 => static function ($self, $stackPos) { $self->semValue = new Expr\List_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); $self->semValue->setAttribute('kind', Expr\List_::KIND_LIST); $self->postprocessList($self->semValue); }, - 617 => static function ($self, $stackPos) { + 618 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(1-1)]; $end = count($self->semValue)-1; if ($self->semValue[$end]->value instanceof Expr\Error) array_pop($self->semValue); }, - 618 => null, - 619 => static function ($self, $stackPos) { + 619 => null, + 620 => static function ($self, $stackPos) { /* do nothing -- prevent default action of $$=$self->semStack[$1]. See $551. */ }, - 620 => static function ($self, $stackPos) { + 621 => static function ($self, $stackPos) { $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; }, - 621 => static function ($self, $stackPos) { + 622 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(1-1)]); }, - 622 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, 623 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, 624 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, 625 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, 626 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-1)], true, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 627 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, + 627 => static function ($self, $stackPos) { + $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-1)], true, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + }, 628 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), true); + $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, 629 => static function ($self, $stackPos) { + $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), true); + }, + 630 => static function ($self, $stackPos) { /* Create an Error node now to remember the position. We'll later either report an error, or convert this into a null element, depending on whether this is a creation or destructuring context. */ $attrs = $self->createEmptyElemAttributes($self->tokenPos); $self->semValue = new Node\ArrayItem(new Expr\Error($attrs), null, false, $attrs); }, - 630 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, 631 => static function ($self, $stackPos) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; }, 632 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); + $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; }, 633 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)]); + $self->semValue = array($self->semStack[$stackPos-(1-1)]); }, 634 => static function ($self, $stackPos) { - $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]); $attrs['rawValue'] = $self->semStack[$stackPos-(1-1)]; $self->semValue = new Node\InterpolatedStringPart($self->semStack[$stackPos-(1-1)], $attrs); + $self->semValue = array($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)]); }, 635 => static function ($self, $stackPos) { + $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]); $attrs['rawValue'] = $self->semStack[$stackPos-(1-1)]; $self->semValue = new Node\InterpolatedStringPart($self->semStack[$stackPos-(1-1)], $attrs); + }, + 636 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 636 => null, - 637 => static function ($self, $stackPos) { + 637 => null, + 638 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 638 => static function ($self, $stackPos) { + 639 => static function ($self, $stackPos) { $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 639 => static function ($self, $stackPos) { - $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, 640 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, 641 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, 642 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, 643 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; + $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); }, 644 => static function ($self, $stackPos) { - $self->semValue = new Scalar\String_($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = $self->semStack[$stackPos-(3-2)]; }, 645 => static function ($self, $stackPos) { - $self->semValue = $self->parseNumString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Scalar\String_($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, 646 => static function ($self, $stackPos) { + $self->semValue = $self->parseNumString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); + }, + 647 => static function ($self, $stackPos) { $self->semValue = $self->parseNumString('-' . $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 647 => null, + 648 => null, ]; } } diff --git a/lib/PhpParser/PrettyPrinter/Standard.php b/lib/PhpParser/PrettyPrinter/Standard.php index f4ca3664..3ac0757c 100644 --- a/lib/PhpParser/PrettyPrinter/Standard.php +++ b/lib/PhpParser/PrettyPrinter/Standard.php @@ -425,6 +425,10 @@ class Standard extends PrettyPrinterAbstract { return $this->pInfixOp(BinaryOp\Coalesce::class, $node->left, ' ?? ', $node->right, $precedence, $lhsPrecedence); } + protected function pExpr_BinaryOp_Pipe(BinaryOp\Pipe $node, int $precedence, int $lhsPrecedence): string { + return $this->pInfixOp(BinaryOp\Pipe::class, $node->left, ' |> ', $node->right, $precedence, $lhsPrecedence); + } + protected function pExpr_Instanceof(Expr\Instanceof_ $node, int $precedence, int $lhsPrecedence): string { return $this->pPostfixOp( Expr\Instanceof_::class, $node->expr, diff --git a/lib/PhpParser/PrettyPrinterAbstract.php b/lib/PhpParser/PrettyPrinterAbstract.php index 99ee4e9c..b4dec925 100644 --- a/lib/PhpParser/PrettyPrinterAbstract.php +++ b/lib/PhpParser/PrettyPrinterAbstract.php @@ -59,9 +59,11 @@ abstract class PrettyPrinterAbstract implements PrettyPrinter { BinaryOp\Mod::class => [ 40, 41, 40], BinaryOp\Plus::class => [ 50, 51, 50], BinaryOp\Minus::class => [ 50, 51, 50], + // FIXME: This precedence is incorrect for PHP 8. BinaryOp\Concat::class => [ 50, 51, 50], BinaryOp\ShiftLeft::class => [ 60, 61, 60], BinaryOp\ShiftRight::class => [ 60, 61, 60], + BinaryOp\Pipe::class => [ 65, 66, 65], BinaryOp\Smaller::class => [ 70, 70, 70], BinaryOp\SmallerOrEqual::class => [ 70, 70, 70], BinaryOp\Greater::class => [ 70, 70, 70], @@ -1372,7 +1374,7 @@ abstract class PrettyPrinterAbstract implements PrettyPrinter { BinaryOp\NotIdentical::class, BinaryOp\Spaceship::class, BinaryOp\BitwiseAnd::class, BinaryOp\BitwiseXor::class, BinaryOp\BitwiseOr::class, BinaryOp\BooleanAnd::class, BinaryOp\BooleanOr::class, BinaryOp\Coalesce::class, BinaryOp\LogicalAnd::class, - BinaryOp\LogicalXor::class, BinaryOp\LogicalOr::class, + BinaryOp\LogicalXor::class, BinaryOp\LogicalOr::class, BinaryOp\Pipe::class, ]; foreach ($binaryOps as $binaryOp) { $this->fixupMap[$binaryOp] = [ diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 7bd15ab9..539fd34f 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -102,6 +102,12 @@ parameters: count: 1 path: lib/PhpParser/Lexer/Emulative.php + - + message: '#^Constant T_PIPE not found\.$#' + identifier: constant.notFound + count: 2 + path: lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php + - message: '#^If condition is always false\.$#' identifier: if.alwaysFalse diff --git a/test/PhpParser/ConstExprEvaluatorTest.php b/test/PhpParser/ConstExprEvaluatorTest.php index fa0484ba..513918e5 100644 --- a/test/PhpParser/ConstExprEvaluatorTest.php +++ b/test/PhpParser/ConstExprEvaluatorTest.php @@ -8,7 +8,7 @@ use PhpParser\Node\Scalar; class ConstExprEvaluatorTest extends \PHPUnit\Framework\TestCase { /** @dataProvider provideTestEvaluate */ public function testEvaluate($exprString, $expected): void { - $parser = new Parser\Php7(new Lexer()); + $parser = (new ParserFactory())->createForNewestSupportedVersion(); $expr = $parser->parse('expr; $evaluator = new ConstExprEvaluator(); $this->assertSame($expected, $evaluator->evaluateDirectly($expr)); @@ -71,6 +71,7 @@ class ConstExprEvaluatorTest extends \PHPUnit\Framework\TestCase { ['true || (1/0)', true], ['true or (1/0)', true], ['true xor false', true], + ['"foo" |> "strlen"', 3], ]; } diff --git a/test/code/parser/expr/pipe.test b/test/code/parser/expr/pipe.test new file mode 100644 index 00000000..19b011d8 --- /dev/null +++ b/test/code/parser/expr/pipe.test @@ -0,0 +1,75 @@ +Pipe operator +----- + $b |> $c; +$a . $b |> $c . $d; +$a |> $b == $c; +$c == $a |> $b; +----- +array( + 0: Stmt_Expression( + expr: Expr_BinaryOp_Pipe( + left: Expr_BinaryOp_Pipe( + left: Expr_Variable( + name: a + ) + right: Expr_Variable( + name: b + ) + ) + right: Expr_Variable( + name: c + ) + ) + ) + 1: Stmt_Expression( + expr: Expr_BinaryOp_Pipe( + left: Expr_BinaryOp_Concat( + left: Expr_Variable( + name: a + ) + right: Expr_Variable( + name: b + ) + ) + right: Expr_BinaryOp_Concat( + left: Expr_Variable( + name: c + ) + right: Expr_Variable( + name: d + ) + ) + ) + ) + 2: Stmt_Expression( + expr: Expr_BinaryOp_Equal( + left: Expr_BinaryOp_Pipe( + left: Expr_Variable( + name: a + ) + right: Expr_Variable( + name: b + ) + ) + right: Expr_Variable( + name: c + ) + ) + ) + 3: Stmt_Expression( + expr: Expr_BinaryOp_Equal( + left: Expr_Variable( + name: c + ) + right: Expr_BinaryOp_Pipe( + left: Expr_Variable( + name: a + ) + right: Expr_Variable( + name: b + ) + ) + ) + ) +) \ No newline at end of file diff --git a/test/code/prettyPrinter/expr/pipe.test b/test/code/prettyPrinter/expr/pipe.test new file mode 100644 index 00000000..68b2195d --- /dev/null +++ b/test/code/prettyPrinter/expr/pipe.test @@ -0,0 +1,16 @@ +Pipe operator +----- + $b |> $c; +$a . $b |> $c . $d; +$a |> $b == $c; +$c == $a |> $b; +($a == $b) |> ($c == $d); +$a . ($b |> $c) . $d; +----- +$a |> $b |> $c; +$a . $b |> $c . $d; +$a |> $b == $c; +$c == $a |> $b; +($a == $b) |> ($c == $d); +$a . ($b |> $c) . $d; \ No newline at end of file