blark.transform.BinaryOperation

class blark.transform.BinaryOperation(left: Expression, op: Token, right: Expression, meta: Meta | None = None)[source]

Bases: Expression

A binary (i.e., two operand) operation.

Examples:

a + b
a AND b
a AND_THEN b
a OR_ELSE b
a := b
a XOR b
a = b
-a * b
a * 1.0

Expressions may be nested in either the left or right operand.

Lark grammar

This class is used by the following grammar rules:

expression

expression: assignment_expression ( ASSIGNMENT assignment_expression )*

add_expression

add_expression: expression_term ( ADD_OPERATOR expression_term )*

and_expression

and_expression: comparison_expression ( LOGICAL_AND comparison_expression )*

and_then_expression

and_then_expression: xor_expression ( LOGICAL_OR xor_expression )*

or_else_expression

or_else_expression: and_then_expression ( LOGICAL_AND_THEN and_then_expression )*

assignment_expression

assignment_expression: or_else_expression ( LOGICAL_OR_ELSE or_else_expression )*

xor_expression

xor_expression: and_expression ( LOGICAL_XOR and_expression )*

comparison_expression

comparison_expression: equality_expression ( EQUALS_OP equality_expression )*

equality_expression

equality_expression: add_expression ( COMPARE_OP add_expression )*

expression_term

expression_term: unary_expression ( MULTIPLY_OPERATOR unary_expression )*

Methods

__init__(left, op, right[, meta])

from_lark(left, *operator_and_expr)

Attributes

meta

left

op

right

left: Expression
op: Token
right: Expression
meta: Meta | None = None
static from_lark(left: Expression, *operator_and_expr: Token | Expression)[source]
__init__(left: Expression, op: Token, right: Expression, meta: Meta | None = None) None