138 lines
2.6 KiB
Plaintext
138 lines
2.6 KiB
Plaintext
|
Logical operators
|
||
|
-----
|
||
|
<?php
|
||
|
|
||
|
// boolean ops
|
||
|
$a && $b;
|
||
|
$a || $b;
|
||
|
!$a;
|
||
|
!!$a;
|
||
|
|
||
|
// logical ops
|
||
|
$a and $b;
|
||
|
$a or $b;
|
||
|
$a xor $b;
|
||
|
|
||
|
// precedence
|
||
|
$a && $b || $c && $d;
|
||
|
$a && ($b || $c) && $d;
|
||
|
|
||
|
$a = $b || $c;
|
||
|
$a = $b or $c;
|
||
|
-----
|
||
|
array(
|
||
|
0: Expr_BinaryOp_BooleanAnd(
|
||
|
left: Expr_Variable(
|
||
|
name: a
|
||
|
)
|
||
|
right: Expr_Variable(
|
||
|
name: b
|
||
|
)
|
||
|
)
|
||
|
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
|
||
|
)
|
||
|
right: Expr_Variable(
|
||
|
name: b
|
||
|
)
|
||
|
)
|
||
|
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(
|
||
|
left: Expr_Variable(
|
||
|
name: a
|
||
|
)
|
||
|
right: Expr_Variable(
|
||
|
name: b
|
||
|
)
|
||
|
)
|
||
|
right: Expr_BinaryOp_BooleanAnd(
|
||
|
left: Expr_Variable(
|
||
|
name: c
|
||
|
)
|
||
|
right: Expr_Variable(
|
||
|
name: d
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
8: 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: Expr_Assign(
|
||
|
var: Expr_Variable(
|
||
|
name: a
|
||
|
)
|
||
|
expr: Expr_BinaryOp_BooleanOr(
|
||
|
left: 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
|
||
|
)
|
||
|
)
|
||
|
)
|