Module Lang.Pl

module Annot : sig ... end
type num = Sl.num
type text = Sl.text
type id = Sl.id
type atom = Sl.atom
type mixop = Sl.mixop
type iter = Sl.iter
type var = Sl.var
type typ = Sl.typ
type typ' = Sl.typ'
type nottyp = Sl.nottyp
type nottyp' = Sl.nottyp'
type deftyp = Sl.deftyp
type deftyp' = Sl.deftyp'
type typfield = Sl.typfield
type typcase = Sl.typcase
type value = Sl.value
type unop = Sl.unop
type binop = Sl.binop
type cmpop = Sl.cmpop
type optyp = Sl.optyp
and exp' =
  1. | BoolE of bool
  2. | NumE of num
  3. | TextE of text
  4. | VarE of id
  5. | UnE of unop * optyp * exp
  6. | BinE of binop * optyp * exp * exp
  7. | CmpE of cmpop * optyp * exp * exp
  8. | UpCastE of typ * exp
  9. | DownCastE of typ * exp
  10. | SubE of exp * typ
  11. | MatchE of exp * pattern
  12. | TupleE of exp list
  13. | CaseE of notexp
  14. | StrE of (atom * exp) list
  15. | OptE of exp option
  16. | ListE of exp list
  17. | ConsE of exp * exp
  18. | CatE of exp * exp
  19. | MemE of exp * exp
  20. | LenE of exp
  21. | DotE of exp * atom
  22. | IdxE of exp * exp
  23. | SliceE of exp * exp * exp
  24. | UpdE of exp * path * exp
  25. | CallE of id * targ list * arg list
  26. | IterE of exp * iterexp
and notexp = exp Domain.Mixfix.t
and iterexp = Sl.iterexp
and pattern = Sl.pattern
and path' =
  1. | RootP
  2. | IdxP of path * exp
  3. | SliceP of path * exp * exp
  4. | DotP of path * atom
and tparam = Sl.tparam
and param' =
  1. | ExpP of typ * exp
  2. | DefP of id * tparam list * param list * typ
and targ = Sl.targ
and arg' =
  1. | ExpA of exp
  2. | DefA of id
type dangle = Sl.dangle
and 'instr_tier holdcase =
  1. | BothH of 'instr_tier block * 'instr_tier block
  2. | HoldH of 'instr_tier block * dangle
  3. | NotHoldH of 'instr_tier block * dangle
and 'instr_tier case = guard * 'instr_tier block
and guard =
  1. | BoolG of bool
  2. | CmpG of cmpop * optyp * exp
  3. | SubG of typ
  4. | MatchG of pattern
  5. | MemG of exp
  6. | CheckLetSubG of typ * exp
  7. | CheckLetMatchG of pattern * exp
and 'instr_tier arm = 'instr_tier block
and iid = Sl.iid
and fallthrough =
  1. | FallGroup of id
  2. | FallNext
  3. | FallElse
  4. | FallFail
and inote = {
  1. iid : iid;
  2. fallthrough : fallthrough option;
}
and 'instr_tier instr = ('instr_tier instr', inote) Util.Source.note_phrase Annot.t
and 'instr_tier instr' =
  1. | IfI of exp * iterexp list * 'instr_tier block * dangle
  2. | HoldI of id * notexp * iterexp list * 'instr_tier holdcase
  3. | CaseI of exp * 'instr_tier case list * dangle
  4. | LetI of exp * exp * iterinstr list
  5. | DebugI of exp
  6. | DestructI of (string option * exp) list * exp
  7. | CheckLetSubI of typ * exp * exp * 'instr_tier block
  8. | CheckLetMatchI of pattern * exp * exp * 'instr_tier block
  9. | OptionGetI of exp * exp * 'instr_tier block
  10. | TierI of 'instr_tier
and 'instr_tier block = 'instr_tier instr list
and iterinstr = Sl.iterinstr
and rel_signature = Sl.rel_signature
type instr_group =
  1. | ResultI of rel_signature * exp list
  2. | ReturnI of exp
  3. | RuleI of id * notexp * Hints.Input.t * iterinstr list
  4. | BacktrackI of block_group list
and block_group = instr_group block
type instr_dispatch =
  1. | GroupI of id * id * rel_signature * exp list * block_group
  2. | RouteI of block_dispatch list
and block_dispatch = instr_dispatch block
type externrel = id * rel_signature * exp list
type rel = id * rel_signature * exp list * block_dispatch * block_dispatch option
type externfunc = id * tparam list * param list * typ
type builtinfunc = id * tparam list * param list * typ
type tablerow = exp list * exp * block_group
type tablefunc = id * param list * typ * tablerow list
type definedfunc = id * tparam list * param list * typ * block_group * block_group option
and def' =
  1. | ExternTypD of id
  2. | TypD of id * tparam list * deftyp
  3. | VarD of id * typ
  4. | ExternRelD of externrel
  5. | RelD of rel
  6. | ExternDecD of externfunc
  7. | BuiltinDecD of builtinfunc
  8. | TableDecD of tablefunc
  9. | FuncDecD of definedfunc
type spec = def list
module Print : sig ... end
module Group : sig ... end
module Partial : sig ... end
module Render : sig ... end