Implement generalized yield operator

And split tokens.y off, so I don't waste time debugging this again...
This commit is contained in:
Nikita Popov 2015-06-13 16:24:52 +02:00
parent 602b9807eb
commit 61e060694d
10 changed files with 1858 additions and 1718 deletions

View File

@ -24,7 +24,7 @@ if (empty($files)) {
$lexer = new PhpParser\Lexer\Emulative(array('usedAttributes' => array(
'startLine', 'endLine', 'startFilePos', 'endFilePos'
)));
$parser = new PhpParser\Parser($lexer);
$parser = new PhpParser\Parser\Php5($lexer);
$dumper = new PhpParser\NodeDumper;
$prettyPrinter = new PhpParser\PrettyPrinter\Standard;
$serializer = new PhpParser\Serializer\XML;

View File

@ -1,115 +1,7 @@
%pure_parser
%expect 6
%left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
%left ','
%left T_LOGICAL_OR
%left T_LOGICAL_XOR
%left T_LOGICAL_AND
%right T_PRINT
%right T_YIELD
%right T_YIELD_FROM
%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL
%left '?' ':'
%right T_COALESCE
%left T_BOOLEAN_OR
%left T_BOOLEAN_AND
%left '|'
%left '^'
%left '&'
%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL T_SPACESHIP
%nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL
%left T_SL T_SR
%left '+' '-' '.'
%left '*' '/' '%'
%right '!'
%nonassoc T_INSTANCEOF
%right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
%right T_POW
%right '['
%nonassoc T_NEW T_CLONE
%token T_EXIT
%token T_IF
%left T_ELSEIF
%left T_ELSE
%left T_ENDIF
%token T_LNUMBER
%token T_DNUMBER
%token T_STRING
%token T_STRING_VARNAME
%token T_VARIABLE
%token T_NUM_STRING
%token T_INLINE_HTML
%token T_CHARACTER
%token T_BAD_CHARACTER
%token T_ENCAPSED_AND_WHITESPACE
%token T_CONSTANT_ENCAPSED_STRING
%token T_ECHO
%token T_DO
%token T_WHILE
%token T_ENDWHILE
%token T_FOR
%token T_ENDFOR
%token T_FOREACH
%token T_ENDFOREACH
%token T_DECLARE
%token T_ENDDECLARE
%token T_AS
%token T_SWITCH
%token T_ENDSWITCH
%token T_CASE
%token T_DEFAULT
%token T_BREAK
%token T_CONTINUE
%token T_GOTO
%token T_FUNCTION
%token T_CONST
%token T_RETURN
%token T_TRY
%token T_CATCH
%token T_FINALLY
%token T_THROW
%token T_USE
%token T_INSTEADOF
%token T_GLOBAL
%right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC
%token T_VAR
%token T_UNSET
%token T_ISSET
%token T_EMPTY
%token T_HALT_COMPILER
%token T_CLASS
%token T_TRAIT
%token T_INTERFACE
%token T_EXTENDS
%token T_IMPLEMENTS
%token T_OBJECT_OPERATOR
%token T_DOUBLE_ARROW
%token T_LIST
%token T_ARRAY
%token T_CALLABLE
%token T_CLASS_C
%token T_TRAIT_C
%token T_METHOD_C
%token T_FUNC_C
%token T_LINE
%token T_FILE
%token T_COMMENT
%token T_DOC_COMMENT
%token T_OPEN_TAG
%token T_OPEN_TAG_WITH_ECHO
%token T_CLOSE_TAG
%token T_WHITESPACE
%token T_START_HEREDOC
%token T_END_HEREDOC
%token T_DOLLAR_OPEN_CURLY_BRACES
%token T_CURLY_OPEN
%token T_PAAMAYIM_NEKUDOTAYIM
%token T_NAMESPACE
%token T_NS_C
%token T_DIR
%token T_NS_SEPARATOR
%token T_ELLIPSIS
%tokens
%{
use PhpParser\Error;

View File

@ -1,115 +1,7 @@
%pure_parser
%expect 2
%left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
%left ','
%left T_LOGICAL_OR
%left T_LOGICAL_XOR
%left T_LOGICAL_AND
%right T_PRINT
%right T_YIELD
%right T_YIELD_FROM
%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL
%left '?' ':'
%right T_COALESCE
%left T_BOOLEAN_OR
%left T_BOOLEAN_AND
%left '|'
%left '^'
%left '&'
%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL T_SPACESHIP
%nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL
%left T_SL T_SR
%left '+' '-' '.'
%left '*' '/' '%'
%right '!'
%nonassoc T_INSTANCEOF
%right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
%right T_POW
%right '['
%nonassoc T_NEW T_CLONE
%token T_EXIT
%token T_IF
%left T_ELSEIF
%left T_ELSE
%left T_ENDIF
%token T_LNUMBER
%token T_DNUMBER
%token T_STRING
%token T_STRING_VARNAME
%token T_VARIABLE
%token T_NUM_STRING
%token T_INLINE_HTML
%token T_CHARACTER
%token T_BAD_CHARACTER
%token T_ENCAPSED_AND_WHITESPACE
%token T_CONSTANT_ENCAPSED_STRING
%token T_ECHO
%token T_DO
%token T_WHILE
%token T_ENDWHILE
%token T_FOR
%token T_ENDFOR
%token T_FOREACH
%token T_ENDFOREACH
%token T_DECLARE
%token T_ENDDECLARE
%token T_AS
%token T_SWITCH
%token T_ENDSWITCH
%token T_CASE
%token T_DEFAULT
%token T_BREAK
%token T_CONTINUE
%token T_GOTO
%token T_FUNCTION
%token T_CONST
%token T_RETURN
%token T_TRY
%token T_CATCH
%token T_FINALLY
%token T_THROW
%token T_USE
%token T_INSTEADOF
%token T_GLOBAL
%right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC
%token T_VAR
%token T_UNSET
%token T_ISSET
%token T_EMPTY
%token T_HALT_COMPILER
%token T_CLASS
%token T_TRAIT
%token T_INTERFACE
%token T_EXTENDS
%token T_IMPLEMENTS
%token T_OBJECT_OPERATOR
%token T_DOUBLE_ARROW
%token T_LIST
%token T_ARRAY
%token T_CALLABLE
%token T_CLASS_C
%token T_TRAIT_C
%token T_METHOD_C
%token T_FUNC_C
%token T_LINE
%token T_FILE
%token T_COMMENT
%token T_DOC_COMMENT
%token T_OPEN_TAG
%token T_OPEN_TAG_WITH_ECHO
%token T_CLOSE_TAG
%token T_WHITESPACE
%token T_START_HEREDOC
%token T_END_HEREDOC
%token T_DOLLAR_OPEN_CURLY_BRACES
%token T_CURLY_OPEN
%token T_PAAMAYIM_NEKUDOTAYIM
%token T_NAMESPACE
%token T_NS_C
%token T_DIR
%token T_NS_SEPARATOR
%token T_ELLIPSIS
%tokens
%{
use PhpParser\Error;
@ -242,19 +134,18 @@ inner_statement:
statement:
'{' inner_statement_list '}' { $$ = $2; }
| T_IF parentheses_expr statement elseif_list else_single
{ $$ = Stmt\If_[$2, ['stmts' => toArray($3), 'elseifs' => $4, 'else' => $5]]; }
| T_IF parentheses_expr ':' inner_statement_list new_elseif_list new_else_single T_ENDIF ';'
{ $$ = Stmt\If_[$2, ['stmts' => $4, 'elseifs' => $5, 'else' => $6]]; }
| T_WHILE parentheses_expr while_statement { $$ = Stmt\While_[$2, $3]; }
| T_DO statement T_WHILE parentheses_expr ';' { $$ = Stmt\Do_ [$4, toArray($2)]; }
| T_IF '(' expr ')' statement elseif_list else_single
{ $$ = Stmt\If_[$3, ['stmts' => toArray($5), 'elseifs' => $6, 'else' => $7]]; }
| T_IF '(' expr ')' ':' inner_statement_list new_elseif_list new_else_single T_ENDIF ';'
{ $$ = Stmt\If_[$3, ['stmts' => $6, 'elseifs' => $7, 'else' => $8]]; }
| T_WHILE '(' expr ')' while_statement { $$ = Stmt\While_[$3, $5]; }
| T_DO statement T_WHILE '(' expr ')' ';' { $$ = Stmt\Do_ [$5, toArray($2)]; }
| T_FOR '(' for_expr ';' for_expr ';' for_expr ')' for_statement
{ $$ = Stmt\For_[['init' => $3, 'cond' => $5, 'loop' => $7, 'stmts' => $9]]; }
| T_SWITCH parentheses_expr switch_case_list { $$ = Stmt\Switch_[$2, $3]; }
| T_SWITCH '(' expr ')' switch_case_list { $$ = Stmt\Switch_[$3, $5]; }
| T_BREAK optional_expr ';' { $$ = Stmt\Break_[$2]; }
| T_CONTINUE optional_expr ';' { $$ = Stmt\Continue_[$2]; }
| T_RETURN optional_expr ';' { $$ = Stmt\Return_[$2]; }
| yield_expr ';' { $$ = $1; }
| T_GLOBAL global_var_list ';' { $$ = Stmt\Global_[$2]; }
| T_STATIC static_var_list ';' { $$ = Stmt\Static_[$2]; }
| T_ECHO expr_list ';' { $$ = Stmt\Echo_[$2]; }
@ -402,7 +293,7 @@ elseif_list:
;
elseif:
T_ELSEIF parentheses_expr statement { $$ = Stmt\ElseIf_[$2, toArray($3)]; }
T_ELSEIF '(' expr ')' statement { $$ = Stmt\ElseIf_[$3, toArray($5)]; }
;
new_elseif_list:
@ -411,7 +302,7 @@ new_elseif_list:
;
new_elseif:
T_ELSEIF parentheses_expr ':' inner_statement_list { $$ = Stmt\ElseIf_[$2, $4]; }
T_ELSEIF '(' expr ')' ':' inner_statement_list { $$ = Stmt\ElseIf_[$3, $6]; }
;
else_single:
@ -466,7 +357,6 @@ optional_return_type:
argument_list:
'(' ')' { $$ = array(); }
| '(' non_empty_argument_list ')' { $$ = $2; }
| '(' yield_expr ')' { $$ = array(Node\Arg[$2, false, false]); }
;
non_empty_argument_list:
@ -647,7 +537,7 @@ expr:
| expr '>' expr { $$ = Expr\BinaryOp\Greater [$1, $3]; }
| expr T_IS_GREATER_OR_EQUAL expr { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; }
| expr T_INSTANCEOF class_name_reference { $$ = Expr\Instanceof_[$1, $3]; }
| parentheses_expr { $$ = $1; }
| '(' expr ')' { $$ = $2; }
| expr '?' expr ':' expr { $$ = Expr\Ternary[$1, $3, $5]; }
| expr '?' ':' expr { $$ = Expr\Ternary[$1, null, $4]; }
| expr T_COALESCE expr { $$ = Expr\BinaryOp\Coalesce[$1, $3]; }
@ -655,7 +545,7 @@ expr:
| T_EMPTY '(' expr ')' { $$ = Expr\Empty_[$3]; }
| T_INCLUDE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE]; }
| T_INCLUDE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE_ONCE]; }
| T_EVAL parentheses_expr { $$ = Expr\Eval_[$2]; }
| T_EVAL '(' expr ')' { $$ = Expr\Eval_[$3]; }
| T_REQUIRE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE]; }
| T_REQUIRE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE_ONCE]; }
| T_INT_CAST expr { $$ = Expr\Cast\Int_ [$2]; }
@ -671,6 +561,8 @@ expr:
| '`' backticks_expr '`' { $$ = Expr\ShellExec[$2]; }
| T_PRINT expr { $$ = Expr\Print_[$2]; }
| T_YIELD { $$ = Expr\Yield_[null, null]; }
| T_YIELD expr { $$ = Expr\Yield_[$2, null]; }
| T_YIELD expr T_DOUBLE_ARROW expr { $$ = Expr\Yield_[$4, $2]; }
| T_YIELD_FROM expr { $$ = Expr\YieldFrom[$2]; }
| T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type
'{' inner_statement_list '}'
@ -680,16 +572,6 @@ expr:
{ $$ = Expr\Closure[['static' => true, 'byRef' => $3, 'params' => $5, 'uses' => $7, 'returnType' => $8, 'stmts' => $10]]; }
;
parentheses_expr:
'(' expr ')' { $$ = $2; }
| '(' yield_expr ')' { $$ = $2; }
;
yield_expr:
T_YIELD expr { $$ = Expr\Yield_[$2, null]; }
| T_YIELD expr T_DOUBLE_ARROW expr { $$ = Expr\Yield_[$4, $2]; }
;
anonymous_class:
T_CLASS ctor_arguments extends_from implements_list '{' class_statement_list '}'
{ $$ = array(Stmt\Class_[null, ['type' => 0, 'extends' => $3, 'implements' => $4, 'stmts' => $6]], $2); }
@ -744,8 +626,7 @@ class_name_or_var:
exit_expr:
/* empty */ { $$ = null; }
| '(' ')' { $$ = null; }
| parentheses_expr { $$ = $1; }
| '(' optional_expr ')' { $$ = $2; }
;
backticks_expr:

View File

@ -5,6 +5,7 @@ $grammarFileToName = [
__DIR__ . '/php7.y' => 'Php7',
];
$tokensFile = __DIR__ . '/tokens.y';
$skeletonFile = __DIR__ . '/kmyacc.php.parser';
$tmpGrammarFile = __DIR__ . '/tmp_parser.phpy';
$tmpResultFile = __DIR__ . '/tmp_parser.php';
@ -39,10 +40,13 @@ const ARGS = '\((?<args>[^()]*+(?:\((?&args)\)[^()]*+)*+)\)';
/// Main script ///
///////////////////
$tokens = file_get_contents($tokensFile);
foreach ($grammarFileToName as $grammarFile => $name) {
echo "Building temporary $name grammar file.\n";
$grammarCode = file_get_contents($grammarFile);
$grammarCode = str_replace('%tokens', $tokens, $grammarCode);
$grammarCode = resolveNodes($grammarCode);
$grammarCode = resolveMacros($grammarCode);

113
grammar/tokens.y Normal file
View File

@ -0,0 +1,113 @@
/* We currently rely on the token ID mapping to be the same between PHP 5 and PHP 7 - so the same lexer can be used for
* both. This is enforced by sharing this token file. */
%left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
%left ','
%left T_LOGICAL_OR
%left T_LOGICAL_XOR
%left T_LOGICAL_AND
%right T_PRINT
%right T_YIELD
%right T_DOUBLE_ARROW
%right T_YIELD_FROM
%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL
%left '?' ':'
%right T_COALESCE
%left T_BOOLEAN_OR
%left T_BOOLEAN_AND
%left '|'
%left '^'
%left '&'
%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL T_SPACESHIP
%nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL
%left T_SL T_SR
%left '+' '-' '.'
%left '*' '/' '%'
%right '!'
%nonassoc T_INSTANCEOF
%right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
%right T_POW
%right '['
%nonassoc T_NEW T_CLONE
%token T_EXIT
%token T_IF
%left T_ELSEIF
%left T_ELSE
%left T_ENDIF
%token T_LNUMBER
%token T_DNUMBER
%token T_STRING
%token T_STRING_VARNAME
%token T_VARIABLE
%token T_NUM_STRING
%token T_INLINE_HTML
%token T_CHARACTER
%token T_BAD_CHARACTER
%token T_ENCAPSED_AND_WHITESPACE
%token T_CONSTANT_ENCAPSED_STRING
%token T_ECHO
%token T_DO
%token T_WHILE
%token T_ENDWHILE
%token T_FOR
%token T_ENDFOR
%token T_FOREACH
%token T_ENDFOREACH
%token T_DECLARE
%token T_ENDDECLARE
%token T_AS
%token T_SWITCH
%token T_ENDSWITCH
%token T_CASE
%token T_DEFAULT
%token T_BREAK
%token T_CONTINUE
%token T_GOTO
%token T_FUNCTION
%token T_CONST
%token T_RETURN
%token T_TRY
%token T_CATCH
%token T_FINALLY
%token T_THROW
%token T_USE
%token T_INSTEADOF
%token T_GLOBAL
%right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC
%token T_VAR
%token T_UNSET
%token T_ISSET
%token T_EMPTY
%token T_HALT_COMPILER
%token T_CLASS
%token T_TRAIT
%token T_INTERFACE
%token T_EXTENDS
%token T_IMPLEMENTS
%token T_OBJECT_OPERATOR
%token T_DOUBLE_ARROW
%token T_LIST
%token T_ARRAY
%token T_CALLABLE
%token T_CLASS_C
%token T_TRAIT_C
%token T_METHOD_C
%token T_FUNC_C
%token T_LINE
%token T_FILE
%token T_COMMENT
%token T_DOC_COMMENT
%token T_OPEN_TAG
%token T_OPEN_TAG_WITH_ECHO
%token T_CLOSE_TAG
%token T_WHITESPACE
%token T_START_HEREDOC
%token T_END_HEREDOC
%token T_DOLLAR_OPEN_CURLY_BRACES
%token T_CURLY_OPEN
%token T_PAAMAYIM_NEKUDOTAYIM
%token T_NAMESPACE
%token T_NS_C
%token T_DIR
%token T_NS_SEPARATOR
%token T_ELLIPSIS

View File

@ -18,7 +18,7 @@ use PhpParser\Node\Stmt;
class Php5 extends \PhpParser\ParserAbstract
{
protected $tokenToSymbolMapSize = 392;
protected $actionTableSize = 1313;
protected $actionTableSize = 1261;
protected $gotoTableSize = 588;
protected $invalidSymbol = 157;
@ -40,106 +40,106 @@ class Php5 extends \PhpParser\ParserAbstract
const T_LOGICAL_AND = 264;
const T_PRINT = 265;
const T_YIELD = 266;
const T_YIELD_FROM = 267;
const T_PLUS_EQUAL = 268;
const T_MINUS_EQUAL = 269;
const T_MUL_EQUAL = 270;
const T_DIV_EQUAL = 271;
const T_CONCAT_EQUAL = 272;
const T_MOD_EQUAL = 273;
const T_AND_EQUAL = 274;
const T_OR_EQUAL = 275;
const T_XOR_EQUAL = 276;
const T_SL_EQUAL = 277;
const T_SR_EQUAL = 278;
const T_POW_EQUAL = 279;
const T_COALESCE = 280;
const T_BOOLEAN_OR = 281;
const T_BOOLEAN_AND = 282;
const T_IS_EQUAL = 283;
const T_IS_NOT_EQUAL = 284;
const T_IS_IDENTICAL = 285;
const T_IS_NOT_IDENTICAL = 286;
const T_SPACESHIP = 287;
const T_IS_SMALLER_OR_EQUAL = 288;
const T_IS_GREATER_OR_EQUAL = 289;
const T_SL = 290;
const T_SR = 291;
const T_INSTANCEOF = 292;
const T_INC = 293;
const T_DEC = 294;
const T_INT_CAST = 295;
const T_DOUBLE_CAST = 296;
const T_STRING_CAST = 297;
const T_ARRAY_CAST = 298;
const T_OBJECT_CAST = 299;
const T_BOOL_CAST = 300;
const T_UNSET_CAST = 301;
const T_POW = 302;
const T_NEW = 303;
const T_CLONE = 304;
const T_EXIT = 305;
const T_IF = 306;
const T_ELSEIF = 307;
const T_ELSE = 308;
const T_ENDIF = 309;
const T_LNUMBER = 310;
const T_DNUMBER = 311;
const T_STRING = 312;
const T_STRING_VARNAME = 313;
const T_VARIABLE = 314;
const T_NUM_STRING = 315;
const T_INLINE_HTML = 316;
const T_CHARACTER = 317;
const T_BAD_CHARACTER = 318;
const T_ENCAPSED_AND_WHITESPACE = 319;
const T_CONSTANT_ENCAPSED_STRING = 320;
const T_ECHO = 321;
const T_DO = 322;
const T_WHILE = 323;
const T_ENDWHILE = 324;
const T_FOR = 325;
const T_ENDFOR = 326;
const T_FOREACH = 327;
const T_ENDFOREACH = 328;
const T_DECLARE = 329;
const T_ENDDECLARE = 330;
const T_AS = 331;
const T_SWITCH = 332;
const T_ENDSWITCH = 333;
const T_CASE = 334;
const T_DEFAULT = 335;
const T_BREAK = 336;
const T_CONTINUE = 337;
const T_GOTO = 338;
const T_FUNCTION = 339;
const T_CONST = 340;
const T_RETURN = 341;
const T_TRY = 342;
const T_CATCH = 343;
const T_FINALLY = 344;
const T_THROW = 345;
const T_USE = 346;
const T_INSTEADOF = 347;
const T_GLOBAL = 348;
const T_STATIC = 349;
const T_ABSTRACT = 350;
const T_FINAL = 351;
const T_PRIVATE = 352;
const T_PROTECTED = 353;
const T_PUBLIC = 354;
const T_VAR = 355;
const T_UNSET = 356;
const T_ISSET = 357;
const T_EMPTY = 358;
const T_HALT_COMPILER = 359;
const T_CLASS = 360;
const T_TRAIT = 361;
const T_INTERFACE = 362;
const T_EXTENDS = 363;
const T_IMPLEMENTS = 364;
const T_OBJECT_OPERATOR = 365;
const T_DOUBLE_ARROW = 366;
const T_DOUBLE_ARROW = 267;
const T_YIELD_FROM = 268;
const T_PLUS_EQUAL = 269;
const T_MINUS_EQUAL = 270;
const T_MUL_EQUAL = 271;
const T_DIV_EQUAL = 272;
const T_CONCAT_EQUAL = 273;
const T_MOD_EQUAL = 274;
const T_AND_EQUAL = 275;
const T_OR_EQUAL = 276;
const T_XOR_EQUAL = 277;
const T_SL_EQUAL = 278;
const T_SR_EQUAL = 279;
const T_POW_EQUAL = 280;
const T_COALESCE = 281;
const T_BOOLEAN_OR = 282;
const T_BOOLEAN_AND = 283;
const T_IS_EQUAL = 284;
const T_IS_NOT_EQUAL = 285;
const T_IS_IDENTICAL = 286;
const T_IS_NOT_IDENTICAL = 287;
const T_SPACESHIP = 288;
const T_IS_SMALLER_OR_EQUAL = 289;
const T_IS_GREATER_OR_EQUAL = 290;
const T_SL = 291;
const T_SR = 292;
const T_INSTANCEOF = 293;
const T_INC = 294;
const T_DEC = 295;
const T_INT_CAST = 296;
const T_DOUBLE_CAST = 297;
const T_STRING_CAST = 298;
const T_ARRAY_CAST = 299;
const T_OBJECT_CAST = 300;
const T_BOOL_CAST = 301;
const T_UNSET_CAST = 302;
const T_POW = 303;
const T_NEW = 304;
const T_CLONE = 305;
const T_EXIT = 306;
const T_IF = 307;
const T_ELSEIF = 308;
const T_ELSE = 309;
const T_ENDIF = 310;
const T_LNUMBER = 311;
const T_DNUMBER = 312;
const T_STRING = 313;
const T_STRING_VARNAME = 314;
const T_VARIABLE = 315;
const T_NUM_STRING = 316;
const T_INLINE_HTML = 317;
const T_CHARACTER = 318;
const T_BAD_CHARACTER = 319;
const T_ENCAPSED_AND_WHITESPACE = 320;
const T_CONSTANT_ENCAPSED_STRING = 321;
const T_ECHO = 322;
const T_DO = 323;
const T_WHILE = 324;
const T_ENDWHILE = 325;
const T_FOR = 326;
const T_ENDFOR = 327;
const T_FOREACH = 328;
const T_ENDFOREACH = 329;
const T_DECLARE = 330;
const T_ENDDECLARE = 331;
const T_AS = 332;
const T_SWITCH = 333;
const T_ENDSWITCH = 334;
const T_CASE = 335;
const T_DEFAULT = 336;
const T_BREAK = 337;
const T_CONTINUE = 338;
const T_GOTO = 339;
const T_FUNCTION = 340;
const T_CONST = 341;
const T_RETURN = 342;
const T_TRY = 343;
const T_CATCH = 344;
const T_FINALLY = 345;
const T_THROW = 346;
const T_USE = 347;
const T_INSTEADOF = 348;
const T_GLOBAL = 349;
const T_STATIC = 350;
const T_ABSTRACT = 351;
const T_FINAL = 352;
const T_PRIVATE = 353;
const T_PROTECTED = 354;
const T_PUBLIC = 355;
const T_VAR = 356;
const T_UNSET = 357;
const T_ISSET = 358;
const T_EMPTY = 359;
const T_HALT_COMPILER = 360;
const T_CLASS = 361;
const T_TRAIT = 362;
const T_INTERFACE = 363;
const T_EXTENDS = 364;
const T_IMPLEMENTS = 365;
const T_OBJECT_OPERATOR = 366;
const T_LIST = 367;
const T_ARRAY = 368;
const T_CALLABLE = 369;
@ -180,6 +180,7 @@ class Php5 extends \PhpParser\ParserAbstract
"T_LOGICAL_AND",
"T_PRINT",
"T_YIELD",
"T_DOUBLE_ARROW",
"T_YIELD_FROM",
"'='",
"T_PLUS_EQUAL",
@ -295,7 +296,6 @@ class Php5 extends \PhpParser\ParserAbstract
"T_EXTENDS",
"T_IMPLEMENTS",
"T_OBJECT_OPERATOR",
"T_DOUBLE_ARROW",
"T_LIST",
"T_ARRAY",
"T_CALLABLE",
@ -330,16 +330,16 @@ class Php5 extends \PhpParser\ParserAbstract
0, 157, 157, 157, 157, 157, 157, 157, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
157, 157, 157, 52, 156, 157, 153, 51, 34, 157,
151, 152, 49, 46, 7, 47, 48, 50, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 28, 148,
40, 14, 42, 27, 64, 157, 157, 157, 157, 157,
157, 157, 157, 53, 156, 157, 153, 52, 35, 157,
151, 152, 50, 47, 7, 48, 49, 51, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 29, 148,
41, 15, 43, 28, 65, 157, 157, 157, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
157, 66, 157, 155, 33, 157, 154, 157, 157, 157,
157, 67, 157, 155, 34, 157, 154, 157, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
157, 157, 157, 149, 32, 150, 54, 157, 157, 157,
157, 157, 157, 149, 33, 150, 55, 157, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
@ -353,12 +353,12 @@ class Php5 extends \PhpParser\ParserAbstract
157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
157, 157, 157, 157, 157, 157, 1, 2, 3, 4,
5, 6, 8, 9, 10, 11, 12, 13, 15, 16,
5, 6, 8, 9, 10, 11, 12, 13, 14, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
29, 30, 31, 35, 36, 37, 38, 39, 41, 43,
44, 45, 53, 55, 56, 57, 58, 59, 60, 61,
62, 63, 65, 67, 68, 69, 70, 71, 72, 73,
74, 75, 76, 77, 78, 79, 80, 157, 157, 81,
27, 30, 31, 32, 36, 37, 38, 39, 40, 42,
44, 45, 46, 54, 56, 57, 58, 59, 60, 61,
62, 63, 64, 66, 68, 69, 70, 71, 72, 73,
74, 75, 76, 77, 78, 79, 80, 81, 157, 157,
82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
@ -371,339 +371,329 @@ class Php5 extends \PhpParser\ParserAbstract
protected $action = array(
800, 70, 71, 431, 72, 73,-32766,-32766,-32766,-32766,
74, 75, 76, 234, 235, 236, 237, 238, 239, 240,
241, 242, 368, 243, 244, 245, 246, 247, 248, 249,
250, 251, 252, 253, 254,-32766,-32766,-32766,-32766,-32766,
-32767,-32767,-32767,-32767, 0, 77, 78, 68, 255, 256,
649, 79, 315, 80, 309, 310, 81, 82, 83, 84,
85, 86, 87, 88, 458, 42, 317, 89, 423, 432,
-32766,-32766,-32766, 1062, 1063, 474, -197, 1153, 844, 789,
357, 475, 56, 27, 433, 337, 476, 449, 477,-32766,
478,-32766,-32766, 434, 231, 232, 233, 46, 47, 479,
435, 445, 48, 480, 634, 388, 90, 147, 340, 370,
371, 579, 139, 218, 259, 481, 482, 483, 484, 485,
231, 232, 233, 439, 771, 816, 486, 487, 488, 489,
138, 1068, 1069, 1070, 1071, 1065, 1066, 326, 45, 218,
377, 551, 502, 1072, 1067, 436, 67, 795, 632, 352,
57, 324, 350, 338, 222, 342, 664, 665, 666, 667,
668,-32766, 669, 670, 671, 707, 708, 49, 312, 51,
121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
131, 132,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
-32766, 34,-32767,-32767,-32767,-32767, 629, 347, 845, 430,
920, 921, 922, 919, 918, 917, 912, 672, 450, 22,
950, 952,-32767,-32767,-32767,-32767, 112, 113, 114, 115,
116, 673, 674, 675, 676, 677, 678, 679, 749, 136,
730, 920, 921, 922, 919, 918, 917, 680, 681, 682,
683, 684, 685, 686, 687, 688, 689, 690, 710, 711,
712, 713, 714, 702, 703, 704, 705, 706, 691, 692,
693, 694, 695, 696, 697, 724, 725, 726, 727, 728,
729, 698, 699, 700, 701, 224, 722, 720, 721, 717,
718, 786, -479, 709, 715, 716, 94, 95, 96,-32766,
-32766,-32766, 481, 482, 114, 115, 116, 719, 300,-32766,
223, 771, 816, 486, 487, 50, 41, 97, 98, 99,
100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
910, 319, 313,-32766,-32766,-32766, 1147, 117, 118, 119,
732, 319, 1153, 120, 1029, 746, 747, 262,-32766,-32766,
-32766, 471,-32766, 120,-32766,-32766,-32766,-32766,-32766,-32766,
-32767,-32767,-32767,-32767,-32767, 451, 64,-32766,-32766,-32766,
-32766,-32766,-32766,-32766, 732, 1039, 232, 233,-32766, 316,
298,-32766,-32766,-32766, 1011,-32766, 218,-32766, 133,-32766,
428, 452,-32766, 1147, 218, 621,-32766,-32766,-32766, 439,
-32766,-32766,-32766, 225, -198,-32766, 313, 502,-32766, 501,
436, 358, -183, -183, -183, 440,-32766, 350,-32766,-32766,
-32766, 145, 481, 482, 1185,-32766, 1187, 1186, 35, 481,
482, 771, 816, 486, 487, 799, 1011,-32766, 771, 816,
486, 487,-32766, 1160, 732, 142,-32766,-32766, 732, 134,
874, 875,-32766, 65, -251,-32766,-32766,-32766, 311,-32766,
803,-32766, 622,-32766, 143, 436,-32766, -183, 358, 898,
-32766,-32766,-32766, 439, 488,-32766,-32766,-32766,-32766,-32766,
-32766,-32766,-32766, 501,-32766, 252, 253, 254, 1011, 1153,
-32766, 884, 893,-32766,-32766, 644, 1175, -191, -191, -191,
732, 255, 256, 261,-32766, 1182, 745,-32766,-32766,-32766,
314,-32766, 260,-32766, 436,-32766, 868, 869,-32766, 142,
-32766,-32766,-32766,-32766,-32766, 439, 809,-32766,-32766, 502,
-32766,-32766, 787, 588,-32766, 501, 135, 635, 481, 482,
653, 1011,-32766, 231, 232, 233,-32766, 771, 816, 486,
487, 120, 732,-32766,-32766,-32766,-32766, 141, 656,-32766,
-32766,-32766, 218,-32766, 350,-32766, 302,-32766, 439, 894,
-32766, 1118,-32766,-32766,-32766,-32766,-32766, 439, 233,-32766,
-32766, 648,-32766,-32766, 868, 869,-32766, 501, 231, 232,
233, 1074, 425, 1011,-32766, 218, 319, 502, 637,-32766,
1157, 343, -193, -193, -193, 732, -202, 218, 66,-32766,
439, 63,-32766,-32766,-32766, 301,-32766, 325,-32766, 317,
-32766,-32766, 146,-32766,-32766,-32766, 60,-32766,-32766,-32766,
439, 439,-32766,-32766,-32766, 1175,-32766,-32766,-32766,-32766,
501, 255, 256, 481, 482, 1011, 607,-32766, 249, 250,
251,-32766, 771, 816, 486, 487, 59, 732, 62, 1074,
522,-32766, 460, 28,-32766,-32766,-32766, 356,-32766, 582,
-32766, 439,-32766, 144, 444,-32766, 61,-32766,-32766,-32766,
-32766,-32766, 439, 69,-32766,-32766,-32766, 446,-32766, 733,
1112,-32766, 501, 1119, 523, 481, 482, 148, 378,-32766,
465, 594, 620,-32766, 771, 816, 486, 487, 257, 732,
398, 601, 602,-32766, 628, 527,-32766,-32766,-32766, 540,
-32766, 753,-32766, 541,-32766, 739, 639,-32766, 1180,-32766,
-32766,-32766,-32766,-32766, 439, 755,-32766,-32766, 481, 482,
-32766, 614,-32766,-32766, 501, 909, 659, 771, 816, 486,
487,-32766, 604, 1011, 526,-32766, 897, 652, 231, 232,
233, 732, 1032, 355, 1175,-32766, 448, 597,-32766,-32766,
-32766, 39,-32766, 572,-32766, 598,-32766, 218, 443,-32766,
-70,-32766,-32766,-32766,-32766,-32766, 439, 297,-32766,-32766,
543, 585,-32766, 469,-32766,-32766, 501, 348, 481, 482,
439, 818, 341,-32766, 1073, 1011, -389, 771, 816, 486,
487,-32766,-32766,-32766,-32766,-32766,-32766, 732, 345, 52,
817,-32766, -480, 1158,-32766,-32766,-32766, 351,-32766, 346,
-32766, -479,-32766,-32766,-32766,-32766, 642, 1055, 339,-32766,
-32766,-32766, 439, 137,-32766,-32766,-32766, 488,-32766, 391,
-380,-32766, 501, 502, -388, 38, 31, 1011, 30,-32766,
91, 36, 0,-32766, 811, 0, 393, 405, 445, 732,
533, 428,-32766,-32766, 40, 791,-32766,-32766,-32766, 743,
-32766, 742,-32766, 901,-32766, 619, 776,-32766, 847, 781,
-32766,-32766,-32766,-32766, 439, 838,-32766,-32766,-32766, 902,
-32766, 905, 1113,-32766, 501, 904, 828, 481, 482, 1011,
830,-32766, 832, 774, 839,-32766, 771, 816, 486, 487,
903, 732, 798, 785, 797,-32766, 784, 782,-32766,-32766,
-32766, 780,-32766, 788,-32766, 790,-32766, 54, 55,-32766,
611, 779,-32766,-32766,-32766,-32766, 439, 640,-32766,-32766,
-32766, 641,-32766, 658, 657,-32766, 501, 655, 93, 633,
481, 482, 654,-32766, 367, 335, 140,-32766, 643, 771,
816, 486, 487, 732, 645, 651, 646,-32766, 638, 43,
-32766,-32766,-32766, 886,-32766, 1053,-32766, 1150,-32766, 1138,
1152,-32766, 1154, 783,-32766,-32766,-32766,-32766, 439, 1181,
-32766,-32766, 464, 1183,-32766, 1184, 815,-32766, 501, 814,
813, 748, 1025, 836, -1,-32766, 837, 1148, 1009,-32766,
44, 427, 422, 353, 323, 732, 322, 321, 320,-32766,
308, 307,-32766,-32766,-32766, 299,-32766, 221,-32766, 258,
-32766, 92,-32766,-32766, 58,-32766,-32766,-32766,-32766,-32766,
439, 53,-32766,-32766, 1015, -199,-32766, 226, 227,-32766,
501, 991, 573, 228, 1078, 229, 876,-32766, 1019, 1016,
626, 564, 472, 468, 466, 990, 461, 220, -182, -182,
-182, 399, 226, 227, 25, 1062, 1063, 24, 228,-32766,
229, 23, -198, 1064, 0, 481, 482,-32766,-32766, 605,
1132, 1079, 220, 1179, 771, 816, 486, 487, 1052, 1149,
1062, 1063, 1133, 1137,-32766, 1151, 424, 1038, 1064, 1023,
481, 482, 336, 1024, 1021, 1022, 481, 482, 1020, 771,
816, 486, 487, -182, 0, 738, 816, 486, 487, 0,
0, 569, 0, 1068, 1069, 1070, 1071, 1065, 1066, 404,
0, 0, 0, 0, 0, 1072, 1067, 349, 772, 0,
0, 0, 230, 0,-32766, 0, 569, 0, 1068, 1069,
1070, 1071, 1065, 1066, 404,-32766,-32766,-32766, 0, 0,
1072, 1067, 424, 0, 0, 0, 0, 230, 336,-32766,
0, 0, 481, 482,-32766, 0,-32766,-32766,-32766, 424,
0, 738, 816, 486, 487, 336, 0, 0, 0, 481,
482, 0,-32766,-32766,-32766, 0, 0, 0, 738, 816,
486, 487, 0, 349, 0, 0, 0,-32766,-32766,-32766,
741,-32766, 0,-32766,-32766,-32766,-32766,-32766,-32766, 0,
349, 0, 0, 0, 481, 482,-32766, 740,-32766,-32766,
-32766,-32766,-32766, 771, 816, 486, 487, 481, 482, 0,
0, 481, 482, 0, 0, 0, 771, 816, 486, 487,
771, 816, 486, 487, 481, 482, 0, 0, 0, 0,
0, 0, 805, 771, 816, 486, 487, 0, 0, 0,
0, 0, 0, 0, 0, 812, 0, 0, 0, 1013,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1014
74, 75, 0, 76, 234, 235, 236, 237, 238, 239,
240, 241, 242, 1147, 243, 244, 245, 246, 247, 248,
249, 250, 251, 252, 253, 254,-32766,-32766,-32766,-32766,
-32766,-32767,-32767,-32767,-32767, 64, 77, 78, 68, 255,
256, 388, 79, 222, 80, 309, 310, 81, 82, 83,
84, 85, 86, 87, 88, 637, 42, 317, 89, 423,
432, 232, 233, 644, 1062, 1063, 474, 45, 1153, 582,
789, 649, 475, 56, 27, 433, 629, 476, 451, 477,
218, 478, 732, 143, 434, 746, 747, 358, 46, 47,
479, 435, 368, 48, 480, 481, 482, 90, 145, 340,
370, 371, 49, 312, 771, 816, 486, 487, 483, 484,
485, 920, 921, 922, 919, 918, 917, 134, 488, 489,
138, 1068, 1069, 1070, 1071, 1065, 1066, 326, 439, 428,
621, 35, 502, 1072, 1067, 436, 439, 795, 632,-32766,
57, 430, 350, 338, 439, 342, 664, 665, 666, 667,
668, 436, 669, 670, 671, 707, 708,-32766,-32766,-32766,
-32766,-32766,-32766,-32766,-32766,-32766, 51, 121, 122, 123,
124, 125, 126, 127, 128, 129, 130, 131, 132, 233,
-32766, 1182,-32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,
-32767,-32767,-32767, 252, 253, 254, 622, 218, 672, 436,
-32766,-32766,-32766, 898, 114, 115, 116, 950, 952, 255,
256, 41, 673, 674, 675, 676, 677, 678, 679, 745,
-32766, 730,-32766,-32766,-32766,-32766,-32766,-32766, 680, 681,
682, 683, 684, 685, 686, 687, 688, 689, 690, 710,
711, 712, 713, 714, 702, 703, 704, 705, 706, 691,
692, 693, 694, 695, 696, 697, 724, 725, 726, 727,
728, 729, 698, 699, 700, 701, 458, 722, 720, 721,
717, 718, 894, 709, 715, 716, 94, 95, 96, -479,
337, 117, 118, 119, 300, 319, 1029, 719, 1185,-32766,
1187, 1186, 732, 377, 1153, 67, 50, 120, 97, 98,
99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
119,-32766, 319, 313,-32766,-32766,-32766, 1039, 52,-32766,
-32766,-32766, 1011, 452, 120,-32766,-32766,-32766,-32766,-32766,
-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,-32766,
324,-32766,-32766,-32766,-32766, 313, 875, 357, 502,-32766,
656, 436,-32766,-32766,-32766, 732, 440, 471, 350,-32766,
425, 352,-32766,-32766,-32766, 65,-32766, 136,-32766, 315,
-32766, 316,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
439,-32766,-32766,-32766, 1157, 139,-32766, 732,-32766,-32766,
501,-32766, 298, -197,-32766,-32766,-32766,-32766,-32766, 137,
-32766, 22,-32766, 868, 869,-32766,-32766, -251, 551,-32766,
-32766,-32766, 439, 749,-32766,-32766, 502, 1011,-32766, 1160,
449,-32766, 501, 439, 786, 142,-32766,-32766, 844,-32766,
874,-32766, 481, 482, -182, -182, -182,-32766,-32766, 635,
314, 771, 816, 486, 487, 261,-32766, 135, -1, 1011,
262, 481, 482, 249, 250, 251, 144, 142,-32766,-32766,
771, 816, 486, 487, 787, 488, 141,-32767,-32767,-32767,
-32767, 112, 113, 114, 115, 116,-32766, 218, 1175,-32766,
-32766,-32766, 732, 231, 232, 233,-32766, 133, -182,-32766,
-32766,-32766, 147,-32766, 223,-32766, 579,-32766, 893,-32766,
-32766,-32766,-32766, 218,-32766,-32766,-32766, 439,-32766,-32766,
-32766, 224, 439,-32766, 732, 260,-32766, 501,-32766,-32766,
884,-32766,-32766,-32766,-32766,-32766, 1147,-32766, 225,-32766,
1011, -198,-32766, 868, 869, 1153,-32766,-32766,-32766, 439,
450,-32766,-32766, 146, 343,-32766, 502, 845,-32766, 501,
1175, 424, 1118,-32766,-32766, -202,-32766, 336,-32766, 588,
653, 481, 482,-32766,-32766,-32766,-32766,-32766, 34, 1011,
738, 816, 486, 487, 347,-32766,-32766, 920, 921, 922,
919, 918, 917, 912, 445,-32766,-32766, 634, 809,-32766,
319, 349, 301,-32766, 302, 732, 398,-32766,-32766,-32766,
358, 1074,-32766,-32766,-32766, 325,-32766, 1119,-32766, 350,
-32766, 255, 256,-32766, 465, 594, 1074,-32766,-32766,-32766,
439, 648,-32766,-32766, 460, 28,-32766, 1113,-32766,-32766,
501, 231, 232, 233, 732, 799, 257,-32766,-32766,-32766,
120,-32766,-32766,-32766, 60,-32766, 66,-32766, 317,-32766,
1011, 218,-32766, 148, 378, 61,-32766,-32766,-32766, 439,
62,-32766,-32766, 63, 424,-32766,-32766,-32766,-32766, 501,
336,-32766, 59, 311, 481, 482,-32766,-32766,-32766,-32766,
481, 482, 69, 738, 816, 486, 487, 601, 602, 771,
816, 486, 487, 607, 231, 232, 233,-32766, 733,-32766,
-32766,-32766,-32766,-32766, 349,-32766,-32766, 739, 639,-32766,
522, 741, 909, 659, 218, 732, 446, 910, 444,-32766,
897, 652,-32766,-32766,-32766, 753,-32766, 540,-32766, 1180,
-32766, 755, 541,-32766, 527, 523, 543,-32766,-32766,-32766,
439,-32766,-32766,-32766, 620, 614,-32766, 732, 448,-32766,
501,-32766, 604,-32766,-32766,-32766,-32766,-32766,-32766, 526,
-32766, 1032,-32766, 597, 1011,-32766, 1175, 585, 39,-32766,
-32766,-32766, 439, 355,-32766,-32766, 356, 297,-32766, 439,
443,-32766, 501, -70, 424,-32766,-32766,-32766, 598,-32766,
336, 572, 628, 488, 481, 482, 1011, 469, 481, 482,
231, 232, 233, 738, 816, 486, 487, 771, 816, 486,
487, 348, 643, 817, 351, 818, 481, 482,-32766,-32766,
218, 259, 1055,-32766, 349, 771, 816, 486, 487, 732,
345, 740, 346,-32766, -479, 1014,-32766,-32766,-32766, -480,
-32766, 1112,-32766, 339,-32766, 341, 1073,-32766, 428, 335,
-380,-32766,-32766,-32766, 439,-32766,-32766,-32766, 30, 533,
-32766, 732, -388,-32766, 501,-32766,-32766, 31,-32766,-32766,
-32766,-32766,-32766, 36,-32766, 38,-32766, 1011, -389,-32766,
391, 393, 502,-32766,-32766,-32766, 439, 405,-32766,-32766,
445,-32766,-32766, 811, 43,-32766, 501, 901,-32766, 828,
-32766,-32766, 905,-32766, 481, 482, 640, 54, 743, 1011,
481, 482, 903, 771, 816, 486, 487, 481, 482, 771,
816, 486, 487, 231, 232, 233, 771, 816, 486, 487,
902, 55, 779,-32766, 830, 832,-32766, 774, 742, 40,
605, 812, 732, 218, 839, 813,-32766, 1013, 838,-32766,
-32766,-32766, 367,-32766, 642,-32766, 798,-32766, 776, 791,
-32766, 904, 641, 847,-32766,-32766,-32766, 439,-32766,-32766,
-32766,-32766, 785,-32766, 732, 788,-32766, 501,-32766, 797,
784,-32766,-32766,-32766,-32766,-32766, 782,-32766, 780,-32766,
790, 814,-32766, 645, 646, 651,-32766,-32766,-32766, 439,
654,-32766,-32766, 638, 633,-32766, 655, 93,-32766, 501,
-183, -183, -183, 781,-32766, 657,-32766, 658, 140, 990,
481, 482, 836, 815, 837, 1183, 464, 481, 482, 771,
816, 486, 487, 1181, 1154, 1152, 771, 816, 486, 487,
1138,-32766, 1150, 1053, 886, 783,-32766, 732, 748, 1158,
1025,-32766, 1148, 1184,-32766,-32766,-32766, 803,-32766,-32766,
-32766, 258,-32766, 44, -183,-32766, 1132, 427, 422,-32766,
-32766,-32766, 439, 353,-32766,-32766, 323, 322,-32766, 226,
227,-32766, 501, 321, 320, 228, 308, 229, 307,-32766,
299, 221, 92, -193, -193, -193, 611, 91, 58, 220,
-191, -191, -191, 53, 226, 227, 573, 1062, 1063, -199,
228,-32766, 229, 1015, 1078, 1064, 481, 482,-32766,-32766,
876, 1019, 1079, 1016, 220, 771, 816, 486, 487, 626,
564, 472, 1062, 1063, 481, 482,-32766, 468, 466, 991,
1064, 481, 482, 771, 816, 486, 487, 481, 482, 461,
771, 816, 486, 487, 399, 1009, 771, 816, 486, 487,
25, 24, 569, 23, 1068, 1069, 1070, 1071, 1065, 1066,
404, -198, 1179, 1052, 0, 1149, 1072, 1067, 1133, 1137,
1151, 1038, 1023, 230, 805,-32766, 1024, 569, 1021, 1068,
1069, 1070, 1071, 1065, 1066, 404, 619, 1022, 1020, 0,
0, 1072, 1067, 481, 482, 0, 0, 0, 230, 0,
-32766, 0, 771, 816, 486, 487, 0, 0, 481, 482,
0, 0, 0, 0, 0, 0, 0, 771, 816, 486,
487, 0, 0, 0, 0, 0, 0, 0, 0, 0,
772
);
protected $actionCheck = array(
1, 2, 3, 4, 5, 6, 30, 31, 32, 33,
11, 12, 13, 30, 31, 32, 33, 34, 35, 36,
37, 38, 7, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 30, 31, 32, 33, 34,
35, 36, 37, 38, 0, 46, 47, 66, 65, 66,
28, 52, 7, 54, 55, 56, 57, 58, 59, 60,
61, 62, 63, 64, 7, 66, 67, 68, 69, 70,
8, 9, 10, 74, 75, 76, 73, 78, 28, 80,
66, 82, 83, 84, 85, 7, 87, 28, 89, 27,
91, 29, 30, 94, 8, 9, 10, 98, 99, 100,
101, 146, 103, 104, 149, 78, 107, 149, 127, 110,
111, 153, 7, 27, 28, 112, 113, 118, 119, 120,
8, 9, 10, 101, 121, 122, 123, 124, 129, 130,
149, 132, 133, 134, 135, 136, 137, 138, 7, 27,
7, 127, 143, 144, 145, 146, 66, 148, 149, 7,
151, 7, 153, 154, 7, 156, 2, 3, 4, 5,
6, 8, 8, 9, 10, 11, 12, 140, 141, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 30, 31, 32, 33, 34, 35, 36, 37,
38, 102, 40, 41, 42, 43, 76, 108, 148, 7,
111, 112, 113, 114, 115, 116, 117, 53, 149, 152,
55, 56, 40, 41, 42, 43, 44, 45, 46, 47,
48, 67, 68, 69, 70, 71, 72, 73, 150, 149,
76, 111, 112, 113, 114, 115, 116, 83, 84, 85,
1, 2, 3, 4, 5, 6, 31, 32, 33, 34,
11, 12, 0, 14, 31, 32, 33, 34, 35, 36,
37, 38, 39, 79, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 31, 32, 33, 34,
35, 36, 37, 38, 39, 67, 47, 48, 67, 66,
67, 79, 53, 7, 55, 56, 57, 58, 59, 60,
61, 62, 63, 64, 65, 29, 67, 68, 69, 70,
71, 9, 10, 29, 75, 76, 77, 7, 79, 87,
81, 29, 83, 84, 85, 86, 77, 88, 7, 90,
28, 92, 77, 149, 95, 102, 103, 153, 99, 100,
101, 102, 7, 104, 105, 113, 114, 108, 67, 128,
111, 112, 140, 141, 122, 123, 124, 125, 119, 120,
121, 112, 113, 114, 115, 116, 117, 149, 129, 130,
149, 132, 133, 134, 135, 136, 137, 138, 102, 146,
77, 7, 143, 144, 145, 146, 102, 148, 149, 8,
151, 7, 153, 154, 102, 156, 2, 3, 4, 5,
6, 146, 8, 9, 10, 11, 12, 8, 9, 10,
8, 9, 10, 31, 32, 33, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 10,
28, 150, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 50, 51, 52, 143, 28, 54, 146,
8, 9, 10, 150, 47, 48, 49, 56, 57, 66,
67, 7, 68, 69, 70, 71, 72, 73, 74, 148,
28, 77, 30, 31, 32, 33, 34, 35, 84, 85,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
116, 117, 118, 119, 120, 14, 122, 123, 124, 125,
126, 148, 127, 129, 130, 131, 8, 9, 10, 8,
9, 10, 112, 113, 46, 47, 48, 143, 7, 1,
14, 121, 122, 123, 124, 27, 7, 29, 30, 31,
116, 117, 118, 119, 120, 121, 7, 123, 124, 125,
126, 127, 148, 129, 130, 131, 8, 9, 10, 128,
7, 50, 51, 52, 7, 54, 152, 143, 77, 1,
79, 80, 77, 7, 79, 67, 28, 66, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
150, 53, 34, 8, 9, 10, 78, 49, 50, 51,
76, 53, 78, 65, 152, 101, 102, 14, 8, 9,
10, 7, 27, 65, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 7, 66, 27, 70, 29,
30, 31, 32, 1, 76, 111, 9, 10, 80, 34,
128, 83, 84, 85, 12, 87, 27, 89, 14, 91,
146, 7, 94, 78, 27, 76, 98, 99, 100, 101,
30, 103, 104, 14, 152, 107, 34, 143, 110, 111,
146, 153, 95, 96, 97, 151, 118, 153, 8, 9,
10, 66, 112, 113, 76, 1, 78, 79, 7, 112,
113, 121, 122, 123, 124, 28, 12, 27, 121, 122,
123, 124, 70, 152, 76, 147, 148, 149, 76, 149,
152, 152, 80, 66, 78, 83, 84, 85, 34, 87,
150, 89, 143, 91, 149, 146, 94, 150, 153, 150,
98, 99, 100, 101, 129, 103, 104, 1, 102, 107,
8, 9, 110, 111, 108, 49, 50, 51, 12, 78,
118, 78, 148, 117, 70, 28, 81, 71, 72, 73,
76, 65, 66, 14, 80, 150, 148, 83, 84, 85,
34, 87, 14, 89, 146, 91, 130, 131, 94, 147,
148, 149, 98, 99, 100, 101, 34, 103, 104, 143,
1, 107, 148, 81, 110, 111, 149, 28, 112, 113,
28, 12, 118, 8, 9, 10, 70, 121, 122, 123,
124, 65, 76, 30, 31, 32, 80, 28, 28, 83,
84, 85, 27, 87, 153, 89, 153, 91, 101, 148,
94, 156, 148, 149, 98, 99, 100, 101, 10, 103,
104, 28, 1, 107, 130, 131, 110, 111, 8, 9,
10, 139, 122, 12, 118, 27, 53, 143, 28, 70,
76, 81, 71, 72, 73, 76, 152, 27, 66, 80,
101, 66, 83, 84, 85, 34, 87, 28, 89, 67,
91, 151, 28, 94, 148, 149, 66, 98, 99, 100,
101, 101, 103, 104, 1, 81, 107, 30, 31, 110,
111, 65, 66, 112, 113, 12, 73, 118, 46, 47,
48, 70, 121, 122, 123, 124, 66, 76, 66, 139,
76, 80, 71, 72, 83, 84, 85, 81, 87, 86,
89, 101, 91, 149, 76, 94, 66, 148, 149, 98,
99, 100, 101, 66, 103, 104, 1, 76, 107, 76,
155, 110, 111, 139, 76, 112, 113, 96, 97, 118,
71, 72, 78, 70, 121, 122, 123, 124, 128, 76,
77, 105, 106, 80, 88, 76, 83, 84, 85, 76,
87, 76, 89, 76, 91, 148, 149, 94, 76, 148,
149, 98, 99, 100, 101, 76, 103, 104, 112, 113,
107, 78, 1, 110, 111, 148, 149, 121, 122, 123,
124, 118, 78, 12, 78, 70, 148, 149, 8, 9,
10, 76, 78, 81, 81, 80, 85, 95, 83, 84,
85, 93, 87, 93, 89, 108, 91, 27, 101, 94,
93, 148, 149, 98, 99, 100, 101, 93, 103, 104,
93, 95, 107, 101, 1, 110, 111, 109, 112, 113,
101, 122, 127, 118, 139, 12, 142, 121, 122, 123,
124, 70, 30, 31, 32, 33, 34, 76, 125, 128,
122, 80, 127, 150, 83, 84, 85, 125, 87, 126,
89, 127, 91, 148, 149, 94, 150, 152, 127, 98,
99, 100, 101, 128, 103, 104, 1, 129, 107, 142,
142, 110, 111, 143, 142, 142, 142, 12, 142, 118,
151, 142, -1, 70, 147, -1, 146, 146, 146, 76,
146, 146, 146, 80, 151, 148, 83, 84, 85, 148,
87, 148, 89, 148, 91, 90, 148, 94, 148, 148,
149, 98, 99, 100, 101, 148, 103, 104, 1, 148,
107, 148, 152, 110, 111, 148, 148, 112, 113, 12,
148, 118, 148, 148, 148, 70, 121, 122, 123, 124,
148, 76, 148, 148, 148, 80, 148, 148, 83, 84,
85, 148, 87, 148, 89, 148, 91, 148, 148, 94,
92, 148, 149, 98, 99, 100, 101, 148, 103, 104,
1, 148, 107, 149, 149, 110, 111, 149, 149, 149,
112, 113, 149, 118, 149, 149, 149, 70, 149, 121,
122, 123, 124, 76, 149, 149, 149, 80, 149, 151,
83, 84, 85, 150, 87, 150, 89, 150, 91, 150,
150, 94, 150, 148, 149, 98, 99, 100, 101, 150,
103, 104, 150, 150, 107, 150, 150, 110, 111, 150,
150, 150, 150, 150, 0, 118, 150, 150, 154, 70,
151, 151, 151, 151, 151, 76, 151, 151, 151, 80,
151, 151, 83, 84, 85, 151, 87, 151, 89, 28,
91, 151, 151, 94, 151, 148, 149, 98, 99, 100,
101, 151, 103, 104, 152, 152, 107, 46, 47, 110,
111, 152, 152, 52, 152, 54, 152, 118, 152, 152,
152, 152, 152, 152, 152, 152, 152, 66, 95, 96,
97, 152, 46, 47, 152, 74, 75, 152, 52, 78,
54, 152, 152, 82, -1, 112, 113, 148, 149, 155,
155, 155, 66, 155, 121, 122, 123, 124, 155, 155,
74, 75, 155, 155, 78, 155, 102, 155, 82, 155,
112, 113, 108, 155, 155, 155, 112, 113, 155, 121,
122, 123, 124, 150, -1, 121, 122, 123, 124, -1,
-1, 130, -1, 132, 133, 134, 135, 136, 137, 138,
-1, -1, -1, -1, -1, 144, 145, 143, 150, -1,
-1, -1, 151, -1, 153, -1, 130, -1, 132, 133,
134, 135, 136, 137, 138, 8, 9, 10, -1, -1,
144, 145, 102, -1, -1, -1, -1, 151, 108, 153,
-1, -1, 112, 113, 27, -1, 29, 30, 31, 102,
-1, 121, 122, 123, 124, 108, -1, -1, -1, 112,
113, -1, 8, 9, 10, -1, -1, -1, 121, 122,
123, 124, -1, 143, -1, -1, -1, 8, 9, 10,
150, 27, -1, 29, 30, 31, 32, 33, 34, -1,
143, -1, -1, -1, 112, 113, 27, 150, 29, 30,
31, 32, 33, 121, 122, 123, 124, 112, 113, -1,
-1, 112, 113, -1, -1, -1, 121, 122, 123, 124,
121, 122, 123, 124, 112, 113, -1, -1, -1, -1,
-1, -1, 150, 121, 122, 123, 124, -1, -1, -1,
-1, -1, -1, -1, -1, 150, -1, -1, -1, 150,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 150
52, 1, 54, 35, 8, 9, 10, 112, 13, 8,
9, 10, 12, 7, 66, 31, 32, 33, 34, 35,
36, 37, 38, 39, 28, 41, 42, 43, 44, 28,
7, 30, 31, 32, 33, 35, 152, 67, 143, 71,
29, 146, 8, 9, 10, 77, 151, 7, 153, 81,
123, 7, 84, 85, 86, 67, 88, 149, 90, 7,
92, 35, 28, 95, 30, 31, 32, 99, 100, 101,
102, 71, 104, 105, 77, 7, 108, 77, 151, 111,
112, 81, 13, 74, 84, 85, 86, 119, 88, 13,
90, 152, 92, 130, 131, 95, 1, 79, 128, 99,
100, 101, 102, 150, 104, 105, 143, 12, 108, 152,
29, 111, 112, 102, 148, 147, 148, 149, 29, 119,
152, 103, 113, 114, 96, 97, 98, 109, 1, 29,
35, 122, 123, 124, 125, 15, 118, 149, 0, 12,
15, 113, 114, 47, 48, 49, 149, 147, 148, 149,
122, 123, 124, 125, 148, 129, 29, 41, 42, 43,
44, 45, 46, 47, 48, 49, 71, 28, 82, 8,
9, 10, 77, 8, 9, 10, 81, 15, 150, 84,
85, 86, 149, 88, 15, 90, 153, 92, 148, 28,
95, 30, 31, 28, 99, 100, 101, 102, 71, 104,
105, 15, 102, 108, 77, 15, 111, 112, 81, 1,
79, 84, 85, 86, 119, 88, 79, 90, 15, 92,
12, 152, 95, 130, 131, 79, 99, 100, 101, 102,
149, 104, 105, 29, 82, 108, 143, 148, 111, 112,
82, 103, 156, 148, 149, 152, 119, 109, 1, 82,
29, 113, 114, 31, 32, 33, 34, 35, 103, 12,
122, 123, 124, 125, 109, 31, 32, 112, 113, 114,
115, 116, 117, 118, 146, 148, 149, 149, 35, 71,
54, 143, 35, 31, 153, 77, 78, 8, 9, 81,
153, 139, 84, 85, 86, 29, 88, 139, 90, 153,
92, 66, 67, 95, 72, 73, 139, 99, 100, 101,
102, 29, 104, 105, 72, 73, 108, 152, 71, 111,
112, 8, 9, 10, 77, 29, 13, 119, 81, 1,
66, 84, 85, 86, 67, 88, 67, 90, 68, 92,
12, 28, 95, 97, 98, 67, 99, 100, 101, 102,
67, 104, 105, 67, 103, 108, 148, 149, 111, 112,
109, 1, 67, 35, 113, 114, 119, 8, 9, 10,
113, 114, 67, 122, 123, 124, 125, 106, 107, 122,
123, 124, 125, 74, 8, 9, 10, 28, 77, 30,
31, 32, 33, 34, 143, 148, 149, 148, 149, 71,
77, 150, 148, 149, 28, 77, 77, 150, 77, 81,
148, 149, 84, 85, 86, 77, 88, 77, 90, 77,
92, 77, 77, 95, 77, 77, 94, 99, 100, 101,
102, 71, 104, 105, 79, 79, 108, 77, 86, 111,
112, 81, 79, 1, 84, 85, 86, 119, 88, 79,
90, 79, 92, 96, 12, 95, 82, 96, 94, 99,
100, 101, 102, 82, 104, 105, 82, 94, 108, 102,
102, 111, 112, 94, 103, 1, 148, 149, 109, 119,
109, 94, 89, 129, 113, 114, 12, 102, 113, 114,
8, 9, 10, 122, 123, 124, 125, 122, 123, 124,
125, 110, 149, 123, 126, 123, 113, 114, 148, 149,
28, 29, 152, 71, 143, 122, 123, 124, 125, 77,
126, 150, 127, 81, 128, 150, 84, 85, 86, 128,
88, 155, 90, 128, 92, 128, 139, 95, 146, 149,
142, 99, 100, 101, 102, 71, 104, 105, 142, 146,
108, 77, 142, 111, 112, 81, 1, 142, 84, 85,
86, 119, 88, 142, 90, 142, 92, 12, 142, 95,
142, 146, 143, 99, 100, 101, 102, 146, 104, 105,
146, 146, 108, 147, 151, 111, 112, 148, 1, 148,
148, 149, 148, 119, 113, 114, 148, 148, 148, 12,
113, 114, 148, 122, 123, 124, 125, 113, 114, 122,
123, 124, 125, 8, 9, 10, 122, 123, 124, 125,
148, 148, 148, 149, 148, 148, 71, 148, 148, 151,
155, 150, 77, 28, 148, 150, 81, 150, 148, 84,
85, 86, 149, 88, 150, 90, 148, 92, 148, 148,
95, 148, 148, 148, 99, 100, 101, 102, 71, 104,
105, 1, 148, 108, 77, 148, 111, 112, 81, 148,
148, 84, 85, 86, 119, 88, 148, 90, 148, 92,
148, 150, 95, 149, 149, 149, 99, 100, 101, 102,
149, 104, 105, 149, 149, 108, 149, 149, 111, 112,
96, 97, 98, 148, 149, 149, 119, 149, 149, 152,
113, 114, 150, 150, 150, 150, 150, 113, 114, 122,
123, 124, 125, 150, 150, 150, 122, 123, 124, 125,
150, 71, 150, 150, 150, 148, 149, 77, 150, 150,
150, 81, 150, 150, 84, 85, 86, 150, 88, 151,
90, 29, 92, 151, 150, 95, 155, 151, 151, 99,
100, 101, 102, 151, 104, 105, 151, 151, 108, 47,
48, 111, 112, 151, 151, 53, 151, 55, 151, 119,
151, 151, 151, 72, 73, 74, 93, 151, 151, 67,
72, 73, 74, 151, 47, 48, 152, 75, 76, 152,
53, 79, 55, 152, 152, 83, 113, 114, 148, 149,
152, 152, 155, 152, 67, 122, 123, 124, 125, 152,
152, 152, 75, 76, 113, 114, 79, 152, 152, 152,
83, 113, 114, 122, 123, 124, 125, 113, 114, 152,
122, 123, 124, 125, 152, 154, 122, 123, 124, 125,
152, 152, 130, 152, 132, 133, 134, 135, 136, 137,
138, 152, 155, 155, -1, 155, 144, 145, 155, 155,
155, 155, 155, 151, 150, 153, 155, 130, 155, 132,
133, 134, 135, 136, 137, 138, 91, 155, 155, -1,
-1, 144, 145, 113, 114, -1, -1, -1, 151, -1,
153, -1, 122, 123, 124, 125, -1, -1, 113, 114,
-1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
125, -1, -1, -1, -1, -1, -1, -1, -1, -1,
150
);
protected $actionBase = array(
0, 317, 983, 1014, 1080, 426, 1097, 531, 1008, 686,
583, 848, 3, 795, 1132, 1145, 1149, 626, 1162, 310,
180, 570, 467, 22, 530, 22, 509, 699, 699, 699,
315, 315, 319, 772, 154, 154, 154, 154, 154, 120,
298, 372, 424, 424, 685, 424, 793, 741, 845, 633,
529, 581, 476, 897, 897, 897, 897, 949, 949, 897,
897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
897, 897, 897, 897, 897, 897, 897, 897, 897, 50,
787, 715, 691, 783, 779, 778, 776, 902, 694, 909,
849, 842, 594, 840, 839, 837, 835, 833, 852, 673,
944, 867, 278, 278, 278, 278, 278, 278, 278, 278,
278, 278, 278, 153, 580, 750, 86, 535, 472, 112,
112, 112, 112, 112, 112, 112, 281, 281, 281, 281,
281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
281, 281, 281, 367, 410, 410, 410, 568, 1011, 359,
1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
1036, 1036, 1036, 62, -17, -17, 1167, 370, 340, 607,
1219, 523, 1204, 325, 325, 325, 325, 325, -24, 782,
5, 5, 5, 5, 155, 172, 172, 172, 172, 152,
152, 152, 152, 856, 859, 860, 862, 345, 345, 718,
718, 552, 817, 248, 248, 602, 602, 264, 264, 264,
264, 264, 264, 264, 264, 264, 264, 470, 376, 891,
454, 454, 454, 454, 386, 386, 520, 554, 415, 288,
288, 288, 436, 436, 436, 244, 244, 244, 682, 524,
524, 524, 586, 665, 683, 710, 710, 710, 710, -45,
809, 710, 710, 710, 387, 27, 27, 348, -42, 696,
863, 672, 866, 608, 664, -19, 725, 725, 725, 725,
413, 677, 591, 629, 606, 708, 59, 413, 50, 597,
80, 543, 785, 647, 358, 733, 133, 384, 14, 577,
300, 258, 57, 816, 731, 910, 923, 291, 355, 695,
543, 543, 543, 299, 452, 815, 300, 252, 576, 576,
576, 576, 78, 576, 576, 576, 576, 861, 421, 344,
192, 735, 492, 869, 618, 723, 723, 643, 726, 674,
492, 893, 893, 893, 893, 492, 726, 723, 723, 492,
552, 723, 131, 492, 693, 726, 702, 702, 893, 799,
803, 618, 676, 703, 723, 723, 723, 703, 643, 492,
893, 667, 717, 147, 723, 893, 589, 589, 667, 492,
589, 674, 589, 44, 407, 590, 900, 709, 870, 584,
810, 698, 679, 880, 879, 890, 639, 598, 884, 828,
724, 775, 611, 374, 560, 610, 592, 545, 716, 542,
711, 677, 722, 486, 486, 486, 704, 714, 704, 486,
486, 486, 486, 486, 486, 486, 486, 973, 707, 712,
675, 681, 774, 286, 720, 697, 261, 829, 724, 724,
917, 929, 864, 613, 877, 919, 704, 970, 789, 105,
389, 876, 680, 645, 721, 704, 875, 704, 819, 704,
916, 652, 855, 724, 486, 914, 969, 968, 964, 962,
960, 958, 957, 954, 617, 953, 738, 924, 144, 886,
708, 719, 659, 727, 142, 948, 704, 704, 825, 809,
704, 827, 740, 790, 939, 747, 922, 946, 665, 921,
704, 692, 945, 142, 553, 573, 903, 766, 871, 663,
912, 872, 826, 498, 489, 853, 512, 765, 935, 932,
940, 764, 813, 808, 333, 684, 624, 805, 873, 762,
918, 687, 722, 713, 688, 678, 804, 920, 758, 757,
753, 751, 0, 0, 0, 0, 0, 0, 0, 0,
0, 934, 358, 468, 581, 1048, 701, 1041, 1110, 824,
-8, 1023, 339, 1125, 1054, 811, 817, 723, 705, 927,
587, 36, 44, 52, 341, 52, 430, 697, 697, 697,
-56, -56, 63, 784, 154, 154, 154, 154, 154, 9,
298, 330, 658, 658, 690, 658, 804, 885, 917, 538,
457, 577, 425, 772, 772, 772, 772, 990, 990, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 419,
862, 406, 325, 860, 858, 852, 851, 981, 703, 1007,
903, 904, 534, 905, 910, 912, 913, 914, 896, 919,
805, 922, 278, 278, 278, 278, 278, 278, 278, 278,
278, 278, 278, 141, 643, 495, 812, 706, 609, 935,
935, 935, 935, 935, 935, 935, 159, 159, 159, 159,
159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
159, 159, 159, 62, 326, 326, 326, 179, 1052, 469,
1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
1077, 1077, 1077, 491, -17, -17, 364, 582, 331, 564,
689, 142, 202, 162, 162, 162, 162, 162, -25, 552,
5, 5, 5, 5, 161, 446, 446, 446, 446, 314,
314, 314, 314, 893, 861, 815, 920, 356, 356, 684,
684, 600, 889, 167, 167, 426, 426, 225, 225, 225,
225, 225, 225, 225, 225, 225, 225, 257, 348, 928,
423, 423, 423, 423, 293, 293, 482, 488, 416, 241,
241, 241, 153, 153, 153, -7, -7, -7, 711, 327,
327, 327, 714, 727, 704, 759, 759, 759, 759, 458,
878, 759, 759, 759, 318, -28, -28, 221, 363, 691,
892, 687, 894, 592, 756, -19, 722, 722, 722, 722,
461, 698, 572, 562, 601, 728, 411, 461, 419, 584,
238, 556, 847, 675, 81, 810, 296, 336, 300, 579,
-22, 467, 269, 720, 780, 974, 887, 287, 41, 731,
556, 556, 556, 214, 497, 823, -22, 399, 565, 565,
565, 565, 283, 565, 565, 565, 565, 918, 134, 370,
144, 769, 573, 932, 678, 808, 808, 670, 765, 693,
573, 967, 967, 967, 967, 573, 765, 808, 808, 573,
600, 808, 70, 573, 724, 765, 708, 708, 967, 778,
834, 678, 700, 725, 808, 808, 808, 725, 670, 573,
967, 699, 766, 46, 808, 967, 596, 596, 699, 573,
596, 693, 596, 12, 626, 625, 972, 966, 936, 653,
875, 710, 712, 957, 955, 961, 677, 661, 959, 763,
733, 844, 659, 492, 597, 608, 613, 616, 736, 599,
735, 698, 764, 594, 594, 594, 726, 745, 726, 594,
594, 594, 594, 594, 594, 594, 594, 1063, 758, 740,
737, 682, 828, 499, 755, 662, 516, 874, 733, 733,
991, 1022, 1021, 641, 953, 998, 726, 1062, 779, 398,
533, 952, 717, 668, 761, 726, 946, 726, 683, 726,
989, 672, 923, 733, 594, 988, 1053, 1051, 1047, 1046,
1045, 1044, 1043, 1040, 635, 1038, 830, 1017, 353, 960,
728, 751, 674, 831, 374, 1037, 726, 726, 864, 878,
726, 865, 835, 803, 1031, 820, 1006, 987, 727, 1005,
726, 715, 931, 374, 612, 639, 977, 816, 937, 686,
982, 942, 866, 520, 450, 895, 551, 809, 1029, 1028,
1039, 807, 871, 877, 455, 702, 685, 886, 945, 806,
997, 709, 764, 753, 721, 694, 888, 999, 771, 833,
774, 802, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@ -727,30 +717,30 @@ class Php5 extends \PhpParser\ParserAbstract
0, 0, 0, 278, -17, -17, -17, -17, 278, -17,
-17, -17, -17, -17, -17, -17, 278, 278, 278, 278,
278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
278, 278, 278, -17, 278, 278, 278, -17, 264, -17,
264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
264, 264, 264, 278, 0, 0, 278, -17, 278, -17,
278, 278, 278, -17, 278, 278, 278, -17, 225, -17,
225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
225, 225, 225, 278, 0, 0, 278, -17, 278, -17,
278, -17, 278, 278, 278, 278, 278, 278, -17, -17,
-17, -17, -17, -17, 0, 288, 288, 288, 288, -17,
-17, -17, -17, 89, 89, 89, 89, 264, 264, 264,
264, 264, 264, 288, 288, 436, 436, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 264, 89, 264,
368, 368, 368, 368, 368, 368, 27, 27, 27, 0,
0, 0, 0, 0, 0, 368, 368, 368, 27, 411,
411, 411, 27, 27, 27, 368, 368, 368, 368, 368,
411, 368, 368, 368, 723, 0, 0, 0, 411, 601,
601, 601, 601, 142, 300, 0, 368, 368, 368, 368,
0, 676, 0, 0, 0, 723, 0, 0, 0, 0,
0, 486, 105, 877, 0, 15, 0, 0, 0, 0,
0, 0, 0, 613, 15, 45, 45, 0, 0, 617,
486, 486, 486, 0, 0, 613, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 15, 0, 0,
0, 142, 0, 0, 0, 0, 0, 0, 368, 0,
0, 0, 0, 0, 0, 0, 368, 0, 0, 0,
0, 0, 0, 0, 0, 368
-17, -17, -17, -17, 0, 241, 241, 241, 241, -17,
-17, -17, -17, 485, 485, 485, 485, 225, 225, 225,
225, 225, 225, 241, 241, 153, 153, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 225, 485, 225,
15, 15, 15, 15, 15, 15, -28, -28, -28, 0,
0, 0, 0, 0, 0, 15, 15, 15, -28, 476,
476, 476, -28, -28, -28, 15, 15, 15, 15, 15,
476, 15, 15, 15, 808, 0, 0, 0, 476, 576,
576, 576, 576, 374, -22, 0, 15, 15, 15, 15,
0, 700, 0, 0, 0, 808, 0, 0, 0, 0,
0, 594, 398, 953, 0, 95, 0, 0, 0, 0,
0, 0, 0, 641, 95, 382, 382, 0, 0, 635,
594, 594, 594, 0, 0, 641, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 95, 0, 0,
0, 374, 0, 0, 0, 0, 0, 0, 15, 0,
0, 0, 0, 0, 0, 0, 15, 0, 0, 0,
0, 0, 0, 0, 0, 15
);
protected $actionDefault = array(

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,230 @@
Yield operator precedence
-----
<?php
function gen() {
yield "a" . "b";
yield "a" or die;
yield "k" => "a" . "b";
yield "k" => "a" or die;
var_dump([yield "k" => "a" . "b"]);
yield yield "k1" => yield "k2" => "a" . "b";
yield yield "k1" => (yield "k2") => "a" . "b";
var_dump([yield "k1" => yield "k2" => "a" . "b"]);
var_dump([yield "k1" => (yield "k2") => "a" . "b"]);
}
-----
!!php7
array(
0: Stmt_Function(
byRef: false
name: gen
params: array(
)
returnType: null
stmts: array(
0: Expr_Yield(
key: null
value: Expr_BinaryOp_Concat(
left: Scalar_String(
value: a
)
right: Scalar_String(
value: b
)
)
)
1: Expr_BinaryOp_LogicalOr(
left: Expr_Yield(
key: null
value: Scalar_String(
value: a
)
)
right: Expr_Exit(
expr: null
)
)
2: Expr_Yield(
key: Scalar_String(
value: k
)
value: Expr_BinaryOp_Concat(
left: Scalar_String(
value: a
)
right: Scalar_String(
value: b
)
)
)
3: Expr_BinaryOp_LogicalOr(
left: Expr_Yield(
key: Scalar_String(
value: k
)
value: Scalar_String(
value: a
)
)
right: Expr_Exit(
expr: null
)
)
4: Expr_FuncCall(
name: Name(
parts: array(
0: var_dump
)
)
args: array(
0: Arg(
value: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Yield(
key: Scalar_String(
value: k
)
value: Expr_BinaryOp_Concat(
left: Scalar_String(
value: a
)
right: Scalar_String(
value: b
)
)
)
byRef: false
)
)
)
byRef: false
unpack: false
)
)
)
5: Expr_Yield(
key: null
value: Expr_Yield(
key: Scalar_String(
value: k1
)
value: Expr_Yield(
key: Scalar_String(
value: k2
)
value: Expr_BinaryOp_Concat(
left: Scalar_String(
value: a
)
right: Scalar_String(
value: b
)
)
)
)
)
6: Expr_Yield(
key: Expr_Yield(
key: Scalar_String(
value: k1
)
value: Expr_Yield(
key: null
value: Scalar_String(
value: k2
)
)
)
value: Expr_BinaryOp_Concat(
left: Scalar_String(
value: a
)
right: Scalar_String(
value: b
)
)
)
7: Expr_FuncCall(
name: Name(
parts: array(
0: var_dump
)
)
args: array(
0: Arg(
value: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Yield(
key: Scalar_String(
value: k1
)
value: Expr_Yield(
key: Scalar_String(
value: k2
)
value: Expr_BinaryOp_Concat(
left: Scalar_String(
value: a
)
right: Scalar_String(
value: b
)
)
)
)
byRef: false
)
)
)
byRef: false
unpack: false
)
)
)
8: Expr_FuncCall(
name: Name(
parts: array(
0: var_dump
)
)
args: array(
0: Arg(
value: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: Expr_Yield(
key: Scalar_String(
value: k1
)
value: Expr_Yield(
key: null
value: Scalar_String(
value: k2
)
)
)
value: Expr_BinaryOp_Concat(
left: Scalar_String(
value: a
)
right: Scalar_String(
value: b
)
)
byRef: false
)
)
)
byRef: false
unpack: false
)
)
)
)
)
)

View File

@ -0,0 +1,48 @@
Yield with unary operator argument
-----
<?php
function gen() {
yield +1;
yield -1;
yield * -1;
}
-----
array(
0: Stmt_Function(
byRef: false
name: gen
params: array(
)
returnType: null
stmts: array(
0: Expr_Yield(
key: null
value: Expr_UnaryPlus(
expr: Scalar_LNumber(
value: 1
)
)
)
1: Expr_Yield(
key: null
value: Expr_UnaryMinus(
expr: Scalar_LNumber(
value: 1
)
)
)
2: Expr_BinaryOp_Mul(
left: Expr_Yield(
key: null
value: null
)
right: Expr_UnaryMinus(
expr: Scalar_LNumber(
value: 1
)
)
)
)
)
)