12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642(*
Copyright 2013-2018 RIKEN
Copyright 2018-2025 Chiba Institude of Technology
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*)(* Author: Masatomo Hashimoto <m.hashimoto@stair.center> *)(* fortran/label.ml *)moduleXlist=Diffast_misc.XlistmoduleLoc =Diffast_misc.LocmoduleLang_base =Diffast_core.Lang_basemoduleSpec=Diffast_core.SpecmoduleCharpool=Diffast_core.CharpoolmoduleAstml=Diffast_core.AstmlmoduleAst=Fortran_parsing.AstmoduleLabel_common=Fortran_parsing.Label_commonmoduleLabels=Fortran_parsing.LabelsmoduleLabel=Fortran_parsing.LabelmodulePinfo=Fortran_parsing.Pinfoletkeyroot_depth_min =4type tie_id =Lang_base.tie_idletnull_tid =Lang_base.null_tidletmktid =Lang_base.mktidlettid_to_string =Lang_base.tid_to_stringletanonymize_tid=Lang_base.anonymize_tidletmktidattr =Lang_base.mktidattrmoduletypeT=sigincludeSpec.LABEL_Tvallang_prefix :stringvalis_case_construct:t->boolvalis_do_construct :t->boolvalis_forall_construct:t->boolvalis_if_construct :t->boolvalis_where_construct:t->boolvalis_derived_type_def :t->boolvalis_interface_block :t->boolvalis_select_type_construct:t->boolvalis_associate_construct :t->boolvalis_block_construct:t-> boolvalis_critical_construct :t->boolvalis_primary:t-> boolvalis_expr :t->boolvalis_stmt:t->boolvalis_if_stmt:t->boolvalis_arithmetic_if_stmt :t->boolvalis_if_then_stmt :t->boolvalis_else_if_stmt :t->boolvalis_else_stmt:t->boolval is_pp_directive:t->boolvalis_pp_define:t->boolvalis_pp_include :t->boolval is_ocl_directive :t->boolval is_omp_directive:t->boolval is_acc_directive:t->boolvalis_dec_directive:t->boolvalis_program :t->boolvalis_program_unit:t->boolvalis_program_unit_or_fragment:t->boolvalis_program_unit_or_subprogram:t->boolvalis_main_program:t->boolvalis_function:t->boolval is_subroutine:t->boolvalis_subprogram:t->boolvalis_ext_function:t->boolvalis_ext_subroutine:t->boolvalis_int_function:t->boolvalis_int_subroutine:t->boolvalis_mod_function:t-> boolvalis_mod_subroutine:t->boolvalis_module:t->boolvalis_block_data:t->boolvalis_block:t->boolvalis_entity_decl:t->boolvalis_type_decl_stmt:t->boolvalis_var_name:t->boolvalis_part_name:t->boolvalis_if_then_block:t->boolvalis_else_block:t->boolvalis_else_if_block:t->boolvalis_where_block:t->boolvalis_case_block:t->boolvalis_type_guard_block :t->boolvalis_do_block:t->boolval is_pp_branch:t->boolvalis_pp_branch_do:t->boolvalis_pp_branch_end_do :t->boolvalis_pp_branch_if :t->boolvalis_pp_branch_end_if :t->boolvalis_pp_branch_forall:t->boolvalis_pp_branch_end_forall:t->boolvalis_pp_branch_where:t->boolvalis_pp_branch_end_where:t->boolvalis_pp_branch_select :t->boolval is_pp_branch_end_select:t->boolvalis_pp_section_ifdef :t->boolvalis_pp_section_ifndef :t->boolvalis_pp_section_if:t->boolval is_pp_section_elif:t->boolvalis_pp_section_else:t->boolvalis_omp_construct:t->boolvalis_acc_construct:t->boolvalis_fragment:t->boolvalis_execution_part:t-> boolvalis_subprogram_part :t->boolvalis_section_subscript_list:t->boolvalis_ambiguous:t->boolvalis_container_unit:t->boolvalgetlab:Spec.node_t->tvalget_var:t->stringvalget_pp_include_path:t->stringvalget_label:t->stringvalget_stmt_label:t->stringendletconv_loc{Ast.Loc.filename=fn;Ast.Loc.start_offset =so;Ast.Loc.end_offset=eo;Ast.Loc.start_line=sl;Ast.Loc.start_char=sc;Ast.Loc.end_line=el;Ast.Loc.end_char=ec;}=Loc.make~fname:fnsoeoslscelecopenCharpoolinclude Label_commonmoduleHeaderFile=structincludeLabels.HeaderFileletto_short_string=function|Users->mkstr_str0s|Systems->mkstr_str2s|Macro(n,_)->combo4[n]|Generateds->mkstr_str5sendmodulePpDirective=structincludeLabels.PpDirectiveletbranch_to_short_string ?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Ifc->mkstr_str 0c|Elifc->mkstr_str 2c|Ifdefn->combo4[n]|Ifndefn->combo 5[n]|Else->mkstr6|Endif_->mkstr7letmessage_to_short_string=function|Errorm->mkstr_str0m|Warningm->mkstr_str2mlet_to_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Define(n,b)->mkstr_strs 0[n;b]|Undefn->combo2[n]|Includeh->mkstr_str3(HeaderFile.to_short_string h)|Branch b->mkstr_str5(branch_to_short_string ~ignore_identifiers_flagb)|Messagem->mkstr_str7(message_to_short_stringm)|Unknown(d,r)->mkstr_strs11[d;r]letto_short_stringx=_to_short_stringx.pp_labelendmoduleProgramUnit=structincludeLabels.ProgramUnitletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flag infunction|FunctionSubprogramn->combo0[n]|SubroutineSubprogram n->combo1[n]|Modulen->combo2[n]|MainProgramn_opt->combo3(opt_to_listn_opt)|BlockDatan_opt->combo4(opt_to_list n_opt)|Submodulen->combo5[n]endmoduleInternalSubprogram=structincludeLabels.InternalSubprogramletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo ~ignore_identifiers_flaginfunction|FunctionSubprogramn->combo0[n]|SubroutineSubprogram n->combo1[n]endmoduleModuleSubprogram=structincludeLabels.ModuleSubprogramletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|FunctionSubprogramn->combo0[n]|SubroutineSubprogram n->combo1[n]|SeparateModuleSubprogramn->combo2[n]endmoduleIntentSpec=structincludeLabels.IntentSpecletto_short_string=function|In->mkstr0|Out-> mkstr1|Inout->mkstr2endmoduleAttrSpec=structincludeLabels.AttrSpecletto_short_string=function|Parameter->mkstr0|Public->mkstr1|Private->mkstr2|Allocatable->mkstr3|Dimension ->mkstr4|External->mkstr5|Intrinsic->mkstr6|Optional ->mkstr7|Pointer->mkstr8|Save->mkstr9|Target->mkstr10|Intenti-> catstr[mkstr11;IntentSpec.to_short_stringi]|Asynchronous->mkstr13|Bind->mkstr14|Protected->mkstr15|Value->mkstr16|Volatile->mkstr17|Automatic->mkstr18|Static->mkstr19|Codimension->mkstr20|Contiguous->mkstr21|Device->mkstr22|Managed->mkstr23|Constant->mkstr24|Shared->mkstr25|Pinned->mkstr26|Texture->mkstr27endmoduleAccessSpec=structincludeLabels.AccessSpecletto_short_string=function|Private->mkstr0|Public->mkstr1endmoduleTypeAttrSpec=structincludeLabels.TypeAttrSpecletto_short_string=function|Abstract->mkstr0|Bind->mkstr1|Extendsn->combo2[n]|Private->mkstr3|Public->mkstr4endmoduleStmt=structincludeLabels.Stmtlet_to_short_string?(ignore_identifiers_flag=false)=letcombo2=combo2~ignore_identifiers_flaginfunction|AllocatableStmt->mkstr20|AllocateStmt->mkstr21|ArithmeticIfStmt->mkstr22|AssignedGotoStmt->mkstr23|AssignmentStmt->mkstr24|BackspaceStmt->mkstr25|CloseStmt->mkstr26|CommonStmt->mkstr27|ComponentDefStmt->mkstr28|ComputedGotoStmt->mkstr29|ContainsStmt->mkstr210|ContinueStmt->mkstr211|DataStmt->mkstr212|DeallocateStmt->mkstr213|DimensionStmt->mkstr214|EndStmt->mkstr215|EndfileStmt->mkstr216|EndInterfaceStmt->mkstr217|EquivalenceStmt->mkstr218|ExternalStmt->mkstr219|ForallStmt->mkstr220|FormatStmt->mkstr221|GotoStmt->mkstr222|IfStmt->mkstr223|ImplicitStmt->mkstr224|InquireStmt->mkstr225|IntentStmt->mkstr226|InterfaceStmtn_opt->combo227(opt_to_listn_opt)|IntrinsicStmt->mkstr228|ProcedureStmt->mkstr229|NamelistStmt->mkstr230|NullifyStmt->mkstr231|OpenStmt->mkstr232|OptionalStmt->mkstr233|ParameterStmt->mkstr234|PauseStmt->mkstr235|PointerAssignmentStmt->mkstr236|PointerStmt->mkstr237|PrintStmt->mkstr238|PrivateStmt->mkstr239|SequenceStmt->mkstr240|ReadStmt->mkstr241|ReturnStmt->mkstr242|RewindStmt->mkstr243|SaveStmt->mkstr244|StopStmt->mkstr245|TargetStmt->mkstr246|TypeDeclarationStmtns->combo247ns|WhereStmt->mkstr248|WriteStmt->mkstr249|CallStmtn->combo250[n]|DerivedTypeStmtn->combo251[n]|EntryStmtn->combo252[n]|FunctionStmtn->combo253[n]|ModuleStmtn->combo254[n]|ProgramStmtn->combo255[n]|StmtFunctionStmtn->combo256[n]|SubroutineStmtn->combo257[n]|UseStmtn->combo258[n]|BlockDataStmtn_opt->combo259(opt_to_listn_opt)|CaseStmtn_opt->combo260(opt_to_listn_opt)|CycleStmtn_opt->combo261(opt_to_listn_opt)|ElseIfStmtn_opt->combo262(opt_to_listn_opt)|ElseStmtn_opt->combo263(opt_to_listn_opt)|ElsewhereStmtn_opt->combo264(opt_to_listn_opt)|EndBlockDataStmtn_opt->combo265(opt_to_listn_opt)|EndDoStmtn_opt->combo266(opt_to_listn_opt)|EndForallStmtn_opt->combo267(opt_to_listn_opt)|EndFunctionStmtn_opt->combo268(opt_to_listn_opt)|EndIfStmtn_opt->combo269(opt_to_listn_opt)|EndModuleStmtn_opt->combo2 70(opt_to_list n_opt)|EndProgramStmtn_opt->combo271(opt_to_listn_opt)|EndSelectStmt n_opt->combo272(opt_to_listn_opt)|EndSubroutineStmtn_opt ->combo273(opt_to_list n_opt)|EndTypeStmtn_opt->combo274(opt_to_listn_opt)|EndWhereStmtn_opt->combo275(opt_to_listn_opt)|ExitStmtn_opt->combo276(opt_to_listn_opt)|ForallConstructStmtn_opt->combo277(opt_to_listn_opt)|IfThenStmtn_opt->combo278(opt_to_listn_opt)|SelectCaseStmtn_opt->combo279(opt_to_listn_opt)|WhereConstructStmtn_opt->combo280(opt_to_listn_opt)|AccessStmta->catstr[mkstr281;AccessSpec.to_short_stringa]|AssignStmtl->combo282[l]|DoStmt(n_opt,l_opt,v_opt)->combo283((opt_to_listn_opt)@(opt_to_listl_opt)@(opt_to_listv_opt))|PpMacroStmtn->combo284[n]|StructureStmtn_opt->combo285(opt_to_listn_opt)|EndStructureStmt->mkstr286|UnionStmt->mkstr287|EndUnionStmt->mkstr288|MapStmt->mkstr289|EndMapStmt->mkstr290|RecordStmt->mkstr291|AsynchronousStmt->mkstr292|BindStmt->mkstr293|ProtectedStmt->mkstr294|ValueStmt->mkstr295|VolatileStmt->mkstr296|AbstractInterfaceStmt->mkstr297|ImportStmt->mkstr298|PpMacroId_->mkstr299|AcceptStmt->mkstr2100|DecodeStmt->mkstr2101|DefineFileStmt->mkstr2102|DeleteStmt->mkstr2103|EncodeStmt->mkstr2104|FindStmt->mkstr2105|RewriteStmt->mkstr2106|TypeStmt->mkstr2107|UnlockStmt->mkstr2108|VirtualStmt->mkstr2109|AssociateStmtn_opt->combo2110(opt_to_listn_opt)|BlockStmtn_opt->combo2111(opt_to_listn_opt)|CriticalStmtn_opt->combo2112(opt_to_listn_opt)|EndAssociateStmtn_opt->combo2113(opt_to_listn_opt)|EndEnumStmt->mkstr2114|EndBlockStmtn_opt->combo2115(opt_to_listn_opt)|EndCriticalStmtn_opt->combo2116(opt_to_listn_opt)|EnumDefStmt->mkstr2117|EnumeratorDefStmt->mkstr2118|FlushStmt->mkstr2119|BindingPrivateStmt->mkstr2120|FinalProcedureStmt->mkstr2121|TypeBoundGenericStmt->mkstr2122|ProcComponentDefStmt->mkstr2123|ProcedureDeclarationStmt->mkstr2124|SelectTypeStmtn_opt->combo2125(opt_to_listn_opt)|TypeIsTypeGuardStmtn_opt->combo2126(opt_to_listn_opt)|ClassIsTypeGuardStmtn_opt->combo2127(opt_to_listn_opt)|ClassDefaultTypeGuardStmtn_opt->combo2128(opt_to_listn_opt)|EndSelectTypeStmtn_opt->combo2129(opt_to_listn_opt)|WaitStmt->mkstr2130|TypeBoundProcedureStmtn_opt->combo2131(opt_to_listn_opt)|ErrorStopStmt->mkstr2132|CodimensionStmt->mkstr2133|ContiguousStmt->mkstr2134|LockStmt->mkstr2135|SyncAllStmt->mkstr2136|SyncImagesStmt->mkstr2137|SyncMemoryStmt->mkstr2138|SubmoduleStmt(a,p_opt,n)->combo2139(a::(opt_to_listp_opt)@[n])|EndSubmoduleStmt n_opt->combo2140 (opt_to_listn_opt)|AutomaticStmt->mkstr2141|StaticStmt ->mkstr2142|MpSubprogramStmtn->combo2 143[n]|EndMpSubprogramStmtn_opt->combo2144(opt_to_list n_opt)letto_short_string?(ignore_identifiers_flag=false)=function|Labeled(lab,stmt)->catstr((_to_short_string stmt)::(encode_ids~ignore_identifiers_flag[lab]))|Nonlabeledstmt->_to_short_stringstmtendmoduleAmbiguous=structincludeLabels.Ambiguousletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Tuple->mkstr0|Primary->mkstr1|Subobject->mkstr2|TripletOrRange->mkstr3|First->mkstr4|Second->mkstr5|DataStmtConstant->mkstr6|Assumed->mkstr7|Deferred->mkstr8|AssumedSize->mkstr9|Designatorn->combo10[n]|NamedTuplen->combo11[n]|NamedDataObjectn->combo12[n]|ArrayAccessn->combo13[n](*
| PpExpr n -> combo 14 [n]
| PpTypeSpec n -> combo 15 [n]
*)|GenericSpecOrUseNamen->combo16[n]endmoduleConstant=structincludeLabels.Constantletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|BozLiteralConstants->catstr[mkstr0;s]|CharLiteralConstants->catstr[mkstr1;s]|IntLiteralConstants->catstr[mkstr2;s]|LogicalLiteralConstants->catstr[mkstr3;s]|RealLiteralConstants->catstr[mkstr4;s]|ComplexLiteralConstant(r,i)->catstr[mkstr5;r;i]|NamedConstantn->combo6[n]|HollerithConstants->catstr[mkstr7;s]|PpMacroConstantn->combo8[n]|SignedIntLiteralConstants->catstr[mkstr9;s]|SignedRealLiteralConstants->catstr[mkstr10;s]endmoduleIntrinsicOperator=structincludeLabels.IntrinsicOperatorletto_short_string=function|AND->mkstr0|OR->mkstr1|NOT->mkstr2|EQV->mkstr3|GE->mkstr4|GT->mkstr5|LE->mkstr6|LT->mkstr7|EQ->mkstr8|NE->mkstr9|NEQV->mkstr10|Mult->mkstr11|Div->mkstr12|Power->mkstr13|Add->mkstr14|Subt->mkstr15|Concat->mkstr16|Eq->mkstr17|Neq->mkstr18|Lt->mkstr19|Le->mkstr20|Gt->mkstr21|Ge->mkstr22|Id->mkstr23|Neg->mkstr24endmoduleDefinedOperator=structincludeLabels.DefinedOperatorletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|DefinedOps->combo0[s]|DefinedUnaryOps->combo1[s]|DefinedBinaryOps->combo2[s]endmoduleOclDirective=structincludeLabels.OclDirectiveletalign_to_short_string=function|Aaligned->mkstr0|Aunaligned->mkstr1letprefetch_spec_to_short_string=function|Pauto->mkstr0|Psoft->mkstr1letlistv_scope_to_short_string=function|Sall->mkstr0|Sthen->mkstr1|Selse->mkstr2letto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|ERROR->mkstr0|ArrayFusion->mkstr2|EndArrayFusion->mkstr3|Eval->mkstr4|Noeval->mkstr5|Fltld->mkstr6|Nofltld->mkstr7|FpRelaxed->mkstr8|NofpRelaxed->mkstr9|Nomfunc->mkstr10|LoopNofusion->mkstr11|Preex->mkstr12|Nopreex->mkstr13|Prefetch->mkstr14|Noprefetch->mkstr15|PrefetchInfer->mkstr16|PrefetchNoinfer->mkstr17|Nostriping->mkstr18|Swp->mkstr19|Noswp->mkstr20|UnrollFull->mkstr21|Nounroll->mkstr22|Nosimd->mkstr23|EndCacheSectorSize->mkstr24|EndCacheSubsector->mkstr25|LoopNofission->mkstr26|Noxfill->mkstr27|PrefetchStrong->mkstr28|PrefetchNostrong->mkstr29|PrefetchStrongL2->mkstr30|PrefetchNostrongL2->mkstr31|FpContract->mkstr32|NofpContract->mkstr33|LoopNoblocking->mkstr34|Nouxsimd->mkstr35|ArrayPrivate->mkstr36|NoarrayPrivate->mkstr37|Noalias->mkstr38|Serial->mkstr39|Parallel->mkstr40|ParallelStrong->mkstr41|Reduction->mkstr42|Noreduction->mkstr43|LoopNointerchange->mkstr44|Noarraypadn->combo45[n]|ArraySubscriptns->combo46ns|LoopInterchangens->combo47ns|Novrecns->combo48ns|CacheSubsectorAssignns->combo49ns|Norecurrencens->combo50ns|Independentns->combo51ns|Tempns->combo52ns|PrefetchIterationi->catstr[mkstr53;string_of_inti]|PrefetchIterationL2i->catstr[mkstr54;string_of_inti]|LoopBlockingi->catstr[mkstr55;string_of_inti]|Unrolli->catstr[mkstr56;string_of_inti]|CacheSectorSizeis->catstr((mkstr57)::(List.mapstring_of_intis))|Mfunci_opt->catstr((mkstr58)::(opt_to_list_mapstring_of_inti_opt))|Stripingi_opt->catstr((mkstr59)::(opt_to_list_mapstring_of_inti_opt))|FissionPointi_opt->catstr((mkstr60)::(opt_to_list_mapstring_of_inti_opt))|Xfilli_opt->catstr((mkstr61)::(opt_to_list_mapstring_of_inti_opt))|Simda_opt->catstr((mkstr62)::(opt_to_list_mapalign_to_short_stringa_opt))|Uxsimda_opt->catstr((mkstr63)::(opt_to_list_mapalign_to_short_stringa_opt))|ArrayMerge(n_opt,ns)->catstr((mkstr64)::(string_opt_to_stringn_opt)::ns)|PrefetchCacheLevellv->combo65[num_or_name_to_stringlv]|PrefetchRead(lv_opt,st_opt)->catstr((mkstr66)::((opt_to_list_mapnum_or_name_to_stringlv_opt)@(opt_to_list_mapstring_of_intst_opt)))|PrefetchWrite(lv_opt,st_opt)->catstr((mkstr67)::((opt_to_list_mapnum_or_name_to_stringlv_opt)@(opt_to_list_mapstring_of_intst_opt)))|PrefetchSequentials_opt->catstr((mkstr68)::(opt_to_list_mapprefetch_spec_to_short_strings_opt))|RelOpop->catstr[mkstr69;IntrinsicOperator.to_short_stringop]|LoopPartSimd->mkstr70|LoopNopartSimd->mkstr71|Shortloopi->catstr[mkstr72;string_of_inti]|Noshortloop->mkstr73|SimdListvs_opt->catstr((mkstr74)::(opt_to_list_maplistv_scope_to_short_strings_opt))|Unswitching->mkstr75|LoopPartParallel->mkstr76|LoopNopartParallel->mkstr77|FirstPrivatens->combo78ns|LastPrivatens->combo79ns|TempPrivatens->combo80ns|ParallelCyclici_opt->catstr((mkstr81)::(opt_to_list_mapstring_of_inti_opt))endmoduleDec=structmoduleDirective=structincludeLabels.Dec.Directiveletto_short_string=function|Alias(i,e)->combo0[i;e]|Assume->mkstr1|Assume_aligned->mkstr2|Attributes->mkstr3|Declare->mkstr4|Nodeclare->mkstr5|Definen->combo6[n]|Undefinen->combo7[n]|DistributePoint->mkstr8|Fixedformlinesizei->combo9[i]|Fma->mkstr10|Nofma->mkstr11|Freeform->mkstr12|Nofreeform->mkstr13|Idents->combo14[s]|If->mkstr15|IfDefinedn->combo16[n]|Inlineb->catstr[mkstr17;(ifbthenmkstr1elsemkstr0)]|Forceinlineb->catstr[mkstr18;(ifbthenmkstr1elsemkstr0)]|Noinline->mkstr19|Integeri->combo20[i]|Ivdepo->combo21[o]|Init_dep_fwd->mkstr22|LoopCountil->combo23(List.mapstring_of_intil)|Messages->combo24[s]|Nofusion->mkstr25|Objcomments->combo26[s]|Optimizei->combo27[i]|Nooptimize->mkstr28|Optionsol->combo29ol|Packi->combo30[i]|Parallel->mkstr31|Noparallel->mkstr32|Prefetch->mkstr33|Noprefetch->mkstr34|Psectn->combo35[n]|Reali->combo36[i]|Simd->mkstr37|Strict->mkstr38|Nostrict->mkstr39|Unrolli_opt->combo40[int_opt_to_string~prefix:""i_opt]|Nounroll->mkstr41|Unroll_and_jami_opt->combo42[int_opt_to_string~prefix:""i_opt]|Nounroll_and_jam->mkstr43|Vector->mkstr44|Novector->mkstr45|Elseif->mkstr46|Else->mkstr47|Endif->mkstr48|EndOptions->mkstr49|Block_loop->mkstr50|Noblock_loop->mkstr51|Code_aligni->combo52[string_of_inti]endmoduleClause=structincludeLabels.Dec.Clauseletto_short_string=function|Always->mkstr0|Assert->mkstr1|Aligned->mkstr2|Unaligned->mkstr3|Temporal->mkstr4|Nontemporal->mkstr5|Vecremainder->mkstr6|Novecremainder->mkstr7|Noassert->mkstr8|Firstprivate->mkstr9|Lastprivate->mkstr10|Linear->mkstr11|Private->mkstr12|Reduction->mkstr13|Vectorlengthil->combo14(List.mapstring_of_intil)|Vectorlengthfor->mkstr15|Num_threads->mkstr16|Mask->mkstr17|Nomask->mkstr18|Processorp->combo19[p]|Uniform->mkstr20|Profitable->mkstr21|Cost->mkstr22|Factor->mkstr23|Levelll->combo24(List.mapLabels.Dec.level_to_stringll)endmoduleAttribute=structincludeLabels.Dec.Attributeletto_short_string=function|Aliass->combo0[s]|Aligni->combo1[string_of_inti]|Allocatable->mkstr2|Array_null->mkstr3|C->mkstr4|Code_aligni->combo5[string_of_inti]|Concurrency_safe->mkstr6|Cvf->mkstr7|Decorate->mkstr8|Default->mkstr9|Dllexport->mkstr10|Dllimport->mkstr11|Extern->mkstr12|Fastmem->mkstr13|Forceinline->mkstr14|Ignore_loc->mkstr15|Inline->mkstr16|Mixed_str_len_arg->mkstr17|No_arg_check->mkstr18|Noclone->mkstr19|Noinline->mkstr20|Offloadn->combo21[n]|Optimization_parameters->combo22[s]|Reference->mkstr23|Stdcall->mkstr24|Value->mkstr25|Varying->mkstr26|Vector->mkstr27endtypet=Labels.Dec.tletto_string=Labels.Dec.to_stringletto_simple_string=Labels.Dec.to_simple_stringletto_tag=Labels.Dec.to_tagletget_name_=raiseNot_foundletget_name_opt_=Noneletto_short_string=function|Labels.Dec.VarExpr->mkstr0|Labels.Dec.Aligns->combo1[s]|Labels.Dec.Wrt->mkstr2|Labels.Dec.Nowrt->mkstr3|Labels.Dec.PrefetchHint->mkstr4|Labels.Dec.PrefetchHintAll->mkstr5|Labels.Dec.Maxi->combo6[string_of_inti]|Labels.Dec.Mini->combo7[string_of_inti]|Labels.Dec.Avgi->combo8[string_of_inti]endmoduleXlf=structmoduleDirective=structincludeLabels.Xlf.Directivelethigh_or_low_to_short_string=function|VeryHigh->mkstr0|VeryLow->mkstr1letsource_to_short_string=function|Fixedi_opt->catstr[mkstr0;int_opt_to_stringi_opt]|Free->mkstr1|FreeF90->mkstr2|FreeIBM->mkstr3letto_short_string=function|Aligni->combo0[i]|Assert->mkstr1|BlockLoop->mkstr2|Cncall->mkstr3|Collapse->mkstr4|Eject->mkstr5|ExecutionFrequencyhl->catstr[mkstr6;high_or_low_to_short_stringhl]|ExpectedValuen->combo7[n]|FunctraceXlfCatch->mkstr8|FunctraceXlfEnter->mkstr9|FunctraceXlfExit->mkstr10|IgnoreTkr->mkstr11|Independent->mkstr12|Loopidn->combo13[n]|MemDelayc->combo14[c]|New->mkstr15|Nofunctrace->mkstr16|Nosimd->mkstr17|Novector->mkstr18|Permutation->mkstr19|Snapshot->mkstr20|Sourceforms->catstr[mkstr21;source_to_short_strings]|StreamUnroll->mkstr22|Subscriptorder->mkstr23|Unroll->mkstr24|UnrollAndFuse->mkstr25|Process->mkstr26endmoduleAssertion=structincludeLabels.Xlf.Assertionletto_short_string=function|Itercnt->mkstr0|Minitercnt->mkstr1|Maxitercnt->mkstr2|Nodeps->mkstr3endtypet=Labels.Xlf.tletto_string=Labels.Xlf.to_stringletto_simple_string=Labels.Xlf.to_simple_stringletto_tag=Labels.Xlf.to_tagletget_name=Labels.Xlf.get_nameletget_name_opt=Labels.Xlf.get_name_optletto_short_string=function|Labels.Xlf.ERROR->mkstr0|Labels.Xlf.CollapseArrayn->combo1[n]|Labels.Xlf.SubscriptorderArray(n,il)->combo2(n::il)|Labels.Xlf.NewClause->mkstr3|Labels.Xlf.ReductionClause->mkstr4|Labels.Xlf.Optionn->combo5[n]endmoduleOmpClause=structincludeLabels.OmpClauseletdata_sharing_attr_to_short_string=function|Private->mkstr0|Firstprivate->mkstr1|Shared->mkstr2|None_->mkstr3letkind_to_short_string=function|Static->mkstr0|Dynamic->mkstr1|Guided->mkstr2|Auto->mkstr3|Runtime->mkstr4letpolicy_to_short_string=function|Master->mkstr0|Close->mkstr1|Spread->mkstr2letmap_type_to_short_string=function|Alloc->mkstr0|To->mkstr1|From->mkstr2|Tofrom->mkstr3letdependence_type_to_short_string=function|In->mkstr0|Out->mkstr1|Inout->mkstr2letto_short_string=function|If->mkstr0|Num_threads->mkstr1|Default_->mkstr2|Lastprivate->mkstr3|Copyin->mkstr4|Reduction->mkstr5|Collapse->mkstr6|Ordered->mkstr7|Copyprivate->mkstr8|Nowait->mkstr9|Final->mkstr10|Untied->mkstr11|Mergeable->mkstr12|DataSharingAttra->catstr[mkstr13;data_sharing_attr_to_simple_stringa]|Schedulek->catstr[mkstr14;kind_to_simple_stringk]|Proc_bindp->catstr[mkstr15;policy_to_short_stringp]|Linearb->catstr[mkstr16;ifbthenmkstr1elsemkstr0]|Mapt_opt->catstr((mkstr17)::(opt_to_list_mapmap_type_to_simple_stringt_opt))|Safelen->mkstr18|Simdlen->mkstr19|Alignedb->catstr[mkstr20;ifbthenmkstr1elsemkstr0]|Uniform->mkstr21|Inbranch->mkstr22|Notinbranch->mkstr23|Dependt->catstr[mkstr24;dependence_type_to_short_stringt]|Device->mkstr25|Dist_schedulek->catstr[mkstr26;kind_to_simple_stringk]|Initializer->mkstr27|Num_teams->mkstr28|Thread_limit->mkstr29|ERROR->mkstr30endmoduleOmpDirective=structincludeLabels.OmpDirectiveletatomic_sub_to_short_string=function|Read->mkstr0|Write->mkstr1|Capture->mkstr2|Update->mkstr3letconstruct_type_to_short_string=function|C_parallel->mkstr0|C_sections->mkstr1|C_do->mkstr2|C_taskgroup->mkstr3letto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|ERROR->mkstr0|Barrier->mkstr1|Dofalse->mkstr2|Flush->mkstr3|Master->mkstr4|Ordered->mkstr5|Parallel->mkstr6|ParallelDofalse->mkstr7|ParallelSections->mkstr8|ParallelWorkshare->mkstr9|Section->mkstr10|Sections->mkstr11|Single->mkstr12|Task->mkstr13|Taskwait->mkstr14|Taskyield->mkstr15|Threadprivate->mkstr16|Workshare->mkstr17|EndAtomic->mkstr18|EndDofalse->mkstr19|EndMaster->mkstr20|EndOrdered->mkstr21|EndParallel->mkstr22|EndSections->mkstr23|EndSingle->mkstr24|EndTask->mkstr25|EndWorkshare->mkstr26|EndParallelDofalse->mkstr27|EndParallelSections->mkstr28|EndParallelWorkshare->mkstr29|Atomic(a_opt,false)->catstr((mkstr30)::(opt_to_list_mapatomic_sub_to_simple_stringa_opt))|Criticaln_opt->combo31(opt_to_listn_opt)|EndCriticaln_opt->combo32(opt_to_listn_opt)|Dotrue->mkstr33|EndDotrue->mkstr34|ParallelDotrue->mkstr35|EndParallelDotrue->mkstr36|Atomic(a_opt,true)->catstr((mkstr37)::(opt_to_list_mapatomic_sub_to_simple_stringa_opt))|Simd->mkstr38|EndSimd->mkstr39|DeclareSimdn->combo40[n]|Target->mkstr41|EndTarget->mkstr42|TargetData->mkstr43|EndTargetData->mkstr44|TargetUpdate->mkstr45|DeclareTarget->mkstr46|Teams->mkstr47|EndTeams->mkstr48|Taskgroup->mkstr49|EndTaskgroup->mkstr50|Cancelc->catstr[mkstr51;construct_type_to_short_stringc]|CancellationPointc->catstr[mkstr52;construct_type_to_short_stringc]|DeclareReduction->mkstr53|TargetTeams->mkstr54|EndTargetTeams->mkstr55|Distributetrue->mkstr56|EndDistributetrue->mkstr57|DistributeParallelDotrue->mkstr58|EndDistributeParallelDotrue->mkstr59|TeamsDistributetrue->mkstr60|EndTeamsDistributetrue->mkstr61|TargetTeamsDistributetrue->mkstr62|EndTargetTeamsDistributetrue->mkstr63|TeamsDistributeParallelDotrue->mkstr64|EndTeamsDistributeParallelDotrue->mkstr65|TargetTeamsDistributeParallelDotrue->mkstr66|EndTargetTeamsDistributeParallelDotrue->mkstr67|Distributefalse->mkstr68|EndDistributefalse->mkstr69|DistributeParallelDofalse->mkstr70|EndDistributeParallelDofalse->mkstr71|TeamsDistributefalse->mkstr72|EndTeamsDistributefalse->mkstr73|TargetTeamsDistributefalse->mkstr74|EndTargetTeamsDistributefalse->mkstr75|TeamsDistributeParallelDofalse->mkstr76|EndTeamsDistributeParallelDofalse->mkstr77|TargetTeamsDistributeParallelDofalse->mkstr78|EndTargetTeamsDistributeParallelDofalse->mkstr79endmoduleOmpConstruct=structincludeLabels.OmpConstructletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Atomic(a_opt,false)->catstr((mkstr0)::(opt_to_list_mapOmpDirective.atomic_sub_to_simple_stringa_opt))|Criticaln_opt->combo1(opt_to_listn_opt)|Dofalse->mkstr2|Master->mkstr3|Ordered->mkstr4|Parallel->mkstr5|Sections->mkstr6|Single->mkstr7|Task->mkstr8|Workshare->mkstr9|ParallelDofalse->mkstr10|ParallelSections->mkstr11|ParallelWorkshare->mkstr12|Atomic(a_opt,true)->catstr((mkstr13)::(opt_to_list_mapOmpDirective.atomic_sub_to_simple_stringa_opt))|Dotrue->mkstr14|ParallelDotrue->mkstr15|Simd->mkstr16|Target->mkstr17|TargetData->mkstr18|Teams->mkstr19|TargetTeams->mkstr20|Taskgroup->mkstr21|Distributetrue->mkstr23|DistributeParallelDotrue->mkstr24|TeamsDistributetrue->mkstr25|TargetTeamsDistributetrue->mkstr26|TeamsDistributeParallelDotrue->mkstr27|TargetTeamsDistributeParallelDotrue->mkstr28|Distributefalse->mkstr30|DistributeParallelDofalse->mkstr31|TeamsDistributefalse->mkstr32|TargetTeamsDistributefalse->mkstr33|TeamsDistributeParallelDofalse->mkstr34|TargetTeamsDistributeParallelDofalse->mkstr35endmoduleAccClause=structincludeLabels.AccClauseletto_short_string=function|Async->mkstr0|Auto->mkstr1|Bind->mkstr2|Collapse->mkstr3|Copy->mkstr4|Copyin->mkstr5|Copyout->mkstr6|Create->mkstr7|DefaultNone->mkstr8|DefaultPresent->mkstr9|Delete->mkstr10|Device->mkstr11|Deviceptr->mkstr12|Device_resident->mkstr13|Device_type->mkstr14|Device_typeAny->mkstr15|Dtype->mkstr16|DtypeAny->mkstr17|Firstprivate->mkstr18|Gang->mkstr19|Host->mkstr20|If->mkstr21|Independent->mkstr22|Link->mkstr23|Nohost->mkstr24|Num_gangs->mkstr25|Num_workers->mkstr26|Pcopy->mkstr27|Pcopyin->mkstr28|Pcopyout->mkstr29|Pcreate->mkstr30|Present->mkstr31|Present_or_copy->mkstr32|Present_or_copyin->mkstr33|Present_or_copyout->mkstr34|Present_or_create->mkstr35|Private->mkstr36|Reduction->mkstr37|Self->mkstr38|Seq->mkstr39|Tile->mkstr40|Use_device->mkstr41|Vector->mkstr42|Vector_length->mkstr43|Wait->mkstr44|Worker->mkstr45endmoduleAccDirective=structincludeLabels.AccDirectiveletatomic_sub_to_short_string=function|Read->mkstr0|Write->mkstr1|Capture->mkstr2|Update->mkstr3letto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|ERROR->mkstr0|Atomica_opt->catstr((mkstr1)::(opt_to_list_mapatomic_sub_to_simple_stringa_opt))|Parallel->mkstr2|Kernels->mkstr3|Data->mkstr4|EnterData->mkstr5|ExitData->mkstr6|Host_data->mkstr7|Loop->mkstr8|Cache->mkstr9|Update->mkstr10|Wait->mkstr11|Routinen_opt->combo12(opt_to_listn_opt)|Declare->mkstr13|EndAtomic->mkstr14|EndParallel->mkstr15|EndKernels->mkstr16|EndData->mkstr17|EndHost_data->mkstr18|ParallelLoop->mkstr19|KernelsLoop->mkstr20|EndParallelLoop->mkstr21|EndKernelsLoop->mkstr22endmoduleAccConstruct=structincludeLabels.AccConstructletto_short_string?(ignore_identifiers_flag=false)=let_=ignore_identifiers_flagin(*let combo = combo ~ignore_identifiers_flag in*)function|Atomica_opt->catstr((mkstr0)::(opt_to_list_mapAccDirective.atomic_sub_to_simple_stringa_opt))|Parallel->mkstr1|Kernels->mkstr2|Data->mkstr3|Host_data->mkstr4|ParallelLoop->mkstr5|KernelsLoop->mkstr6|Loop->mkstr7endmoduleLindaCall=structincludeLabels.LindaCallletto_short_string=function|In->mkstr0|Inp->mkstr1|Rd->mkstr2|Rdp->mkstr3|Out->mkstr4|Eval->mkstr5endmoduleTypeSpec=structincludeLabels.TypeSpecletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Character->mkstr0|Complex->mkstr1|DoublePrecision->mkstr2|Integer->mkstr3|Logical->mkstr4|Real->mkstr5|Byte->mkstr6|DoubleComplex->mkstr7|Typen->combo8[n]|Derivedn->combo9[n]|PpMacroTypeSpecn->combo10[n]|Classn->combo11[n]endmoduleGenericSpec=structincludeLabels.GenericSpecletrecord_kind_to_short_string=function|RK_formatted->mkstr1|RK_unformatted->mkstr2|RK_weirdn->combo3[n]letto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Assignment->mkstr0|Namen->combo1[n]|DefinedOperatorop->catstr[mkstr2;DefinedOperator.to_short_stringop]|IntrinsicOperatorop->catstr[mkstr3;IntrinsicOperator.to_short_stringop]|Readk->catstr[mkstr4;record_kind_to_short_stringk]|Writek->catstr[mkstr5;record_kind_to_short_stringk]endmoduleIoControlSpec=structincludeLabels.IoControlSpecletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Unit->mkstr0|Fmt->mkstr1|Rec->mkstr2|Iostat->mkstr3|Size->mkstr4|Advance->mkstr5|Nmln->combo6[n]|Errlab->combo7[lab]|Endlab->combo8[lab]|Eorlab->combo9[lab]|Iomsg->mkstr10|Pos->mkstr11|PreconnectedUnit->mkstr12|Asynchronous->mkstr13|Blank->mkstr14|Decimal->mkstr15|Delim->mkstr16|Id->mkstr17|Pad->mkstr18|Round->mkstr19|Sign->mkstr20|Num->mkstr21endmoduleInquireSpec=structincludeLabels.InquireSpecletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Unit->mkstr0|File->mkstr1|Iostat->mkstr2|Exist->mkstr3|Opened->mkstr4|Number->mkstr5|Named->mkstr6|Name->mkstr7|Access->mkstr8|Sequential->mkstr9|Direct->mkstr10|Form->mkstr11|Formatted->mkstr12|Unformatted->mkstr13|Recl->mkstr14|Nextrec->mkstr15|Blank->mkstr16|Position->mkstr17|Action->mkstr18|Read->mkstr19|Write->mkstr20|Readwrite->mkstr21|Delim->mkstr22|Pad->mkstr23|Errlab->combo24[lab]|Iomsg->mkstr25|Pos->mkstr26|Binary->mkstr27|Blocksize->mkstr28|Buffered->mkstr29|Convert->mkstr30|Carriagecontrol->mkstr31|Defaultfile->mkstr32|Iofocus->mkstr33|Mode->mkstr34|Organization->mkstr35|Recordsize->mkstr36|Recordtype->mkstr37|Share->mkstr38|Asynchronous->mkstr39|Decimal->mkstr40|Encoding->mkstr41|Id->mkstr42|Pending->mkstr43|Round->mkstr44|Sign->mkstr45|Size->mkstr46|Stream->mkstr47|Asynch->mkstr48|Strid->mkstr49endmoduleConnectSpec=structincludeLabels.ConnectSpecletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Unit->mkstr0|Iostat->mkstr1|File->mkstr2|Status->mkstr3|Access->mkstr4|Form->mkstr5|Recl->mkstr6|Blank->mkstr7|Position->mkstr8|Action->mkstr9|Delim->mkstr10|Pad->mkstr11|Errlab->combo12[lab]|Iomsg->mkstr13|Associatevariable->mkstr14|Blocksize->mkstr15|Buffercount->mkstr16|Buffered->mkstr17|Carriagecontrol->mkstr18|Convert->mkstr19|Defaultfile->mkstr20|Dispose->mkstr21|Iofocus->mkstr22|Maxrec->mkstr23|Mode->mkstr24|Name->mkstr25|Organization->mkstr26|Readonly->mkstr27|Recordsize->mkstr28|Recordtype->mkstr29|Share->mkstr30|Shared->mkstr31|Title->mkstr32|Useropen->mkstr33|Type->mkstr34|Asynchronous->mkstr35|Decimal->mkstr36|Encoding->mkstr37|Newunit->mkstr38|Round->mkstr39|Sign->mkstr40|Asynch->mkstr41endmoduleCloseSpec=structincludeLabels.CloseSpecletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Unit->mkstr0|Iostat->mkstr1|Status->mkstr2|Errlab->combo3[lab]|Iomsg->mkstr4|Dispose->mkstr5|Type->mkstr6endmodulePositionSpec=structincludeLabels.PositionSpecletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Unit->mkstr0|Iostat->mkstr1|Errlab->combo2[lab]|Iomsg->mkstr3endmoduleFormat=structincludeLabels.Formatletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Expr->mkstr0|ListDirected->mkstr1|Labellab->combo2[lab]endmodulePrefixSpec=structincludeLabels.PrefixSpecletto_short_string=function|Recursive->mkstr0|Pure->mkstr1|Elemental->mkstr2|TypeSpect->catstr[mkstr3;TypeSpec.to_short_stringt]|Impure->mkstr4|Module->mkstr5|Attributesa->combo6[a]endmoduleCaseSelector=structincludeLabels.CaseSelectorletto_short_string=function|CaseValueRangeList->mkstr0|Default->mkstr1endmoduleCaseValueRange=structincludeLabels.CaseValueRangeletto_short_string=function|Value->mkstr0|Lower->mkstr1|Upper->mkstr2|LowerUpper->mkstr3endmoduleControlEditDesc=structincludeLabels.ControlEditDescletto_short_string=function|Terminate->mkstr0|PositionEditDescs->mkstr_str1s|SignEditDescs->mkstr_str3s|BlankInterpEditDescs->mkstr_str5s|ScaleFactori->catstr[mkstr7;string_of_inti]|EndOfRecordi_opt->catstr((mkstr8)::(opt_to_list_mapstring_of_inti_opt))|Unknowns->mkstr_str9sendmoduleFormatItem=structincludeLabels.FormatItemletspecial_edit_desc_to_short_string=function|Dollar->mkstr0|Backslash->mkstr1|Plus->mkstr2|Zero->mkstr3|One->mkstr4|Blank->mkstr5letto_short_string=function|DataEditDesc(i_opt,s)->catstr((mkstr_str0s)::(opt_to_list_mapstring_of_inti_opt))|ControlEditDescc->catstr[mkstr2;ControlEditDesc.to_short_stringc]|CharStringEditDescs->mkstr_str3s|FormatItemListi_opt->catstr((mkstr5)::(opt_to_list_mapstring_of_inti_opt))|SpecialEditDescsd->catstr[mkstr6;special_edit_desc_to_short_stringsd]|VariableFormatDesc(i_opt,s)->catstr((mkstr_str7s)::(opt_to_list_mapstring_of_inti_opt))|Macro(i_opt,id)->catstr((mkstr_str9id)::(opt_to_list_mapstring_of_inti_opt))endmoduleWaitSpec=structincludeLabels.WaitSpecletto_short_string=function|Endlab->combo0[lab]|Eorlab->combo1[lab]|Errlab->combo2[lab]|Id->mkstr3|Iomsg->mkstr4|Iostat->mkstr5|Unit->mkstr6endmoduleFlushSpec=structincludeLabels.FlushSpecletto_short_string=function|Errlab->combo0[lab]|Iomsg->mkstr1|Iostat->mkstr2|Unit->mkstr3endmoduleBindingAttr=structincludeLabels.BindingAttrletto_short_string=function|Passn->combo0[n]|Nopass->mkstr1|NonOverridable->mkstr2|Deferred->mkstr3|Private->mkstr4|Public->mkstr5endmoduleProcComponentAttrSpec=structincludeLabels.ProcComponentAttrSpecletto_short_string=function|Passn->combo0[n]|Pointer->mkstr1|Nopass->mkstr2|Private->mkstr3|Public->mkstr4endmoduleProcAttrSpec=structincludeLabels.ProcAttrSpecletto_short_string=function|Public->mkstr0|Private->mkstr1|Bind->mkstr2|Intenti->combo3[IntentSpec.to_short_stringi]|Optional->mkstr4|Pointer->mkstr5|Protected->mkstr6|Save->mkstr7|Weirdn->combo8[n]endincludeLabelletto_short_string?(ignore_identifiers_flag=false)=letcombo2=combo2~ignore_identifiers_flaginfunction|DUMMY->mkstr20|EMPTY->mkstr21|ERROR_->mkstr22|OCL->mkstr23|Program->mkstr24|Block->mkstr25|InterfaceBlockn_opt->combo26(opt_to_listn_opt)|InterfaceBody->mkstr27|CaseConstruct->mkstr28|DoConstructv_opt->combo29(opt_to_listv_opt)|ForallConstruct->mkstr210|IfConstruct->mkstr211|WhereConstruct->mkstr212|DerivedTypeDefn->combo213[n]|ArrayElementn->combo214[n]|ArraySectionn->combo215[n]|StructureComponentn->combo216[n]|Substring->mkstr217|SectionSubscriptListn->combo218[n]|SubscriptTriplet->mkstr219|FirstSubscript->mkstr220|SecondSubscript->mkstr221|Stride->mkstr222|SubstringRange->mkstr223|StartingPoint->mkstr224|EndingPoint->mkstr225|PartRef->mkstr226|ParenExpr->mkstr227|ArrayConstructor->mkstr228|LoopControlv->combo229[v]|LoopControlWhile->mkstr230|Rename->mkstr231|OnlyList->mkstr232|KindSelector->mkstr233|CharSelector->mkstr234|LengthSelector->mkstr235|LengthSelectorOverride->mkstr236(* | CharLenParamValueAsterisk -> mkstr2 37 *)|TypeParamValueAsterisk->mkstr237|TypeParamValueColon->mkstr238|ExplicitShapeSpec->mkstr239|AssumedShapeSpec->mkstr240|DeferredShapeSpec->mkstr241(*| AssumedSizeSpec -> mkstr2 41 *)(*
| ComponentAttrSpecPointer -> mkstr2 42
| ComponentAttrSpecDimension -> mkstr2 43
*)|ComponentAttrSpecs->mkstr244|AttrSpecs->mkstr247|InputItemList->mkstr248|OutputItemList->mkstr249|IoLength->mkstr250|IoImpliedDo->mkstr251|EquivalenceSet->mkstr252|DataStmtSet->mkstr253|DataStmtValue->mkstr254(* | NullInit -> mkstr2 55*)|DataImpliedDo->mkstr256|DataIDoObject->mkstr257|DataIDoObjectList->mkstr258|DataStmtObjectList->mkstr259|DataStmtValueList->mkstr260|Prefix->mkstr261|DummyArgNameListn->combo262[n]|DummyArgListn->combo263[n]|ActualArgSpecListn->combo264[n]|AlternateReturnIndicator->mkstr265|ForallHeader->mkstr266|ImplicitSpec->mkstr267|FormatSpecification->mkstr268|AcImpliedDo->mkstr269|PartNamen->combo271[n]|Namen->combo272[n]|VariableNamen->combo273[n]|FunctionReferencen->combo274[n]|StructureConstructorn->combo275[n]|ComponentDecln->combo276[n]|EntityDecln->combo277[n]|CommonBlockObjectn->combo278[n]|NamedConstantDefn->combo279[n]|IoImpliedDoControln->combo280[n]|Arrayn->combo281[n]|NamelistGroupn->combo282[n]|ObjectNamen->combo283[n]|Resultn->combo284[n]|ForallTripletSpecn->combo285[n]|AcImpliedDoControln->combo286[n]|AltReturnSpeclab->combo287[lab]|Labellab->combo289[lab]|ActualArgSpecn_opt->combo290(opt_to_listn_opt)|CommonSpecn_opt->combo291(opt_to_listn_opt)|ArraySpeci->combo292[string_of_inti]|ExplicitShapeArrayi->combo293[string_of_inti]|AssumedShapeArrayi->combo294[string_of_inti]|DeferredShapeArrayi->combo295[string_of_inti]|AssumedSizeArrayi->combo296[string_of_inti]|ComponentArraySpeci->combo297[string_of_inti]|ExplicitShapeComponentArrayi->combo298[string_of_inti]|DeferredShapeComponentArrayi->combo299[string_of_inti]|Stmts->catstr[mkstr2100;Stmt.to_short_strings]|PpDirectived->catstr[mkstr2101;PpDirective.to_short_stringd]|OclDirectived->catstr[mkstr2102;OclDirective.to_short_stringd]|ProgramUnitpu->catstr[mkstr2103;ProgramUnit.to_short_stringpu]|TypeSpect->catstr[mkstr2104;TypeSpec.to_short_stringt]|Ambiguousa->catstr[mkstr2105;Ambiguous.to_short_stringa]|Constantc->catstr[mkstr2106;Constant.to_short_stringc]|GenericSpecg->catstr[mkstr2107;GenericSpec.to_short_stringg]|IntrinsicOperatorop->catstr[mkstr2108;IntrinsicOperator.to_short_stringop]|DefinedOperatorop->catstr[mkstr2109;DefinedOperator.to_short_stringop]|AttrSpeca->catstr[mkstr2110;AttrSpec.to_short_stringa]|StopCodec->catstr[mkstr2111;Constant.to_short_stringc]|Formatf->catstr[mkstr2112;Format.to_short_stringf]|PrefixSpecp->catstr[mkstr2114;PrefixSpec.to_short_stringp]|CaseSelectorsel->catstr[mkstr2115;CaseSelector.to_short_stringsel]|CaseValueRanger->catstr[mkstr2116;CaseValueRange.to_short_stringr]|FormatItemi->catstr[mkstr2117;FormatItem.to_short_stringi]|AccessSpecspec->catstr[mkstr2118;AccessSpec.to_short_stringspec]|InquireSpecspec->catstr[mkstr2119;InquireSpec.to_short_stringspec]|CloseSpecspec->catstr[mkstr2120;CloseSpec.to_short_stringspec]|ConnectSpecspec->catstr[mkstr2121;ConnectSpec.to_short_stringspec]|PositionSpecspec->catstr[mkstr2122;PositionSpec.to_short_stringspec]|IoControlSpecspec->catstr[mkstr2123;IoControlSpec.to_short_stringspec]|IntentSpecspec->catstr[mkstr2124;IntentSpec.to_short_stringspec]|Includes->mkstr2_str127s|LetterSpec(l,l_opt)->catstr((mkstr2129)::l::(opt_to_listl_opt))|OmpClausec->catstr[mkstr2130;OmpClause.to_short_stringc]|OmpDirectived->catstr[mkstr2131;OmpDirective.to_short_stringd]|OMP->mkstr2132|CommonBlockNamen->combo2133[n]|IntrinsicProcedureNamen->combo2134[n]|LindaCalllc->catstr[mkstr2135;LindaCall.to_short_stringlc]|LindaFormal->mkstr2136|LindaActual->mkstr2137|LindaLength->mkstr2138|LindaTypeof->mkstr2139|SpecificationPart->mkstr2140|ExecutionPart->mkstr2141|SubprogramPart->mkstr2142|ImplicitPart->mkstr2143|Variable->mkstr2144|InternalSubprogramis->catstr[mkstr2145;InternalSubprogram.to_short_stringis]|ModuleSubprogramis->catstr[mkstr2146;ModuleSubprogram.to_short_stringis]|XlfDirectived->catstr[mkstr2147;Xlf.Directive.to_short_stringd]|XlfAssertiona->catstr[mkstr2148;Xlf.Assertion.to_short_stringa]|XlfMiscx->catstr[mkstr2149;Xlf.to_short_stringx]|XLF->mkstr2150|StructureDecln_opt->combo2152(opt_to_listn_opt)|UnionDecl->mkstr2153|MapDecl->mkstr2154|RecordDecln->combo2155[n]|RecordFieldRefn->combo2156[n]|EntityNamen->combo2157[n]|DummyArgNamen->combo2158[n]|LanguageBindingSpec->mkstr2159|Suffix->mkstr2160|Fragment->mkstr2161|TypeAttrSpecspec->catstr[mkstr2162;TypeAttrSpec.to_short_stringspec]|InitializationExpr->mkstr2163|InitializationNull->mkstr2164|InitializationTarget->mkstr2165|InitializationOldStyle->mkstr2166|StatVariable->mkstr2167|ErrmsgVariable->mkstr2168|SourceExpr->mkstr2169|MoldExpr->mkstr2170|ModuleNatureIntrinsic->mkstr2171|ModuleNatureNonIntrinsic->mkstr2172|PpMacroIdn->combo2173[n]|PpMacroExprn->combo2174[n]|PpMacroVariablen->combo2175[n]|PpBranch->mkstr2176|PpBranchDo->mkstr2177|PpBranchForall->mkstr2178|PpBranchIf->mkstr2179|PpBranchSelect->mkstr2180|PpBranchWhere->mkstr2181|PpBranchEndDo->mkstr2182|PpBranchEndForall->mkstr2183|PpBranchEndIf->mkstr2184|PpBranchEndSelect->mkstr2185|PpBranchEndWhere->mkstr2186|PpSectionIfs->combo2187[s]|PpSectionIfdefs->combo2188[s]|PpSectionIfndefs->combo2189[s]|PpSectionElifs->combo2190[s]|PpSectionElse->mkstr2191|IfThenBlock->mkstr2192|ElseIfBlock->mkstr2193|ElseBlock->mkstr2194|OmpConstructc->catstr[mkstr2195;OmpConstruct.to_short_stringc]|CrayPointerSpec->mkstr2196|CaseBlock->mkstr2197|IoItemList->mkstr2198|Allocationn->combo2199[n]|AllocateShapeSpec->mkstr2200|AllocateShapeSpecList->mkstr2201|PpBranchDerivedType->mkstr2202|PpBranchEndType->mkstr2203|SelectTypeConstruct->mkstr2204|AssociateConstruct->mkstr2205|BlockConstruct->mkstr2206|CriticalConstruct->mkstr2207|LoopControlConcurrent->mkstr2208|AssumedRankArray->mkstr2209|WaitSpecsp->catstr[mkstr2210;WaitSpec.to_short_stringsp]|FlushSpecsp->catstr[mkstr2211;FlushSpec.to_short_stringsp]|BindingAttra->catstr[mkstr2212;BindingAttr.to_short_stringa]|ProcComponentAttrSpecsp->catstr[mkstr2213;ProcComponentAttrSpec.to_short_stringsp]|ProcAttrSpecsp->catstr[mkstr2214;ProcAttrSpec.to_short_stringsp]|ExternalNamen->combo2215[n]|TypeBoundProcDecl(n,n_opt)->catstr((mkstr2216)::n::(opt_to_listn_opt))|TypeBoundProcedurePart->mkstr2217|ProcedureDesignatorn->combo2218[n]|ProcDecln->combo2219[n]|TypeGuardBlock->mkstr2220|Associationn->combo2221[n]|DeferredCoshapeSpec->mkstr2222|ExplicitCoshapeSpec->mkstr2223(* | ExplicitCoshapeSpecUpper -> mkstr2 224*)|DeferredCoshapeCoarray->mkstr2225|ExplicitCoshapeCoarray->mkstr2226|CodimensionDecln->combo2227[n]|Enumeratorn->combo2228[n]|EnumDef->mkstr2229|BoundsSpec->mkstr2230|BoundsRemapping->mkstr2231|BoundsSpecList->mkstr2232|BoundsRemappingList->mkstr2233|DataPointerObjectn->combo2234[n]|AllocateCoshapeSpec->mkstr2235(* | AllocateCoshapeSpecUpper -> mkstr2 236*)|AllocateCoarraySpec->mkstr2237|WEIRDs->combo2238[s]|AcquiredLock->mkstr2239|ImageSelector->mkstr2240|AllImages->mkstr2241|WhereBlock->mkstr2242|SelectiveOp->mkstr2243|PpBranchFunction->mkstr2244|PpBranchEndFunction->mkstr2245|PpBranchSubroutine->mkstr2244|PpBranchEndSubroutine->mkstr2245|PpBranchPu->mkstr2246|PpBranchEndPu->mkstr2247|DefineFileSpec->mkstr2248|Optionss->mkstr2_str249s|ApolloPointerSpec->mkstr2251|PpMacroEntityDecln->combo2252[n]|PpMacroObjectn->combo2253[n]|AccClausec->catstr[mkstr2254;AccClause.to_short_stringc]|AccDirectived->catstr[mkstr2255;AccDirective.to_short_stringd]|ACC->mkstr2256|AccConstructc->catstr[mkstr2257;AccConstruct.to_short_stringc]|DecDirectived->catstr[mkstr2258;Dec.Directive.to_short_stringd]|DecClausec->catstr[mkstr2259;Dec.Clause.to_short_stringc]|DecAttributea->catstr[mkstr2260;Dec.Attribute.to_short_stringa]|DecMiscx->catstr[mkstr2261;Dec.to_short_stringx]|DEC->mkstr2262|DoBlock->mkstr2263|FunctionStmtHeadn->combo2264[n]|SubroutineStmtHeadn->combo2265[n]|ProcNamen->combo2266[n]letstriplab=lab(* not yet *)letanonymize2=anonymize~more:trueletanonymize3=anonymize~more:true(*
type annotation = string option
let null_annotation = None
let annotation_to_string = function
| None -> "<none>"
| Some x -> x
*)moduleAnnotation=structtypespec=|Requireofstringlist|Provideofstringlist|SpecofPinfo.Name.Spec.ttypet=speclistletnull=([]:t)letmkrequirens=Requirensletmkprovidens=Providensletmkspecnspec=Specnspecletspec_to_string=function|Requirens->Printf.sprintf"require %s"(Xlist.to_string(funx->x)", "ns)|Providens->Printf.sprintf"provide %s"(Xlist.to_string(funx->x)", "ns)|Specnspec->Pinfo.Name.Spec.to_stringnspecletto_stringl=Xlist.to_stringspec_to_string"\n"lletfrom_specs(l:speclist)=(l:t)letadd_spec(a:t)(s:spec)=(s::a:t)letiterf(a:t)=List.iterfaend(* of module Annotation *)typeannotation=Annotation.tletnull_annotation=Annotation.nullletannotation_to_string=Annotation.to_stringletis_hunk_boundary__=false(* not yet *)(* These labels are collapsible whether they are leaves or not. *)letforced_to_be_collapsible(*lab*)_=falseletis_collapse_targetoptionslab=ifoptions#no_collapse_flagthenfalseelsematchlabwith|PpDirective_|OclDirective_|OmpClause_|OmpDirective_|OmpConstruct_|LindaCall_|ProgramUnit_|InternalSubprogram_|ModuleSubprogram_|Stmt_|CaseConstruct|DoConstruct_|ForallConstruct|IfConstruct|WhereConstruct|SelectTypeConstruct|AssociateConstruct|BlockConstruct|CriticalConstruct|DerivedTypeDef_|InterfaceBlock_|SpecificationPart|ExecutionPart|SubprogramPart|ImplicitPart|Block|LoopControl_|LoopControlWhile|LoopControlConcurrent|OnlyList|ComponentDecl_|Prefix|Suffix|EntityDecl_|DummyArgNameList_|DummyArgList_|ActualArgSpecList_|ExplicitShapeSpec|AssumedShapeSpec|DeferredShapeSpec|ArraySpec_|ExplicitShapeArray_|AssumedShapeArray_|DeferredShapeArray_|AssumedSizeArray_|ComponentArraySpec_|ExplicitShapeComponentArray_|DeferredShapeComponentArray_|StructureDecl_|UnionDecl|MapDecl|TypeBoundProcDecl_|EnumDef|CodimensionDecl_(* | TypeGuardBlock*)|Association_|BoundsSpec|BoundsRemapping|BoundsSpecList|BoundsRemappingList(* expr *)|VariableName_|Constant_|DefinedOperator_|IntrinsicOperator_|FunctionReference_|ArrayConstructor|StructureConstructor_|ArrayElement_|ArraySection_|StructureComponent_|Substring|ParenExpr|Ambiguous_->true|_->falseletis_to_be_notified=function|PpDirective_|OclDirective_|OmpDirective_|OmpConstruct_|LindaCall_|ProgramUnit_|InternalSubprogram_|ModuleSubprogram_|Stmt_|CaseConstruct|DoConstruct_|ForallConstruct|IfConstruct|WhereConstruct|SelectTypeConstruct|AssociateConstruct|BlockConstruct|CriticalConstruct|DerivedTypeDef_|InterfaceBlock_|EnumDef->true|_->falseletis_partition=function|ProgramUnit_->true|_->falseletis_sequence=function|Program|Block|InterfaceBody|SpecificationPart|ExecutionPart|SubprogramPart|ImplicitPart|Fragment|TypeBoundProcedurePart->true|_->falseletis_ntuple=function(* not yet *)|_->falseletis_boundary=function|Program|ProgramUnit_|InternalSubprogram_|ModuleSubprogram_|DerivedTypeDef_|InterfaceBlock_|Fragment|EnumDef->true|_->falseletis_primary=function|Constant_|Name_|FunctionReference_|ArrayConstructor|StructureConstructor_|ArrayElement_|ArraySection_|StructureComponent_|Substring|ParenExpr|RecordFieldRef_->true|_->falseletis_expr=function|DefinedOperator_|IntrinsicOperator_->true|lab->is_primarylabletis_op=function|DefinedOperator_|IntrinsicOperator_->true|_->falseletis_scope_creating=function(* not yet *)|_->falseletis_compatible?(weak=false)__=ignoreweak;falseletis_order_insensitive=function|_->falseletquasi_eq__=falseletrelabel_allowed=function|Stmt_,Stmt_|IfConstruct,CaseConstruct|CaseConstruct,IfConstruct|IfConstruct,WhereConstruct|WhereConstruct,IfConstruct|DoConstruct_,ForallConstruct|ForallConstruct,DoConstruct_|LoopControl_,LoopControlWhile|LoopControlWhile,LoopControl_|LoopControl_,LoopControlConcurrent|LoopControlConcurrent,LoopControl_|ExecutionPart,Block|Block,ExecutionPart(* only for mapping children *)->true|l1,l2->(is_exprl1&&is_exprl2)||(anonymize2l1=anonymize2l2)letmove_disallowed_=falseletis_common_=falseletget_ident_use=function|Namen->n|_->""letto_char(*lab*)_='0'lethas_nameslab=tryignore(get_nameslab);truewithNot_found->falselethas_a_namelab=tryignore(get_namelab);truewithNot_found->falseletis_namedlab=has_a_namelab||has_nameslabletis_named_origlab=matchlabwith|Stmts->Stmt.is_named_origs|SectionSubscriptList_|DummyArgNameList_|DummyArgList_|ActualArgSpecList_|ArrayElement_|ArraySection_|StructureComponent_->false|_->is_namedlabletto_elem_data=Astml.to_elem_datalang_prefixto_tagletof_elem_data(*name*)_(*attrs*)__=DUMMY(* not yet *)letgetlabnd=(Obj.objnd#data#_label:t)letcannot_be_keyrootnd=matchgetlabndwith|Program|ProgramUnit_|InternalSubprogram_|ModuleSubprogram_|ExecutionPart->true|_->falseletis_int_literal=function|Constant(Constant.IntLiteralConstant_)->true|_->falseletis_real_literal=function|Constant(Constant.RealLiteralConstant_)->true|_->falseletis_string_literal=function|Constant(Constant.CharLiteralConstant_)->true|_->falseletis_phantom=function|Block|DoBlock|WhereBlock|TypeGuardBlock|CaseBlock|IfThenBlock|ElseIfBlock|ElseBlock|SpecificationPart|ExecutionPart|ImplicitPart->true|_->falseletis_special_=falseletis_pp_directive=function|PpDirective_->true|_->falseletis_pp_define=function|PpDirective{PpDirective.pp_label=PpDirective.Define_;_}->true|_->falseletis_pp_include=function|PpDirective{PpDirective.pp_label=PpDirective.Include_;_}->true|_->falseletget_pp_include_path=function|PpDirective{PpDirective.pp_label=PpDirective.Includeh;_}->HeaderFile.to_pathh|_->raiseNot_foundletis_ocl_directive=function|OclDirective_->true|_->falseletis_omp_clause=function|OmpClause_->true|_->falseletis_omp_directive=function|OmpDirective_->true|_->falseletis_omp_construct=function|OmpConstruct_->true|_->falseletis_acc_clause=function|AccClause_->true|_->falseletis_acc_directive=function|AccDirective_->true|_->falseletis_acc_construct=function|AccConstruct_->true|_->falseletis_dec_clause=function|DecClause_->true|_->falseletis_dec_directive=function|DecDirective_->true|_->falseletis_program_unit=function|ProgramUnit_->true|_->falseletis_program=function|Program->true|_->falseletis_fragment=function|Fragment->true|_->falseletis_execution_part=function|ExecutionPart->true|_->falseletis_subprogram_part=function|SubprogramPart->true|_->falseletis_external_subprogram=function|ProgramUnit(ProgramUnit.FunctionSubprogram_|ProgramUnit.SubroutineSubprogram_)->true|_->falseletis_main_program=function|ProgramUnit(ProgramUnit.MainProgram_)->true|_->falseletis_function=function|ProgramUnit(ProgramUnit.FunctionSubprogram_)|InternalSubprogram(InternalSubprogram.FunctionSubprogram_)|ModuleSubprogram(ModuleSubprogram.FunctionSubprogram_)->true|_->falseletis_ext_function=function|ProgramUnit(ProgramUnit.FunctionSubprogram_)->true|_->falseletis_int_function=function|InternalSubprogram(InternalSubprogram.FunctionSubprogram_)->true|_->falseletis_mod_function=function|ModuleSubprogram(ModuleSubprogram.FunctionSubprogram_)->true|_->falseletis_subroutine=function|ProgramUnit(ProgramUnit.SubroutineSubprogram_)|InternalSubprogram(InternalSubprogram.SubroutineSubprogram_)|ModuleSubprogram(ModuleSubprogram.SubroutineSubprogram_)->true|_->falseletis_ext_subroutine=function|ProgramUnit(ProgramUnit.SubroutineSubprogram_)->true|_->falseletis_int_subroutine=function|InternalSubprogram(InternalSubprogram.SubroutineSubprogram_)->true|_->falseletis_mod_subroutine=function|ModuleSubprogram(ModuleSubprogram.SubroutineSubprogram_)->true|_->falseletis_subprogram=function|ProgramUnit(ProgramUnit.SubroutineSubprogram_|ProgramUnit.FunctionSubprogram_)|InternalSubprogram(InternalSubprogram.SubroutineSubprogram_|InternalSubprogram.FunctionSubprogram_)|ModuleSubprogram_->true|_->falseletis_program_unit_or_fragment=function|ProgramUnit_|Fragment->true|_->falseletis_program_unit_or_subprogram=function|ProgramUnit_|InternalSubprogram(InternalSubprogram.SubroutineSubprogram_|InternalSubprogram.FunctionSubprogram_)|ModuleSubprogram(ModuleSubprogram.SubroutineSubprogram_|ModuleSubprogram.FunctionSubprogram_)->true|_->falseletis_module=function|ProgramUnit(ProgramUnit.Module_)->true|_->falseletis_block_data=function|ProgramUnit(ProgramUnit.BlockData_)->true|_->falseletis_case_construct=function|CaseConstruct->true|_->falseletis_do_construct=function|DoConstruct_->true|_->falseletis_forall_construct=function|ForallConstruct->true|_->falseletis_if_construct=function|IfConstruct->true|_->falseletis_where_construct=function|WhereConstruct->true|_->falseletis_select_type_construct=function|SelectTypeConstruct->true|_->falseletis_associate_construct=function|AssociateConstruct->true|_->falseletis_block_construct=function|BlockConstruct->true|_->falseletis_critical_construct=function|CriticalConstruct->true|_->falseletis_derived_type_def=function|DerivedTypeDef_->true|_->falseletis_interface_block=function|InterfaceBlock_->true|_->falseletis_block=function|Block->true|_->falseletis_ambiguous=function|Ambiguous_->true|_->falseletis_array_access=function|ArrayElement_|ArraySection_|Ambiguous(Ambiguous.ArrayAccess_)->true|_->falseletis_if_then_block=function|IfThenBlock->true|_->falseletis_else_block=function|ElseBlock->true|_->falseletis_else_if_block=function|ElseIfBlock->true|_->falseletis_where_block=function|WhereBlock->true|_->falseletis_case_block=function|CaseBlock->true|_->falseletis_type_guard_block=function|TypeGuardBlock->true|_->falseletis_do_block=function|DoBlock->true|_->falseletis_pp_branch=function|PpBranch->true|_->falseletis_pp_branch_do=function|PpBranchDo->true|_->falseletis_pp_branch_if=function|PpBranchIf->true|_->falseletis_pp_branch_forall=function|PpBranchForall->true|_->falseletis_pp_branch_where=function|PpBranchWhere->true|_->falseletis_pp_branch_select=function|PpBranchSelect->true|_->falseletis_pp_branch_end_do=function|PpBranchEndDo->true|_->falseletis_pp_branch_end_if=function|PpBranchEndIf->true|_->falseletis_pp_branch_end_forall=function|PpBranchEndForall->true|_->falseletis_pp_branch_end_where=function|PpBranchEndWhere->true|_->falseletis_pp_branch_end_select=function|PpBranchEndSelect->true|_->falseletis_pp_section_ifdef=function|PpSectionIfdef_->true|_->falseletis_pp_section_ifndef=function|PpSectionIfndef_->true|_->falseletis_pp_section_if=function|PpSectionIf_->true|_->falseletis_pp_section_elif=function|PpSectionElif_->true|_->falseletis_pp_section_else=function|PpSectionElse->true|_->falseletis_container_unit=function|AccConstruct_|CaseBlock|ElseBlock|ElseIfBlock|IfThenBlock|TypeGuardBlock|WhereBlock|PpSectionIf_|PpSectionElif_|PpSectionElse|PpSectionIfdef_|PpSectionIfndef_|AssociateConstruct|BlockConstruct|CaseConstruct|IfConstruct|SelectTypeConstruct|WhereConstruct|CriticalConstruct|DoConstruct_|ForallConstruct|DoBlock|ExecutionPart|OmpConstruct_|PpBranch|PpBranchDo|PpBranchIf|PpBranchForall|PpBranchWhere|PpBranchSelect|PpBranchEndDo|PpBranchEndIf|PpBranchEndForall|PpBranchEndWhere|PpBranchEndSelect->true|_->falseletget_nparams_=raiseNot_foundletget_nargs_=raiseNot_foundletis_parameter_=false(* not yet *)letis_assignment_=false(* not yet *)