29 lines
549 B
Rust
29 lines
549 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,
|
|
},
|
|
Unary {
|
|
operator: Token,
|
|
right: Box<Expression>,
|
|
},
|
|
Variable {
|
|
name: Token,
|
|
},
|
|
}
|