123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962(* Yoann Padioleau
*
* Copyright (C) 2010 Facebook
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* version 2.1 as published by the Free Software Foundation, with the
* special exception on linking described in file license.txt.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file
* license.txt for more details.
*)(* mostly autogenerated by ocamltarzan: ocamltarzan -choice vof ast_js.ml *)(* pad: I've added a few tweaks because of module limitations in ocamltarzan *)openCst_jsmoduleAst=Cst_jsmoduleMPI=Meta_parse_infoletrecvof_infox=Meta_parse_info.vof_info_adjustable_precisionxandvof_tokv=vof_infovandvof_wrap_of_a(v1,v2)=letv1=_of_av1andv2=vof_infov2inOcaml.VTuple[v1;v2]andvof_paren_of_a(v1,v2,v3)=if!MPI._current_precision.MPI.token_infothenletv1=vof_tokv1andv2=_of_av2andv3=vof_tokv3inOcaml.VTuple[v1;v2;v3]else_of_av2andvof_brace_of_a(v1,v2,v3)=if!MPI._current_precision.MPI.token_infothenletv1=vof_tokv1andv2=_of_av2andv3=vof_tokv3inOcaml.VTuple[v1;v2;v3]else_of_av2andvof_bracket_of_a(v1,v2,v3)=if!MPI._current_precision.MPI.token_infothenletv1=vof_tokv1andv2=_of_av2andv3=vof_tokv3inOcaml.VTuple[v1;v2;v3]else_of_av2andvof_angle_of_a(v1,v2,v3)=letv1=vof_tokv1andv2=_of_av2andv3=vof_tokv3inOcaml.VTuple[v1;v2;v3]andvof_comma_list_of_axs=if!MPI._current_precision.MPI.token_infothenOcaml.vof_list(Ocaml.vof_either_of_avof_tok)xselseOcaml.vof_list_of_a(Ast.uncommaxs)andvof_scv=Ocaml.vof_optionvof_tokvletvof_namev=vof_wrapOcaml.vof_stringvletvof_module_pathv=vof_wrapOcaml.vof_stringvletrecvof_expr=function|Lv1->letv1=vof_litteralv1inOcaml.VSum(("L",[v1]))|Vv1->letv1=vof_namev1inOcaml.VSum(("V",[v1]))|Ellipsesv1->letv1=vof_tokv1inOcaml.VSum(("Ellipses",[v1]))|Thisv1->letv1=vof_tokv1inOcaml.VSum(("This",[v1]))|Superv1->letv1=vof_tokv1inOcaml.VSum(("Super",[v1]))|NewTarget((v1,v2,v3))->letv1=vof_tokv1andv2=vof_tokv2andv3=vof_tokv3inOcaml.VSum(("NewTarget",[v1;v2;v3]))|U((v1,v2))->letv1=vof_wrapvof_unopv1andv2=vof_exprv2inOcaml.VSum(("U",[v1;v2]))|B((v1,v2,v3))->letv1=vof_exprv1andv2=vof_wrapvof_binopv2andv3=vof_exprv3inOcaml.VSum(("B",[v1;v2;v3]))|Bracket((v1,v2))->letv1=vof_exprv1andv2=vof_bracketvof_exprv2inOcaml.VSum(("Bracket",[v1;v2]))|Period((v1,v2,v3))->letv1=vof_exprv1andv2=vof_tokv2andv3=vof_namev3inOcaml.VSum(("Period",[v1;v2;v3]))|Objectv1->letv1=vof_brace(vof_comma_list(function|P_field(v1,v2,v3)->letv1=vof_property_namev1andv2=vof_tokv2andv3=vof_exprv3inOcaml.VSum(("P_field",[v1;v2;v3]))|P_methodv1->letv1=vof_func_declv1inOcaml.VSum(("P_method",[v1]))|P_shorthandv1->letv1=vof_namev1inOcaml.VSum(("P_shorthand",[v1]))|P_spread(v1,v2)->letv1=vof_tokv1inletv2=vof_exprv2inOcaml.VSum(("P_spread",[v1;v2]))))v1inOcaml.VSum(("Object",[v1]))|Arrayv1->letv1=vof_bracket(vof_comma_listvof_expr)v1inOcaml.VSum(("Array",[v1]))|Apply((v1,v2))->letv1=vof_exprv1andv2=vof_paren(vof_comma_listvof_expr)v2inOcaml.VSum(("Apply",[v1;v2]))|Conditional((v1,v2,v3,v4,v5))->letv1=vof_exprv1andv2=vof_tokv2andv3=vof_exprv3andv4=vof_tokv4andv5=vof_exprv5inOcaml.VSum(("Conditional",[v1;v2;v3;v4;v5]))|Assign((v1,v2,v3))->letv1=vof_exprv1andv2=vof_wrapvof_assignment_operatorv2andv3=vof_exprv3inOcaml.VSum(("Assign",[v1;v2;v3]))|Seq((v1,v2,v3))->letv1=vof_exprv1andv2=vof_tokv2andv3=vof_exprv3inOcaml.VSum(("Seq",[v1;v2;v3]))|Functionv1->letv1=vof_func_declv1inOcaml.VSum(("Function",[v1]))|Classv1->letv1=vof_class_declv1inOcaml.VSum(("Class",[v1]))|Arrowv1->letv1=vof_arrow_funcv1inOcaml.VSum(("Arrow",[v1]))|Parenv1->letv1=vof_parenvof_exprv1inOcaml.VSum(("Paren",[v1]))|XhpHtmlv1->letv1=vof_xhp_htmlv1inOcaml.VSum(("XhpHtml",[v1]))|Encaps((v1,v2,v3,v4))->letv1=Ocaml.vof_optionvof_namev1andv2=vof_tokv2andv3=Ocaml.vof_listvof_encapsv3andv4=vof_tokv4inOcaml.VSum(("Encaps",[v1;v2;v3;v4]))|Yield((v1,v2,v3))->letv1=vof_tokv1andv2=Ocaml.vof_optionvof_tokv2andv3=Ocaml.vof_optionvof_exprv3inOcaml.VSum(("Yield",[v1;v2;v3]))|Await((v1,v2))->letv1=vof_tokv1andv2=vof_exprv2inOcaml.VSum(("Await",[v1;v2]))andvof_litteral=function|Boolv1->letv1=vof_wrapOcaml.vof_boolv1inOcaml.VSum(("Bool",[v1]))|Numv1->letv1=vof_wrapOcaml.vof_stringv1inOcaml.VSum(("Num",[v1]))|Stringv1->letv1=vof_wrapOcaml.vof_stringv1inOcaml.VSum(("String",[v1]))|Regexpv1->letv1=vof_wrapOcaml.vof_stringv1inOcaml.VSum(("Regexp",[v1]))|Nullv1->letv1=vof_tokv1inOcaml.VSum(("Null",[v1]))andvof_unop=function|U_new->Ocaml.VSum(("U_new",[]))|U_delete->Ocaml.VSum(("U_delete",[]))|U_void->Ocaml.VSum(("U_void",[]))|U_typeof->Ocaml.VSum(("U_typeof",[]))|U_bitnot->Ocaml.VSum(("U_bitnot",[]))|U_pre_increment->Ocaml.VSum(("U_pre_increment",[]))|U_pre_decrement->Ocaml.VSum(("U_pre_decrement",[]))|U_post_increment->Ocaml.VSum(("U_post_increment",[]))|U_post_decrement->Ocaml.VSum(("U_post_decrement",[]))|U_plus->Ocaml.VSum(("U_plus",[]))|U_minus->Ocaml.VSum(("U_minus",[]))|U_not->Ocaml.VSum(("U_not",[]))|U_spread->Ocaml.VSum(("U_spread",[]))andvof_binop=function|B_instanceof->Ocaml.VSum(("B_instanceof",[]))|B_in->Ocaml.VSum(("B_in",[]))|B_mul->Ocaml.VSum(("B_mul",[]))|B_expo->Ocaml.VSum(("B_expo",[]))|B_div->Ocaml.VSum(("B_div",[]))|B_mod->Ocaml.VSum(("B_mod",[]))|B_add->Ocaml.VSum(("B_add",[]))|B_sub->Ocaml.VSum(("B_sub",[]))|B_le->Ocaml.VSum(("B_le",[]))|B_ge->Ocaml.VSum(("B_ge",[]))|B_lt->Ocaml.VSum(("B_lt",[]))|B_gt->Ocaml.VSum(("B_gt",[]))|B_lsr->Ocaml.VSum(("B_lsr",[]))|B_asr->Ocaml.VSum(("B_asr",[]))|B_lsl->Ocaml.VSum(("B_lsl",[]))|B_equal->Ocaml.VSum(("B_equal",[]))|B_notequal->Ocaml.VSum(("B_notequal",[]))|B_physequal->Ocaml.VSum(("B_physequal",[]))|B_physnotequal->Ocaml.VSum(("B_physnotequal",[]))|B_bitand->Ocaml.VSum(("B_bitand",[]))|B_bitor->Ocaml.VSum(("B_bitor",[]))|B_bitxor->Ocaml.VSum(("B_bitxor",[]))|B_and->Ocaml.VSum(("B_and",[]))|B_or->Ocaml.VSum(("B_or",[]))andvof_property_name=function|PN_Idv1->letv1=vof_wrapOcaml.vof_stringv1inOcaml.VSum(("PN_Id",[v1]))|PN_Stringv1->letv1=vof_wrapOcaml.vof_stringv1inOcaml.VSum(("PN_String",[v1]))|PN_Numv1->letv1=vof_wrapOcaml.vof_stringv1inOcaml.VSum(("PN_Num",[v1]))|PN_Computedv1->letv1=vof_bracketvof_exprv1inOcaml.VSum(("PN_Computed",[v1]))andvof_assignment_operator=function|A_eq->Ocaml.VSum(("A_eq",[]))|A_mul->Ocaml.VSum(("A_mul",[]))|A_div->Ocaml.VSum(("A_div",[]))|A_mod->Ocaml.VSum(("A_mod",[]))|A_add->Ocaml.VSum(("A_add",[]))|A_sub->Ocaml.VSum(("A_sub",[]))|A_lsl->Ocaml.VSum(("A_lsl",[]))|A_lsr->Ocaml.VSum(("A_lsr",[]))|A_asr->Ocaml.VSum(("A_asr",[]))|A_and->Ocaml.VSum(("A_and",[]))|A_xor->Ocaml.VSum(("A_xor",[]))|A_or->Ocaml.VSum(("A_or",[]))andvof_xhp_tagx=Ocaml.vof_stringxandvof_xhp_html=function|Xhp((v1,v2,v3,v4,v5))->letv1=vof_wrapvof_xhp_tagv1andv2=Ocaml.vof_listvof_xhp_attributev2andv3=vof_tokv3andv4=Ocaml.vof_listvof_xhp_bodyv4andv5=vof_wrap(Ocaml.vof_optionvof_xhp_tag)v5inOcaml.VSum(("Xhp",[v1;v2;v3;v4;v5]))|XhpSingleton((v1,v2,v3))->letv1=vof_wrapvof_xhp_tagv1andv2=Ocaml.vof_listvof_xhp_attributev2andv3=vof_tokv3inOcaml.VSum(("XhpSingleton",[v1;v2;v3]))andvof_xhp_attribute=function|XhpAttrValue((v1,v2,v3))->letv1=vof_xhp_attr_namev1andv2=vof_tokv2andv3=vof_xhp_attr_valuev3inOcaml.VSum(("XhpAttrValue",[v1;v2;v3]))|XhpAttrNoValue((v1))->letv1=vof_xhp_attr_namev1inOcaml.VSum(("XhpAttrNoValue",[v1]))|XhpAttrSpreadv1->letv1=vof_brace(fun(v1,v2)->letv1=vof_tokv1andv2=vof_exprv2inOcaml.VTuple[v1;v2])v1inOcaml.VSum(("XhpAttrSpread",[v1]))andvof_xhp_attr_namev=vof_wrapOcaml.vof_stringvandvof_xhp_attr_value=function|XhpAttrStringv1->letv1=vof_wrapOcaml.vof_stringv1inOcaml.VSum(("XhpAttrString",[v1]))|XhpAttrExprv1->letv1=vof_bracevof_exprv1inOcaml.VSum(("XhpAttrExpr",[v1]))andvof_xhp_body=function|XhpTextv1->letv1=vof_wrapOcaml.vof_stringv1inOcaml.VSum(("XhpText",[v1]))|XhpExprv1->letv1=vof_brace(Ocaml.vof_optionvof_expr)v1inOcaml.VSum(("XhpExpr",[v1]))|XhpNestedv1->letv1=vof_xhp_htmlv1inOcaml.VSum(("XhpNested",[v1]))andvof_encaps=function|EncapsStringv1->letv1=vof_wrapOcaml.vof_stringv1inOcaml.VSum(("EncapsString",[v1]))|EncapsExpr((v1,v2,v3))->letv1=vof_tokv1andv2=vof_exprv2andv3=vof_tokv3inOcaml.VSum(("EncapsExpr",[v1;v2;v3]))andvof_st=function|VarsDecl((v1,v2,v3))->letv1=vof_wrapvof_var_kindv1andv2=vof_comma_listvof_var_bindingv2andv3=vof_scv3inOcaml.VSum(("Variable",[v1;v2;v3]))|Blockv1->letv1=vof_brace(Ocaml.vof_listvof_item)v1inOcaml.VSum(("Block",[v1]))|Nopv1->letv1=vof_scv1inOcaml.VSum(("Nop",[v1]))|ExprStmt((v1,v2))->letv1=vof_exprv1andv2=vof_scv2inOcaml.VSum(("ExprStmt",[v1;v2]))|If((v1,v2,v3,v4))->letv1=vof_tokv1andv2=vof_parenvof_exprv2andv3=vof_stv3andv4=Ocaml.vof_option(fun(v1,v2)->letv1=vof_tokv1andv2=vof_stv2inOcaml.VTuple[v1;v2])v4inOcaml.VSum(("If",[v1;v2;v3;v4]))|Do((v1,v2,v3,v4,v5))->letv1=vof_tokv1andv2=vof_stv2andv3=vof_tokv3andv4=vof_parenvof_exprv4andv5=vof_scv5inOcaml.VSum(("Do",[v1;v2;v3;v4;v5]))|While((v1,v2,v3))->letv1=vof_tokv1andv2=vof_parenvof_exprv2andv3=vof_stv3inOcaml.VSum(("While",[v1;v2;v3]))|For((v1,v2,v3,v4,v5,v6,v7,v8,v9))->letv1=vof_tokv1andv2=vof_tokv2andv3=Ocaml.vof_optionvof_lhs_or_varsv3andv4=vof_tokv4andv5=Ocaml.vof_optionvof_exprv5andv6=vof_tokv6andv7=Ocaml.vof_optionvof_exprv7andv8=vof_tokv8andv9=vof_stv9inOcaml.VSum(("For",[v1;v2;v3;v4;v5;v6;v7;v8;v9]))|ForIn((v1,v2,v3,v4,v5,v6,v7))->letv1=vof_tokv1andv2=vof_tokv2andv3=vof_lhs_or_varv3andv4=vof_tokv4andv5=vof_exprv5andv6=vof_tokv6andv7=vof_stv7inOcaml.VSum(("ForIn",[v1;v2;v3;v4;v5;v6;v7]))|ForOf((v1,v2,v3,v4,v5,v6,v7))->letv1=vof_tokv1andv2=vof_tokv2andv3=vof_lhs_or_varv3andv4=vof_tokv4andv5=vof_exprv5andv6=vof_tokv6andv7=vof_stv7inOcaml.VSum(("ForOf",[v1;v2;v3;v4;v5;v6;v7]))|Switch((v1,v2,v3))->letv1=vof_tokv1andv2=vof_parenvof_exprv2andv3=vof_brace(Ocaml.vof_listvof_case_clause)v3inOcaml.VSum(("Switch",[v1;v2;v3]))|Continue((v1,v2,v3))->letv1=vof_tokv1andv2=Ocaml.vof_optionvof_labelv2andv3=vof_scv3inOcaml.VSum(("Continue",[v1;v2;v3]))|Break((v1,v2,v3))->letv1=vof_tokv1andv2=Ocaml.vof_optionvof_labelv2andv3=vof_scv3inOcaml.VSum(("Break",[v1;v2;v3]))|Return((v1,v2,v3))->letv1=vof_tokv1andv2=Ocaml.vof_optionvof_exprv2andv3=vof_scv3inOcaml.VSum(("Return",[v1;v2;v3]))|With((v1,v2,v3))->letv1=vof_tokv1andv2=vof_parenvof_exprv2andv3=vof_stv3inOcaml.VSum(("With",[v1;v2;v3]))|Labeled((v1,v2,v3))->letv1=vof_labelv1andv2=vof_tokv2andv3=vof_stv3inOcaml.VSum(("Labeled",[v1;v2;v3]))|Throw((v1,v2,v3))->letv1=vof_tokv1andv2=vof_exprv2andv3=vof_scv3inOcaml.VSum(("Throw",[v1;v2;v3]))|Try((v1,v2,v3,v4))->letv1=vof_tokv1andv2=vof_stv2andv3=Ocaml.vof_option(fun(v1,v2,v3)->letv1=vof_tokv1andv2=vof_parenvof_argv2andv3=vof_stv3inOcaml.VTuple[v1;v2;v3])v3andv4=Ocaml.vof_option(fun(v1,v2)->letv1=vof_tokv1andv2=vof_stv2inOcaml.VTuple[v1;v2])v4inOcaml.VSum(("Try",[v1;v2;v3;v4]))andvof_labelv=vof_wrapOcaml.vof_stringvandvof_lhs_or_vars=function|LHS1v1->letv1=vof_exprv1inOcaml.VSum(("LHS1",[v1]))|ForVars((v1,v2))->letv1=vof_wrapvof_var_kindv1andv2=vof_comma_listvof_var_bindingv2inOcaml.VSum(("ForVars",[v1;v2]))andvof_lhs_or_var=function|LHS2v1->letv1=vof_exprv1inOcaml.VSum(("LHS2",[v1]))|ForVar((v1,v2))->letv1=vof_wrapvof_var_kindv1andv2=vof_var_bindingv2inOcaml.VSum(("ForVar",[v1;v2]))andvof_case_clause=function|Default((v1,v2,v3))->letv1=vof_tokv1andv2=vof_tokv2andv3=Ocaml.vof_listvof_itemv3inOcaml.VSum(("Default",[v1;v2;v3]))|Case((v1,v2,v3,v4))->letv1=vof_tokv1andv2=vof_exprv2andv3=vof_tokv3andv4=Ocaml.vof_listvof_itemv4inOcaml.VSum(("Case",[v1;v2;v3;v4]))andvof_argv=vof_wrapOcaml.vof_stringvandvof_type_=function|TTodo->Ocaml.VSum(("TTodo",[]))|TNamev1->letv1=vof_nominal_typev1inOcaml.VSum(("TName",[v1]))|TQuestion((v1,v2))->letv1=vof_tokv1andv2=vof_type_v2inOcaml.VSum(("TQuestion",[v1;v2]))|TFun((v1,v2,v3))->letv1=vof_paren(vof_comma_list(fun(v1,v2)->letv1=vof_param_namev1andv2=vof_annotationv2inOcaml.VTuple[v1;v2]))v1andv2=vof_tokv2andv3=vof_type_v3inOcaml.VSum(("TFun",[v1;v2;v3]))|TObjv1->letv1=vof_brace(Ocaml.vof_list(fun(v1,v2,v3)->letv1=vof_property_namev1andv2=vof_annotationv2andv3=vof_scv3inOcaml.VTuple[v1;v2;v3]))v1inOcaml.VSum(("TObj",[v1]))andvof_param_name=function|RequiredParam(v1)->letv1=vof_namev1inOcaml.VSum(("RequiredParam",[v1]))|OptionalParam(v1,v2)->letv1=vof_namev1andv2=vof_tokv2inOcaml.VSum(("OptionalParam",[v1;v2]))|RestParam(v1,v2)->letv1=vof_tokv1andv2=vof_namev2inOcaml.VSum(("RestParam",[v1;v2]))andvof_annotation=function|TAnnot(v1,v2)->letv1=vof_tokv1andv2=vof_type_v2inOcaml.VSum(("TAnnot",[v1;v2]))|TFunAnnot(v1,v2,v3,v4)->letv1=Ocaml.vof_option(vof_angle(vof_comma_listvof_name))v1inletv2=vof_paren(vof_comma_list(fun(v1,v2)->letv1=vof_param_namev1andv2=vof_annotationv2inOcaml.VTuple[v1;v2]))v2andv3=vof_tokv3andv4=vof_type_v4inOcaml.VSum(("TFunAnnot",[v1;v2;v3;v4]))andvof_nominal_type((v1,v2))=letv1=vof_exprv1inletv2=Ocaml.vof_option(vof_angle(vof_comma_listvof_type_))v2inOcaml.VTuple[v1;v2]andvof_type_optv=Ocaml.vof_optionvof_annotationvandvof_func_decl{f_kind=v_f_kind;f_properties=v_f_properties;f_params=v_f_params;f_body=v_f_body;f_type_params=v_f_type_params;f_return_type=v_f_return_type}=letbnds=[]inletarg=vof_type_optv_f_return_typeinletbnd=("f_return_type",arg)inletbnds=bnd::bndsinletarg=Ocaml.vof_optionvof_type_parametersv_f_type_paramsinletbnd=("f_type_params",arg)inletbnds=bnd::bndsinletarg=vof_brace(Ocaml.vof_listvof_item)v_f_bodyinletbnd=("f_body",arg)inletbnds=bnd::bndsinletarg=vof_paren(vof_comma_listvof_parameter_binding)v_f_paramsinletbnd=("f_params",arg)inletbnds=bnd::bndsinletarg=Ocaml.vof_listvof_func_propertyv_f_propertiesinletbnd=("f_properties",arg)inletbnds=bnd::bndsinletarg=vof_func_kindv_f_kindinletbnd=("f_kind",arg)inletbnds=bnd::bndsinOcaml.VDictbndsandvof_type_parametersv=vof_angle(vof_comma_listvof_type_parameter)vandvof_type_parameterv=vof_namevandvof_func_kind=function|F_func((v1,v2))->letv1=vof_tokv1andv2=Ocaml.vof_optionvof_namev2inOcaml.VSum(("F_func",[v1;v2]))|F_methodv1->letv1=vof_property_namev1inOcaml.VSum(("F_method",[v1]))|F_get((v1,v2))->letv1=vof_tokv1andv2=vof_property_namev2inOcaml.VSum(("F_get",[v1;v2]))|F_set((v1,v2))->letv1=vof_tokv1andv2=vof_property_namev2inOcaml.VSum(("F_set",[v1;v2]))andvof_func_property=function|Generatorv1->letv1=vof_tokv1inOcaml.VSum(("Generator",[v1]))|Asyncv1->letv1=vof_tokv1inOcaml.VSum(("Async",[v1]))andvof_parameter_binding=function|ParamClassicv1->letv1=vof_parameterv1inOcaml.VSum(("ParamClassic",[v1]))|ParamPatternv1->letv1=vof_parameter_patternv1inOcaml.VSum(("ParamPattern",[v1]))andvof_parameter_pattern{ppat=v_ppat;ppat_type=v_ppat_type;ppat_default=v_ppat_default}=letbnds=[]inletarg=Ocaml.vof_option(fun(v1,v2)->letv1=vof_tokv1andv2=vof_exprv2inOcaml.VTuple[v1;v2])v_ppat_defaultinletbnd=("ppat_default",arg)inletbnds=bnd::bndsinletarg=vof_type_optv_ppat_typeinletbnd=("ppat_type",arg)inletbnds=bnd::bndsinletarg=vof_patternv_ppatinletbnd=("ppat",arg)inletbnds=bnd::bndsinOcaml.VDictbndsandvof_parameter{p_name=v_p_name;p_type=v_p_type;p_default=v_default;p_dots=v_dots}=letbnds=[]inletarg=vof_type_optv_p_typeinletbnd=("p_type",arg)inletbnds=bnd::bndsinletarg=vof_namev_p_nameinletbnd=("p_name",arg)inletbnds=bnd::bndsinletarg=Ocaml.vof_optionvof_defaultv_defaultinletbnd=("p_default",arg)inletbnds=bnd::bndsinletarg=Ocaml.vof_optionvof_tokv_dotsinletbnd=("p_dots",arg)inletbnds=bnd::bndsinOcaml.VDictbndsandvof_default=function|DNone(v1)->letv1=vof_tokv1inOcaml.VSum(("DNone",[v1]))|DSome(v1,v2)->letv1=vof_tokv1andv2=vof_exprv2inOcaml.VSum(("DSome",[v1;v2]))andvof_arrow_func{a_params=v_a_params;a_return_type=v_a_return_type;a_tok=v_a_tok;a_body=v_a_body}=letbnds=[]inletarg=vof_arrow_bodyv_a_bodyinletbnd=("a_body",arg)inletbnds=bnd::bndsinletarg=vof_tokv_a_tokinletbnd=("a_tok",arg)inletbnds=bnd::bndsinletarg=vof_type_optv_a_return_typeinletbnd=("a_return_type",arg)inletbnds=bnd::bndsinletarg=vof_arrow_paramsv_a_paramsinletbnd=("a_params",arg)inletbnds=bnd::bndsinOcaml.VDictbndsandvof_arrow_params=function|ASingleParamv1->letv1=vof_parameter_bindingv1inOcaml.VSum(("ASingleParam",[v1]))|AParamsv1->letv1=vof_paren(vof_comma_listvof_parameter_binding)v1inOcaml.VSum(("AParams",[v1]))andvof_arrow_body=function|AExprv1->letv1=vof_exprv1inOcaml.VSum(("AExpr",[v1]))|ABodyv1->letv1=vof_brace(Ocaml.vof_listvof_item)v1inOcaml.VSum(("ABody",[v1]))andvof_var_kind=function|Var->Ocaml.VSum(("Var",[]))|Const->Ocaml.VSum(("Const",[]))|Let->Ocaml.VSum(("Let",[]))andvof_var_binding=function|VarClassicv1->letv1=vof_variable_declarationv1inOcaml.VSum(("VarClassic",[v1]))|VarPatternv1->letv1=vof_variable_declaration_patternv1inOcaml.VSum(("VarPattern",[v1]))andvof_variable_declaration_pattern{vpat=v_vpat;vpat_init=v_vpat_init;vpat_type=v_vpat_type}=letbnds=[]inletarg=vof_type_optv_vpat_typeinletbnd=("vpat_type",arg)inletbnds=bnd::bndsinletarg=Ocaml.vof_optionvof_initv_vpat_initinletbnd=("vpat_init",arg)inletbnds=bnd::bndsinletarg=vof_patternv_vpatinletbnd=("vpat",arg)inletbnds=bnd::bndsinOcaml.VDictbndsandvof_init(v1,v2)=letv1=vof_tokv1andv2=vof_exprv2inOcaml.VTuple[v1;v2]andvof_pattern=function|PatObjv1->letv1=vof_brace(vof_comma_listvof_pattern)v1inOcaml.VSum(("PatObj",[v1]))|PatArrv1->letv1=vof_bracket(vof_comma_listvof_pattern)v1inOcaml.VSum(("PatArr",[v1]))|PatId((v1,v2))->letv1=vof_namev1andv2=Ocaml.vof_optionvof_initv2inOcaml.VSum(("PatId",[v1;v2]))|PatProp((v1,v2,v3))->letv1=vof_property_namev1andv2=vof_tokv2andv3=vof_patternv3inOcaml.VSum(("PatProp",[v1;v2;v3]))|PatDots((v1,v2))->letv1=vof_tokv1andv2=vof_patternv2inOcaml.VSum(("PatDots",[v1;v2]))|PatNest((v1,v2))->letv1=vof_patternv1andv2=Ocaml.vof_optionvof_initv2inOcaml.VSum(("PatNest",[v1;v2]))andvof_variable_declaration{v_name=v_v_name;v_init=v_v_init;v_type=v_v_type}=letbnds=[]inletarg=vof_type_optv_v_typeinletbnd=("v_type",arg)inletbnds=bnd::bndsinletarg=Ocaml.vof_option(fun(v1,v2)->letv1=vof_tokv1andv2=vof_exprv2inOcaml.VTuple[v1;v2])v_v_initinletbnd=("v_init",arg)inletbnds=bnd::bndsinletarg=vof_namev_v_nameinletbnd=("v_name",arg)inletbnds=bnd::bndsinOcaml.VDictbndsandvof_item=function|ItemTodov1->letv1=vof_tokv1inOcaml.VSum(("ItemTodo",[v1]))|Stv1->letv1=vof_stv1inOcaml.VSum(("St",[v1]))|FunDeclv1->letv1=vof_func_declv1inOcaml.VSum(("FunDecl",[v1]))|ClassDeclv1->letv1=vof_class_declv1inOcaml.VSum(("ClassDecl",[v1]))|InterfaceDeclv1->letv1=vof_interface_declv1inOcaml.VSum(("InterfaceDecl",[v1]))andvof_class_decl{c_tok=v_c_tok;c_name=v_c_name;c_type_params=v_c_type_params;c_extends=v_c_extends;c_body=v_c_body}=letbnds=[]inletarg=vof_brace(Ocaml.vof_listvof_class_stmt)v_c_bodyinletbnd=("c_body",arg)inletbnds=bnd::bndsinletarg=Ocaml.vof_option(fun(v1,v2)->letv1=vof_tokv1andv2=vof_nominal_typev2inOcaml.VTuple[v1;v2])v_c_extendsinletbnd=("c_extends",arg)inletbnds=bnd::bndsinletarg=Ocaml.vof_option(vof_angle(vof_comma_listvof_name))v_c_type_paramsinletbnd=("c_type_params",arg)inletbnds=bnd::bndsinletarg=Ocaml.vof_optionvof_namev_c_nameinletbnd=("c_name",arg)inletbnds=bnd::bndsinletarg=vof_tokv_c_tokinletbnd=("c_tok",arg)inletbnds=bnd::bndsinOcaml.VDictbndsandvof_interface_decl{i_tok=v_i_tok;i_name=v_i_name;i_type_params=v_i_type_params;i_type=v_i_type;}=letbnds=[]inletarg=vof_type_v_i_typeinletbnd=("i_type",arg)inletbnds=bnd::bndsinletarg=Ocaml.vof_option(vof_angle(vof_comma_listvof_name))v_i_type_paramsinletbnd=("i_type_params",arg)inletbnds=bnd::bndsinletarg=vof_namev_i_nameinletbnd=("i_name",arg)inletbnds=bnd::bndsinletarg=vof_tokv_i_tokinletbnd=("i_tok",arg)inletbnds=bnd::bndsinOcaml.VDictbndsandvof_field_decl{fld_static=v_fld_static;fld_name=v_fld_name;fld_type=v_fld_type;fld_init=v_fld_init}=letbnds=[]inletarg=Ocaml.vof_optionvof_initv_fld_initinletbnd=("fld_init",arg)inletbnds=bnd::bndsinletarg=vof_type_optv_fld_typeinletbnd=("fld_type",arg)inletbnds=bnd::bndsinletarg=vof_property_namev_fld_nameinletbnd=("fld_name",arg)inletbnds=bnd::bndsinletarg=vof_static_optv_fld_staticinletbnd=("fld_static",arg)inletbnds=bnd::bndsinOcaml.VDictbndsandvof_static_optv=Ocaml.vof_optionvof_tokvandvof_class_stmt=function|C_field((v1,v2))->letv1=vof_field_declv1andv2=vof_scv2inOcaml.VSum(("C_field",[v1;v2]))|C_method((v1,v2))->letv1=Ocaml.vof_optionvof_tokv1andv2=vof_func_declv2inOcaml.VSum(("C_method",[v1;v2]))|C_extrasemicolonv1->letv1=vof_scv1inOcaml.VSum(("C_extrasemicolon",[v1]))andvof_import=function|ImportFromv1->letv1=(matchv1with|(v1,v2)->letv1=vof_import_clausev1andv2=(matchv2with|(v1,v2)->letv1=vof_tokv1andv2=vof_module_pathv2inOcaml.VTuple[v1;v2])inOcaml.VTuple[v1;v2])inOcaml.VSum(("ImportFrom",[v1]))|ImportEffectv1->letv1=vof_module_pathv1inOcaml.VSum(("ImportEffect",[v1]))andvof_import_clause(v1,v2)=letv1=Ocaml.vof_optionvof_import_defaultv1andv2=Ocaml.vof_optionvof_name_importv2inOcaml.VTuple[v1;v2]andvof_name_import=function|ImportNamespace((v1,v2,v3))->letv1=vof_tokv1andv2=vof_tokv2andv3=vof_namev3inOcaml.VSum(("ImportNamespace",[v1;v2;v3]))|ImportNamesv1->letv1=vof_brace(vof_comma_listvof_import_name)v1inOcaml.VSum(("ImportNames",[v1]))|ImportTypes(v1,v2)->letv1=vof_tokv1inletv2=vof_brace(vof_comma_listvof_import_name)v2inOcaml.VSum(("ImportTypes",[v1;v2]))andvof_import_defaultv=vof_namevandvof_import_name(v1,v2)=letv1=vof_namev1andv2=Ocaml.vof_option(fun(v1,v2)->letv1=vof_tokv1andv2=vof_namev2inOcaml.VTuple[v1;v2])v2inOcaml.VTuple[v1;v2]andvof_export=function|ExportDeclv1->letv1=vof_itemv1inOcaml.VSum(("ExportDecl",[v1]))|ExportDefaultDecl((v1,v2))->letv1=vof_tokv1andv2=vof_itemv2inOcaml.VSum(("ExportDefaultDecl",[v1;v2]))|ExportDefaultExpr((v1,v2,v3))->letv1=vof_tokv1andv2=vof_exprv2andv3=vof_scv3inOcaml.VSum(("ExportDefaultExpr",[v1;v2;v3]))|ExportNames((v1,v2))->letv1=vof_brace(vof_comma_listvof_import_name)v1andv2=vof_scv2inOcaml.VSum(("ExportNames",[v1;v2]))|ReExportNamespace((v1,v2,v3))->letv1=vof_tokv1andv2=(matchv2with|(v1,v2)->letv1=vof_tokv1andv2=vof_module_pathv2inOcaml.VTuple[v1;v2])andv3=vof_scv3inOcaml.VSum(("ReExportNamespace",[v1;v2;v3]))|ReExportNames((v1,v2,v3))->letv1=vof_brace(vof_comma_listvof_import_name)v1andv2=(matchv2with|(v1,v2)->letv1=vof_tokv1andv2=vof_module_pathv2inOcaml.VTuple[v1;v2])andv3=vof_scv3inOcaml.VSum(("ReExportNames",[v1;v2;v3]))andvof_module_item=function|Importv1->letv1=(matchv1with|(v1,v2,v3)->letv1=vof_tokv1andv2=vof_importv2andv3=vof_scv3inOcaml.VTuple[v1;v2;v3])inOcaml.VSum(("Import",[v1]))|Exportv1->letv1=(matchv1with|(v1,v2)->letv1=vof_tokv1andv2=vof_exportv2inOcaml.VTuple[v1;v2])inOcaml.VSum(("Export",[v1]))|Itv1->letv1=vof_itemv1inOcaml.VSum(("It",[v1]))andvof_program_origv=Ocaml.vof_listvof_module_itemvletvof_any_orig=function|Exprv1->letv1=vof_exprv1inOcaml.VSum(("Expr",[v1]))|Stmtv1->letv1=vof_stv1inOcaml.VSum(("Stmt",[v1]))|Itemv1->letv1=vof_itemv1inOcaml.VSum(("Item",[v1]))|Patternv1->letv1=vof_patternv1inOcaml.VSum(("Pattern",[v1]))|Programv1->letv1=vof_program_origv1inOcaml.VSum(("Program",[v1]))(* end auto generation *)letvof_any?(precision=MPI.default_dumper_precision)x=Common.save_excursionMPI._current_precisionprecision(fun()->vof_any_origx)letvof_program?(precision=MPI.default_dumper_precision)x=Common.save_excursionMPI._current_precisionprecision(fun()->vof_program_origx)