mirror of
https://github.com/danog/PHP-Parser.git
synced 2024-12-03 17:57:59 +01:00
174 lines
3.8 KiB
Plaintext
174 lines
3.8 KiB
Plaintext
Ternary operator
|
|
-----
|
|
<?php
|
|
|
|
// ternary
|
|
$a ? $b : $c;
|
|
$a ?: $c;
|
|
|
|
// precedence
|
|
$a ? $b : $c ? $d : $e;
|
|
$a ? $b : ($c ? $d : $e);
|
|
|
|
// null coalesce
|
|
$a ?? $b;
|
|
$a ?? $b ?? $c;
|
|
$a ?? $b ? $c : $d;
|
|
$a && $b ?? $c;
|
|
-----
|
|
array(
|
|
0: Stmt_Expression(
|
|
expr: 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
|
|
)
|
|
)
|
|
comments: array(
|
|
0: // 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
|
|
)
|
|
)
|
|
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
|
|
)
|
|
)
|
|
comments: array(
|
|
0: // null coalesce
|
|
)
|
|
)
|
|
5: Stmt_Expression(
|
|
expr: Expr_BinaryOp_Coalesce(
|
|
left: Expr_Variable(
|
|
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
|
|
)
|
|
)
|
|
)
|
|
) |