rsco/src/ast.rs

40 lines
729 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,
}
#[derive(Debug, PartialEq, Clone)]
pub enum Stmt {
Expr(Expr),
Let(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),
}