Lang.Plmodule Annot : sig ... endtype num = Sl.numtype text = Sl.texttype id = Sl.idtype atom = Sl.atomtype mixop = Sl.mixoptype iter = Sl.itertype var = Sl.vartype typ = Sl.typtype typ' = Sl.typ'type nottyp = Sl.nottyptype nottyp' = Sl.nottyp'type deftyp = Sl.deftyptype deftyp' = Sl.deftyp'type typfield = Sl.typfieldtype typcase = Sl.typcasetype value = Sl.valuetype unop = Sl.unoptype binop = Sl.binoptype cmpop = Sl.cmpoptype optyp = Sl.optyptype exp = (exp', typ') Util.Source.note_phrase Annot.tand exp' = | BoolE of bool| NumE of num| TextE of text| VarE of id| UnE of unop * optyp * exp| BinE of binop * optyp * exp * exp| CmpE of cmpop * optyp * exp * exp| UpCastE of typ * exp| DownCastE of typ * exp| SubE of exp * typ| MatchE of exp * pattern| TupleE of exp list| CaseE of notexp| StrE of (atom * exp) list| OptE of exp option| ListE of exp list| ConsE of exp * exp| CatE of exp * exp| MemE of exp * exp| LenE of exp| DotE of exp * atom| IdxE of exp * exp| SliceE of exp * exp * exp| UpdE of exp * path * exp| CallE of id * targ list * arg list| IterE of exp * iterexpand notexp = exp Domain.Mixfix.tand iterexp = Sl.iterexpand pattern = Sl.patternand path = (path', typ') Util.Source.note_phraseand tparam = Sl.tparamand param = param' Util.Source.phraseand targ = Sl.targand arg = arg' Util.Source.phrasetype dangle = Sl.dangleand 'instr_tier arm = 'instr_tier blockand iid = Sl.iidand 'instr_tier instr =
('instr_tier instr', inote) Util.Source.note_phrase Annot.tand 'instr_tier instr' = | IfI of exp * iterexp list * 'instr_tier block * dangle| HoldI of id * notexp * iterexp list * 'instr_tier holdcase| CaseI of exp * 'instr_tier case list * dangle| LetI of exp * exp * iterinstr list| DebugI of exp| DestructI of (string option * exp) list * exp| CheckLetSubI of typ * exp * exp * 'instr_tier block| CheckLetMatchI of pattern * exp * exp * 'instr_tier block| OptionGetI of exp * exp * 'instr_tier block| TierI of 'instr_tierand 'instr_tier block = 'instr_tier instr listand iterinstr = Sl.iterinstrand rel_signature = Sl.rel_signaturetype instr_group = | ResultI of rel_signature * exp list| ReturnI of exp| RuleI of id * notexp * Hints.Input.t * iterinstr list| BacktrackI of block_group listand block_group = instr_group blocktype instr_dispatch = | GroupI of id * id * rel_signature * exp list * block_group| RouteI of block_dispatch listand block_dispatch = instr_dispatch blocktype externrel = id * rel_signature * exp listtype rel =
id * rel_signature * exp list * block_dispatch * block_dispatch optiontype tablerow = exp list * exp * block_grouptype definedfunc =
id * tparam list * param list * typ * block_group * block_group optiontype def = def' Util.Source.phrase Annot.tand def' = | ExternTypD of id| TypD of id * tparam list * deftyp| VarD of id * typ| ExternRelD of externrel| RelD of rel| ExternDecD of externfunc| BuiltinDecD of builtinfunc| TableDecD of tablefunc| FuncDecD of definedfunctype spec = def listmodule Print : sig ... endmodule Group : sig ... endmodule Partial : sig ... endmodule Render : sig ... end