header
Types
pub type BaseType {
IntType
FloatType
StringType
}
Constructors
-
IntType -
FloatType -
StringType
pub type BinOp {
Plus
Minus
Times
Div
Mod
Eq
Ne
Lt
Gt
Le
Ge
And
Or
Not
Pipe
}
Constructors
-
Plus -
Minus -
Times -
Div -
Mod -
Eq -
Ne -
Lt -
Gt -
Le -
Ge -
And -
Or -
Not -
Pipe
pub type Expr(t, name) {
Var(t: t, Ident(name))
Lit(t: t, Lit)
Call(t: t, Expr(t, name), List(Expr(t, name)))
BinOp(t: t, BinOp, Expr(t, name), Expr(t, name))
Keyword(t: t, String)
}
Constructors
-
Var(t: t, Ident(name)) -
Lit(t: t, Lit) -
Call(t: t, Expr(t, name), List(Expr(t, name))) -
BinOp(t: t, BinOp, Expr(t, name), Expr(t, name)) -
Keyword(t: t, String)
pub type Ident(id) {
Global(String)
Local(id)
}
Constructors
-
Global(String) -
Local(id)
pub type Lit {
Int(Int)
Float(Float)
String(String)
}
Constructors
-
Int(Int) -
Float(Float) -
String(String)
pub type Module(t, name) {
Module(List(Stmt(t, name)))
}
Constructors
-
Module(List(Stmt(t, name)))
pub type Param(name) {
Param(t: Type(name), name: name)
}
Constructors
-
Param(t: Type(name), name: name)
pub type Stmt(t, name) {
Function(t, String, List(Param(name)), List(Expr(t, name)))
TypeDef(String, Type(name))
}
Constructors
-
Function(t, String, List(Param(name)), List(Expr(t, name))) -
TypeDef(String, Type(name))
pub type Type(name) {
TypeVar(Ident(name))
BaseType(BaseType)
TypeCall(Ident(name), List(Type(name)))
TypeFunction(List(Ident(name)), Type(name))
ModuleType(Ident(name))
Interface(List(Param(name)))
}
Constructors
-
TypeVar(Ident(name)) -
BaseType(BaseType) -
TypeCall(Ident(name), List(Type(name))) -
TypeFunction(List(Ident(name)), Type(name)) -
ModuleType(Ident(name)) -
Interface(List(Param(name)))