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