use crate::token::{self, Token}; /// Enumeration of all types of expressions. #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum Expression { Assign { name: Token, value: Box, }, Binary { left: Box, operator: Token, right: Box, }, Call { callee: Box, paren: Token, args: Vec, }, Get { object: Box, name: Token, }, Set { object: Box, name: Token, value: Box, }, This { keyword: Token, }, Grouping { expression: Box, }, Literal { value: token::Literal, }, Logical { left: Box, operator: Token, right: Box, }, Unary { operator: Token, right: Box, }, Variable { name: Token, }, Super { keyword: Token, method: Token, }, }