HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: /home/mmickelson/spilicensing/vendor/nikic/php-parser/test/code/parser/expr/logic.test
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
        )
    )
)