Chris@13
|
1 Fixup for precedence and some special syntax
|
Chris@13
|
2 -----
|
Chris@13
|
3 <?php
|
Chris@13
|
4 $a ** $b * $c;
|
Chris@13
|
5 $a + $b * $c;
|
Chris@13
|
6 $a * $b + $c;
|
Chris@13
|
7 $a ? $b : $c;
|
Chris@13
|
8 ($a ** $b) * $c;
|
Chris@13
|
9 ( $a ** $b ) * $c;
|
Chris@13
|
10 !$a = $b;
|
Chris@13
|
11 -----
|
Chris@13
|
12 // Parens necessary
|
Chris@13
|
13 $stmts[0]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
|
Chris@13
|
14 // The parens here are "correct", because add is left assoc
|
Chris@13
|
15 $stmts[1]->expr->right = new Expr\BinaryOp\Plus(new Expr\Variable('b'), new Expr\Variable('c'));
|
Chris@13
|
16 // No parens necessary
|
Chris@13
|
17 $stmts[2]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
|
Chris@13
|
18 // Parens for RHS not strictly necessary due to assign speciality
|
Chris@13
|
19 $stmts[3]->expr->cond = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
|
Chris@13
|
20 $stmts[3]->expr->if = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
|
Chris@13
|
21 $stmts[3]->expr->else = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
|
Chris@13
|
22 // Already has parens
|
Chris@13
|
23 $stmts[4]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
|
Chris@13
|
24 $stmts[5]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
|
Chris@13
|
25 -----
|
Chris@13
|
26 <?php
|
Chris@13
|
27 ($a + $b) * $c;
|
Chris@13
|
28 $a + ($b + $c);
|
Chris@13
|
29 $a + $b + $c;
|
Chris@13
|
30 ($a = $b) ? $a = $b : ($a = $b);
|
Chris@13
|
31 ($a + $b) * $c;
|
Chris@13
|
32 ( $a + $b ) * $c;
|
Chris@13
|
33 !$a = $b;
|
Chris@13
|
34 -----
|
Chris@13
|
35 <?php
|
Chris@13
|
36 foo ();
|
Chris@13
|
37 foo ();
|
Chris@13
|
38 $foo -> bar;
|
Chris@13
|
39 $foo -> bar;
|
Chris@13
|
40 $foo -> bar;
|
Chris@13
|
41 $foo -> bar;
|
Chris@13
|
42 $foo -> bar;
|
Chris@13
|
43 self :: $foo;
|
Chris@13
|
44 self :: $foo;
|
Chris@13
|
45 -----
|
Chris@13
|
46 $stmts[0]->expr->name = new Expr\Variable('a');
|
Chris@13
|
47 $stmts[1]->expr->name = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
|
Chris@13
|
48 $stmts[2]->expr->var = new Expr\Variable('bar');
|
Chris@13
|
49 $stmts[3]->expr->var = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
|
Chris@13
|
50 $stmts[4]->expr->name = new Node\Identifier('foo');
|
Chris@13
|
51 // In this case the braces are not strictly necessary. However, on PHP 5 they may be required
|
Chris@13
|
52 // depending on where the property fetch node itself occurs.
|
Chris@13
|
53 $stmts[5]->expr->name = new Expr\Variable('bar');
|
Chris@13
|
54 $stmts[6]->expr->name = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
|
Chris@13
|
55 $stmts[7]->expr->name = new Node\VarLikeIdentifier('bar');
|
Chris@13
|
56 $stmts[8]->expr->name = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
|
Chris@13
|
57 -----
|
Chris@13
|
58 <?php
|
Chris@13
|
59 $a ();
|
Chris@13
|
60 ($a . $b) ();
|
Chris@13
|
61 $bar -> bar;
|
Chris@13
|
62 ($a . $b) -> bar;
|
Chris@13
|
63 $foo -> foo;
|
Chris@13
|
64 $foo -> {$bar};
|
Chris@13
|
65 $foo -> {$a . $b};
|
Chris@13
|
66 self :: $bar;
|
Chris@13
|
67 self :: ${$a . $b}; |