use crate::{expression::Expression, token::Token}; /// Enumeration of all types of statements. #[derive(Debug, Clone, PartialEq)] pub enum Statement { Block(Vec), Print(Expression), Expression(Expression), Var { name: Token, initializer: Box>, }, If { condition: Expression, then_branch: Box, else_branch: Option>, }, While { condition: Expression, body: Box, }, Function { name: Token, params: Vec, body: Vec, }, Return { keyword: Token, value: Option, }, }