123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317(* 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.
*)openOcamlopenCst_php(*****************************************************************************)(* Prelude *)(*****************************************************************************)(* hooks *)typevisitor_in={kexpr:(expr->expr)*visitor_out->expr->expr;kstmt_and_def:(stmt_and_def->stmt_and_def)*visitor_out->stmt_and_def->stmt_and_def;kstmt:(stmt->stmt)*visitor_out->stmt->stmt;kname:(name->name)*visitor_out->name->name;kclass_def:(class_def->class_def)*visitor_out->class_def->class_def;kinfo:(tok->tok)*visitor_out->tok->tok;}andvisitor_out={vtop:toplevel->toplevel;vstmt_and_def:stmt_and_def->stmt_and_def;vprogram:program->program;vexpr:expr->expr;vxhpattrvalue:xhp_attr_value->xhp_attr_value;vany:any->any;}letmap_option=Common2.map_optionletmap_scopex=xletdefault_visitor={kexpr=(fun(k,_)x->kx);kstmt_and_def=(fun(k,_)x->kx);kstmt=(fun(k,_)x->kx);kname=(fun(k,_)x->kx);kclass_def=(fun(k,_)x->kx);kinfo=(fun(k,_)x->kx);}let(mk_visitor:visitor_in->visitor_out)=funvin->(* start of auto generation *)letrecmap_infox=letkx=matchxwith{Parse_info.token=v_pinfo;transfo=v_transfo;}->letv_pinfo=(* todo? map_pinfo v_pinfo *)v_pinfoin(* not recurse in transfo ? *){Parse_info.token=v_pinfo;(* generete a fresh field *)transfo=v_transfo;}invin.kinfo(k,all_functions)xandmap_tokv=map_infovandmap_wrap:'a.('a->'a)->'awrap->'awrap=fun_of_a(v1,v2)->letv1=_of_av1andv2=map_infov2in(v1,v2)andmap_paren:'a.('a->'a)->'aparen->'aparen=fun_of_a(v1,v2,v3)->letv1=map_tokv1andv2=_of_av2andv3=map_tokv3in(v1,v2,v3)andmap_brace:'a.('a->'a)->'abrace->'abrace=fun_of_a(v1,v2,v3)->letv1=map_tokv1andv2=_of_av2andv3=map_tokv3in(v1,v2,v3)andmap_bracket:'a.('a->'a)->'abracket->'abracket=fun_of_a(v1,v2,v3)->letv1=map_tokv1andv2=_of_av2andv3=map_tokv3in(v1,v2,v3)andmap_single_angle:'a.('a->'a)->'asingle_angle->'asingle_angle=fun_of_a(v1,v2,v3)->letv1=map_tokv1andv2=_of_av2andv3=map_tokv3in(v1,v2,v3)andmap_angle:'a.('a->'a)->'aangle->'aangle=fun_of_a(v1,v2,v3)->letv1=map_tokv1andv2=_of_av2andv3=map_tokv3in(v1,v2,v3)andmap_comma_list_dots:'a.('a->'a)->'acomma_list_dots->'acomma_list_dots=fun_of_axs->map_of_list(funx->Ocaml.map_of_either3_of_amap_infomap_infox)xsandmap_comma_list:'a.('a->'a)->'acomma_list->'acomma_list=fun_of_axs->map_of_list(funx->Ocaml.map_of_either_of_amap_infox)xsandmap_ident=function|Namev1->letv1=map_wrapmap_of_stringv1inName((v1))|XhpNamev1->letv1=map_wrap(map_of_listmap_of_string)v1inXhpName((v1))andmap_xhp_tagv=map_of_listmap_of_stringvandmap_dname=function|DNamev1->letv1=map_wrapmap_of_stringv1inDName((v1))andmap_qualified_identv=map_of_listmap_qualified_ident_elementvandmap_qualified_ident_element=function|QIv1->letv1=map_identv1inQI((v1))|QITokv1->letv1=map_tokv1inQITok((v1))andmap_namex=map_class_name_or_selfparentxandmap_class_name_or_selfparentv=letkv=matchvwith|XName(v1)->letv1=map_qualified_identv1inXName(v1)|Selfv1->letv1=map_tokv1inSelf((v1))|Parentv1->letv1=map_tokv1inParent((v1))|LateStaticv1->letv1=map_tokv1inLateStatic((v1))invin.kname(k,all_functions)vandmap_type_argsv=map_single_angle(map_comma_listmap_hint_type)vandmap_fully_qualified_class_namev=map_hint_typevandmap_type_paramsv=map_single_angle(map_comma_listmap_type_param)vandmap_type_param=function|TParamv1->letv1=map_identv1inTParam((v1))|TParamConstraint((v1,v2,v3))->letv1=map_identv1andv2=map_tokv2andv3=map_class_namev3inTParamConstraint((v1,v2,v3))andmap_class_namev=map_hint_typevandmap_ptype=function|BoolTy->BoolTy|IntTy->IntTy|DoubleTy->DoubleTy|StringTy->StringTy|ArrayTy->ArrayTy|ObjectTy->ObjectTyandmap_expr(x)=letkx=matchxwith|Idv1->letv1=map_namev1inIdv1|IdVar((v1,v2))->letv1=map_dnamev1andv2=map_of_refmap_scopev2inIdVar((v1,v2))|Thisv1->letv1=map_tokv1inThis((v1))|Call((v1,v2))->letv1=map_exprv1andv2=map_paren(map_comma_listmap_argument)v2inCall((v1,v2))|ObjGet((v1,v2,v3))->letv1=map_exprv1andv2=map_tokv2andv3=map_exprv3inObjGet((v1,v2,v3))|ClassGet((v1,v2,v3))->letv1=map_class_name_referencev1andv2=map_tokv2andv3=map_exprv3inClassGet((v1,v2,v3))|ArrayGet((v1,v2))->letv1=map_exprv1andv2=map_bracket(map_of_optionmap_expr)v2inArrayGet((v1,v2))|HashGet((v1,v2))->letv1=map_exprv1andv2=map_bracemap_exprv2inHashGet((v1,v2))|BraceIdentv1->letv1=map_bracemap_exprv1inBraceIdent((v1))|Deref((v1,v2))->letv1=map_tokv1andv2=map_exprv2inDeref((v1,v2))|Scv1->letv1=map_scalarv1inSc((v1))|Binary((v1,v2,v3))->letv1=map_exprv1andv2=map_wrapmap_binaryOpv2andv3=map_exprv3inBinary((v1,v2,v3))|Unary((v1,v2))->letv1=map_wrapmap_unaryOpv1andv2=map_exprv2inUnary((v1,v2))|Assign((v1,v2,v3))->letv1=map_lvaluev1andv2=map_tokv2andv3=map_exprv3inAssign((v1,v2,v3))|AssignOp((v1,v2,v3))->letv1=map_lvaluev1andv2=map_wrapmap_assignOpv2andv3=map_exprv3inAssignOp((v1,v2,v3))|Postfix((v1,v2))->letv1=map_rw_variablev1andv2=map_wrapmap_fixOpv2inPostfix((v1,v2))|Infix((v1,v2))->letv1=map_wrapmap_fixOpv1andv2=map_rw_variablev2inInfix((v1,v2))|CondExpr((v1,v2,v3,v4,v5))->letv1=map_exprv1andv2=map_tokv2andv3=map_optionmap_exprv3andv4=map_tokv4andv5=map_exprv5inCondExpr((v1,v2,v3,v4,v5))|AssignList((v1,v2,v3,v4))->letv1=map_tokv1andv2=map_paren(map_comma_listmap_list_assign)v2andv3=map_tokv3andv4=map_exprv4inAssignList((v1,v2,v3,v4))|ArrayLong((v1,v2))->letv1=map_tokv1andv2=map_paren(map_comma_listmap_array_pair)v2inArrayLong((v1,v2))|ArrayShort((v1))->letv1=map_bracket(map_comma_listmap_array_pair)v1inArrayShort((v1))|Collection((v1,v2))->letv1=map_namev1inletv2=map_brace(map_comma_listmap_array_pair)v2inCollection((v1,v2))|New((v1,v2,v3))->letv1=map_tokv1andv2=map_class_name_referencev2andv3=map_of_option(map_paren(map_comma_listmap_argument))v3inNew((v1,v2,v3))|Clone((v1,v2))->letv1=map_tokv1andv2=map_exprv2inClone((v1,v2))|AssignRef((v1,v2,v3,v4))->letv1=map_lvaluev1andv2=map_tokv2andv3=map_tokv3andv4=map_lvaluev4inAssignRef((v1,v2,v3,v4))|AssignNew((v1,v2,v3,v4,v5,v6))->letv1=map_lvaluev1andv2=map_tokv2andv3=map_tokv3andv4=map_tokv4andv5=map_class_name_referencev5andv6=map_of_option(map_paren(map_comma_listmap_argument))v6inAssignNew((v1,v2,v3,v4,v5,v6))|Cast((v1,v2))->letv1=map_wrapmap_castOpv1andv2=map_exprv2inCast((v1,v2))|CastUnset((v1,v2))->letv1=map_tokv1andv2=map_exprv2inCastUnset((v1,v2))|InstanceOf((v1,v2,v3))->letv1=map_exprv1andv2=map_tokv2andv3=map_class_name_referencev3inInstanceOf((v1,v2,v3))|Eval((v1,v2))->letv1=map_tokv1andv2=map_parenmap_exprv2inEval((v1,v2))|Lambdav1->letv1=map_lambda_defv1inLambda((v1))|ShortLambdav1->letv1=map_short_lambda_defv1inShortLambda((v1))|Exit((v1,v2))->letv1=map_tokv1andv2=map_of_option(map_paren(map_of_optionmap_expr))v2inExit((v1,v2))|At((v1,v2))->letv1=map_tokv1andv2=map_exprv2inAt((v1,v2))|Print((v1,v2))->letv1=map_tokv1andv2=map_exprv2inPrint((v1,v2))|BackQuote((v1,v2,v3))->letv1=map_tokv1andv2=map_of_listmap_encapsv2andv3=map_tokv3inBackQuote((v1,v2,v3))|Include((v1,v2))->letv1=map_tokv1andv2=map_exprv2inInclude((v1,v2))|IncludeOnce((v1,v2))->letv1=map_tokv1andv2=map_exprv2inIncludeOnce((v1,v2))|Require((v1,v2))->letv1=map_tokv1andv2=map_exprv2inRequire((v1,v2))|RequireOnce((v1,v2))->letv1=map_tokv1andv2=map_exprv2inRequireOnce((v1,v2))|Yield((v1,v2))->letv1=map_tokv1andv2=map_array_pairv2inYield((v1,v2))|YieldBreak((v1,v2))->letv1=map_tokv1andv2=map_tokv2inYieldBreak((v1,v2))|Await((v1,v2))->letv1=map_tokv1andv2=map_exprv2inAwait((v1,v2))|Empty((v1,v2))->letv1=map_tokv1andv2=map_parenmap_lvaluev2inEmpty((v1,v2))|Isset((v1,v2))->letv1=map_tokv1andv2=map_paren(map_comma_listmap_lvalue)v2inIsset((v1,v2))|SgrepExprDotsv1->letv1=map_infov1inSgrepExprDots((v1))|ParenExprv1->letv1=map_parenmap_exprv1inParenExpr((v1))|XhpHtmlv1->letv1=map_xhp_htmlv1inXhpHtml((v1))invin.kexpr(k,all_functions)xandmap_scalar=function|Cv1->letv1=map_constantv1inC((v1))|Guil((v1,v2,v3))->letv1=map_tokv1andv2=map_of_listmap_encapsv2andv3=map_tokv3inGuil((v1,v2,v3))|HereDoc((v1,v2,v3))->letv1=map_tokv1andv2=map_of_listmap_encapsv2andv3=map_tokv3inHereDoc((v1,v2,v3))andmap_constant=function|Intv1->letv1=map_wrapmap_of_stringv1inInt((v1))|Doublev1->letv1=map_wrapmap_of_stringv1inDouble((v1))|Stringv1->letv1=map_wrapmap_of_stringv1inString((v1))|PreProcessv1->letv1=map_wrapmap_cpp_directivev1inPreProcess((v1))|XdebugClass((v1,v2))->letv1=map_namev1andv2=map_of_listmap_class_stmtv2inXdebugClass((v1,v2))|XdebugResource->XdebugResourceandmap_cpp_directive=function|Line->Line|File->File|Dir->Dir|ClassC->ClassC|MethodC->MethodC|FunctionC->FunctionC|TraitC->TraitC|NamespaceC->NamespaceCandmap_encaps=function|EncapsStringv1->letv1=map_wrapmap_of_stringv1inEncapsString((v1))|EncapsVarv1->letv1=map_lvaluev1inEncapsVar((v1))|EncapsCurly((v1,v2,v3))->letv1=map_tokv1andv2=map_lvaluev2andv3=map_tokv3inEncapsCurly((v1,v2,v3))|EncapsDollarCurly((v1,v2,v3))->letv1=map_tokv1andv2=map_lvaluev2andv3=map_tokv3inEncapsDollarCurly((v1,v2,v3))|EncapsExpr((v1,v2,v3))->letv1=map_tokv1andv2=map_exprv2andv3=map_tokv3inEncapsExpr((v1,v2,v3))andmap_fixOpx=xandmap_binaryOp=function|Arithv1->letv1=map_arithOpv1inArith((v1))|Logicalv1->letv1=map_logicalOpv1inLogical((v1))|BinaryConcat->BinaryConcat|Pipe->Pipe|CombinedComparison->CombinedComparisonandmap_arithOp=function|Plus->Plus|Minus->Minus|Mul->Mul|Div->Div|Mod->Mod|DecLeft->DecLeft|DecRight->DecRight|And->And|Or->Or|Xor->Xorandmap_logicalOp=function|Inf->Inf|Sup->Sup|InfEq->InfEq|SupEq->SupEq|Eq->Eq|NotEq->NotEq|Identical->Identical|NotIdentical->NotIdentical|AndLog->AndLog|OrLog->OrLog|XorLog->XorLog|AndBool->AndBool|OrBool->OrBoolandmap_assignOp=function|AssignOpArithv1->letv1=map_arithOpv1inAssignOpArith((v1))|AssignConcat->AssignConcatandmap_unaryOp=function|UnPlus->UnPlus|UnMinus->UnMinus|UnBang->UnBang|UnTilde->UnTildeandmap_castOpv=map_ptypevandmap_list_assign=function|ListVarv1->letv1=map_lvaluev1inListVar((v1))|ListList((v1,v2))->letv1=map_tokv1andv2=map_paren(map_comma_listmap_list_assign)v2inListList((v1,v2))|ListEmpty->ListEmptyandmap_array_pair=function|ArrayExprv1->letv1=map_exprv1inArrayExpr((v1))|ArrayRef((v1,v2))->letv1=map_tokv1andv2=map_lvaluev2inArrayRef((v1,v2))|ArrayArrowExpr((v1,v2,v3))->letv1=map_exprv1andv2=map_tokv2andv3=map_exprv3inArrayArrowExpr((v1,v2,v3))|ArrayArrowRef((v1,v2,v3,v4))->letv1=map_exprv1andv2=map_tokv2andv3=map_tokv3andv4=map_lvaluev4inArrayArrowRef((v1,v2,v3,v4))andmap_class_name_referencea=map_expraandmap_xhp_html=function|Xhp((v1,v2,v3,v4,v5))->letv1=map_wrapmap_xhp_tagv1andv2=map_of_listmap_xhp_attributev2andv3=map_tokv3andv4=map_of_listmap_xhp_bodyv4andv5=map_wrap(map_of_optionmap_xhp_tag)v5inXhp((v1,v2,v3,v4,v5))|XhpSingleton((v1,v2,v3))->letv1=map_wrapmap_xhp_tagv1andv2=map_of_listmap_xhp_attributev2andv3=map_tokv3inXhpSingleton((v1,v2,v3))andmap_xhp_attribute(v1,v2,v3)=letv1=map_xhp_attr_namev1andv2=map_tokv2andv3=map_xhp_attr_valuev3in(v1,v2,v3)andmap_xhp_attr_namev=map_wrapmap_of_stringvandmap_xhp_attr_value=function|XhpAttrString((v1,v2,v3))->letv1=map_tokv1andv2=map_of_listmap_encapsv2andv3=map_tokv3inXhpAttrString((v1,v2,v3))|XhpAttrExprv1->letv1=map_bracemap_exprv1inXhpAttrExpr((v1))|SgrepXhpAttrValueMvarv1->letv1=map_wrapmap_of_stringv1inSgrepXhpAttrValueMvar((v1))andmap_xhp_body=function|XhpTextv1->letv1=map_wrapmap_of_stringv1inXhpText((v1))|XhpExprv1->letv1=map_bracemap_exprv1inXhpExpr((v1))|XhpNestedv1->letv1=map_xhp_htmlv1inXhpNested((v1))andmap_lvaluea=map_expraandmap_argument=function|Argv1->letv1=map_exprv1inArg((v1))|ArgRef((v1,v2))->letv1=map_tokv1andv2=map_w_variablev2inArgRef((v1,v2))|ArgUnpack((v1,v2))->letv1=map_tokv1andv2=map_exprv2inArgUnpack((v1,v2))andmap_rw_variablev=map_lvaluevandmap_r_variablev=map_lvaluevandmap_w_variablev=map_lvaluevandmap_stmtx=letkx=matchxwith|ExprStmt((v1,v2))->letv1=map_exprv1andv2=map_tokv2inExprStmt((v1,v2))|EmptyStmtv1->letv1=map_tokv1inEmptyStmt((v1))|Blockv1->letv1=map_brace(map_of_listmap_stmt_and_def)v1inBlock((v1))|If((v1,v2,v3,v4,v5))->letv1=map_tokv1andv2=map_parenmap_exprv2andv3=map_stmtv3andv4=map_of_list(fun(v1,v2,v3)->letv1=map_tokv1andv2=map_parenmap_exprv2andv3=map_stmtv3in(v1,v2,v3))v4andv5=map_of_option(fun(v1,v2)->letv1=map_tokv1andv2=map_stmtv2in(v1,v2))v5inIf((v1,v2,v3,v4,v5))|IfColon((v1,v2,v3,v4,v5,v6,v7,v8))->letv1=map_tokv1andv2=map_parenmap_exprv2andv3=map_tokv3andv4=map_of_listmap_stmt_and_defv4andv5=map_of_listmap_new_elseifv5andv6=map_of_optionmap_new_elsev6andv7=map_tokv7andv8=map_tokv8inIfColon((v1,v2,v3,v4,v5,v6,v7,v8))|While((v1,v2,v3))->letv1=map_tokv1andv2=map_parenmap_exprv2andv3=map_colon_stmtv3inWhile((v1,v2,v3))|Do((v1,v2,v3,v4,v5))->letv1=map_tokv1andv2=map_stmtv2andv3=map_tokv3andv4=map_parenmap_exprv4andv5=map_tokv5inDo((v1,v2,v3,v4,v5))|For((v1,v2,v3,v4,v5,v6,v7,v8,v9))->letv1=map_tokv1andv2=map_tokv2andv3=map_for_exprv3andv4=map_tokv4andv5=map_for_exprv5andv6=map_tokv6andv7=map_for_exprv7andv8=map_tokv8andv9=map_colon_stmtv9inFor((v1,v2,v3,v4,v5,v6,v7,v8,v9))|Foreach((v1,v2,v3,v4,v5,v6,v7,v8))->letv1=map_tokv1andv2=map_tokv2andv3=map_exprv3andv4=map_optionmap_tokv4andv5=map_tokv5andv6=map_foreach_patternv6andv7=map_tokv7andv8=map_colon_stmtv8inForeach((v1,v2,v3,v4,v5,v6,v7,v8))|Switch((v1,v2,v3))->letv1=map_tokv1andv2=map_parenmap_exprv2andv3=map_switch_case_listv3inSwitch((v1,v2,v3))|Break((v1,v2,v3))->letv1=map_tokv1andv2=map_of_optionmap_exprv2andv3=map_tokv3inBreak((v1,v2,v3))|Continue((v1,v2,v3))->letv1=map_tokv1andv2=map_of_optionmap_exprv2andv3=map_tokv3inContinue((v1,v2,v3))|Return((v1,v2,v3))->letv1=map_tokv1andv2=map_of_optionmap_exprv2andv3=map_tokv3inReturn((v1,v2,v3))|Throw((v1,v2,v3))->letv1=map_tokv1andv2=map_exprv2andv3=map_tokv3inThrow((v1,v2,v3))|Try((v1,v2,v3,v4))->letv1=map_tokv1andv2=map_brace(map_of_listmap_stmt_and_def)v2andv3=map_of_listmap_catchv3andv4=map_of_listmap_finallyv4inTry((v1,v2,v3,v4))|Echo((v1,v2,v3))->letv1=map_tokv1andv2=map_comma_listmap_exprv2andv3=map_tokv3inEcho((v1,v2,v3))|Globals((v1,v2,v3))->letv1=map_tokv1andv2=map_comma_listmap_global_varv2andv3=map_tokv3inGlobals((v1,v2,v3))|StaticVars((v1,v2,v3))->letv1=map_tokv1andv2=map_comma_listmap_static_varv2andv3=map_tokv3inStaticVars((v1,v2,v3))|InlineHtmlv1->letv1=map_wrapmap_of_stringv1inInlineHtml((v1))|Use((v1,v2,v3))->letv1=map_tokv1andv2=map_use_filenamev2andv3=map_tokv3inUse((v1,v2,v3))|Unset((v1,v2,v3))->letv1=map_tokv1andv2=map_paren(map_comma_listmap_lvalue)v2andv3=map_tokv3inUnset((v1,v2,v3))|Declare((v1,v2,v3))->letv1=map_tokv1andv2=map_paren(map_comma_listmap_declare)v2andv3=map_colon_stmtv3inDeclare((v1,v2,v3))|FuncDefNestedv1->letv1=map_func_defv1inFuncDefNested((v1))|ClassDefNestedv1->letv1=map_class_defv1inClassDefNested((v1))invin.kstmt(k,all_functions)xandmap_switch_case_list=function|CaseList((v1,v2,v3,v4))->letv1=map_tokv1andv2=map_of_optionmap_tokv2andv3=map_of_listmap_casev3andv4=map_tokv4inCaseList((v1,v2,v3,v4))|CaseColonList((v1,v2,v3,v4,v5))->letv1=map_tokv1andv2=map_of_optionmap_tokv2andv3=map_of_listmap_casev3andv4=map_tokv4andv5=map_tokv5inCaseColonList((v1,v2,v3,v4,v5))andmap_case=function|Case((v1,v2,v3,v4))->letv1=map_tokv1andv2=map_exprv2andv3=map_tokv3andv4=map_of_listmap_stmt_and_defv4inCase((v1,v2,v3,v4))|Default((v1,v2,v3))->letv1=map_tokv1andv2=map_tokv2andv3=map_of_listmap_stmt_and_defv3inDefault((v1,v2,v3))andmap_for_exprv=map_comma_listmap_exprvandmap_foreach_pattern=function|ForeachVarv1->letv1=map_foreach_variablev1inForeachVar((v1))|ForeachArrow((v1,v2,v3))->letv1=map_foreach_patternv1andv2=map_tokv2andv3=map_foreach_patternv3inForeachArrow((v1,v2,v3))|ForeachList((v1,v2))->letv1=map_tokv1andv2=map_paren(map_comma_listmap_list_assign)v2inForeachList((v1,v2))andmap_foreach_variable(v1,v2)=letv1=map_is_refv1andv2=map_lvaluev2in(v1,v2)andmap_catch(v1,v2,v3)=letv1=map_tokv1andv2=map_paren(fun(v1,v2)->letv1=map_fully_qualified_class_namev1andv2=map_dnamev2in(v1,v2))v2andv3=map_brace(map_of_listmap_stmt_and_def)v3in(v1,v2,v3)andmap_finally(v1,v2)=letv1=map_tokv1andv2=map_brace(map_of_listmap_stmt_and_def)v2in(v1,v2)andmap_use_filename=function|UseDirectv1->letv1=map_wrapmap_of_stringv1inUseDirect((v1))|UseParenv1->letv1=map_paren(map_wrapmap_of_string)v1inUseParen((v1))andmap_declare(v1,v2)=letv1=map_identv1andv2=map_static_scalar_affectv2in(v1,v2)andmap_colon_stmt=function|SingleStmtv1->letv1=map_stmtv1inSingleStmt((v1))|ColonStmt((v1,v2,v3,v4))->letv1=map_tokv1andv2=map_of_listmap_stmt_and_defv2andv3=map_tokv3andv4=map_tokv4inColonStmt((v1,v2,v3,v4))andmap_new_elseif(v1,v2,v3,v4)=letv1=map_tokv1andv2=map_parenmap_exprv2andv3=map_tokv3andv4=map_of_listmap_stmt_and_defv4in(v1,v2,v3,v4)andmap_new_else(v1,v2,v3)=letv1=map_tokv1andv2=map_tokv2andv3=map_of_listmap_stmt_and_defv3in(v1,v2,v3)andmap_func_def{f_tok=v_f_tok;f_type=v_f_type;f_attrs=v_f_attrs;f_modifiers=v_f_modifiers;f_ref=v_f_ref;f_name=v_f_name;f_tparams=v_f_tparams;f_params=v_f_params;f_body=v_f_body;f_return_type=v_f_return_type;}=letv_f_body=map_brace(map_of_listmap_stmt_and_def)v_f_bodyinletv_f_params=map_paren(map_comma_list_dotsmap_parameter)v_f_paramsinletv_f_name=map_identv_f_nameinletv_f_tparams=map_of_optionmap_type_paramsv_f_tparamsinletv_f_ref=map_is_refv_f_refinletv_f_modifiers=map_of_list(map_wrapmap_modifier)v_f_modifiersinletv_f_attrs=map_of_optionmap_attributesv_f_attrsinletv_f_type=map_function_typev_f_typeinletv_f_tok=map_tokv_f_tokinletv_f_return_type=map_of_option(fun(v1,v2,v3)->letv1=map_tokv1andv2=map_of_optionmap_tokv2andv3=map_hint_typev3in(v1,v2,v3))v_f_return_typein{f_tok=v_f_tok;f_type=v_f_type;f_attrs=v_f_attrs;f_modifiers=v_f_modifiers;f_ref=v_f_ref;f_name=v_f_name;f_params=v_f_params;f_tparams=v_f_tparams;f_return_type=v_f_return_type;f_body=v_f_body;}andmap_function_type=function|FunctionRegular->FunctionRegular|FunctionLambda->FunctionLambda|MethodRegular->MethodRegular|MethodAbstract->MethodAbstractandmap_parameter{p_attrs=v_p_attrs;p_modifier=v_p_modifier;p_soft_type=v_p_soft_type;p_type=v_p_type;p_ref=v_p_ref;p_name=v_p_name;p_default=v_p_default;p_variadic=v_p_variadic}=letv_p_default=map_of_optionmap_static_scalar_affectv_p_defaultinletv_p_name=map_dnamev_p_nameinletv_p_ref=map_is_refv_p_refinletv_p_modifier=map_of_option(map_wrapmap_modifier)v_p_modifierinletv_p_type=map_of_optionmap_hint_typev_p_typeinletv_p_soft_type=map_of_optionmap_tokv_p_soft_typeinletv_p_attrs=map_of_optionmap_attributesv_p_attrsinletv_p_variadic=map_of_optionmap_tokv_p_variadicin{p_attrs=v_p_attrs;p_modifier=v_p_modifier;p_soft_type=v_p_soft_type;p_type=v_p_type;p_ref=v_p_ref;p_name=v_p_name;p_default=v_p_default;p_variadic=v_p_variadic}andmap_hint_type=function|Hint(v1,v2)->letv1=map_class_name_or_selfparentv1inletv2=map_optionmap_type_argsv2inHint((v1,v2))|HintArrayv1->letv1=map_tokv1inHintArray((v1))|HintQuestion(v1,v2)->letv1=map_tokv1inletv2=map_hint_typev2inHintQuestion(v1,v2)|HintTuplev1->letv1=map_paren(map_comma_listmap_hint_type)v1inHintTuplev1|HintCallbackv1->letv1=map_paren(fun(v1,v2,v3)->letv1=map_tokv1andv2=map_paren(map_comma_list_dotsmap_hint_type)v2andv3=map_of_option(fun(v1,v2,v3)->letv1=map_tokv1andv2=map_of_optionmap_tokv2andv3=map_hint_typev3in(v1,v2,v3))v3in(v1,v2,v3))v1inHintCallback((v1))|HintShape((v1,v2))->letv1=map_tokv1andv2=map_paren(map_comma_list(fun(v1,v2,v3)->letv1=map_exprv1andv2=map_tokv2andv3=map_hint_typev3in(v1,v2,v3)))v2inHintShape((v1,v2))|HintTypeConst((v1,v2,v3))->letv1=map_hint_typev1andv2=map_tokv2andv3=map_hint_typev3inHintTypeConst((v1,v2,v3))|HintVariadic(v1,v2)->letv1=map_tokv1andv2=map_optionmap_hint_typev2inHintVariadic(v1,v2)andmap_is_refv=map_of_optionmap_tokvandmap_lambda_def(v1,v2)=letv1=map_of_optionmap_lexical_varsv1andv2=map_func_defv2in(v1,v2)andmap_lexical_vars(v1,v2)=letv1=map_tokv1andv2=map_paren(map_comma_listmap_lexical_var)v2in(v1,v2)andmap_lexical_var=function|LexicalVar((v1,v2))->letv1=map_is_refv1andv2=map_dnamev2inLexicalVar((v1,v2))andmap_constraint(v1,v2)=letv1=map_tokv1inletv2=map_hint_typev2in(v1,v2)andmap_enum_type{e_tok=v_e_tok;e_base=v_e_base;e_constraint=v_e_constraint;}=letv_e_tok=map_tokv_e_tokinletv_e_base=map_hint_typev_e_baseinletv_e_constraint=map_optionmap_constraintv_e_constraintin{e_tok=v_e_tok;e_base=v_e_base;e_constraint=v_e_constraint;}andmap_class_defx=letk{c_type=v_c_type;c_name=v_c_name;c_tparams=v_c_tparams;c_extends=v_c_extends;c_implements=v_c_implements;c_body=v_c_body;c_attrs=v_c_attrs;c_enum_type=v_c_enum_type;}=letv_c_body=map_brace(map_of_listmap_class_stmt)v_c_bodyinletv_c_implements=map_of_optionmap_interfacev_c_implementsinletv_c_extends=map_of_optionmap_extendv_c_extendsinletv_c_tparams=map_of_optionmap_type_paramsv_c_tparamsinletv_c_attrs=map_of_optionmap_attributesv_c_attrsinletv_c_name=map_identv_c_nameinletv_c_type=map_class_typev_c_typeinletv_c_enum_type=map_of_optionmap_enum_typev_c_enum_typein{c_type=v_c_type;c_name=v_c_name;c_tparams=v_c_tparams;c_extends=v_c_extends;c_implements=v_c_implements;c_body=v_c_body;c_attrs=v_c_attrs;c_enum_type=v_c_enum_type;}invin.kclass_def(k,all_functions)xandmap_class_type=function|ClassRegularv1->letv1=map_tokv1inClassRegular((v1))|ClassFinal((v1,v2))->letv1=map_tokv1andv2=map_tokv2inClassFinal((v1,v2))|ClassAbstract((v1,v2))->letv1=map_tokv1andv2=map_tokv2inClassAbstract((v1,v2))|ClassAbstractFinal((v1,v2,v3))->letv1=map_tokv1andv2=map_tokv2andv3=map_tokv3inClassAbstractFinal((v1,v2,v3))|Interfacev1->letv1=map_tokv1inInterface((v1))|Traitv1->letv1=map_tokv1inTrait((v1))|Enumv1->letv1=map_tokv1inEnum((v1))andmap_extend(v1,v2)=letv1=map_tokv1andv2=map_fully_qualified_class_namev2in(v1,v2)andmap_interface(v1,v2)=letv1=map_tokv1andv2=map_comma_listmap_fully_qualified_class_namev2in(v1,v2)andmap_class_stmt=function|TraitConstraint((v1,v2,v3,v4))->letv1=map_tokv1andv2=map_wrapmap_trait_constraint_kindv2andv3=map_hint_typev3andv4=map_tokv4inTraitConstraint((v1,v2,v3,v4))|ClassType((v1))->letv1=map_type_defv1inClassType((v1))|ClassConstants((v1,v2,opt_ty,v3,v4))->letv1=map_optionmap_tokv1andv2=map_tokv2andopt_ty=map_optionmap_hint_typeopt_tyandv3=map_comma_listmap_class_constantv3andv4=map_tokv4inClassConstants((v1,v2,opt_ty,v3,v4))|ClassVariables((v1,opt_ty,v2,v3))->letv1=map_class_var_modifierv1andopt_ty=map_optionmap_hint_typeopt_tyandv2=map_comma_listmap_class_variablev2andv3=map_tokv3inClassVariables((v1,opt_ty,v2,v3))|Methodv1->letv1=map_method_defv1inMethod((v1))|XhpDeclv1->letv1=map_xhp_declv1inXhpDecl((v1))|UseTrait(v1,v2,v3)->letv1=map_tokv1inletv2=map_comma_listmap_fully_qualified_class_namev2inletv3=Ocaml.map_of_eithermap_tok(map_brace(List.mapmap_trait_rule))v3inUseTrait(v1,v2,v3)andmap_trait_rule=function|InsteadOf((v1,v2,v3,v4,v5,v6))->letv1=map_namev1andv2=map_tokv2andv3=map_identv3andv4=map_tokv4andv5=map_comma_listmap_class_namev5andv6=map_tokv6inInsteadOf((v1,v2,v3,v4,v5,v6))|As((v1,v2,v3,v4,v5))->letv1=Ocaml.map_of_eithermap_ident(fun(v1,v2,v3)->letv1=map_namev1andv2=map_tokv2andv3=map_identv3in(v1,v2,v3))v1andv2=map_tokv2andv3=map_of_list(map_wrapmap_modifier)v3andv4=map_of_optionmap_identv4andv5=map_tokv5inAs((v1,v2,v3,v4,v5))andmap_trait_constraint_kind=function|MustExtend->MustExtend|MustImplement->MustImplementandmap_xhp_decl=function|XhpAttributesDecl((v1,v2,v3))->letv1=map_tokv1andv2=map_comma_listmap_xhp_attribute_declv2andv3=map_tokv3inXhpAttributesDecl((v1,v2,v3))|XhpChildrenDecl((v1,v2,v3))->letv1=map_tokv1andv2=map_xhp_children_declv2andv3=map_tokv3inXhpChildrenDecl((v1,v2,v3))|XhpCategoriesDecl((v1,v2,v3))->letv1=map_tokv1andv2=map_comma_listmap_xhp_category_declv2andv3=map_tokv3inXhpCategoriesDecl((v1,v2,v3))andmap_xhp_attribute_decl=function|XhpAttrInheritv1->letv1=map_wrapmap_xhp_tagv1inXhpAttrInherit((v1))|XhpAttrDecl((v1,v2,v3,v4))->letv1=map_xhp_attribute_typev1andv2=map_xhp_attr_namev2andv3=map_of_optionmap_xhp_value_affectv3andv4=map_of_optionmap_tokv4inXhpAttrDecl((v1,v2,v3,v4))andmap_xhp_attribute_type=function|XhpAttrTypev1->letv1=map_hint_typev1inXhpAttrType((v1))|XhpAttrVarv1->letv1=map_tokv1inXhpAttrVar((v1))|XhpAttrEnum((v1,v2))->letv1=map_tokv1andv2=map_brace(map_comma_listmap_constant)v2inXhpAttrEnum((v1,v2))andmap_xhp_value_affect(v1,v2)=letv1=map_tokv1andv2=map_static_scalarv2in(v1,v2)andmap_xhp_children_decl=function|XhpChildv1->letv1=map_wrapmap_xhp_tagv1inXhpChild((v1))|XhpChildCategoryv1->letv1=map_wrapmap_xhp_tagv1inXhpChildCategory((v1))|XhpChildAnyv1->letv1=map_tokv1inXhpChildAny((v1))|XhpChildEmptyv1->letv1=map_tokv1inXhpChildEmpty((v1))|XhpChildPcdatav1->letv1=map_tokv1inXhpChildPcdata((v1))|XhpChildSequence((v1,v2,v3))->letv1=map_xhp_children_declv1andv2=map_tokv2andv3=map_xhp_children_declv3inXhpChildSequence((v1,v2,v3))|XhpChildAlternative((v1,v2,v3))->letv1=map_xhp_children_declv1andv2=map_tokv2andv3=map_xhp_children_declv3inXhpChildAlternative((v1,v2,v3))|XhpChildMul((v1,v2))->letv1=map_xhp_children_declv1andv2=map_tokv2inXhpChildMul((v1,v2))|XhpChildOption((v1,v2))->letv1=map_xhp_children_declv1andv2=map_tokv2inXhpChildOption((v1,v2))|XhpChildPlus((v1,v2))->letv1=map_xhp_children_declv1andv2=map_tokv2inXhpChildPlus((v1,v2))|XhpChildParenv1->letv1=map_parenmap_xhp_children_declv1inXhpChildParen((v1))andmap_xhp_category_declv=map_wrapmap_xhp_tagvandmap_class_constant(v1,v2)=letv1=map_identv1andv2=map_of_optionmap_static_scalar_affectv2in(v1,v2)andmap_class_variable(v1,v2)=letv1=map_dnamev1andv2=map_of_optionmap_static_scalar_affectv2in(v1,v2)andmap_class_var_modifier=function|NoModifiersv1->letv1=map_tokv1inNoModifiers((v1))|VModifiersv1->letv1=map_of_list(map_wrapmap_modifier)v1inVModifiers((v1))andmap_method_defx=map_func_defxandmap_modifier=function|Public->Public|Private->Private|Protected->Protected|Static->Static|Abstract->Abstract|Final->Final|Async->Asyncandmap_global_var=function|GlobalVarv1->letv1=map_dnamev1inGlobalVar((v1))|GlobalDollar((v1,v2))->letv1=map_tokv1andv2=map_r_variablev2inGlobalDollar((v1,v2))|GlobalDollarExpr((v1,v2))->letv1=map_tokv1andv2=map_bracemap_exprv2inGlobalDollarExpr((v1,v2))andmap_static_var(v1,v2)=letv1=map_dnamev1andv2=map_of_optionmap_static_scalar_affectv2in(v1,v2)andmap_static_scalarx=map_exprxandmap_static_scalar_affect(v1,v2)=letv1=map_tokv1andv2=map_static_scalarv2in(v1,v2)andmap_stmt_and_defdef=letkx=map_stmtxinvin.kstmt_and_def(k,all_functions)defandmap_short_lambda_def{sl_modifiers=v_sl_modifiers;sl_params=v_sl_params;sl_tok=v_sl_tok;sl_body=v_sl_body}=letv_sl_modifiers=map_of_list(map_wrapmap_modifier)v_sl_modifiersinletv_sl_body=map_short_lambda_bodyv_sl_bodyinletv_sl_tok=map_of_optionmap_tokv_sl_tokinletv_sl_params=map_short_lambda_paramsv_sl_paramsin{sl_modifiers=v_sl_modifiers;sl_body=v_sl_body;sl_tok=v_sl_tok;sl_params=v_sl_params;}andmap_short_lambda_params=function|SLSingleParamv1->letv1=map_parameterv1inSLSingleParam((v1))|SLParamsv1->letv1=map_paren(map_comma_list_dotsmap_parameter)v1inSLParams((v1))|SLParamsOmitted->SLParamsOmittedandmap_short_lambda_body=function|SLExprv1->letv1=map_exprv1inSLExpr((v1))|SLBodyv1->letv1=map_brace(map_of_listmap_stmt_and_def)v1inSLBody((v1))andmap_constant_def{cst_toks=v_cst_toks;cst_name=v_cst_name;cst_type=v_cst_type;cst_val=v_cst_val}=letv_cst_val=map_static_scalarv_cst_valinletv_cst_type=map_of_optionmap_hint_typev_cst_typeinletv_cst_name=map_identv_cst_nameinletv_cst_toks=matchv_cst_tokswith|(v1,v2,v3)->letv1=map_tokv1andv2=map_tokv2andv3=map_tokv3in(v1,v2,v3)in{cst_toks=v_cst_toks;cst_name=v_cst_name;cst_type=v_cst_type;cst_val=v_cst_val}andmap_attribute=function|Attributev1->letv1=map_wrapmap_of_stringv1inAttribute((v1))|AttributeWithArgs((v1,v2))->letv1=map_wrapmap_of_stringv1andv2=map_paren(map_comma_listmap_static_scalar)v2inAttributeWithArgs((v1,v2))andmap_attributesv=map_angle(map_comma_listmap_attribute)vandmap_type_def{t_tok=v_t_tok;t_name=v_t_name;t_tparams=v_t_tparams;t_tconstraint=v_t_tconstraint;t_tokeq=v_t_tokeq;t_kind=v_t_kind;t_sc=v_t_sc}=letv_t_sc=map_tokv_t_scinletv_t_kind=map_type_def_kindv_t_kindinletv_t_tokeq=map_tokv_t_tokeqinletv_t_tconstraint=map_of_optionmap_constraintv_t_tconstraintinletv_t_tparams=map_of_optionmap_type_paramsv_t_tparamsinletv_t_name=map_identv_t_nameinletv_t_tok=map_tokv_t_tokin{t_tok=v_t_tok;t_name=v_t_name;t_tparams=v_t_tparams;t_tconstraint=v_t_tconstraint;t_tokeq=v_t_tokeq;t_kind=v_t_kind;t_sc=v_t_sc}andmap_type_def_kind=function|Aliasv1->letv1=map_hint_typev1inAlias((v1))|Newtypev1->letv1=map_hint_typev1inNewtype((v1))|ClassConstTypev1->letv1=map_optionmap_hint_typev1inClassConstType((v1))andmap_namespace_use_rule=function|ImportNamespacev1->letv1=map_qualified_identv1inImportNamespace((v1))|AliasNamespace((v1,v2,v3))->letv1=map_qualified_identv1andv2=map_tokv2andv3=map_identv3inAliasNamespace((v1,v2,v3))andmap_toplevel=function|StmtListv1->letv1=map_of_listmap_stmtv1inStmtList((v1))|FuncDefv1->letv1=map_func_defv1inFuncDef((v1))|ClassDefv1->letv1=map_class_defv1inClassDef((v1))|ConstantDefv1->letv1=map_constant_defv1inConstantDefv1|TypeDefv1->letv1=map_type_defv1inTypeDef((v1))|NotParsedCorrectlyv1->letv1=map_of_listmap_infov1inNotParsedCorrectly((v1))|FinalDefv1->letv1=map_infov1inFinalDef((v1))|NamespaceDef((v1,v2,v3))->letv1=map_tokv1andv2=map_qualified_identv2andv3=map_tokv3inNamespaceDef((v1,v2,v3))|NamespaceBracketDef((v1,v2,v3))->letv1=map_tokv1andv2=map_of_optionmap_qualified_identv2andv3=map_brace(map_of_listmap_toplevel)v3inNamespaceBracketDef((v1,v2,v3))|NamespaceUse((v1,v2,v3))->letv1=map_tokv1andv2=map_comma_listmap_namespace_use_rulev2andv3=map_tokv3inNamespaceUse((v1,v2,v3))andmap_programv=map_of_listmap_toplevelvandmap_entity=function|FunctionEv1->letv1=map_func_defv1inFunctionE((v1))|ClassEv1->letv1=map_class_defv1inClassE((v1))|TypedefEv1->letv1=map_type_defv1inTypedefE((v1))|StmtListEv1->letv1=map_of_listmap_stmtv1inStmtListE((v1))|MethodEv1->letv1=map_method_defv1inMethodE((v1))|ConstantEv1->letv1=map_constant_defv1inConstantEv1|ClassConstantEv1->letv1=map_class_constantv1inClassConstantE((v1))|ClassVariableE((v1,v2))->letv1=map_class_variablev1andv2=map_of_listmap_modifierv2inClassVariableE((v1,v2))|XhpAttrEv1->letv1=map_xhp_attribute_declv1inXhpAttrE((v1))|MiscEv1->letv1=map_of_listmap_infov1inMiscE((v1))andmap_any=function|Exprv1->letv1=map_exprv1inExpr((v1))|Stmt2v1->letv1=map_stmtv1inStmt2((v1))|Toplevelv1->letv1=map_toplevelv1inToplevel((v1))|Programv1->letv1=map_programv1inProgram((v1))|Entityv1->letv1=map_entityv1inEntity((v1))|Argumentv1->letv1=map_argumentv1inArgument((v1))|Argumentsv1->letv1=(map_comma_listmap_argument)v1inArguments((v1))|Parameterv1->letv1=map_parameterv1inParameter((v1))|Parametersv1->letv1=map_paren(map_comma_list_dotsmap_parameter)v1inParameters((v1))|Bodyv1->letv1=map_brace(map_of_listmap_stmt_and_def)v1inBody((v1))|StmtAndDefsv1->letv1=map_of_listmap_stmt_and_defv1inStmtAndDefs((v1))|ClassStmtv1->letv1=map_class_stmtv1inClassStmt((v1))|ClassConstant2v1->letv1=map_class_constantv1inClassConstant2((v1))|ClassVariablev1->letv1=map_class_variablev1inClassVariable((v1))|ListAssignv1->letv1=map_list_assignv1inListAssign((v1))|ColonStmt2v1->letv1=map_colon_stmtv1inColonStmt2((v1))|XhpAttributev1->letv1=map_xhp_attributev1inXhpAttribute((v1))|XhpAttrValuev1->letv1=map_xhp_attr_valuev1inXhpAttrValue((v1))|XhpHtml2v1->letv1=map_xhp_htmlv1inXhpHtml2((v1))|XhpChildrenDecl2v1->letv1=map_xhp_children_declv1inXhpChildrenDecl2((v1))|Infov1->letv1=map_infov1inInfo((v1))|InfoListv1->letv1=map_of_listmap_infov1inInfoList((v1))|Case2v1->letv1=map_casev1inCase2((v1))|Ident2v1->letv1=map_identv1inIdent2v1|Hint2v1->letv1=map_hint_typev1inHint2((v1))andall_functions={vtop=map_toplevel;vstmt_and_def=map_stmt_and_def;vprogram=map_program;vexpr=map_expr;vxhpattrvalue=map_xhp_attr_value;vany=map_any;}inall_functions