Module Sexplib__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
module Atom = Sexplib0__Raw_grammar.Atom
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