37 lines
516 B
Rust
37 lines
516 B
Rust
mod namespace;
|
|
pub use namespace::*;
|
|
|
|
use super::Id;
|
|
|
|
pub struct Fn {
|
|
pub body: Body,
|
|
}
|
|
|
|
pub struct Body {
|
|
pub statements: Vec<Statement>,
|
|
}
|
|
|
|
pub struct Statement {
|
|
ty: StatementTy,
|
|
}
|
|
|
|
pub enum StatementTy {
|
|
Define { target: VarId, val: VarId },
|
|
Assign { target: VarId, val: VarId },
|
|
Call { target: VarId, args: Vec<VarId> },
|
|
}
|
|
|
|
pub struct Var {
|
|
const_: bool,
|
|
ty: TypeId,
|
|
}
|
|
|
|
pub enum Type {
|
|
Unsigned(u8),
|
|
Signed(u8),
|
|
Infer,
|
|
}
|
|
|
|
pub type VarId = u32;
|
|
pub type TypeId = u32;
|