marianoguerra/wax/ast does not have a README file
pub(all) enum ImportKind {
Func(typ~ : Ident?, sign~ : FuncType?, exact~ : Bool)
Global(mut_~ : Bool, typ~ : ValType[Ident])
Tag(typ~ : Ident?, sign~ : FuncType?)
Memory(address_type~ : AddressType, limits~ : (UInt64, UInt64?)?, page_size_log2~ : Int?, shared~ : Bool)
Table(address_type~ : AddressType, reftype~ : RefType[Ident], limits~ : (UInt64, UInt64?)?)
} derive(Eq, Debug)pub(all) enum InstrDesc[Info] {
Block(label~ : Ident?, typ~ : FuncType, block~ : Annotated[Array[Instr[Info]], Location])
Loop(label~ : Ident?, typ~ : FuncType, block~ : Annotated[Array[Instr[Info]], Location])
While(label~ : Ident?, cond~ : Instr[Info], step~ : Instr[Info]?, block~ : Annotated[Array[Instr[Info]], Location])
If(label~ : Ident?, typ~ : FuncType, cond~ : Instr[Info], if_block~ : Annotated[Array[Instr[Info]], Location], else_block~ : Annotated[Array[Instr[Info]], Location]?)
TryTable(label~ : Ident?, typ~ : FuncType, catches~ : Array[Catch], block~ : Annotated[Array[Instr[Info]], Location])
Try(label~ : Ident?, typ~ : FuncType, block~ : Annotated[Array[Instr[Info]], Location], catches~ : Array[(Ident, Annotated[Array[Instr[Info]], Location])], catch_all~ : Annotated[Array[Instr[Info]], Location]?)
TryCatch(label~ : Ident?, typ~ : FuncType, block~ : Annotated[Array[Instr[Info]], Location], arms~ : Array[TryCatchArm[Info]])
Unreachable
Nop
Hole
Null
Get(Ident)
Path(Ident, Ident)
Set(Ident, Annotated[BinOp, Location]?, Instr[Info])
Tee(Ident, Instr[Info])
Call(Instr[Info], Array[Instr[Info]])
TailCall(Instr[Info], Array[Instr[Info]])
Labelled(Ident, Instr[Info])
Char(Char)
Str(Ident?, Bytes)
Int(String)
Float(String)
Cast(Instr[Info], CastType)
CastDesc(Instr[Info], Bool, Instr[Info])
Test(Instr[Info], RefType[Ident])
NonNull(Instr[Info])
Struct(Ident?, Array[(Ident, Instr[Info]?)])
StructDefault(Ident?)
StructDesc(Instr[Info], Array[(Ident, Instr[Info]?)])
StructDefaultDesc(Instr[Info])
StructGet(Instr[Info], Ident)
GetDescriptor(Instr[Info])
StructSet(Instr[Info], Ident, Instr[Info])
Array(Ident?, Instr[Info], Instr[Info])
ArrayDefault(Ident?, Instr[Info])
ArrayFixed(Ident?, Array[Instr[Info]])
ArraySegment(Ident?, Ident, Instr[Info], Instr[Info])
ArrayGet(Instr[Info], Instr[Info])
ArraySet(Instr[Info], Instr[Info], Instr[Info])
BinOpI(Annotated[BinOp, Location], Instr[Info], Instr[Info])
UnOpI(Annotated[UnOp, Location], Instr[Info])
Let(Array[(Ident?, ValType[Ident]?)], Instr[Info]?)
Br(Ident, Instr[Info]?)
BrIf(Ident, Instr[Info])
BrTable(Array[Ident], Instr[Info])
Dispatch(index~ : Instr[Info], cases~ : Array[Ident], default~ : Ident, arms~ : Array[(Ident, Annotated[Array[Instr[Info]], Location])])
Match(scrutinee~ : Instr[Info], arms~ : Array[(MatchPattern, Annotated[Array[Instr[Info]], Location])], default~ : Annotated[Array[Instr[Info]], Location])
BrOnNull(Ident, Instr[Info])
BrOnNonNull(Ident, Instr[Info])
BrOnCast(Ident, RefType[Ident], Instr[Info])
BrOnCastFail(Ident, RefType[Ident], Instr[Info])
BrOnCastDescEq(Ident, Bool, Instr[Info], Instr[Info])
BrOnCastDescEqFail(Ident, Bool, Instr[Info], Instr[Info])
Throw(Ident, Array[Instr[Info]])
ThrowRef(Instr[Info])
ContNew(Ident, Instr[Info])
ContBind(Ident, Ident, Array[Instr[Info]])
Suspend(Ident, Array[Instr[Info]])
Resume(Ident, Array[OnClause], Array[Instr[Info]])
ResumeThrow(Ident, Ident, Array[OnClause], Array[Instr[Info]])
ResumeThrowRef(Ident, Array[OnClause], Array[Instr[Info]])
Switch(Ident, Ident, Array[Instr[Info]])
On(Instr[Info], Array[OnClause])
Return(Instr[Info]?)
Sequence(Array[Instr[Info]])
Select(Instr[Info], Instr[Info], Instr[Info])
IfAnnotation(cond~ : Cond, then_body~ : Annotated[Array[Instr[Info]], Location], else_body~ : Annotated[Array[Instr[Info]], Location]?)
} derive(Eq, Debug)pub(all) enum ModuleField[Info] {
Type(Array[Annotated[(Ident, SubType), Location]])
Func(name~ : Ident, typ~ : Ident?, sign~ : FuncType?, body~ : (Ident?, Array[Instr[Info]]), attributes~ : Array[Attribute])
Global(name~ : Ident, mut_~ : Bool, typ~ : ValType[Ident]?, def~ : Instr[Info], attributes~ : Array[Attribute])
Tag(name~ : Ident, typ~ : Ident?, sign~ : FuncType?, attributes~ : Array[Attribute])
Memory(name~ : Ident, address_type~ : AddressType, limits~ : (UInt64, UInt64?)?, page_size_log2~ : Int?, shared~ : Bool, data~ : Array[MemData[Info]], attributes~ : Array[Attribute])
Data(name~ : Ident?, mode~ : DataMode[Info], init~ : Array[DataElem], attributes~ : Array[Attribute])
Table(name~ : Ident, address_type~ : AddressType, reftype~ : RefType[Ident], limits~ : (UInt64, UInt64?)?, init~ : Instr[Info]?, attributes~ : Array[Attribute])
Elem(name~ : Ident, reftype~ : RefType[Ident], mode~ : ElemMode[Info], init~ : Array[Instr[Info]], attributes~ : Array[Attribute])
Import(module_~ : Annotated[Bytes, Location], decl~ : Annotated[ImportDecl, Location])
ImportGroup(module_~ : Annotated[Bytes, Location], decls~ : Array[Annotated[ImportDecl, Location]])
ModuleAnnotation(Array[Attribute])
Conditional(cond~ : Cond, then_fields~ : Annotated[Array[Annotated[ModuleField[Info], Location]], Location], else_fields~ : Annotated[Array[Annotated[ModuleField[Info], Location]], Location]?)
} derive(Eq, Debug)let splice_field_name : Stringlet synthetic_loop_label : StringThe Wax language in MoonBit: parser, formatter, type checker, and wasm/wat emitters