Module Sexp.Raw_grammar

include module type of sig ... end
type label = string
type generic_group_id = string
type group_id = Sexplib0__.Lazy_group_id.t
type var_name = string
type type_name = string
type 't type_ = 't Sexplib0__Raw_grammar.type_ =
| Any
| Apply of 't type_ * 't type_ list
| Atom of Atom.t
| Explicit_bind of var_name list * 't type_
| Explicit_var of int
| Grammar of 't
| Implicit_var of int
| List of 't sequence_type
| Option of 't type_
| Record of 't record_type
| Recursive of type_name
| Union of 't type_ list
| Variant of 't variant_type
and 't sequence_type = 't component list
and 't component = 't Sexplib0__Raw_grammar.component =
| One of 't type_
| Optional of 't type_
| Many of 't type_
| Fields of 't record_type
and 't variant_type = 't Sexplib0__Raw_grammar.variant_type = {
ignore_capitalization : bool;
alts : (label * 't sequence_type) list;
}
and 't record_type = 't Sexplib0__Raw_grammar.record_type = {
allow_extra_fields : bool;
fields : (label * 't field) list;
}
and 't field = 't Sexplib0__Raw_grammar.field = {
optional : bool;
args : 't sequence_type;
}
type t = Sexplib0__Raw_grammar.t =
| Ref of type_name * group
| Inline of t type_
and group = Sexplib0__Raw_grammar.group = {
gid : group_id;
generic_group : generic_group;
origin : string;
apply_implicit : t list;
}
and generic_group = Sexplib0__Raw_grammar.generic_group = {
implicit_vars : var_name list;
ggid : generic_group_id;
types : (type_name * t type_) list;
}
module Builtin = Sexplib0.Sexp.Private.Raw_grammar.Builtin
val empty_sexp_grammar : t
val opaque_sexp_grammar : t
val fun_sexp_grammar : t
val tuple2_sexp_grammar : t