1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192open!Baseopen!Ppxlibopen!Ast_builder.DefaultmoduleAtom=structtypet=Sexp.Private.Raw_grammar.Atom.t=|String|Bool|Char|Float|Int|Thisof{ignore_capitalization:bool;string:string}[@@derivingtraverse_lift]letlifter~loc=objectinherit[expression]liftinheritPpxlib_metaquot_lifters.expression_lifterslocend;;endtypeatom=Atom.ttypevar_name=Sexp.Private.Raw_grammar.var_nametypetype_name=Sexp.Private.Raw_grammar.type_nameletlift_string~locs=pexp_constant~loc(Pconst_string(s,loc,None))letlift_var_name=lift_stringletlift_type_name=lift_stringtype'ttype_='tSexp.Private.Raw_grammar.type_=|Any|Applyof'ttype_*'ttype_list|Atomofatom|Explicit_bindofvar_namelist*'ttype_|Explicit_varofint|Grammarof't|Implicit_varofint|Listof'tsequence_type|Optionof'ttype_|Recordof'trecord_type|Recursiveoftype_name|Unionof'ttype_list|Variantof'tvariant_typeand'tsequence_type='tcomponentlistand'tcomponent='tSexp.Private.Raw_grammar.component=|Oneof'ttype_|Optionalof'ttype_|Manyof'ttype_|Fieldsof'trecord_typeand'tvariant_type='tSexp.Private.Raw_grammar.variant_type={ignore_capitalization:bool;alts:(label*'tsequence_type)list}and'trecord_type='tSexp.Private.Raw_grammar.record_type={allow_extra_fields:bool;fields:(label*'tfield)list}and'tfield='tSexp.Private.Raw_grammar.field={optional:bool;args:'tsequence_type}(* [traverse_lift] generates references to a type named [t] even if it doesn't exist. So
make sure it exists. *)andt=unit[@@derivingtraverse_lift,traverse_map]letlifter~loc=letatom_lifter=Atom.lifter~locinobjectinherit[expression]liftinheritPpxlib_metaquot_lifters.expression_lifterslocmethodatomatom=atom_lifter#tatommethodlabel=lift_string~locmethodvar_name=lift_var_name~locmethodtype_name=lift_type_name~locend;;