crafting-interpreters/rust/rox/src/expression.rs

33 lines
658 B
Rust

use crate::token::{self, Token};
/// Enumeration of all types of expressions.
#[derive(Debug, Clone, PartialEq)]
pub enum Expression {
Assign {
name: Token,
value: Box<Expression>,
},
Binary {
left: Box<Expression>,
operator: Token,
right: Box<Expression>,
},
Grouping {
expression: Box<Expression>,
},
Literal {
value: token::Literal,
},
Logical {
left: Box<Expression>,
operator: Token,
right: Box<Expression>,
},
Unary {
operator: Token,
right: Box<Expression>,
},
Variable {
name: Token,
},
}