use super::*; use crate::{Parser, Spanned, token_pattern::TokenPattern}; use become_expression::BecomeExpression; use trilogy_scanner::{Token, TokenType}; /// The many kinds of expressions in a Trilogy program. #[derive(Clone, Debug, Spanned)] pub enum Expression { Number(Box), Character(Box), String(Box), Bits(Box), Boolean(Box), Unit(Box), Atom(Box), Struct(Box), Array(Box), Set(Box), Record(Box), ArrayComprehension(Box), SetComprehension(Box), RecordComprehension(Box), Reference(Box), Keyword(Box), Application(Box), Call(Box), Binary(Box), Unary(Box), Let(Box), IfElse(Box), Match(Box), Is(Box), End(Box), Exit(Box), Resume(Box), Become(Box), Cancel(Box), Return(Box), Break(Box), Continue(Box), Fn(Box), Do(Box), Qy(Box), Template(Box