package tiny_languages

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Ast_ml

type name = {
  1. text : string;
  2. tok : int;
}
type longid = name list
type ty =
  1. | Tany
  2. | Tvar of name
  3. | Tarrow of ty * ty
  4. | Ttuple of ty list
  5. | Tconstr of longid * ty list
  6. | Tobject of (name * ty) list
  7. | Tvariant of (name * ty list) list * ty list
  8. | Tpoly of name list * ty
  9. | Tpackage of longid
type pat =
  1. | Pany
  2. | Pvar of name
  3. | Pconst
  4. | Ptuple of pat list
  5. | Pconstr of longid * pat option
  6. | Pvariant of name * pat option
  7. | Precord of (longid * pat option) list
  8. | Plist of pat list
  9. | Por of pat * pat
  10. | Palias of pat * name
  11. | Pconstraint of pat * ty
  12. | Pmodule of name
  13. | Popen of longid * pat
  14. | Pinner of pat
type expr =
  1. | Econst
  2. | Eident of longid
  3. | Econstr of longid * expr option
  4. | Evariant of name * expr option
  5. | Etuple of expr list
  6. | Elist of expr list
  7. | Erecord of expr option * (longid * expr option) list
  8. | Efield of expr * longid
  9. | Esetfield of expr * longid * expr
  10. | Eapply of expr * expr list
  11. | Elet of bool * binding list * expr
  12. | Eletop of binding list * expr
  13. | Efun of param list * expr
  14. | Efunction of case list
  15. | Ematch of expr * case list
  16. | Eif of expr * expr * expr option
  17. | Eseq of expr list
  18. | Ewhile of expr * expr
  19. | Efor of name * expr * expr * expr
  20. | Econstraint of expr * ty
  21. | Eletmodule of name * modexpr * expr
  22. | Eopen of modexpr * expr
  23. | Enewtype of name * expr
  24. | Epack of modexpr
  25. | Emisc of expr list
and param = pat * expr option
and binding = {
  1. bpat : pat;
  2. bparams : param list;
  3. bty : ty option;
  4. bbody : expr;
}
and case = {
  1. cpat : pat;
  2. guard : expr option;
  3. cbody : expr;
}
and modexpr =
  1. | Mident of longid
  2. | Mstruct of item list
  3. | Mfunctor of (name * modtype option) list * modexpr
  4. | Mapply of modexpr * modexpr
  5. | Mconstraint of modexpr * modtype
  6. | Munpack of expr
and modtype =
  1. | MTident of longid
  2. | MTsig of item list
  3. | MTfunctor of (name * modtype option) list * modtype
  4. | MTwith of modtype * (longid * ty) list
  5. | MTtypeof of modexpr
and item =
  1. | Ilet of bool * binding list
  2. | Itype of typedecl list
  3. | Iexception of constr
  4. | Iexternal of name * ty
  5. | Ival of name * ty
  6. | Imodule of name * modexpr
  7. | Imodsig of name * modtype
  8. | Imodtype of name * modtype option
  9. | Iopen of modexpr
  10. | Iinclude of modexpr
  11. | Ieval of expr
  12. | Iclass of expr list
and typedecl = {
  1. tname : name;
  2. tparams : name list;
  3. tmanifest : ty option;
  4. tkind : tkind;
}
and tkind =
  1. | Kabstract
  2. | Kvariant of constr list
  3. | Krecord of field list
  4. | Kopen
and constr = {
  1. cname : name;
  2. cargs : ty list;
  3. crecord : field list;
  4. cres : ty option;
}
and field = {
  1. fname : name;
  2. fty : ty;
}
type file = {
  1. items : item list;
  2. skipped : (int * int) list;
}