use crate::input::Span;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum UnOp {
Plus,
Minus,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum BinOp {
Add,
Sub,
Mul,
Div,
Mod,
Pow,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Item {
pub span: Span,
pub kind: ItemKind,
}
#[derive(Debug, Clone, PartialEq)]
pub enum ItemKind {
Assign(String, Expr),
Expr(Expr),
}
#[derive(Debug, Clone, PartialEq)]
pub struct Expr {
pub span: Span,
pub kind: ExprKind,
}
#[derive(Debug, Clone, PartialEq)]
pub enum ExprKind {
Num(f64),
Var(String),
UnOp(UnOp, Box<Expr>),
BinOp(BinOp, Box<Expr>, Box<Expr>),
Call {
name_span: Span,
name: String,
args: Vec<Expr>,
},
}