mirror of
https://github.com/danog/PHP-Parser.git
synced 2024-12-02 17:28:27 +01:00
67 lines
2.3 KiB
Plaintext
67 lines
2.3 KiB
Plaintext
|
Fixup for precedence and some special syntax
|
||
|
-----
|
||
|
<?php
|
||
|
$a ** $b * $c;
|
||
|
$a + $b * $c;
|
||
|
$a * $b + $c;
|
||
|
$a ? $b : $c;
|
||
|
($a ** $b) * $c;
|
||
|
( $a ** $b ) * $c;
|
||
|
!$a = $b;
|
||
|
-----
|
||
|
// Parens necessary
|
||
|
$stmts[0]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
|
||
|
// The parens here are "correct", because add is left assoc
|
||
|
$stmts[1]->expr->right = new Expr\BinaryOp\Plus(new Expr\Variable('b'), new Expr\Variable('c'));
|
||
|
// No parens necessary
|
||
|
$stmts[2]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
|
||
|
// Parens for RHS not strictly necessary due to assign speciality
|
||
|
$stmts[3]->expr->cond = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
|
||
|
$stmts[3]->expr->if = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
|
||
|
$stmts[3]->expr->else = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
|
||
|
// Already has parens
|
||
|
$stmts[4]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
|
||
|
$stmts[5]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
|
||
|
-----
|
||
|
<?php
|
||
|
($a + $b) * $c;
|
||
|
$a + ($b + $c);
|
||
|
$a + $b + $c;
|
||
|
($a = $b) ? $a = $b : ($a = $b);
|
||
|
($a + $b) * $c;
|
||
|
( $a + $b ) * $c;
|
||
|
!$a = $b;
|
||
|
-----
|
||
|
<?php
|
||
|
foo ();
|
||
|
foo ();
|
||
|
$foo -> bar;
|
||
|
$foo -> bar;
|
||
|
$foo -> bar;
|
||
|
$foo -> bar;
|
||
|
$foo -> bar;
|
||
|
self :: $foo;
|
||
|
self :: $foo;
|
||
|
-----
|
||
|
$stmts[0]->expr->name = new Expr\Variable('a');
|
||
|
$stmts[1]->expr->name = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
|
||
|
$stmts[2]->expr->var = new Expr\Variable('bar');
|
||
|
$stmts[3]->expr->var = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
|
||
|
$stmts[4]->expr->name = new Node\Identifier('foo');
|
||
|
// In this case the braces are not strictly necessary. However, on PHP 5 they may be required
|
||
|
// depending on where the property fetch node itself occurs.
|
||
|
$stmts[5]->expr->name = new Expr\Variable('bar');
|
||
|
$stmts[6]->expr->name = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
|
||
|
$stmts[7]->expr->name = new Node\VarLikeIdentifier('bar');
|
||
|
$stmts[8]->expr->name = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
|
||
|
-----
|
||
|
<?php
|
||
|
$a ();
|
||
|
($a . $b) ();
|
||
|
$bar -> bar;
|
||
|
($a . $b) -> bar;
|
||
|
$foo -> foo;
|
||
|
$foo -> {$bar};
|
||
|
$foo -> {$a . $b};
|
||
|
self :: $bar;
|
||
|
self :: ${$a . $b};
|