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

36 lines
778 B
Rust
Raw Normal View History

2025-02-12 10:30:51 +01:00
use crate::{expression::Expression, token::Token};
/// Enumeration of all types of statements.
#[derive(Debug, Clone, PartialEq)]
pub enum Statement {
Block(Vec<Statement>),
Print(Expression),
Expression(Expression),
Var {
name: Token,
initializer: Box<Option<Expression>>,
},
2025-02-12 13:10:07 +01:00
If {
condition: Expression,
then_branch: Box<Statement>,
else_branch: Option<Box<Statement>>,
},
While {
condition: Expression,
body: Box<Statement>,
},
2025-02-13 12:29:31 +01:00
Function {
name: Token,
params: Vec<Token>,
body: Vec<Statement>,
},
Return {
keyword: Token,
value: Option<Expression>,
},
2025-05-25 16:04:00 +02:00
Class {
name: Token,
methods: Vec<Statement>,
},
2025-02-12 10:30:51 +01:00
}