mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
Bring static scalar arrays in line
This commit is contained in:
parent
0237954778
commit
7f01b6fcec
@ -242,17 +242,18 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast *ast, zend_class_entry *s
|
|||||||
sub_function(result, &op1, &op2 TSRMLS_CC);
|
sub_function(result, &op1, &op2 TSRMLS_CC);
|
||||||
zval_dtor(&op2);
|
zval_dtor(&op2);
|
||||||
break;
|
break;
|
||||||
case ZEND_INIT_ARRAY:
|
case ZEND_AST_ARRAY:
|
||||||
array_init(result);
|
array_init(result);
|
||||||
{
|
{
|
||||||
int i;
|
zend_uint i;
|
||||||
for (i = 0; i < ast->children; i+=2) {
|
for (i = 0; i < ast->children; i++) {
|
||||||
if (ast->child[i]) {
|
zend_ast *elem = ast->child[i];
|
||||||
zend_ast_evaluate(&op1, ast->child[i], scope TSRMLS_CC);
|
if (elem->child[1]) {
|
||||||
|
zend_ast_evaluate(&op1, elem->child[1], scope TSRMLS_CC);
|
||||||
} else {
|
} else {
|
||||||
ZVAL_UNDEF(&op1);
|
ZVAL_UNDEF(&op1);
|
||||||
}
|
}
|
||||||
zend_ast_evaluate(&op2, ast->child[i+1], scope TSRMLS_CC);
|
zend_ast_evaluate(&op2, elem->child[0], scope TSRMLS_CC);
|
||||||
zend_ast_add_array_element(result, &op1, &op2 TSRMLS_CC);
|
zend_ast_add_array_element(result, &op1, &op2 TSRMLS_CC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -993,9 +993,9 @@ static_scalar_base:
|
|||||||
static_scalar_value:
|
static_scalar_value:
|
||||||
static_scalar_base { $$.u.ast = zend_ast_create_constant(&$1.u.constant); }
|
static_scalar_base { $$.u.ast = zend_ast_create_constant(&$1.u.constant); }
|
||||||
| common_scalar { $$.u.ast = $1.u.ast; }
|
| common_scalar { $$.u.ast = $1.u.ast; }
|
||||||
| T_ARRAY '(' static_array_pair_list ')' { $$ = $3; }
|
| T_ARRAY '(' static_array_pair_list ')' { $$.u.ast = $3.u.ast; }
|
||||||
| '[' static_array_pair_list ']' { $$ = $2; }
|
| '[' static_array_pair_list ']' { $$.u.ast = $2.u.ast; }
|
||||||
| static_operation { $$ = $1; }
|
| static_operation { $$.u.ast = $1.u.ast; }
|
||||||
;
|
;
|
||||||
|
|
||||||
static_operation:
|
static_operation:
|
||||||
@ -1088,8 +1088,10 @@ scalar:
|
|||||||
|
|
||||||
|
|
||||||
static_array_pair_list:
|
static_array_pair_list:
|
||||||
/* empty */ { $$.op_type = IS_CONST; array_init(&$$.u.constant); $$.u.ast = zend_ast_create_constant(&$$.u.constant); }
|
/* empty */
|
||||||
| non_empty_static_array_pair_list possible_comma { zend_ast_dynamic_shrink(&$1.u.ast); $$ = $1; }
|
{ array_init(&$$.u.constant); $$.u.ast = zend_ast_create_constant(&$$.u.constant); }
|
||||||
|
| non_empty_static_array_pair_list possible_comma
|
||||||
|
{ zend_ast_dynamic_shrink(&$1.u.ast); $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
possible_comma:
|
possible_comma:
|
||||||
@ -1098,16 +1100,17 @@ possible_comma:
|
|||||||
;
|
;
|
||||||
|
|
||||||
non_empty_static_array_pair_list:
|
non_empty_static_array_pair_list:
|
||||||
non_empty_static_array_pair_list ',' static_scalar_value T_DOUBLE_ARROW static_scalar_value
|
non_empty_static_array_pair_list ',' static_array_pair
|
||||||
{ $$.u.ast = zend_ast_dynamic_add(zend_ast_dynamic_add($1.u.ast, $3.u.ast), $5.u.ast); }
|
{ $$.u.ast = zend_ast_dynamic_add($1.u.ast, $3.u.ast); }
|
||||||
| non_empty_static_array_pair_list ',' static_scalar_value
|
| static_array_pair
|
||||||
{ $$.u.ast = zend_ast_dynamic_add(zend_ast_dynamic_add($1.u.ast, NULL), $3.u.ast); }
|
{ $$.u.ast = zend_ast_create_dynamic_and_add(ZEND_AST_ARRAY, $1.u.ast); }
|
||||||
| static_scalar_value T_DOUBLE_ARROW static_scalar_value
|
;
|
||||||
{ $$.u.ast = zend_ast_dynamic_add(zend_ast_create_dynamic_and_add(
|
|
||||||
ZEND_INIT_ARRAY, $1.u.ast), $3.u.ast); }
|
static_array_pair:
|
||||||
|
static_scalar_value T_DOUBLE_ARROW static_scalar_value
|
||||||
|
{ $$.u.ast = zend_ast_create_binary(ZEND_AST_ARRAY_ELEM, $3.u.ast, $1.u.ast); }
|
||||||
| static_scalar_value
|
| static_scalar_value
|
||||||
{ $$.u.ast = zend_ast_dynamic_add(zend_ast_create_dynamic_and_add(
|
{ $$.u.ast = zend_ast_create_binary(ZEND_AST_ARRAY_ELEM, $1.u.ast, NULL); }
|
||||||
ZEND_INIT_ARRAY, NULL), $1.u.ast); }
|
|
||||||
;
|
;
|
||||||
|
|
||||||
expr:
|
expr:
|
||||||
|
Loading…
Reference in New Issue
Block a user