use crate::expr::Expr; #[derive(Debug)] pub enum CondOp { Eq, Neq, Lt, Gt, Lte, Gte } #[derive(Debug)] pub struct Condition { pub op: CondOp, pub left: Expr, pub right: Expr } #[derive(Debug)] pub enum Stmt { Mov { src: Expr, dst: String }, IfElse { condition: Condition, then: Vec, else_: Option> }, Loop { body: Vec }, While { condition: Condition, body: Vec }, ForRange { var: String, start: Expr, end: Expr, step: Option, body: Vec }, ForIn { var: String, list: Expr, body: Vec }, Call { name: String, args: Vec }, FuncDef { name: String, params: Vec, body: Vec }, Break, Continue }