use crate::token::{LiteralType, Token}; #[derive(Debug, Clone)] pub enum Expr { Ternary { first: Box, second: Box, third: Box, }, Binary { left: Box, op: Token, right: Box, }, Grouping { expression: Box, }, Literal { value: LiteralType, }, Unary { op: Token, right: Box, }, Variable { name: Token, }, Assign { name: Token, value: Box, }, } pub enum Stmt { Block { statements: Vec, }, Expression { expression: Expr, }, Print { expression: Expr, }, Var { name: Token, initializer: Option, }, }