1<?php declare(strict_types=1);
2
3namespace PhpParser\Node\Expr;
4
5use PhpParser\Node\Expr;
6
7abstract class BinaryOp extends Expr {
8    /** @var Expr The left hand side expression */
9    public Expr $left;
10    /** @var Expr The right hand side expression */
11    public Expr $right;
12
13    /**
14     * Constructs a binary operator node.
15     *
16     * @param Expr $left The left hand side expression
17     * @param Expr $right The right hand side expression
18     * @param array<string, mixed> $attributes Additional attributes
19     */
20    public function __construct(Expr $left, Expr $right, array $attributes = []) {
21        $this->attributes = $attributes;
22        $this->left = $left;
23        $this->right = $right;
24    }
25
26    public function getSubNodeNames(): array {
27        return ['left', 'right'];
28    }
29
30    /**
31     * Get the operator sigil for this binary operation.
32     *
33     * In the case there are multiple possible sigils for an operator, this method does not
34     * necessarily return the one used in the parsed code.
35     */
36    abstract public function getOperatorSigil(): string;
37}
38