#[cfg(not(feature = "std"))]
use alloc::{string::String, vec::Vec};
#[derive(Debug, Clone, PartialEq)]
pub(super) enum Token {
Number(f64),
Band(usize),
Ident(String),
Plus,
Minus,
Multiply,
Divide,
Power,
LeftParen,
RightParen,
Greater,
Less,
GreaterEqual,
LessEqual,
Equal,
NotEqual,
And,
Or,
If,
Then,
Else,
Comma,
}
#[derive(Debug, Clone)]
pub(super) enum Expr {
Number(f64),
Band(usize),
BinaryOp {
left: Box<Expr>,
op: BinaryOp,
right: Box<Expr>,
},
UnaryOp { op: UnaryOp, expr: Box<Expr> },
Function { name: String, args: Vec<Expr> },
Conditional {
condition: Box<Expr>,
then_expr: Box<Expr>,
else_expr: Box<Expr>,
},
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub(super) enum BinaryOp {
Add,
Subtract,
Multiply,
Divide,
Power,
Greater,
Less,
GreaterEqual,
LessEqual,
Equal,
NotEqual,
And,
Or,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub(super) enum UnaryOp {
Negate,
}