#[derive(Debug, PartialEq, Clone)] pub enum Expr { LNull, LBool(bool), LStr(String), LNum(f64), Var(Identifier), Binary(BinOp, Box, Box), Call(Identifier, Vec), Receive(Box), } pub type Identifier = String; #[derive(Debug, PartialEq, Clone)] pub enum BinOp { Plus, Minus, Mult, Div, Equals, NotEquals, LessThan, GreaterThan, } #[derive(Debug, PartialEq, Clone)] pub enum Stmt { Expr(Expr), Let(Identifier, Expr), Assign(Identifier, Expr), If(Expr, Vec), While(Expr, Vec), Func(Identifier, Vec, Vec), Return(Option), Yield, Spawn(Expr), Send(Expr, Identifier), }