Laravel version update

Laravel version update
This commit is contained in:
Manish Verma
2018-08-06 18:48:58 +05:30
parent d143048413
commit 126fbb0255
13678 changed files with 1031482 additions and 778530 deletions

View File

@@ -14,128 +14,147 @@ array('a', &$b, 'c' => 'd', 'e' => &$f);
['a' => 'b'];
-----
array(
0: Expr_Array(
items: array(
)
)
1: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_String(
value: a
)
byRef: false
0: Stmt_Expression(
expr: Expr_Array(
items: array(
)
)
)
2: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_String(
value: a
1: Stmt_Expression(
expr: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_String(
value: a
)
byRef: false
)
byRef: false
)
)
)
3: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_String(
value: a
2: Stmt_Expression(
expr: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_String(
value: a
)
byRef: false
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_String(
value: b
)
byRef: false
)
)
)
4: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_String(
value: a
3: Stmt_Expression(
expr: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_String(
value: a
)
byRef: false
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: b
1: Expr_ArrayItem(
key: null
value: Scalar_String(
value: b
)
byRef: false
)
byRef: true
)
2: Expr_ArrayItem(
key: Scalar_String(
value: c
)
value: Scalar_String(
value: d
)
byRef: false
)
3: Expr_ArrayItem(
key: Scalar_String(
value: e
)
value: Expr_Variable(
name: f
)
byRef: true
)
)
)
5: Expr_Array(
items: array(
4: Stmt_Expression(
expr: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_String(
value: a
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: b
)
byRef: true
)
2: Expr_ArrayItem(
key: Scalar_String(
value: c
)
value: Scalar_String(
value: d
)
byRef: false
)
3: Expr_ArrayItem(
key: Scalar_String(
value: e
)
value: Expr_Variable(
name: f
)
byRef: true
)
)
)
)
5: Stmt_Expression(
expr: Expr_Array(
items: array(
)
comments: array(
0: // short array syntax
)
)
comments: array(
0: // short array syntax
)
)
6: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
6: Stmt_Expression(
expr: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
)
byRef: false
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 2
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 2
)
byRef: false
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
)
byRef: false
)
byRef: false
)
)
)
7: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: Scalar_String(
value: a
7: Stmt_Expression(
expr: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: Scalar_String(
value: a
)
value: Scalar_String(
value: b
)
byRef: false
)
value: Scalar_String(
value: b
)
byRef: false
)
)
)

View File

@@ -0,0 +1,152 @@
Array destructuring
-----
<?php
[$a, $b] = [$c, $d];
[, $a, , , $b, ,] = $foo;
[, [[$a]], $b] = $bar;
['a' => $b, 'b' => $a] = $baz;
-----
!!php7
array(
0: Stmt_Expression(
expr: Expr_Assign(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: a
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: b
)
byRef: false
)
)
)
expr: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: c
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: d
)
byRef: false
)
)
)
)
)
1: Stmt_Expression(
expr: Expr_Assign(
var: Expr_Array(
items: array(
0: null
1: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: a
)
byRef: false
)
2: null
3: null
4: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: b
)
byRef: false
)
5: null
)
)
expr: Expr_Variable(
name: foo
)
)
)
2: Stmt_Expression(
expr: Expr_Assign(
var: Expr_Array(
items: array(
0: null
1: Expr_ArrayItem(
key: null
value: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: a
)
byRef: false
)
)
)
byRef: false
)
)
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: b
)
byRef: false
)
)
)
expr: Expr_Variable(
name: bar
)
)
)
3: Stmt_Expression(
expr: Expr_Assign(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: Scalar_String(
value: a
)
value: Expr_Variable(
name: b
)
byRef: false
)
1: Expr_ArrayItem(
key: Scalar_String(
value: b
)
value: Expr_Variable(
name: a
)
byRef: false
)
)
)
expr: Expr_Variable(
name: baz
)
)
)
)

View File

@@ -36,238 +36,328 @@ $a++;
$a--;
-----
array(
0: Expr_Assign(
var: Expr_Variable(
name: a
0: Stmt_Expression(
expr: Expr_Assign(
var: Expr_Variable(
name: a
comments: array(
0: // simple assign
)
)
expr: Expr_Variable(
name: b
)
comments: array(
0: // simple assign
)
)
expr: Expr_Variable(
name: b
)
comments: array(
0: // simple assign
)
)
1: Expr_AssignOp_BitwiseAnd(
var: Expr_Variable(
name: a
1: Stmt_Expression(
expr: Expr_AssignOp_BitwiseAnd(
var: Expr_Variable(
name: a
comments: array(
0: // combined assign
)
)
expr: Expr_Variable(
name: b
)
comments: array(
0: // combined assign
)
)
expr: Expr_Variable(
name: b
)
comments: array(
0: // combined assign
)
)
2: Expr_AssignOp_BitwiseOr(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
3: Expr_AssignOp_BitwiseXor(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
4: Expr_AssignOp_Concat(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
5: Expr_AssignOp_Div(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
6: Expr_AssignOp_Minus(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
7: Expr_AssignOp_Mod(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
8: Expr_AssignOp_Mul(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
9: Expr_AssignOp_Plus(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
10: Expr_AssignOp_ShiftLeft(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
11: Expr_AssignOp_ShiftRight(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
12: Expr_AssignOp_Pow(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
13: Expr_Assign(
var: Expr_Variable(
name: a
comments: array(
0: // chained assign
)
)
expr: Expr_AssignOp_Mul(
2: Stmt_Expression(
expr: Expr_AssignOp_BitwiseOr(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
expr: Expr_AssignOp_Pow(
)
)
3: Stmt_Expression(
expr: Expr_AssignOp_BitwiseXor(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
)
4: Stmt_Expression(
expr: Expr_AssignOp_Concat(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
)
5: Stmt_Expression(
expr: Expr_AssignOp_Div(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
)
6: Stmt_Expression(
expr: Expr_AssignOp_Minus(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
)
7: Stmt_Expression(
expr: Expr_AssignOp_Mod(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
)
8: Stmt_Expression(
expr: Expr_AssignOp_Mul(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
)
9: Stmt_Expression(
expr: Expr_AssignOp_Plus(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
)
10: Stmt_Expression(
expr: Expr_AssignOp_ShiftLeft(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
)
11: Stmt_Expression(
expr: Expr_AssignOp_ShiftRight(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
)
12: Stmt_Expression(
expr: Expr_AssignOp_Pow(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
)
13: Stmt_Expression(
expr: Expr_Assign(
var: Expr_Variable(
name: a
comments: array(
0: // chained assign
)
)
expr: Expr_AssignOp_Mul(
var: Expr_Variable(
name: c
name: b
)
expr: Expr_Variable(
name: d
expr: Expr_AssignOp_Pow(
var: Expr_Variable(
name: c
)
expr: Expr_Variable(
name: d
)
)
)
comments: array(
0: // chained assign
)
)
comments: array(
0: // chained assign
)
)
14: Expr_AssignRef(
var: Expr_Variable(
name: a
14: Stmt_Expression(
expr: Expr_AssignRef(
var: Expr_Variable(
name: a
comments: array(
0: // by ref assign
)
)
expr: Expr_Variable(
name: b
)
comments: array(
0: // by ref assign
)
)
expr: Expr_Variable(
name: b
)
comments: array(
0: // by ref assign
)
)
15: Expr_Assign(
var: Expr_List(
vars: array(
0: Expr_Variable(
name: a
15: Stmt_Expression(
expr: Expr_Assign(
var: Expr_List(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: a
)
byRef: false
)
)
comments: array(
0: // list() assign
)
)
expr: Expr_Variable(
name: b
)
comments: array(
0: // list() assign
)
)
expr: Expr_Variable(
name: b
)
comments: array(
0: // list() assign
)
)
16: Expr_Assign(
var: Expr_List(
vars: array(
0: Expr_Variable(
name: a
)
1: null
2: Expr_Variable(
name: b
)
)
)
expr: Expr_Variable(
name: c
)
)
17: Expr_Assign(
var: Expr_List(
vars: array(
0: Expr_Variable(
name: a
)
1: Expr_List(
vars: array(
0: null
1: Expr_Variable(
name: c
16: Stmt_Expression(
expr: Expr_Assign(
var: Expr_List(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: a
)
byRef: false
)
1: null
2: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: b
)
byRef: false
)
)
2: Expr_Variable(
name: d
)
)
expr: Expr_Variable(
name: c
)
)
expr: Expr_Variable(
name: e
)
17: Stmt_Expression(
expr: Expr_Assign(
var: Expr_List(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: a
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Expr_List(
items: array(
0: null
1: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: c
)
byRef: false
)
)
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: d
)
byRef: false
)
)
)
expr: Expr_Variable(
name: e
)
)
)
18: Expr_PreInc(
var: Expr_Variable(
name: a
18: Stmt_Expression(
expr: Expr_PreInc(
var: Expr_Variable(
name: a
)
comments: array(
0: // inc/dec
)
)
comments: array(
0: // inc/dec
)
)
19: Expr_PostInc(
var: Expr_Variable(
name: a
19: Stmt_Expression(
expr: Expr_PostInc(
var: Expr_Variable(
name: a
)
)
)
20: Expr_PreDec(
var: Expr_Variable(
name: a
20: Stmt_Expression(
expr: Expr_PreDec(
var: Expr_Variable(
name: a
)
)
)
21: Expr_PostDec(
var: Expr_Variable(
name: a
21: Stmt_Expression(
expr: Expr_PostDec(
var: Expr_Variable(
name: a
)
)
)
)

View File

@@ -5,17 +5,19 @@ $a =& new B;
-----
!!php5
array(
0: Expr_AssignRef(
var: Expr_Variable(
name: a
)
expr: Expr_New(
class: Name(
parts: array(
0: B
)
0: Stmt_Expression(
expr: Expr_AssignRef(
var: Expr_Variable(
name: a
)
args: array(
expr: Expr_New(
class: Name(
parts: array(
0: B
)
)
args: array(
)
)
)
)
@@ -27,13 +29,15 @@ $a =& new B;
!!php7
Syntax error, unexpected T_NEW from 2:7 to 2:9
array(
0: Expr_New(
class: Name(
parts: array(
0: B
0: Stmt_Expression(
expr: Expr_New(
class: Name(
parts: array(
0: B
)
)
args: array(
)
)
args: array(
)
)
)

View File

@@ -14,59 +14,81 @@ Casts
(unset) $a;
-----
array(
0: Expr_Cast_Array(
expr: Expr_Variable(
name: a
0: Stmt_Expression(
expr: Expr_Cast_Array(
expr: Expr_Variable(
name: a
)
)
)
1: Expr_Cast_Bool(
expr: Expr_Variable(
name: a
1: Stmt_Expression(
expr: Expr_Cast_Bool(
expr: Expr_Variable(
name: a
)
)
)
2: Expr_Cast_Bool(
expr: Expr_Variable(
name: a
2: Stmt_Expression(
expr: Expr_Cast_Bool(
expr: Expr_Variable(
name: a
)
)
)
3: Expr_Cast_Double(
expr: Expr_Variable(
name: a
3: Stmt_Expression(
expr: Expr_Cast_Double(
expr: Expr_Variable(
name: a
)
)
)
4: Expr_Cast_Double(
expr: Expr_Variable(
name: a
4: Stmt_Expression(
expr: Expr_Cast_Double(
expr: Expr_Variable(
name: a
)
)
)
5: Expr_Cast_Double(
expr: Expr_Variable(
name: a
5: Stmt_Expression(
expr: Expr_Cast_Double(
expr: Expr_Variable(
name: a
)
)
)
6: Expr_Cast_Int(
expr: Expr_Variable(
name: a
6: Stmt_Expression(
expr: Expr_Cast_Int(
expr: Expr_Variable(
name: a
)
)
)
7: Expr_Cast_Int(
expr: Expr_Variable(
name: a
7: Stmt_Expression(
expr: Expr_Cast_Int(
expr: Expr_Variable(
name: a
)
)
)
8: Expr_Cast_Object(
expr: Expr_Variable(
name: a
8: Stmt_Expression(
expr: Expr_Cast_Object(
expr: Expr_Variable(
name: a
)
)
)
9: Expr_Cast_String(
expr: Expr_Variable(
name: a
9: Stmt_Expression(
expr: Expr_Cast_String(
expr: Expr_Variable(
name: a
)
)
)
10: Expr_Cast_Unset(
expr: Expr_Variable(
name: a
10: Stmt_Expression(
expr: Expr_Cast_Unset(
expr: Expr_Variable(
name: a
)
)
)
)

View File

@@ -5,9 +5,11 @@ Clone
clone $a;
-----
array(
0: Expr_Clone(
expr: Expr_Variable(
name: a
0: Stmt_Expression(
expr: Expr_Clone(
expr: Expr_Variable(
name: a
)
)
)
)

View File

@@ -10,133 +10,167 @@ function($a) : array {};
function() use($a) : \Foo\Bar {};
-----
array(
0: Expr_Closure(
static: false
byRef: false
params: array(
0: Param(
type: null
byRef: false
variadic: false
name: a
default: null
0: Stmt_Expression(
expr: Expr_Closure(
static: false
byRef: false
params: array(
0: Param(
type: null
byRef: false
variadic: false
var: Expr_Variable(
name: a
)
default: null
)
)
)
uses: array(
)
returnType: null
stmts: array(
0: Expr_Variable(
name: a
uses: array(
)
returnType: null
stmts: array(
0: Stmt_Expression(
expr: Expr_Variable(
name: a
)
)
)
)
)
1: Expr_Closure(
static: false
byRef: false
params: array(
0: Param(
type: null
byRef: false
variadic: false
name: a
default: null
1: Stmt_Expression(
expr: Expr_Closure(
static: false
byRef: false
params: array(
0: Param(
type: null
byRef: false
variadic: false
var: Expr_Variable(
name: a
)
default: null
)
)
)
uses: array(
0: Expr_ClosureUse(
var: b
byRef: false
uses: array(
0: Expr_ClosureUse(
var: Expr_Variable(
name: b
)
byRef: false
)
)
returnType: null
stmts: array(
)
)
returnType: null
stmts: array(
)
)
2: Expr_Closure(
static: false
byRef: false
params: array(
)
uses: array(
0: Expr_ClosureUse(
var: a
byRef: false
2: Stmt_Expression(
expr: Expr_Closure(
static: false
byRef: false
params: array(
)
1: Expr_ClosureUse(
var: b
byRef: true
uses: array(
0: Expr_ClosureUse(
var: Expr_Variable(
name: a
)
byRef: false
)
1: Expr_ClosureUse(
var: Expr_Variable(
name: b
)
byRef: true
)
)
returnType: null
stmts: array(
)
)
returnType: null
stmts: array(
)
)
3: Expr_Closure(
static: false
byRef: true
params: array(
0: Param(
type: null
byRef: false
variadic: false
name: a
default: null
3: Stmt_Expression(
expr: Expr_Closure(
static: false
byRef: true
params: array(
0: Param(
type: null
byRef: false
variadic: false
var: Expr_Variable(
name: a
)
default: null
)
)
uses: array(
)
returnType: null
stmts: array(
)
)
uses: array(
)
returnType: null
stmts: array(
)
)
4: Expr_Closure(
static: true
byRef: false
params: array(
)
uses: array(
)
returnType: null
stmts: array(
)
)
5: Expr_Closure(
static: false
byRef: false
params: array(
0: Param(
type: null
byRef: false
variadic: false
name: a
default: null
4: Stmt_Expression(
expr: Expr_Closure(
static: true
byRef: false
params: array(
)
uses: array(
)
returnType: null
stmts: array(
)
)
uses: array(
)
returnType: array
stmts: array(
)
)
6: Expr_Closure(
static: false
byRef: false
params: array(
)
uses: array(
0: Expr_ClosureUse(
var: a
byRef: false
5: Stmt_Expression(
expr: Expr_Closure(
static: false
byRef: false
params: array(
0: Param(
type: null
byRef: false
variadic: false
var: Expr_Variable(
name: a
)
default: null
)
)
uses: array(
)
returnType: Identifier(
name: array
)
stmts: array(
)
)
returnType: Name_FullyQualified(
parts: array(
0: Foo
1: Bar
)
6: Stmt_Expression(
expr: Expr_Closure(
static: false
byRef: false
params: array(
)
uses: array(
0: Expr_ClosureUse(
var: Expr_Variable(
name: a
)
byRef: false
)
)
returnType: Name_FullyQualified(
parts: array(
0: Foo
1: Bar
)
)
stmts: array(
)
)
stmts: array(
)
)
)
)

View File

@@ -14,94 +14,116 @@ $a instanceof B;
$a instanceof $b;
-----
array(
0: Expr_BinaryOp_Smaller(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
1: Expr_BinaryOp_SmallerOrEqual(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
2: Expr_BinaryOp_Greater(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
3: Expr_BinaryOp_GreaterOrEqual(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
4: Expr_BinaryOp_Equal(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
5: Expr_BinaryOp_Identical(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
6: Expr_BinaryOp_NotEqual(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
7: Expr_BinaryOp_NotIdentical(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
8: Expr_BinaryOp_Spaceship(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
9: Expr_Instanceof(
expr: Expr_Variable(
name: a
)
class: Name(
parts: array(
0: B
0: Stmt_Expression(
expr: Expr_BinaryOp_Smaller(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
10: Expr_Instanceof(
expr: Expr_Variable(
name: a
)
class: Expr_Variable(
name: b
1: Stmt_Expression(
expr: Expr_BinaryOp_SmallerOrEqual(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
)
2: Stmt_Expression(
expr: Expr_BinaryOp_Greater(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
3: Stmt_Expression(
expr: Expr_BinaryOp_GreaterOrEqual(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
4: Stmt_Expression(
expr: Expr_BinaryOp_Equal(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
5: Stmt_Expression(
expr: Expr_BinaryOp_Identical(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
6: Stmt_Expression(
expr: Expr_BinaryOp_NotEqual(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
7: Stmt_Expression(
expr: Expr_BinaryOp_NotIdentical(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
8: Stmt_Expression(
expr: Expr_BinaryOp_Spaceship(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
9: Stmt_Expression(
expr: Expr_Instanceof(
expr: Expr_Variable(
name: a
)
class: Name(
parts: array(
0: B
)
)
)
)
10: Stmt_Expression(
expr: Expr_Instanceof(
expr: Expr_Variable(
name: a
)
class: Expr_Variable(
name: b
)
)
)
)

View File

@@ -44,7 +44,9 @@ array(
0: Stmt_Const(
consts: array(
0: Const(
name: T_1
name: Identifier(
name: T_1
)
value: Expr_BinaryOp_ShiftLeft(
left: Scalar_LNumber(
value: 1
@@ -59,7 +61,9 @@ array(
1: Stmt_Const(
consts: array(
0: Const(
name: T_2
name: Identifier(
name: T_2
)
value: Expr_BinaryOp_Div(
left: Scalar_LNumber(
value: 1
@@ -74,7 +78,9 @@ array(
2: Stmt_Const(
consts: array(
0: Const(
name: T_3
name: Identifier(
name: T_3
)
value: Expr_BinaryOp_Plus(
left: Scalar_DNumber(
value: 1.5
@@ -89,7 +95,9 @@ array(
3: Stmt_Const(
consts: array(
0: Const(
name: T_4
name: Identifier(
name: T_4
)
value: Expr_BinaryOp_Concat(
left: Scalar_String(
value: foo
@@ -104,7 +112,9 @@ array(
4: Stmt_Const(
consts: array(
0: Const(
name: T_5
name: Identifier(
name: T_5
)
value: Expr_BinaryOp_Mul(
left: Expr_BinaryOp_Plus(
left: Scalar_DNumber(
@@ -124,7 +134,9 @@ array(
5: Stmt_Const(
consts: array(
0: Const(
name: T_6
name: Identifier(
name: T_6
)
value: Expr_BinaryOp_Concat(
left: Expr_BinaryOp_Concat(
left: Expr_BinaryOp_Concat(
@@ -149,7 +161,9 @@ array(
6: Stmt_Const(
consts: array(
0: Const(
name: T_7
name: Identifier(
name: T_7
)
value: Scalar_MagicConst_Line(
)
)
@@ -158,7 +172,9 @@ array(
7: Stmt_Const(
consts: array(
0: Const(
name: T_8
name: Identifier(
name: T_8
)
value: Scalar_String(
value: This is a test string
)
@@ -168,7 +184,9 @@ array(
8: Stmt_Const(
consts: array(
0: Const(
name: T_9
name: Identifier(
name: T_9
)
value: Expr_BitwiseNot(
expr: Expr_UnaryMinus(
expr: Scalar_LNumber(
@@ -182,7 +200,9 @@ array(
9: Stmt_Const(
consts: array(
0: Const(
name: T_10
name: Identifier(
name: T_10
)
value: Expr_BinaryOp_Plus(
left: Expr_Ternary(
cond: Expr_UnaryMinus(
@@ -213,7 +233,9 @@ array(
10: Stmt_Const(
consts: array(
0: Const(
name: T_11
name: Identifier(
name: T_11
)
value: Expr_BinaryOp_BooleanAnd(
left: Scalar_LNumber(
value: 1
@@ -228,7 +250,9 @@ array(
11: Stmt_Const(
consts: array(
0: Const(
name: T_12
name: Identifier(
name: T_12
)
value: Expr_BinaryOp_LogicalAnd(
left: Scalar_LNumber(
value: 1
@@ -243,7 +267,9 @@ array(
12: Stmt_Const(
consts: array(
0: Const(
name: T_13
name: Identifier(
name: T_13
)
value: Expr_BinaryOp_BooleanOr(
left: Scalar_LNumber(
value: 0
@@ -258,7 +284,9 @@ array(
13: Stmt_Const(
consts: array(
0: Const(
name: T_14
name: Identifier(
name: T_14
)
value: Expr_BinaryOp_LogicalOr(
left: Scalar_LNumber(
value: 1
@@ -273,7 +301,9 @@ array(
14: Stmt_Const(
consts: array(
0: Const(
name: T_15
name: Identifier(
name: T_15
)
value: Expr_BinaryOp_LogicalXor(
left: Scalar_LNumber(
value: 1
@@ -288,7 +318,9 @@ array(
15: Stmt_Const(
consts: array(
0: Const(
name: T_16
name: Identifier(
name: T_16
)
value: Expr_BinaryOp_LogicalXor(
left: Scalar_LNumber(
value: 1
@@ -303,7 +335,9 @@ array(
16: Stmt_Const(
consts: array(
0: Const(
name: T_17
name: Identifier(
name: T_17
)
value: Expr_BinaryOp_Smaller(
left: Scalar_LNumber(
value: 1
@@ -318,7 +352,9 @@ array(
17: Stmt_Const(
consts: array(
0: Const(
name: T_18
name: Identifier(
name: T_18
)
value: Expr_BinaryOp_SmallerOrEqual(
left: Scalar_LNumber(
value: 0
@@ -333,7 +369,9 @@ array(
18: Stmt_Const(
consts: array(
0: Const(
name: T_19
name: Identifier(
name: T_19
)
value: Expr_BinaryOp_Greater(
left: Scalar_LNumber(
value: 1
@@ -348,7 +386,9 @@ array(
19: Stmt_Const(
consts: array(
0: Const(
name: T_20
name: Identifier(
name: T_20
)
value: Expr_BinaryOp_GreaterOrEqual(
left: Scalar_LNumber(
value: 1
@@ -363,7 +403,9 @@ array(
20: Stmt_Const(
consts: array(
0: Const(
name: T_21
name: Identifier(
name: T_21
)
value: Expr_BinaryOp_Identical(
left: Scalar_LNumber(
value: 1
@@ -378,7 +420,9 @@ array(
21: Stmt_Const(
consts: array(
0: Const(
name: T_22
name: Identifier(
name: T_22
)
value: Expr_BinaryOp_NotIdentical(
left: Scalar_LNumber(
value: 1
@@ -393,7 +437,9 @@ array(
22: Stmt_Const(
consts: array(
0: Const(
name: T_23
name: Identifier(
name: T_23
)
value: Expr_BinaryOp_NotEqual(
left: Scalar_LNumber(
value: 0
@@ -408,7 +454,9 @@ array(
23: Stmt_Const(
consts: array(
0: Const(
name: T_24
name: Identifier(
name: T_24
)
value: Expr_BinaryOp_Equal(
left: Scalar_LNumber(
value: 1
@@ -423,7 +471,9 @@ array(
24: Stmt_Const(
consts: array(
0: Const(
name: T_25
name: Identifier(
name: T_25
)
value: Expr_BinaryOp_Plus(
left: Scalar_LNumber(
value: 1
@@ -443,7 +493,9 @@ array(
25: Stmt_Const(
consts: array(
0: Const(
name: T_26
name: Identifier(
name: T_26
)
value: Expr_BinaryOp_Plus(
left: Expr_BinaryOp_Plus(
left: Scalar_String(
@@ -463,7 +515,9 @@ array(
26: Stmt_Const(
consts: array(
0: Const(
name: T_27
name: Identifier(
name: T_27
)
value: Expr_BinaryOp_Pow(
left: Scalar_LNumber(
value: 2
@@ -478,7 +532,9 @@ array(
27: Stmt_Const(
consts: array(
0: Const(
name: T_28
name: Identifier(
name: T_28
)
value: Expr_ArrayDimFetch(
var: Expr_Array(
items: array(
@@ -515,7 +571,9 @@ array(
28: Stmt_Const(
consts: array(
0: Const(
name: T_29
name: Identifier(
name: T_29
)
value: Expr_BinaryOp_Minus(
left: Scalar_LNumber(
value: 12
@@ -530,7 +588,9 @@ array(
29: Stmt_Const(
consts: array(
0: Const(
name: T_30
name: Identifier(
name: T_30
)
value: Expr_BinaryOp_BitwiseXor(
left: Scalar_LNumber(
value: 12
@@ -545,7 +605,9 @@ array(
30: Stmt_Const(
consts: array(
0: Const(
name: T_31
name: Identifier(
name: T_31
)
value: Expr_BinaryOp_BitwiseAnd(
left: Scalar_LNumber(
value: 12
@@ -560,7 +622,9 @@ array(
31: Stmt_Const(
consts: array(
0: Const(
name: T_32
name: Identifier(
name: T_32
)
value: Expr_BinaryOp_BitwiseOr(
left: Scalar_LNumber(
value: 12
@@ -575,7 +639,9 @@ array(
32: Stmt_Const(
consts: array(
0: Const(
name: T_33
name: Identifier(
name: T_33
)
value: Expr_BinaryOp_Mod(
left: Scalar_LNumber(
value: 12
@@ -590,7 +656,9 @@ array(
33: Stmt_Const(
consts: array(
0: Const(
name: T_34
name: Identifier(
name: T_34
)
value: Expr_BinaryOp_ShiftRight(
left: Scalar_LNumber(
value: 100
@@ -605,7 +673,9 @@ array(
34: Stmt_Const(
consts: array(
0: Const(
name: T_35
name: Identifier(
name: T_35
)
value: Expr_BooleanNot(
expr: Expr_ConstFetch(
name: Name(

View File

@@ -4,9 +4,11 @@ Error suppression
@$a;
-----
array(
0: Expr_ErrorSuppress(
expr: Expr_Variable(
name: a
0: Stmt_Expression(
expr: Expr_ErrorSuppress(
expr: Expr_Variable(
name: a
)
)
)
)

View File

@@ -9,26 +9,38 @@ die();
die('Exit!');
-----
array(
0: Expr_Exit(
expr: null
)
1: Expr_Exit(
expr: null
)
2: Expr_Exit(
expr: Scalar_String(
value: Die!
0: Stmt_Expression(
expr: Expr_Exit(
expr: null
)
)
3: Expr_Exit(
expr: null
1: Stmt_Expression(
expr: Expr_Exit(
expr: null
)
)
4: Expr_Exit(
expr: null
2: Stmt_Expression(
expr: Expr_Exit(
expr: Scalar_String(
value: Die!
)
)
)
5: Expr_Exit(
expr: Scalar_String(
value: Exit!
3: Stmt_Expression(
expr: Expr_Exit(
expr: null
)
)
4: Stmt_Expression(
expr: Expr_Exit(
expr: null
)
)
5: Stmt_Expression(
expr: Expr_Exit(
expr: Scalar_String(
value: Exit!
)
)
)
)

View File

@@ -9,90 +9,100 @@ f(&$a);
f($a, ...$b);
-----
array(
0: Expr_FuncCall(
name: Name(
parts: array(
0: f
)
)
args: array(
)
)
1: Expr_FuncCall(
name: Name(
parts: array(
0: f
)
)
args: array(
0: Arg(
value: Expr_Variable(
name: a
0: Stmt_Expression(
expr: Expr_FuncCall(
name: Name(
parts: array(
0: f
)
byRef: false
unpack: false
)
args: array(
)
)
)
2: Expr_FuncCall(
name: Name(
parts: array(
0: f
)
)
args: array(
0: Arg(
value: Expr_Variable(
name: a
1: Stmt_Expression(
expr: Expr_FuncCall(
name: Name(
parts: array(
0: f
)
byRef: false
unpack: false
)
1: Arg(
value: Expr_Variable(
name: b
args: array(
0: Arg(
value: Expr_Variable(
name: a
)
byRef: false
unpack: false
)
byRef: false
unpack: false
)
)
)
3: Expr_FuncCall(
name: Name(
parts: array(
0: f
)
)
args: array(
0: Arg(
value: Expr_Variable(
name: a
2: Stmt_Expression(
expr: Expr_FuncCall(
name: Name(
parts: array(
0: f
)
)
args: array(
0: Arg(
value: Expr_Variable(
name: a
)
byRef: false
unpack: false
)
1: Arg(
value: Expr_Variable(
name: b
)
byRef: false
unpack: false
)
byRef: true
unpack: false
)
)
)
4: Expr_FuncCall(
name: Name(
parts: array(
0: f
3: Stmt_Expression(
expr: Expr_FuncCall(
name: Name(
parts: array(
0: f
)
)
args: array(
0: Arg(
value: Expr_Variable(
name: a
)
byRef: true
unpack: false
)
)
)
args: array(
0: Arg(
value: Expr_Variable(
name: a
)
4: Stmt_Expression(
expr: Expr_FuncCall(
name: Name(
parts: array(
0: f
)
byRef: false
unpack: false
)
1: Arg(
value: Expr_Variable(
name: b
args: array(
0: Arg(
value: Expr_Variable(
name: a
)
byRef: false
unpack: false
)
1: Arg(
value: Expr_Variable(
name: b
)
byRef: false
unpack: true
)
byRef: false
unpack: true
)
)
)

View File

@@ -7,27 +7,37 @@ A::B;
A::class;
-----
array(
0: Expr_ConstFetch(
name: Name(
parts: array(
0: A
0: Stmt_Expression(
expr: Expr_ConstFetch(
name: Name(
parts: array(
0: A
)
)
)
)
1: Expr_ClassConstFetch(
class: Name(
parts: array(
0: A
1: Stmt_Expression(
expr: Expr_ClassConstFetch(
class: Name(
parts: array(
0: A
)
)
name: Identifier(
name: B
)
)
name: B
)
2: Expr_ClassConstFetch(
class: Name(
parts: array(
0: A
2: Stmt_Expression(
expr: Expr_ClassConstFetch(
class: Name(
parts: array(
0: A
)
)
name: Identifier(
name: class
)
)
name: class
)
)

View File

@@ -16,216 +16,238 @@ Foo::BAR[1];
$foo::BAR[2][1][0];
-----
array(
0: Expr_ArrayDimFetch(
var: Scalar_String(
value: abc
)
dim: Scalar_LNumber(
value: 2
)
)
1: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Scalar_String(
value: abc
)
dim: Scalar_LNumber(
value: 2
)
0: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Scalar_String(
value: abc
)
dim: Scalar_LNumber(
value: 0
value: 2
)
)
dim: Scalar_LNumber(
value: 0
)
)
2: Expr_ArrayDimFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
1: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Scalar_String(
value: abc
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
dim: Scalar_LNumber(
value: 2
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
)
byRef: false
)
)
)
dim: Scalar_LNumber(
value: 2
)
)
3: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 2
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
)
byRef: false
)
)
)
dim: Scalar_LNumber(
value: 2
value: 0
)
)
dim: Scalar_LNumber(
value: 0
)
)
dim: Scalar_LNumber(
value: 0
)
2: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 2
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
)
byRef: false
)
)
)
dim: Scalar_LNumber(
value: 2
)
)
)
4: Expr_ArrayDimFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
3: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 2
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
)
byRef: false
)
)
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
dim: Scalar_LNumber(
value: 2
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
)
byRef: false
)
)
)
dim: Scalar_LNumber(
value: 2
)
)
5: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 2
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
)
byRef: false
)
)
)
dim: Scalar_LNumber(
value: 2
value: 0
)
)
dim: Scalar_LNumber(
value: 0
)
)
dim: Scalar_LNumber(
value: 0
)
)
6: Expr_ArrayDimFetch(
var: Expr_ConstFetch(
name: Name(
parts: array(
0: FOO
)
)
)
dim: Scalar_LNumber(
value: 0
)
)
7: Expr_ArrayDimFetch(
var: Expr_ClassConstFetch(
class: Name(
parts: array(
0: Foo
)
)
name: BAR
)
dim: Scalar_LNumber(
value: 1
)
)
8: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_ClassConstFetch(
class: Expr_Variable(
name: foo
4: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 2
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
)
byRef: false
)
)
)
dim: Scalar_LNumber(
value: 2
)
)
)
5: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 2
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
)
byRef: false
)
)
)
dim: Scalar_LNumber(
value: 2
)
)
dim: Scalar_LNumber(
value: 0
)
)
dim: Scalar_LNumber(
value: 0
)
)
)
6: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_ConstFetch(
name: Name(
parts: array(
0: FOO
)
)
)
dim: Scalar_LNumber(
value: 0
)
)
)
7: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_ClassConstFetch(
class: Name(
parts: array(
0: Foo
)
)
name: Identifier(
name: BAR
)
dim: Scalar_LNumber(
value: 2
)
)
dim: Scalar_LNumber(
value: 1
)
)
dim: Scalar_LNumber(
value: 0
)
8: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_ClassConstFetch(
class: Expr_Variable(
name: foo
)
name: Identifier(
name: BAR
)
)
dim: Scalar_LNumber(
value: 2
)
)
dim: Scalar_LNumber(
value: 1
)
)
dim: Scalar_LNumber(
value: 0
)
)
)
)

View File

@@ -16,114 +16,140 @@ $a->b['c']();
a()['b'];
-----
array(
0: Expr_FuncCall(
name: Name(
parts: array(
0: a
)
comments: array(
0: // function name variations
)
)
args: array(
)
comments: array(
0: // function name variations
)
)
1: Expr_FuncCall(
name: Expr_Variable(
name: a
)
args: array(
)
)
2: Expr_FuncCall(
name: Expr_Variable(
name: Scalar_String(
value: a
)
)
args: array(
)
)
3: Expr_FuncCall(
name: Expr_Variable(
name: Expr_Variable(
name: a
)
)
args: array(
)
)
4: Expr_FuncCall(
name: Expr_Variable(
name: Expr_Variable(
name: Expr_Variable(
name: a
)
)
)
args: array(
)
)
5: Expr_FuncCall(
name: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
)
)
args: array(
)
)
6: Expr_FuncCall(
name: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
)
)
args: array(
)
)
7: Expr_FuncCall(
name: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
)
name: b
)
dim: Scalar_String(
value: c
)
)
args: array(
)
)
8: Expr_ArrayDimFetch(
var: Expr_FuncCall(
0: Stmt_Expression(
expr: Expr_FuncCall(
name: Name(
parts: array(
0: a
)
comments: array(
0: // array dereferencing
0: // function name variations
)
)
args: array(
)
comments: array(
0: // array dereferencing
0: // function name variations
)
)
dim: Scalar_String(
value: b
comments: array(
0: // function name variations
)
)
1: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_Variable(
name: a
)
args: array(
)
)
)
2: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_Variable(
name: Scalar_String(
value: a
)
)
args: array(
)
)
)
3: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_Variable(
name: Expr_Variable(
name: a
)
)
args: array(
)
)
)
4: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_Variable(
name: Expr_Variable(
name: Expr_Variable(
name: a
)
)
)
args: array(
)
)
)
5: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
)
)
args: array(
)
)
)
6: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
)
)
args: array(
)
)
)
7: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
)
name: Identifier(
name: b
)
)
dim: Scalar_String(
value: c
)
)
args: array(
)
)
)
8: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_FuncCall(
name: Name(
parts: array(
0: a
)
comments: array(
0: // array dereferencing
)
)
args: array(
)
comments: array(
0: // array dereferencing
)
)
dim: Scalar_String(
value: b
)
comments: array(
0: // array dereferencing
)
)
comments: array(
0: // array dereferencing

View File

@@ -8,48 +8,42 @@ New expression dereferencing
(new A)['b']['c'];
-----
array(
0: Expr_PropertyFetch(
var: Expr_New(
class: Name(
parts: array(
0: A
0: Stmt_Expression(
expr: Expr_PropertyFetch(
var: Expr_New(
class: Name(
parts: array(
0: A
)
)
args: array(
)
)
name: Identifier(
name: b
)
)
)
1: Stmt_Expression(
expr: Expr_MethodCall(
var: Expr_New(
class: Name(
parts: array(
0: A
)
)
args: array(
)
)
name: Identifier(
name: b
)
args: array(
)
)
name: b
)
1: Expr_MethodCall(
var: Expr_New(
class: Name(
parts: array(
0: A
)
)
args: array(
)
)
name: b
args: array(
)
)
2: Expr_ArrayDimFetch(
var: Expr_New(
class: Name(
parts: array(
0: A
)
)
args: array(
)
)
dim: Scalar_String(
value: b
)
)
3: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
2: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_New(
class: Name(
parts: array(
@@ -63,8 +57,26 @@ array(
value: b
)
)
dim: Scalar_String(
value: c
)
3: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_New(
class: Name(
parts: array(
0: A
)
)
args: array(
)
)
dim: Scalar_String(
value: b
)
)
dim: Scalar_String(
value: c
)
)
)
)

View File

@@ -19,123 +19,162 @@ $a->b(){'c'}; // invalid PHP: drop Support?
-----
!!php5
array(
0: Expr_PropertyFetch(
var: Expr_Variable(
name: a
0: Stmt_Expression(
expr: Expr_PropertyFetch(
var: Expr_Variable(
name: a
comments: array(
0: // property fetch variations
)
)
name: Identifier(
name: b
)
comments: array(
0: // property fetch variations
)
)
name: b
comments: array(
0: // property fetch variations
)
)
1: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
)
name: b
)
dim: Scalar_String(
value: c
)
)
2: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
)
name: b
)
dim: Scalar_String(
value: c
)
)
3: Expr_MethodCall(
var: Expr_Variable(
name: a
comments: array(
0: // method call variations
)
)
name: b
args: array(
)
comments: array(
0: // method call variations
)
)
4: Expr_MethodCall(
var: Expr_Variable(
name: a
)
name: Scalar_String(
value: b
)
args: array(
)
)
5: Expr_MethodCall(
var: Expr_Variable(
name: a
)
name: Expr_Variable(
name: b
)
args: array(
)
)
6: Expr_MethodCall(
var: Expr_Variable(
name: a
)
name: Expr_ArrayDimFetch(
var: Expr_Variable(
name: b
1: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
)
name: Identifier(
name: b
)
)
dim: Scalar_String(
value: c
)
)
args: array(
)
2: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
)
name: Identifier(
name: b
)
)
dim: Scalar_String(
value: c
)
)
)
7: Expr_ArrayDimFetch(
var: Expr_MethodCall(
3: Stmt_Expression(
expr: Expr_MethodCall(
var: Expr_Variable(
name: a
comments: array(
0: // method call variations
)
)
name: Identifier(
name: b
)
args: array(
)
comments: array(
0: // method call variations
)
)
comments: array(
0: // method call variations
)
)
4: Stmt_Expression(
expr: Expr_MethodCall(
var: Expr_Variable(
name: a
)
name: Scalar_String(
value: b
)
args: array(
)
)
)
5: Stmt_Expression(
expr: Expr_MethodCall(
var: Expr_Variable(
name: a
)
name: Expr_Variable(
name: b
)
args: array(
)
)
)
6: Stmt_Expression(
expr: Expr_MethodCall(
var: Expr_Variable(
name: a
)
name: Expr_ArrayDimFetch(
var: Expr_Variable(
name: b
)
dim: Scalar_String(
value: c
)
)
args: array(
)
)
)
7: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_MethodCall(
var: Expr_Variable(
name: a
comments: array(
0: // array dereferencing
)
)
name: Identifier(
name: b
)
args: array(
)
comments: array(
0: // array dereferencing
)
)
name: b
args: array(
dim: Scalar_String(
value: c
)
comments: array(
0: // array dereferencing
)
)
dim: Scalar_String(
value: c
)
comments: array(
0: // array dereferencing
)
)
8: Expr_ArrayDimFetch(
var: Expr_MethodCall(
var: Expr_Variable(
name: a
8: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_MethodCall(
var: Expr_Variable(
name: a
)
name: Identifier(
name: b
)
args: array(
)
)
name: b
args: array(
dim: Scalar_String(
value: c
)
)
dim: Scalar_String(
value: c
)
)
9: Stmt_Nop(
comments: array(

View File

@@ -9,16 +9,8 @@ $a{'b'};
${$a}['b'];
-----
array(
0: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
)
)
1: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
0: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
@@ -26,37 +18,55 @@ array(
value: b
)
)
dim: Scalar_String(
value: c
)
1: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
)
)
dim: Scalar_String(
value: c
)
)
)
2: Expr_Assign(
var: Expr_ArrayDimFetch(
2: Stmt_Expression(
expr: Expr_Assign(
var: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: null
)
expr: Expr_Variable(
name: b
)
)
)
3: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: null
)
expr: Expr_Variable(
name: b
)
)
3: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
)
)
4: Expr_ArrayDimFetch(
var: Expr_Variable(
name: Expr_Variable(
name: a
dim: Scalar_String(
value: b
)
)
dim: Scalar_String(
value: b
)
4: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_Variable(
name: Expr_Variable(
name: a
)
)
dim: Scalar_String(
value: b
)
)
)
)

View File

@@ -20,71 +20,65 @@ $a['b']::c();
-----
!!php5
array(
0: Expr_StaticCall(
class: Name(
parts: array(
0: A
0: Stmt_Expression(
expr: Expr_StaticCall(
class: Name(
parts: array(
0: A
)
comments: array(
0: // method name variations
)
)
name: Identifier(
name: b
)
args: array(
)
comments: array(
0: // method name variations
)
)
name: b
args: array(
)
comments: array(
0: // method name variations
)
)
1: Expr_StaticCall(
class: Name(
parts: array(
0: A
1: Stmt_Expression(
expr: Expr_StaticCall(
class: Name(
parts: array(
0: A
)
)
name: Scalar_String(
value: b
)
args: array(
)
)
name: Scalar_String(
value: b
)
args: array(
)
)
2: Expr_StaticCall(
class: Name(
parts: array(
0: A
2: Stmt_Expression(
expr: Expr_StaticCall(
class: Name(
parts: array(
0: A
)
)
)
name: Expr_Variable(
name: b
)
args: array(
)
)
3: Expr_StaticCall(
class: Name(
parts: array(
0: A
)
)
name: Expr_ArrayDimFetch(
var: Expr_Variable(
name: Expr_Variable(
name: b
)
dim: Scalar_String(
value: c
args: array(
)
)
args: array(
)
)
4: Expr_StaticCall(
class: Name(
parts: array(
0: A
3: Stmt_Expression(
expr: Expr_StaticCall(
class: Name(
parts: array(
0: A
)
)
)
name: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
name: Expr_ArrayDimFetch(
var: Expr_Variable(
name: b
)
@@ -92,82 +86,129 @@ array(
value: c
)
)
dim: Scalar_String(
value: d
args: array(
)
)
args: array(
)
)
5: Expr_ArrayDimFetch(
var: Expr_StaticCall(
4: Stmt_Expression(
expr: Expr_StaticCall(
class: Name(
parts: array(
0: A
)
)
name: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_Variable(
name: b
)
dim: Scalar_String(
value: c
)
)
dim: Scalar_String(
value: d
)
)
args: array(
)
)
)
5: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_StaticCall(
class: Name(
parts: array(
0: A
)
comments: array(
0: // array dereferencing
)
)
name: Identifier(
name: b
)
args: array(
)
comments: array(
0: // array dereferencing
)
)
name: b
args: array(
dim: Scalar_String(
value: c
)
comments: array(
0: // array dereferencing
)
)
dim: Scalar_String(
value: c
)
comments: array(
0: // array dereferencing
)
)
6: Expr_StaticCall(
class: Name(
parts: array(
0: static
6: Stmt_Expression(
expr: Expr_StaticCall(
class: Name(
parts: array(
0: static
)
comments: array(
0: // class name variations
)
)
name: Identifier(
name: b
)
args: array(
)
comments: array(
0: // class name variations
)
)
name: b
args: array(
)
comments: array(
0: // class name variations
)
)
7: Expr_StaticCall(
class: Expr_Variable(
name: a
)
name: b
args: array(
)
)
8: Expr_StaticCall(
class: Expr_Variable(
name: Scalar_String(
value: a
)
)
name: b
args: array(
)
)
9: Expr_StaticCall(
class: Expr_ArrayDimFetch(
var: Expr_Variable(
7: Stmt_Expression(
expr: Expr_StaticCall(
class: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
name: Identifier(
name: b
)
args: array(
)
)
name: c
args: array(
)
8: Stmt_Expression(
expr: Expr_StaticCall(
class: Expr_Variable(
name: Scalar_String(
value: a
)
)
name: Identifier(
name: b
)
args: array(
)
)
)
9: Stmt_Expression(
expr: Expr_StaticCall(
class: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
)
)
name: Identifier(
name: c
)
args: array(
)
)
)
)

View File

@@ -14,73 +14,95 @@ A::$b{'c'};
// class name variations can be found in staticCall.test
-----
array(
0: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
comments: array(
0: // property name variations
)
)
name: b
comments: array(
0: // property name variations
)
)
1: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
)
name: Expr_Variable(
name: b
)
)
2: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
)
name: Scalar_String(
value: b
)
)
3: Expr_ArrayDimFetch(
var: Expr_StaticPropertyFetch(
0: Stmt_Expression(
expr: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
comments: array(
0: // array access
0: // property name variations
)
)
name: b
name: VarLikeIdentifier(
name: b
)
comments: array(
0: // array access
0: // property name variations
)
)
dim: Scalar_String(
value: c
)
comments: array(
0: // array access
0: // property name variations
)
)
4: Expr_ArrayDimFetch(
var: Expr_StaticPropertyFetch(
1: Stmt_Expression(
expr: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
)
name: b
name: Expr_Variable(
name: b
)
)
dim: Scalar_String(
value: c
)
2: Stmt_Expression(
expr: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
)
name: Scalar_String(
value: b
)
)
)
3: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
comments: array(
0: // array access
)
)
name: VarLikeIdentifier(
name: b
)
comments: array(
0: // array access
)
)
dim: Scalar_String(
value: c
)
comments: array(
0: // array access
)
)
comments: array(
0: // array access
)
)
4: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
)
name: VarLikeIdentifier(
name: b
)
)
dim: Scalar_String(
value: c
)
)
)
5: Stmt_Nop(

View File

@@ -8,33 +8,43 @@ require_once 'A.php';
eval('A');
-----
array(
0: Expr_Include(
expr: Scalar_String(
value: A.php
0: Stmt_Expression(
expr: Expr_Include(
expr: Scalar_String(
value: A.php
)
type: TYPE_INCLUDE (1)
)
type: 1
)
1: Expr_Include(
expr: Scalar_String(
value: A.php
1: Stmt_Expression(
expr: Expr_Include(
expr: Scalar_String(
value: A.php
)
type: TYPE_INCLUDE_ONCE (2)
)
type: 2
)
2: Expr_Include(
expr: Scalar_String(
value: A.php
2: Stmt_Expression(
expr: Expr_Include(
expr: Scalar_String(
value: A.php
)
type: TYPE_REQUIRE (3)
)
type: 3
)
3: Expr_Include(
expr: Scalar_String(
value: A.php
3: Stmt_Expression(
expr: Expr_Include(
expr: Scalar_String(
value: A.php
)
type: TYPE_REQUIRE_ONCE (4)
)
type: 4
)
4: Expr_Eval(
expr: Scalar_String(
value: A
4: Stmt_Expression(
expr: Expr_Eval(
expr: Scalar_String(
value: A
)
)
)
)

View File

@@ -9,65 +9,75 @@ empty(foo());
empty(array(1, 2, 3));
-----
array(
0: Expr_Isset(
vars: array(
0: Expr_Variable(
0: Stmt_Expression(
expr: Expr_Isset(
vars: array(
0: Expr_Variable(
name: a
)
)
)
)
1: Stmt_Expression(
expr: Expr_Isset(
vars: array(
0: Expr_Variable(
name: a
)
1: Expr_Variable(
name: b
)
2: Expr_Variable(
name: c
)
)
)
)
2: Stmt_Expression(
expr: Expr_Empty(
expr: Expr_Variable(
name: a
)
)
)
1: Expr_Isset(
vars: array(
0: Expr_Variable(
name: a
)
1: Expr_Variable(
name: b
)
2: Expr_Variable(
name: c
3: Stmt_Expression(
expr: Expr_Empty(
expr: Expr_FuncCall(
name: Name(
parts: array(
0: foo
)
)
args: array(
)
)
)
)
2: Expr_Empty(
expr: Expr_Variable(
name: a
)
)
3: Expr_Empty(
expr: Expr_FuncCall(
name: Name(
parts: array(
0: foo
)
)
args: array(
)
)
)
4: Expr_Empty(
expr: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
4: Stmt_Expression(
expr: Expr_Empty(
expr: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
)
byRef: false
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 2
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 2
)
byRef: false
)
byRef: false
)
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
2: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 3
)
byRef: false
)
byRef: false
)
)
)

View File

@@ -0,0 +1,88 @@
List reference assignments (PHP 7.3)
-----
<?php
list(&$v) = $x;
list('k' => &$v) = $x;
[&$v] = $x;
['k' => &$v] = $x;
-----
!!php7
array(
0: Stmt_Expression(
expr: Expr_Assign(
var: Expr_List(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: v
)
byRef: true
)
)
)
expr: Expr_Variable(
name: x
)
)
)
1: Stmt_Expression(
expr: Expr_Assign(
var: Expr_List(
items: array(
0: Expr_ArrayItem(
key: Scalar_String(
value: k
)
value: Expr_Variable(
name: v
)
byRef: true
)
)
)
expr: Expr_Variable(
name: x
)
)
)
2: Stmt_Expression(
expr: Expr_Assign(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: v
)
byRef: true
)
)
)
expr: Expr_Variable(
name: x
)
)
)
3: Stmt_Expression(
expr: Expr_Assign(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: Scalar_String(
value: k
)
value: Expr_Variable(
name: v
)
byRef: true
)
)
)
expr: Expr_Variable(
name: x
)
)
)
)

View File

@@ -0,0 +1,79 @@
List destructing with keys
-----
<?php
list('a' => $b) = ['a' => 'b'];
list('a' => list($b => $c), 'd' => $e) = $x;
-----
!!php7
array(
0: Stmt_Expression(
expr: Expr_Assign(
var: Expr_List(
items: array(
0: Expr_ArrayItem(
key: Scalar_String(
value: a
)
value: Expr_Variable(
name: b
)
byRef: false
)
)
)
expr: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: Scalar_String(
value: a
)
value: Scalar_String(
value: b
)
byRef: false
)
)
)
)
)
1: Stmt_Expression(
expr: Expr_Assign(
var: Expr_List(
items: array(
0: Expr_ArrayItem(
key: Scalar_String(
value: a
)
value: Expr_List(
items: array(
0: Expr_ArrayItem(
key: Expr_Variable(
name: b
)
value: Expr_Variable(
name: c
)
byRef: false
)
)
)
byRef: false
)
1: Expr_ArrayItem(
key: Scalar_String(
value: d
)
value: Expr_Variable(
name: e
)
byRef: false
)
)
)
expr: Expr_Variable(
name: x
)
)
)
)

View File

@@ -21,103 +21,148 @@ $a = $b || $c;
$a = $b or $c;
-----
array(
0: Expr_BinaryOp_BooleanAnd(
left: Expr_Variable(
name: a
comments: array(
0: // boolean ops
)
)
right: Expr_Variable(
name: b
)
comments: array(
0: // boolean ops
)
)
1: Expr_BinaryOp_BooleanOr(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
2: Expr_BooleanNot(
expr: Expr_Variable(
name: a
)
)
3: Expr_BooleanNot(
expr: Expr_BooleanNot(
expr: Expr_Variable(
name: a
)
)
)
4: Expr_BinaryOp_LogicalAnd(
left: Expr_Variable(
name: a
comments: array(
0: // logical ops
)
)
right: Expr_Variable(
name: b
)
comments: array(
0: // logical ops
)
)
5: Expr_BinaryOp_LogicalOr(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
6: Expr_BinaryOp_LogicalXor(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
7: Expr_BinaryOp_BooleanOr(
left: Expr_BinaryOp_BooleanAnd(
0: Stmt_Expression(
expr: Expr_BinaryOp_BooleanAnd(
left: Expr_Variable(
name: a
comments: array(
0: // precedence
0: // boolean ops
)
)
right: Expr_Variable(
name: b
)
comments: array(
0: // precedence
0: // boolean ops
)
)
right: Expr_BinaryOp_BooleanAnd(
comments: array(
0: // boolean ops
)
)
1: Stmt_Expression(
expr: Expr_BinaryOp_BooleanOr(
left: Expr_Variable(
name: c
name: a
)
right: Expr_Variable(
name: d
name: b
)
)
)
2: Stmt_Expression(
expr: Expr_BooleanNot(
expr: Expr_Variable(
name: a
)
)
)
3: Stmt_Expression(
expr: Expr_BooleanNot(
expr: Expr_BooleanNot(
expr: Expr_Variable(
name: a
)
)
)
)
4: Stmt_Expression(
expr: Expr_BinaryOp_LogicalAnd(
left: Expr_Variable(
name: a
comments: array(
0: // logical ops
)
)
right: Expr_Variable(
name: b
)
comments: array(
0: // logical ops
)
)
comments: array(
0: // logical ops
)
)
5: Stmt_Expression(
expr: Expr_BinaryOp_LogicalOr(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
6: Stmt_Expression(
expr: Expr_BinaryOp_LogicalXor(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
7: Stmt_Expression(
expr: Expr_BinaryOp_BooleanOr(
left: Expr_BinaryOp_BooleanAnd(
left: Expr_Variable(
name: a
comments: array(
0: // precedence
)
)
right: Expr_Variable(
name: b
)
comments: array(
0: // precedence
)
)
right: Expr_BinaryOp_BooleanAnd(
left: Expr_Variable(
name: c
)
right: Expr_Variable(
name: d
)
)
comments: array(
0: // precedence
)
)
comments: array(
0: // precedence
)
)
8: Expr_BinaryOp_BooleanAnd(
left: Expr_BinaryOp_BooleanAnd(
left: Expr_Variable(
8: Stmt_Expression(
expr: Expr_BinaryOp_BooleanAnd(
left: Expr_BinaryOp_BooleanAnd(
left: Expr_Variable(
name: a
)
right: Expr_BinaryOp_BooleanOr(
left: Expr_Variable(
name: b
)
right: Expr_Variable(
name: c
)
)
)
right: Expr_Variable(
name: d
)
)
)
9: Stmt_Expression(
expr: Expr_Assign(
var: Expr_Variable(
name: a
)
right: Expr_BinaryOp_BooleanOr(
expr: Expr_BinaryOp_BooleanOr(
left: Expr_Variable(
name: b
)
@@ -126,34 +171,20 @@ array(
)
)
)
right: Expr_Variable(
name: d
)
)
9: Expr_Assign(
var: Expr_Variable(
name: a
)
expr: Expr_BinaryOp_BooleanOr(
left: Expr_Variable(
name: b
10: Stmt_Expression(
expr: Expr_BinaryOp_LogicalOr(
left: Expr_Assign(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
right: Expr_Variable(
name: c
)
)
)
10: Expr_BinaryOp_LogicalOr(
left: Expr_Assign(
var: Expr_Variable(
name: a
)
expr: Expr_Variable(
name: b
)
)
right: Expr_Variable(
name: c
)
)
)

View File

@@ -34,223 +34,280 @@ $a ** $b ** $c;
($a ** $b) ** $c;
-----
array(
0: Expr_BitwiseNot(
expr: Expr_Variable(
name: a
0: Stmt_Expression(
expr: Expr_BitwiseNot(
expr: Expr_Variable(
name: a
)
comments: array(
0: // unary ops
)
)
comments: array(
0: // unary ops
)
)
1: Expr_UnaryPlus(
expr: Expr_Variable(
name: a
)
)
2: Expr_UnaryMinus(
expr: Expr_Variable(
name: a
)
)
3: Expr_BinaryOp_BitwiseAnd(
left: Expr_Variable(
name: a
comments: array(
0: // binary ops
1: Stmt_Expression(
expr: Expr_UnaryPlus(
expr: Expr_Variable(
name: a
)
)
right: Expr_Variable(
name: b
)
comments: array(
0: // binary ops
)
2: Stmt_Expression(
expr: Expr_UnaryMinus(
expr: Expr_Variable(
name: a
)
)
)
4: Expr_BinaryOp_BitwiseOr(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
5: Expr_BinaryOp_BitwiseXor(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
6: Expr_BinaryOp_Concat(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
7: Expr_BinaryOp_Div(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
8: Expr_BinaryOp_Minus(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
9: Expr_BinaryOp_Mod(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
10: Expr_BinaryOp_Mul(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
11: Expr_BinaryOp_Plus(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
12: Expr_BinaryOp_ShiftLeft(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
13: Expr_BinaryOp_ShiftRight(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
14: Expr_BinaryOp_Pow(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
15: Expr_BinaryOp_Mul(
left: Expr_BinaryOp_Mul(
3: Stmt_Expression(
expr: Expr_BinaryOp_BitwiseAnd(
left: Expr_Variable(
name: a
comments: array(
0: // associativity
0: // binary ops
)
)
right: Expr_Variable(
name: b
)
comments: array(
0: // associativity
0: // binary ops
)
)
right: Expr_Variable(
name: c
comments: array(
0: // binary ops
)
)
4: Stmt_Expression(
expr: Expr_BinaryOp_BitwiseOr(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
5: Stmt_Expression(
expr: Expr_BinaryOp_BitwiseXor(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
6: Stmt_Expression(
expr: Expr_BinaryOp_Concat(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
7: Stmt_Expression(
expr: Expr_BinaryOp_Div(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
8: Stmt_Expression(
expr: Expr_BinaryOp_Minus(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
9: Stmt_Expression(
expr: Expr_BinaryOp_Mod(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
10: Stmt_Expression(
expr: Expr_BinaryOp_Mul(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
11: Stmt_Expression(
expr: Expr_BinaryOp_Plus(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
12: Stmt_Expression(
expr: Expr_BinaryOp_ShiftLeft(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
13: Stmt_Expression(
expr: Expr_BinaryOp_ShiftRight(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
14: Stmt_Expression(
expr: Expr_BinaryOp_Pow(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
)
15: Stmt_Expression(
expr: Expr_BinaryOp_Mul(
left: Expr_BinaryOp_Mul(
left: Expr_Variable(
name: a
comments: array(
0: // associativity
)
)
right: Expr_Variable(
name: b
)
comments: array(
0: // associativity
)
)
right: Expr_Variable(
name: c
)
comments: array(
0: // associativity
)
)
comments: array(
0: // associativity
)
)
16: Expr_BinaryOp_Mul(
left: Expr_Variable(
name: a
)
right: Expr_BinaryOp_Mul(
16: Stmt_Expression(
expr: Expr_BinaryOp_Mul(
left: Expr_Variable(
name: b
name: a
)
right: Expr_Variable(
name: c
right: Expr_BinaryOp_Mul(
left: Expr_Variable(
name: b
)
right: Expr_Variable(
name: c
)
)
)
)
17: Expr_BinaryOp_Plus(
left: Expr_Variable(
name: a
17: Stmt_Expression(
expr: Expr_BinaryOp_Plus(
left: Expr_Variable(
name: a
comments: array(
0: // precedence
)
)
right: Expr_BinaryOp_Mul(
left: Expr_Variable(
name: b
)
right: Expr_Variable(
name: c
)
)
comments: array(
0: // precedence
)
)
right: Expr_BinaryOp_Mul(
left: Expr_Variable(
name: b
)
right: Expr_Variable(
name: c
)
)
comments: array(
0: // precedence
)
)
18: Expr_BinaryOp_Mul(
left: Expr_BinaryOp_Plus(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
right: Expr_Variable(
name: c
)
)
19: Expr_BinaryOp_Pow(
left: Expr_Variable(
name: a
comments: array(
0: // pow is special
)
)
right: Expr_BinaryOp_Pow(
left: Expr_Variable(
name: b
18: Stmt_Expression(
expr: Expr_BinaryOp_Mul(
left: Expr_BinaryOp_Plus(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
right: Expr_Variable(
name: c
)
)
)
19: Stmt_Expression(
expr: Expr_BinaryOp_Pow(
left: Expr_Variable(
name: a
comments: array(
0: // pow is special
)
)
right: Expr_BinaryOp_Pow(
left: Expr_Variable(
name: b
)
right: Expr_Variable(
name: c
)
)
comments: array(
0: // pow is special
)
)
comments: array(
0: // pow is special
)
)
20: Expr_BinaryOp_Pow(
left: Expr_BinaryOp_Pow(
left: Expr_Variable(
name: a
20: Stmt_Expression(
expr: Expr_BinaryOp_Pow(
left: Expr_BinaryOp_Pow(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
right: Expr_Variable(
name: b
name: c
)
)
right: Expr_Variable(
name: c
)
)
)

View File

@@ -19,128 +19,169 @@ new $a->b{'c'}();
(new A);
-----
array(
0: Expr_New(
class: Name(
parts: array(
0: A
)
)
args: array(
)
)
1: Expr_New(
class: Name(
parts: array(
0: A
)
)
args: array(
0: Arg(
value: Expr_Variable(
name: b
)
byRef: false
unpack: false
)
)
)
2: Expr_New(
class: Expr_Variable(
name: a
)
args: array(
)
comments: array(
0: // class name variations
)
)
3: Expr_New(
class: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
)
)
args: array(
)
)
4: Expr_New(
class: Expr_StaticPropertyFetch(
0: Stmt_Expression(
expr: Expr_New(
class: Name(
parts: array(
0: A
)
)
name: b
)
args: array(
args: array(
)
)
)
5: Expr_New(
class: Expr_PropertyFetch(
var: Expr_Variable(
1: Stmt_Expression(
expr: Expr_New(
class: Name(
parts: array(
0: A
)
)
args: array(
0: Arg(
value: Expr_Variable(
name: b
)
byRef: false
unpack: false
)
)
)
)
2: Stmt_Expression(
expr: Expr_New(
class: Expr_Variable(
name: a
)
name: b
args: array(
)
comments: array(
0: // class name variations
)
)
args: array(
comments: array(
0: // class name variations
)
)
3: Stmt_Expression(
expr: Expr_New(
class: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
)
)
args: array(
)
)
)
4: Stmt_Expression(
expr: Expr_New(
class: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
)
name: VarLikeIdentifier(
name: b
)
)
args: array(
)
)
)
5: Stmt_Expression(
expr: Expr_New(
class: Expr_PropertyFetch(
var: Expr_Variable(
name: a
)
name: Identifier(
name: b
)
)
args: array(
)
comments: array(
0: // DNCR object access
)
)
comments: array(
0: // DNCR object access
)
)
6: Expr_New(
class: Expr_PropertyFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
6: Stmt_Expression(
expr: Expr_New(
class: Expr_PropertyFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
)
name: Identifier(
name: b
)
)
name: Identifier(
name: c
)
name: b
)
name: c
)
args: array(
args: array(
)
)
)
7: Expr_New(
class: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
7: Stmt_Expression(
expr: Expr_New(
class: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
)
name: Identifier(
name: b
)
)
dim: Scalar_String(
value: c
)
name: b
)
dim: Scalar_String(
value: c
args: array(
)
)
args: array(
)
)
8: Expr_New(
class: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
8: Stmt_Expression(
expr: Expr_New(
class: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Variable(
name: a
)
name: Identifier(
name: b
)
)
dim: Scalar_String(
value: c
)
name: b
)
dim: Scalar_String(
value: c
args: array(
)
)
args: array(
)
)
9: Expr_New(
class: Name(
parts: array(
0: A
9: Stmt_Expression(
expr: Expr_New(
class: Name(
parts: array(
0: A
)
)
args: array(
)
)
args: array(
comments: array(
0: // test regression introduces by new dereferencing syntax
)
)
)

View File

@@ -3,6 +3,23 @@ New without a class
<?php
new;
-----
!!php5
Syntax error, unexpected ';' from 2:4 to 2:4
array(
)
-----
<?php
new;
-----
!!php7
Syntax error, unexpected ';' from 2:4 to 2:4
array(
0: Stmt_Expression(
expr: Expr_New(
class: Expr_Error(
)
args: array(
)
)
)
)

View File

@@ -4,9 +4,11 @@ Print
print $a;
-----
array(
0: Expr_Print(
expr: Expr_Variable(
name: a
0: Stmt_Expression(
expr: Expr_Print(
expr: Expr_Variable(
name: a
)
)
)
)

View File

@@ -8,38 +8,48 @@ Shell execution
`test \"`;
-----
array(
0: Expr_ShellExec(
parts: array(
)
)
1: Expr_ShellExec(
parts: array(
0: Scalar_EncapsedStringPart(
value: test
0: Stmt_Expression(
expr: Expr_ShellExec(
parts: array(
)
)
)
2: Expr_ShellExec(
parts: array(
0: Scalar_EncapsedStringPart(
value: test
)
1: Expr_Variable(
name: A
1: Stmt_Expression(
expr: Expr_ShellExec(
parts: array(
0: Scalar_EncapsedStringPart(
value: test
)
)
)
)
3: Expr_ShellExec(
parts: array(
0: Scalar_EncapsedStringPart(
value: test `
2: Stmt_Expression(
expr: Expr_ShellExec(
parts: array(
0: Scalar_EncapsedStringPart(
value: test
)
1: Expr_Variable(
name: A
)
)
)
)
4: Expr_ShellExec(
parts: array(
0: Scalar_EncapsedStringPart(
value: test \"
3: Stmt_Expression(
expr: Expr_ShellExec(
parts: array(
0: Scalar_EncapsedStringPart(
value: test `
)
)
)
)
4: Stmt_Expression(
expr: Expr_ShellExec(
parts: array(
0: Scalar_EncapsedStringPart(
value: test \"
)
)
)
)

View File

@@ -17,38 +17,12 @@ $a ?? $b ? $c : $d;
$a && $b ?? $c;
-----
array(
0: Expr_Ternary(
cond: Expr_Variable(
name: a
comments: array(
0: // ternary
)
)
if: Expr_Variable(
name: b
)
else: Expr_Variable(
name: c
)
comments: array(
0: // ternary
)
)
1: Expr_Ternary(
cond: Expr_Variable(
name: a
)
if: null
else: Expr_Variable(
name: c
)
)
2: Expr_Ternary(
cond: Expr_Ternary(
0: Stmt_Expression(
expr: Expr_Ternary(
cond: Expr_Variable(
name: a
comments: array(
0: // precedence
0: // ternary
)
)
if: Expr_Variable(
@@ -58,92 +32,143 @@ array(
name: c
)
comments: array(
0: // precedence
0: // ternary
)
)
if: Expr_Variable(
name: d
)
else: Expr_Variable(
name: e
)
comments: array(
0: // precedence
0: // ternary
)
)
3: Expr_Ternary(
cond: Expr_Variable(
name: a
)
if: Expr_Variable(
name: b
)
else: Expr_Ternary(
1: Stmt_Expression(
expr: Expr_Ternary(
cond: Expr_Variable(
name: a
)
if: null
else: Expr_Variable(
name: c
)
)
)
2: Stmt_Expression(
expr: Expr_Ternary(
cond: Expr_Ternary(
cond: Expr_Variable(
name: a
comments: array(
0: // precedence
)
)
if: Expr_Variable(
name: b
)
else: Expr_Variable(
name: c
)
comments: array(
0: // precedence
)
)
if: Expr_Variable(
name: d
)
else: Expr_Variable(
name: e
)
comments: array(
0: // precedence
)
)
comments: array(
0: // precedence
)
)
4: Expr_BinaryOp_Coalesce(
left: Expr_Variable(
name: a
3: Stmt_Expression(
expr: Expr_Ternary(
cond: Expr_Variable(
name: a
)
if: Expr_Variable(
name: b
)
else: Expr_Ternary(
cond: Expr_Variable(
name: c
)
if: Expr_Variable(
name: d
)
else: Expr_Variable(
name: e
)
)
)
)
4: Stmt_Expression(
expr: Expr_BinaryOp_Coalesce(
left: Expr_Variable(
name: a
comments: array(
0: // null coalesce
)
)
right: Expr_Variable(
name: b
)
comments: array(
0: // null coalesce
)
)
right: Expr_Variable(
name: b
)
comments: array(
0: // null coalesce
)
)
5: Expr_BinaryOp_Coalesce(
left: Expr_Variable(
name: a
)
right: Expr_BinaryOp_Coalesce(
5: Stmt_Expression(
expr: Expr_BinaryOp_Coalesce(
left: Expr_Variable(
name: b
name: a
)
right: Expr_BinaryOp_Coalesce(
left: Expr_Variable(
name: b
)
right: Expr_Variable(
name: c
)
)
)
)
6: Stmt_Expression(
expr: Expr_Ternary(
cond: Expr_BinaryOp_Coalesce(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
if: Expr_Variable(
name: c
)
else: Expr_Variable(
name: d
)
)
)
7: Stmt_Expression(
expr: Expr_BinaryOp_Coalesce(
left: Expr_BinaryOp_BooleanAnd(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
right: Expr_Variable(
name: c
)
)
)
6: Expr_Ternary(
cond: Expr_BinaryOp_Coalesce(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
if: Expr_Variable(
name: c
)
else: Expr_Variable(
name: d
)
)
7: Expr_BinaryOp_Coalesce(
left: Expr_BinaryOp_BooleanAnd(
left: Expr_Variable(
name: a
)
right: Expr_Variable(
name: b
)
)
right: Expr_Variable(
name: c
)
)
)

View File

@@ -0,0 +1,140 @@
PHP 7.3 trailing comma additions
-----
<?php
foo($a, $b, );
$foo->bar($a, $b, );
Foo::bar($a, $b, );
new Foo($a, $b, );
unset($a, $b, );
isset($a, $b, );
-----
!!php7
array(
0: Stmt_Expression(
expr: Expr_FuncCall(
name: Name(
parts: array(
0: foo
)
)
args: array(
0: Arg(
value: Expr_Variable(
name: a
)
byRef: false
unpack: false
)
1: Arg(
value: Expr_Variable(
name: b
)
byRef: false
unpack: false
)
)
)
)
1: Stmt_Expression(
expr: Expr_MethodCall(
var: Expr_Variable(
name: foo
)
name: Identifier(
name: bar
)
args: array(
0: Arg(
value: Expr_Variable(
name: a
)
byRef: false
unpack: false
)
1: Arg(
value: Expr_Variable(
name: b
)
byRef: false
unpack: false
)
)
)
)
2: Stmt_Expression(
expr: Expr_StaticCall(
class: Name(
parts: array(
0: Foo
)
)
name: Identifier(
name: bar
)
args: array(
0: Arg(
value: Expr_Variable(
name: a
)
byRef: false
unpack: false
)
1: Arg(
value: Expr_Variable(
name: b
)
byRef: false
unpack: false
)
)
)
)
3: Stmt_Expression(
expr: Expr_New(
class: Name(
parts: array(
0: Foo
)
)
args: array(
0: Arg(
value: Expr_Variable(
name: a
)
byRef: false
unpack: false
)
1: Arg(
value: Expr_Variable(
name: b
)
byRef: false
unpack: false
)
)
)
)
4: Stmt_Unset(
vars: array(
0: Expr_Variable(
name: a
)
1: Expr_Variable(
name: b
)
)
)
5: Stmt_Expression(
expr: Expr_Isset(
vars: array(
0: Expr_Variable(
name: a
)
1: Expr_Variable(
name: b
)
)
)
)
)

View File

@@ -4,13 +4,24 @@ Non-simple variables are forbidden in PHP 7
global $$foo->bar;
-----
!!php7
Syntax error, unexpected T_OBJECT_OPERATOR, expecting ',' or ';' from 2:13 to 2:14
Syntax error, unexpected T_OBJECT_OPERATOR, expecting ';' from 2:13 to 2:14
array(
0: Expr_ConstFetch(
name: Name(
parts: array(
0: bar
0: Stmt_Global(
vars: array(
0: Expr_Variable(
name: Expr_Variable(
name: foo
)
)
)
)
)
1: Stmt_Expression(
expr: Expr_ConstFetch(
name: Name(
parts: array(
0: bar
)
)
)
)
)

View File

@@ -17,35 +17,8 @@ id(['udef', 'id'])[1]()('var_dump')(5);
-----
!!php7
array(
0: Expr_FuncCall(
name: Expr_FuncCall(
name: Name(
parts: array(
0: id
)
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 1
)
byRef: false
unpack: false
)
)
)
1: Expr_FuncCall(
name: Expr_FuncCall(
0: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_FuncCall(
name: Name(
parts: array(
@@ -55,7 +28,7 @@ array(
args: array(
0: Arg(
value: Scalar_String(
value: id
value: var_dump
)
byRef: false
unpack: false
@@ -64,26 +37,17 @@ array(
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
value: Scalar_LNumber(
value: 1
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 2
)
byRef: false
unpack: false
)
)
)
2: Expr_FuncCall(
name: Expr_FuncCall(
1: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Name(
@@ -92,123 +56,19 @@ array(
)
)
args: array(
)
)
args: array(
)
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 4
)
byRef: false
unpack: false
)
)
)
3: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_ArrayDimFetch(
var: Expr_FuncCall(
name: Name(
parts: array(
0: id
0: Arg(
value: Scalar_String(
value: id
)
)
args: array(
0: Arg(
value: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_String(
value: udef
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_String(
value: id
)
byRef: false
)
)
)
byRef: false
unpack: false
)
)
)
dim: Scalar_LNumber(
value: 1
)
)
args: array(
)
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 5
)
byRef: false
unpack: false
)
)
)
4: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_Closure(
static: false
byRef: false
params: array(
0: Param(
type: null
byRef: false
variadic: false
name: x
default: null
)
)
uses: array(
)
returnType: null
stmts: array(
0: Stmt_Return(
expr: Expr_Variable(
name: x
)
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_String(
value: id
value: var_dump
)
byRef: false
unpack: false
@@ -217,71 +77,23 @@ array(
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
value: Scalar_LNumber(
value: 2
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 8
)
byRef: false
unpack: false
)
)
)
5: Expr_FuncCall(
name: Expr_FuncCall(
2: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_Assign(
var: Expr_Variable(
name: f
)
expr: Expr_Closure(
static: false
byRef: false
params: array(
0: Param(
type: null
byRef: false
variadic: false
name: x
default: Expr_ConstFetch(
name: Name(
parts: array(
0: null
)
)
)
)
)
uses: array(
0: Expr_ClosureUse(
var: f
byRef: true
)
)
returnType: null
stmts: array(
0: Stmt_Return(
expr: Expr_Ternary(
cond: Expr_Variable(
name: x
)
if: null
else: Expr_Variable(
name: f
)
)
)
)
name: Name(
parts: array(
0: id
)
)
args: array(
@@ -291,50 +103,309 @@ array(
)
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
value: Scalar_LNumber(
value: 4
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 9
)
3: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_ArrayDimFetch(
var: Expr_FuncCall(
name: Name(
parts: array(
0: id
)
)
args: array(
0: Arg(
value: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_String(
value: udef
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_String(
value: id
)
byRef: false
)
)
)
byRef: false
unpack: false
)
)
)
dim: Scalar_LNumber(
value: 1
)
)
args: array(
)
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 5
)
byRef: false
unpack: false
)
byRef: false
unpack: false
)
)
)
6: Expr_FuncCall(
name: Expr_FuncCall(
4: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_Closure(
static: false
byRef: false
params: array(
0: Param(
type: null
byRef: false
variadic: false
var: Expr_Variable(
name: x
)
default: null
)
)
uses: array(
)
returnType: null
stmts: array(
0: Stmt_Return(
expr: Expr_Variable(
name: x
)
)
)
)
args: array(
0: Arg(
value: Scalar_String(
value: id
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 8
)
byRef: false
unpack: false
)
)
)
)
5: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: obj
)
byRef: false
name: Expr_FuncCall(
name: Expr_Assign(
var: Expr_Variable(
name: f
)
1: Expr_ArrayItem(
key: null
value: Scalar_String(
value: id
)
expr: Expr_Closure(
static: false
byRef: false
params: array(
0: Param(
type: null
byRef: false
variadic: false
var: Expr_Variable(
name: x
)
default: Expr_ConstFetch(
name: Name(
parts: array(
0: null
)
)
)
)
)
uses: array(
0: Expr_ClosureUse(
var: Expr_Variable(
name: f
)
byRef: true
)
)
returnType: null
stmts: array(
0: Stmt_Return(
expr: Expr_Ternary(
cond: Expr_Variable(
name: x
)
if: null
else: Expr_Variable(
name: f
)
)
)
)
)
)
args: array(
)
)
args: array(
)
)
args: array(
)
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 9
)
byRef: false
unpack: false
)
)
)
)
6: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Expr_Variable(
name: obj
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_String(
value: id
)
byRef: false
)
)
)
args: array(
)
)
args: array(
0: Arg(
value: Scalar_String(
value: id
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Expr_Variable(
name: id
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 10
)
byRef: false
unpack: false
)
)
)
)
7: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Scalar_String(
value: id
)
args: array(
)
@@ -351,8 +422,8 @@ array(
)
args: array(
0: Arg(
value: Expr_Variable(
name: id
value: Scalar_String(
value: var_dump
)
byRef: false
unpack: false
@@ -361,30 +432,26 @@ array(
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
value: Scalar_LNumber(
value: 12
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 10
)
byRef: false
unpack: false
)
)
)
7: Expr_FuncCall(
name: Expr_FuncCall(
8: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_FuncCall(
name: Scalar_String(
value: id
name: Expr_BinaryOp_Concat(
left: Scalar_String(
value: i
)
right: Scalar_String(
value: d
)
)
args: array(
)
@@ -392,7 +459,7 @@ array(
args: array(
0: Arg(
value: Scalar_String(
value: id
value: var_dump
)
byRef: false
unpack: false
@@ -401,81 +468,40 @@ array(
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
value: Scalar_LNumber(
value: 13
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 12
)
byRef: false
unpack: false
)
)
)
8: Expr_FuncCall(
name: Expr_FuncCall(
9: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_FuncCall(
name: Expr_BinaryOp_Concat(
left: Scalar_String(
value: i
)
right: Scalar_String(
value: d
)
name: Scalar_String(
value: \id
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
value: Scalar_LNumber(
value: 14
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 13
)
byRef: false
unpack: false
)
)
)
9: Expr_FuncCall(
name: Expr_FuncCall(
name: Scalar_String(
value: \id
)
args: array(
0: Arg(
value: Scalar_String(
value: var_dump
)
byRef: false
unpack: false
)
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 14
)
byRef: false
unpack: false
)
)
)
)
)

View File

@@ -8,67 +8,77 @@ isset("str"->a);
-----
!!php7
array(
0: Expr_Isset(
vars: array(
0: Expr_ArrayDimFetch(
var: Expr_BinaryOp_Plus(
left: Expr_Array(
0: Stmt_Expression(
expr: Expr_Isset(
vars: array(
0: Expr_ArrayDimFetch(
var: Expr_BinaryOp_Plus(
left: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 0
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
)
byRef: false
)
)
)
right: Expr_Array(
items: array(
)
)
)
dim: Scalar_LNumber(
value: 0
)
)
)
)
)
1: Stmt_Expression(
expr: Expr_Isset(
vars: array(
0: Expr_PropertyFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 0
key: Scalar_String(
value: a
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
value: Scalar_String(
value: b
)
byRef: false
)
)
)
right: Expr_Array(
items: array(
)
name: Identifier(
name: a
)
)
dim: Scalar_LNumber(
value: 0
)
)
)
)
1: Expr_Isset(
vars: array(
0: Expr_PropertyFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: Scalar_String(
value: a
)
value: Scalar_String(
value: b
)
byRef: false
)
2: Stmt_Expression(
expr: Expr_Isset(
vars: array(
0: Expr_PropertyFetch(
var: Scalar_String(
value: str
)
name: Identifier(
name: a
)
)
name: a
)
)
)
2: Expr_Isset(
vars: array(
0: Expr_PropertyFetch(
var: Scalar_String(
value: str
)
name: a
)
)
)
)
)

View File

@@ -10,100 +10,118 @@ A::A[0][1][2];
-----
!!php7
array(
0: Expr_ArrayDimFetch(
var: Expr_ClassConstFetch(
class: Name(
parts: array(
0: A
0: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_ClassConstFetch(
class: Name(
parts: array(
0: A
)
)
name: Identifier(
name: A
)
)
name: A
)
dim: Scalar_LNumber(
value: 0
dim: Scalar_LNumber(
value: 0
)
)
)
1: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
1: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_ArrayDimFetch(
var: Expr_ClassConstFetch(
class: Name(
parts: array(
0: A
var: Expr_ArrayDimFetch(
var: Expr_ClassConstFetch(
class: Name(
parts: array(
0: A
)
)
name: Identifier(
name: A
)
)
name: A
dim: Scalar_LNumber(
value: 0
)
)
dim: Scalar_LNumber(
value: 1
)
)
dim: Scalar_LNumber(
value: 2
)
)
)
2: Stmt_Expression(
expr: Expr_MethodCall(
var: Scalar_String(
value: string
)
name: Identifier(
name: length
)
args: array(
)
)
)
3: Stmt_Expression(
expr: Expr_FuncCall(
name: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Clone(
expr: Expr_Variable(
name: obj
)
)
name: Identifier(
name: b
)
)
dim: Scalar_LNumber(
value: 0
)
)
dim: Scalar_LNumber(
args: array(
0: Arg(
value: Scalar_LNumber(
value: 1
)
byRef: false
unpack: false
)
)
)
)
4: Stmt_Expression(
expr: Expr_Assign(
var: Expr_ArrayDimFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 0
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
)
byRef: false
)
)
)
dim: Scalar_LNumber(
value: 0
)
)
expr: Scalar_LNumber(
value: 1
)
)
dim: Scalar_LNumber(
value: 2
)
)
2: Expr_MethodCall(
var: Scalar_String(
value: string
)
name: length
args: array(
)
)
3: Expr_FuncCall(
name: Expr_ArrayDimFetch(
var: Expr_PropertyFetch(
var: Expr_Clone(
expr: Expr_Variable(
name: obj
)
)
name: b
)
dim: Scalar_LNumber(
value: 0
)
)
args: array(
0: Arg(
value: Scalar_LNumber(
value: 1
)
byRef: false
unpack: false
)
)
)
4: Expr_Assign(
var: Expr_ArrayDimFetch(
var: Expr_Array(
items: array(
0: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 0
)
byRef: false
)
1: Expr_ArrayItem(
key: null
value: Scalar_LNumber(
value: 1
)
byRef: false
)
)
)
dim: Scalar_LNumber(
value: 0
)
)
expr: Scalar_LNumber(
value: 1
)
)
)
)

View File

@@ -11,85 +11,109 @@ new $weird[0]->foo::$className;
-----
!!php7
array(
0: Expr_New(
class: Expr_Variable(
name: className
)
args: array(
)
)
1: Expr_New(
class: Expr_ArrayDimFetch(
var: Expr_Variable(
name: array
)
dim: Scalar_String(
value: className
)
)
args: array(
)
)
2: Expr_New(
class: Expr_ArrayDimFetch(
var: Expr_Variable(
name: array
)
dim: Scalar_String(
value: className
)
)
args: array(
)
)
3: Expr_New(
class: Expr_PropertyFetch(
var: Expr_Variable(
name: obj
)
name: className
)
args: array(
)
)
4: Expr_New(
class: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: Test
)
)
name: className
)
args: array(
)
)
5: Expr_New(
class: Expr_StaticPropertyFetch(
0: Stmt_Expression(
expr: Expr_New(
class: Expr_Variable(
name: test
name: className
)
args: array(
)
name: className
)
args: array(
)
)
6: Expr_New(
class: Expr_StaticPropertyFetch(
1: Stmt_Expression(
expr: Expr_New(
class: Expr_ArrayDimFetch(
var: Expr_Variable(
name: array
)
dim: Scalar_String(
value: className
)
)
args: array(
)
)
)
2: Stmt_Expression(
expr: Expr_New(
class: Expr_ArrayDimFetch(
var: Expr_Variable(
name: array
)
dim: Scalar_String(
value: className
)
)
args: array(
)
)
)
3: Stmt_Expression(
expr: Expr_New(
class: Expr_PropertyFetch(
var: Expr_ArrayDimFetch(
var: Expr_Variable(
name: weird
)
dim: Scalar_LNumber(
value: 0
var: Expr_Variable(
name: obj
)
name: Identifier(
name: className
)
)
args: array(
)
)
)
4: Stmt_Expression(
expr: Expr_New(
class: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: Test
)
)
name: foo
name: VarLikeIdentifier(
name: className
)
)
args: array(
)
name: className
)
args: array(
)
)
)
5: Stmt_Expression(
expr: Expr_New(
class: Expr_StaticPropertyFetch(
class: Expr_Variable(
name: test
)
name: VarLikeIdentifier(
name: className
)
)
args: array(
)
)
)
6: Stmt_Expression(
expr: Expr_New(
class: Expr_StaticPropertyFetch(
class: Expr_PropertyFetch(
var: Expr_ArrayDimFetch(
var: Expr_Variable(
name: weird
)
dim: Scalar_LNumber(
value: 0
)
)
name: Identifier(
name: foo
)
)
name: VarLikeIdentifier(
name: className
)
)
args: array(
)
)
)
)

View File

@@ -12,82 +12,112 @@ A::$A::$b;
-----
!!php7
array(
0: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
0: Stmt_Expression(
expr: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
)
name: VarLikeIdentifier(
name: b
)
)
name: b
)
1: Expr_StaticPropertyFetch(
class: Expr_Variable(
name: A
1: Stmt_Expression(
expr: Expr_StaticPropertyFetch(
class: Expr_Variable(
name: A
)
name: VarLikeIdentifier(
name: b
)
)
name: b
)
2: Expr_StaticPropertyFetch(
class: Scalar_String(
value: A
)
name: b
)
3: Expr_StaticPropertyFetch(
class: Expr_BinaryOp_Concat(
left: Scalar_String(
2: Stmt_Expression(
expr: Expr_StaticPropertyFetch(
class: Scalar_String(
value: A
)
right: Scalar_String(
value:
name: VarLikeIdentifier(
name: b
)
)
name: b
)
4: Expr_StaticPropertyFetch(
class: Expr_ArrayDimFetch(
var: Scalar_String(
value: A
)
dim: Scalar_LNumber(
value: 0
)
)
name: b
)
5: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
)
name: Expr_Variable(
name: b
)
)
6: Expr_ArrayDimFetch(
var: Expr_StaticPropertyFetch(
3: Stmt_Expression(
expr: Expr_StaticPropertyFetch(
class: Expr_BinaryOp_Concat(
left: Scalar_String(
value: A
)
right: Scalar_String(
value:
)
)
name: VarLikeIdentifier(
name: b
)
)
)
4: Stmt_Expression(
expr: Expr_StaticPropertyFetch(
class: Expr_ArrayDimFetch(
var: Scalar_String(
value: A
)
dim: Scalar_LNumber(
value: 0
)
)
name: VarLikeIdentifier(
name: b
)
)
)
5: Stmt_Expression(
expr: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
)
name: Expr_Variable(
name: c
name: b
)
)
dim: Scalar_LNumber(
value: 1
)
)
7: Expr_StaticPropertyFetch(
class: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
6: Stmt_Expression(
expr: Expr_ArrayDimFetch(
var: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
)
name: Expr_Variable(
name: c
)
)
name: A
dim: Scalar_LNumber(
value: 1
)
)
name: b
)
)
7: Stmt_Expression(
expr: Expr_StaticPropertyFetch(
class: Expr_StaticPropertyFetch(
class: Name(
parts: array(
0: A
)
)
name: VarLikeIdentifier(
name: A
)
)
name: VarLikeIdentifier(
name: b
)
)
)
)

View File

@@ -11,45 +11,57 @@ $$a['b'];
-----
!!php5
array(
0: Expr_Variable(
name: a
)
1: Expr_Variable(
name: Scalar_String(
value: a
)
)
2: Expr_Variable(
name: Expr_FuncCall(
name: Name(
parts: array(
0: foo
)
)
args: array(
)
)
)
3: Expr_Variable(
name: Expr_Variable(
0: Stmt_Expression(
expr: Expr_Variable(
name: a
)
)
4: Expr_Variable(
name: Expr_Variable(
1: Stmt_Expression(
expr: Expr_Variable(
name: Scalar_String(
value: a
)
)
)
2: Stmt_Expression(
expr: Expr_Variable(
name: Expr_FuncCall(
name: Name(
parts: array(
0: foo
)
)
args: array(
)
)
)
)
3: Stmt_Expression(
expr: Expr_Variable(
name: Expr_Variable(
name: a
)
)
)
5: Expr_Variable(
name: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
4: Stmt_Expression(
expr: Expr_Variable(
name: Expr_Variable(
name: Expr_Variable(
name: a
)
)
)
)
)
5: Stmt_Expression(
expr: Expr_Variable(
name: Expr_ArrayDimFetch(
var: Expr_Variable(
name: a
)
dim: Scalar_String(
value: b
)
)
)
)
)