ir start
This commit is contained in:
@@ -4,4 +4,39 @@ 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,
|
||||
Assign {
|
||||
target: VarId,
|
||||
ty: TypeId,
|
||||
val: VarId,
|
||||
},
|
||||
Call {
|
||||
target: VarId,
|
||||
args: Vec<VarId>,
|
||||
},
|
||||
}
|
||||
|
||||
pub struct Var {
|
||||
const_: bool,
|
||||
ty: TypeId,
|
||||
}
|
||||
|
||||
pub enum Type {
|
||||
Unsigned(u8),
|
||||
Signed(u8),
|
||||
}
|
||||
|
||||
pub type VarId = u32;
|
||||
pub type TypeId = u32;
|
||||
|
||||
Reference in New Issue
Block a user