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),
|
||
|
}
|