39 lines
694 B
Rust
39 lines
694 B
Rust
#[derive(Debug, PartialEq, Clone)]
|
|
pub enum Expr {
|
|
LNull,
|
|
LBool(bool),
|
|
LStr(String),
|
|
LNum(f64),
|
|
Var(Identifier),
|
|
Binary(BinOp, Box<Expr>, Box<Expr>),
|
|
Call(Identifier, Vec<Expr>),
|
|
Receive(Box<Expr>),
|
|
}
|
|
|
|
pub type Identifier = String;
|
|
|
|
#[derive(Debug, PartialEq, Clone)]
|
|
pub enum BinOp {
|
|
Plus,
|
|
Minus,
|
|
Mult,
|
|
Div,
|
|
Equals,
|
|
NotEquals,
|
|
LessThan,
|
|
GreaterThan,
|
|
}
|
|
|
|
pub enum Stmt {
|
|
Expr(Expr),
|
|
Var(Identifier, Expr),
|
|
Assign(Identifier, Expr),
|
|
If(Expr, Vec<Stmt>),
|
|
While(Expr, Vec<Stmt>),
|
|
Func(Identifier, Vec<Identifier>, Vec<Stmt>),
|
|
Return(Option<Expr>),
|
|
Yield,
|
|
Spawn(Expr),
|
|
Send(Expr, Identifier),
|
|
}
|