TU      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~SafeV5Convert a Fortran literal Real into a Haskell Double.9Convert a Fortran literal Integer into a Haskell Integer.Safe 67;<=>?ASTWSafe 67;<=>?ASTXpSafe167<Y  !$#"%&'()*+%& !"#$-,'(0/.)*+1 !"#$%&Safe 16<>?AVZF:;<=>?@ABEDCFHGIJNMLKOPUTSRQV[ZYXW\]_^`hgdcfebaijklmnopqrstuvwxyz{|}~P`abcdefgh\]^_VWXYZ[OPQRSTUIJKLMNiFGHABCDEjkl?@<=>mnopqrstuvwxyz{|}:;~ :;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghSafe16`JObtain set of intrinsics that are most closely aligned with given version.mname => (return-unit, parameter-units) This is an exhaustive list of intrinsics listed in 15.10 of X3.9-1978None 16;<=>?DbFEDCBA@?>=<;:987654310/.-,+*)(&$#!      '2HG%"IJLKMNOPQUTSRVWYXZ[\]^`_abfedcghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUghijklmLMNPQRSTUnopqrstuvwxyz{|}~Vabcdef^_`Z[\]PQRSTUVWXY[ZOMNIJKLO      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHYXW]\      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNP QRSTUVWXYZ[\]^_`abcdefNone 16;<=>?Ds }fghqrpnikjmostluvw~xy|}z{}wxyz{|}~fghijklmnopqrstuvghijklmnopqrstuvwfxyz{|}~ None 1367;<=>?H"/The string representation of an integer literal#+The string representation of a real literal$/The real and imaginary parts of a complex value%A string literal&A Hollerith literal'The name of a variable(The name of a built-in function)A boolean value*$User-defined operators in interfaces+#Overloaded assignment in interfaces2Use a value as an expression.3-A binary operator applied to two expressions.4,A unary operator applied to two expressions.5Array indexing6%) notation for variables inside data types75A function expression applied to a list of arguments.8$Implied do (i.e. one-liner do loops)9Array initialisation:#Function return value specification      !-,+*)('&%$#".0/1:98765432;<=DCBA@?>EFGJIHKLMNOPQSRTUVWXY[Z\hgfedcba`_^]ijkmlnpoqrs~}|{zyxwvut  stuvwxyz{|}~qrnopklmij\]^_`abcdefghXYZ[VWTUQRSOPMNKLGHIJEF=>?@ABCD;<123456789:./0!"#$%&'()*+,-       ponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHG~}|{zyxwvutsFEDCBA@?>=<;:98765432r q10/.-,+*)('&%$#"!  (      ! "#$%&'()*+,-./01 23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ]^_`abcdefghijklmnopqrsOtuvwxyz{|}~ 5 None;=>?CDEFGHIJKLMNOPQR5HIJKGLMNOPEFwXWVvQUuCDtsrqponmlkjihgfedcba`_S^]T\[ZYRCDEFI7J7 None136;=>?x A subset of 18 which can only contain values that can be assigned to.|=If the expression can be seen as an lvalue, convert it to an x.x{zy| xyz{|~}xyz{ None016NVforiginal annotation@unique name for function/variable, after variable renaming phase8original name for function/variable found in source textbasic block graph5unique number for each block during dataflow analysis+The type of "transformBiM"-family functions*The type of "transformBi"-family functionsBasic block graph. Basic block;True iff the expression can be used with varName or srcNameBObtain either uniqueName or source name from an ExpValue variable.1Obtain the source name from an ExpValue variable.EObtain either uniqueName or source name from an LvSimpleVar variable.4Obtain the source name from an LvSimpleVar variable.HGenerate an ExpValue variable with its source name == to its uniqueName.?Obtain either ProgramUnit uniqueName or whatever is in the AST.?Obtain either ProgramUnit sourceName or whatever is in the AST.NCreate analysis annotations for the program, saving the original annotations.RRemove analysis annotations from the program, restoring the original annotations.Return list of expressions used as the left-hand-side of assignment statements (including for-loops and function-calls by reference).SReturn list of expressions that are not "left-hand-side" of assignment statements.,Is this an expression capable of assignment?"Set of names found in an AST node.lInitiate (lazy) computation of all LHS variables for each node of the AST so that it may be accessed later.Set of names found in the parts of an AST that are the target of an assignment statement. allLhsVars :: (Annotated b, Data a, Data (b (Analysis a))) => b (Analysis a) -> [Name]ZSet of names found in the parts of an AST that are the target of an assignment statement.:Set of expressions used -- not defined -- by an AST-block.7Set of expression used -- not defined -- by a statement4Set of names used -- not defined -- by an AST-block.%Set of names defined by an AST-block.==  NoneV%Mapping of names to type information.oAnnotate AST nodes with type information and also return a type environment mapping names to type information.Annotate AST nodes with type information and also return a type environment mapping names to type information; provided with a starting type environment.NoneNVFAnnotate unique names for variable and function declarations and uses.`Annotate unique names for variable and function declarations and uses. With external module map.ITake the unique name annotations and substitute them into the actual AST.,Take a renamed program and undo the renames.None16NVUA set of decoded mod files."The data stored in the "mod files"xMap of unique variable name to the unique name of the program unit where it was defined, and the corresponding SrcSpan.@Context of a declaration: the ProgramUnit where it was declared.(uniqName, srcName)(uniqName, srcName)1Standard ending of fortran-src-format "mod files"@Empty set of mod files. (future proof: may not always be a list)Starting point.Extracts the module map, declaration map and type analysis from an analysed and renamed ProgramFile, then inserts it into the ModFile.}Generate a fresh ModFile from the module map, declaration map and type analysis of a given analysed and renamed ProgramFile.lLooks up the raw "other data" that may be stored in a ModFile by applications that make use of fortran-src.sGet a list of the labels present in the "other data" of a ModFile. More of a meta-programming / debugging feature.Allows modification insertionmdeletion of "other data" that may be stored in a ModFile by applications that make use of fortran-src. See < for more information about the interface of this function.;Convert ModFile to a strict ByteString for writing to file.5Convert a strict ByteString to a ModFile, if possibleExtract the combined module map from a set of ModFiles. Useful for parsing a Fortran file in a large context of other modules.Extract the combined module map from a set of ModFiles. Useful for parsing a Fortran file in a large context of other modules.Extract the combined declaration map from a set of ModFiles. Useful for parsing a Fortran file in a large context of other modules.JGet the associated Fortran filename that was used to compile the ModFile.lCreate a map that links all unique variable/function names in the ModFiles to their corresponding filename.zExtract all module maps (name -> environment) by collecting all of the stored module maps within the PUModule annotation.VExtract map of declared variables with their associated program unit and source span.None      None    NoneVpNoneVNone  None;=De !"#! "#9 9 None;=De$%&'%$&'9 9 None;=De ()*+,-./01 )(*,.1+-/09 9 None;=De234532459 9 None^<PDeduce the type of parser from the filename and parse the contents of the file.=yDeduce the type of parser from the filename and parse the contents of the file, within the context of given "mod files".6789:;<=8796:;<=None16<NVG5>ACallMap : program unit name -> { name of function or subroutine }D7InductionVarMapByASTBlock : AST-block label -> { name }EEMap of loop header nodes to the induction variables within that loop.FLoopNodeMap : node -> { node }GBackEdgeMap : node -> nodeH#Represent "flows" between variablesIoFlowsGraph : nodes as AST-block (numbered by label), edges showing which definitions contribute to which uses.JUDMap : use -> { definition }KDUMap : definition -> { use }L-DefMap : variable name -> { AST-block label }MBlockMap : AST-block label -> AST-block Each AST-block has been given a unique number label during analysis of basic blocks. The purpose of this map is to provide the ability to lookup AST-blocks by label.N?OutF, a function that returns the out-dataflow for a given nodeO=InF, a function that returns the in-dataflow for a given nodeP=InOutMap : node -> (dataflow into node, dataflow out of node)Q>InOut : (dataflow into the bblock, dataflow out of the bblock)RCAn OrderF is a function from graph to a specific ordering of nodes.S-IDomMap : node -> immediate dominator of nodeT#DomMap : node -> dominators of nodeUCompute dominators of each bblock in the graph. Node A dominates node B when all paths from the start node of that program unit must pass through node A in order to reach node B. That will be represented as the relation (B, [A, ...]) in the DomMap.VjCompute the immediate dominator of each bblock in the graph. The immediate dominator is, in a sense, the closest dominator of a node. Given nodes A and B, you can say that node A is immediately dominated by node B if there does not exist any node C such that: node A dominates node C and node C dominates node B.WJThe postordering of a graph outputs the label after traversal of children.XReversed postordering.YJThe preordering of a graph outputs the label before traversal of children.ZReversed preordering.[.Compute the set of nodes with no predecessors.\-Apply the iterative dataflow analysis method.-Apply the iterative dataflow analysis method.]Build a BlockMap from the AST. This can only be performed after analyseBasicBlocks has operated, created basic blocks, and labeled all of the AST-blocks with unique numbers.^}Build a DefMap from the BlockMap. This allows us to quickly look up the AST-block labels that wrote into the given variable._Dataflow analysis for live variables given basic block graph. Muchnick, p. 445: A variable is "live" at a particular program point if there is a path to the exit along which its value may be used before it is redefined. It is "dead" if there is no such path.Iterate KILL" set through a single basic block.Iterate GEN" set through a single basic block.Iterate GENq set through a single basic block. attempt to make this faster using sets internally (no obvious speedup though)KILL set for a single AST-block.GEN set for a single AST-block.`aReaching definitions dataflow analysis. Reaching definitions are the set of variable-defining AST-block labels that may reach a program point. Suppose AST-block with label A defines a variable named v. Label A may reach another program point labeled P if there is at least one program path from label A to label P that does not redefine variable v.ahdef-use map: map AST-block labels of defining AST-blocks to the AST-blocks that may use the definition.bInvert the DUMap into a UDMapcnuse-def map: map AST-block labels of variable-using AST-blocks to the AST-blocks that define those variables.$Convert a UD or DU Map into a graph.dFlows-To, analysis. Represent def-use map as a graph.eOCreate a map (A -> Bs) where A "flows" or contributes towards the variables Bs.Finds the transitive closure of a directed graph. Given a graph G=(V,E), its transitive closure is the graph: G* = (V,E*) where E*={(i,j): i,j in V and there is a path from i to j in G}fFind the edges that 'loop back' in the graph; ones where the target node dominates the source node. If the backedges are viewed as (m -> n) then n is considered the  'loop-header'gFor each loop in the program, find out which bblock nodes are part of the loop by looking through the backedges (m, n) where n is considered the  'loop-header', delete n from the map, and then do a reverse-depth-first traversal starting from m to find all the nodes of interest. Intersect this with the strongly-connected component containing m, in case of improper& graphs with weird control transfers.hnSimilar to loopNodes except it creates a map from loop-header to the set of loop nodes, for each loop-header.i9The strongly connected component containing a given node.Basic induction variables are induction variables that are the most easily derived from the syntactic structure of the program: for example, directly appearing in a Do-statement.jFor each loop in the program, figure out the names of the induction variables: the variables that are used to represent the current iteration of the loop.kcGenerate an induction variable map that is indexed by the labels on AST-blocks within those loops.l^For every expression in a loop, try to derive its relationship to a basic induction variable.m.Show some information about dataflow analyses.n7Create a call map showing the structure of the program.\basic block graph'initialisation for in and out dataflowsordering function.compute the in-flow given an out-flow function.compute the out-flow given an in-flow functionfinal dataflow for each nodebasic block graph'initialisation for in and out dataflowsordering function.compute the in-flow given an out-flow function.compute the out-flow given an in-flow functiondataflow stepsdresult of reaching definitions1>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn1UVTSWXYZR\mQPON_`cabJKdIeH]^MLn>gfiGhFjEkD[l?@ABC@ABCNone<VUz1A mapping of program unit names to bblock graphs.{;Insert basic block graphs into each program unit's analysis|VCreate a mapping of (non-module) program unit names to their associated bblock graph.}Extract graph from SuperBBGr~ Extract entry map from SuperBBGr"Extract cluster map from SuperBBGr2Show a basic block graph in a somewhat decent way.,Show a basic block graph without the clutterShow a basic block supergraphFPick out and show the basic block graphs in the program file analysis.)Output a graph in the GraphViz DOT format.Output a supergraph in the GraphViz DOT format,Fold a function over the graph. Monadically.+Map a function over the graph. Monadically.Map a function over the  labels in a graph. Monadically.yz{|}~{|zy}~y  !"#$%&'()*+,-./0123456789:;<<==>?@ABCDEFGHIJKLMNOPQRSTUVWXXYZ[\\]^_`abccdefghhijklmnopqrsttuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aabccdefghijkllmnopqrrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstubccdfevghwijkxyzs{|}~Z./-678901?@;<=2354STWVYXQRU&%F$,"'([\ghifjkrqstnu                                                                                                                                                       ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g g h i j k l m n o p q r s t t u u v w x x y y z { | } ~                                                                                                                                                                    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                    ! " # $ $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k lmnopqrstuvwxyz{|}~      !]^_`"grrtu # $ % % & ' ( )**&'+,(-u./012334567899:;<<7899:;<<7899:;<<7899:;<<=>?@ABCDEFFGHIJKLMNOPQRSTUVWXYZ[*fortran-src-0.2.1.1-4CSp5fVEmo08Ygy2mwA6e4Language.Fortran.Parser.Utils$Language.Fortran.Util.FirstParameter%Language.Fortran.Util.SecondParameterLanguage.Fortran.Util.PositionLanguage.Fortran.ParserMonadLanguage.Fortran.IntrinsicsLanguage.Fortran.Lexer.FreeForm Language.Fortran.Lexer.FixedFormLanguage.Fortran.ASTLanguage.Fortran.PrettyPrintLanguage.Fortran.LValueLanguage.Fortran.AnalysisLanguage.Fortran.Analysis.Types"Language.Fortran.Analysis.RenamingLanguage.Fortran.Util.ModFile.Language.Fortran.Transformation.TransformMonad(Language.Fortran.Transformation.Grouping8Language.Fortran.Transformation.Disambiguation.Intrinsic7Language.Fortran.Transformation.Disambiguation.FunctionLanguage.Fortran.Transformer!Language.Fortran.Parser.Fortran95!Language.Fortran.Parser.Fortran90!Language.Fortran.Parser.Fortran77!Language.Fortran.Parser.Fortran66Language.Fortran.Parser.Any"Language.Fortran.Analysis.DataFlow!Language.Fortran.Analysis.BBlocksData.Map.StrictalterreadReal readIntegerGFirstParametergetFirstParameter'setFirstParameter'FirstParametergetFirstParametersetFirstParameter$fGFirstParameterU1[]$fGFirstParameter:*:e$fGFirstParameter:+:e$fGFirstParameterM1e$fGFirstParameterK1e$fGFirstParameterK1e0SecondParametergetSecondParametersetSecondParameter$fGSecondParameter:+:e$fGSecondParameterM1e$fGSecondParameterK1e$fGSecondParameter'K1e$fGSecondParameter'K1e0$fGSecondParameter':*:e$fGSecondParameter'M1e$fParameterLeaf:*:$fParameterLeafM1$fGSecondParameter:*:eSpannedgetSpansetSpanSrcSpanPositionposAbsoluteOffset posColumnposLineLocgetPos initPositionlineColcolumnDistance lineDistance initSrcSpan$fShowPosition$fBinaryPosition $fOutSrcSpan $fShowSrcSpan$fBinarySrcSpan$fSpannedSrcSpan $fEqPosition $fOrdPosition$fDataPosition$fGenericPosition $fEqSrcSpan $fOrdSrcSpan $fDataSrcSpan$fGenericSrcSpanTokeofTokenParseunParse LastToken getLastTokenParseErrorSimpleerrorPos errorFilenameerrorMsg ParseResultParseOk ParseFailed ParseErrorerrPos errLastToken errFilenameerrMsg ParseState psAlexInputpsParanthesesCount psVersion psFilename psContextContextConStartConData ConImplicit ConNamelist ConCommonParanthesesCountpcActual pcHasReached0FortranVersion Fortran66 Fortran77Fortran77ExtendedFortran77Legacy Fortran90 Fortran95 Fortran2003 Fortran2008tokenMsgfromParseResultUnsafe fromRightfromParseResult getVersionputAlexgetAlex topContext popContext pushContext getPosition getSrcSpangetParanthesesCountresetParincPardecPar throwIOerrorrunParserunParseUnsafe evalParse execParse collectTokenscollectTokensSafe$fShowFortranVersion$fExceptionParseError$fShowParseError$fFunctorParseResult$fShowParseErrorSimple$fMonadErrorParseErrorParse$fMonadStateParseStateParse$fApplicativeParse$fFunctorParse $fMonadParse$fOrdFortranVersion$fEqFortranVersion$fDataFortranVersion$fGenericFortranVersion$fShowParanthesesCount$fEqParanthesesCount $fShowContext $fEqContext$fShowParseStateIntrinsicsTable IntrinsicTypeITReal ITInteger ITComplexITDouble ITLogical ITCharacterITParamgetVersionIntrinsicsgetIntrinsicReturnTypegetIntrinsicDefsUsesgetIntrinsicNames isIntrinsic allIntrinsics$fShowIntrinsicType$fEqIntrinsicType$fOrdIntrinsicType$fGenericIntrinsicType$fShowIntrinsicsEntry$fEqIntrinsicsEntry$fOrdIntrinsicsEntry$fGenericIntrinsicsEntry AlexAccPredAlexAcc AlexAccNone AlexAccSkipAlexAccSkipPred AlexLastAccAlexNone AlexLastSkip AlexReturnAlexEOF AlexErrorAlexSkip AlexTokenAlexAddrAlexA# SpecifiesType isTypeSpecTokenTIdTCommentTStringTIntegerLiteral TRealLiteral TBozLiteralTCommaTComma2 TSemiColonTColon TDoubleColon TOpAssignTArrowTPercentTLeftPar TLeftPar2 TRightPar TLeftInitPar TRightInitPar TOpCustomTOpExpTOpPlusTOpMinusTStar TOpDivisionTSlashTOpOrTOpAndTOpNot TOpEquivalentTOpNotEquivalentTOpLTTOpLETOpEQTOpNETOpGTTOpGETLogicalLiteralTProgram TEndProgram TFunction TEndFunctionTResultTPure TElemental TRecursive TSubroutineTEndSubroutine TBlockData TEndBlockDataTModule TEndModule TContainsTUseTOnly TInterface TEndInterfaceTModuleProcedure TAssignment TOperatorTCallTReturnTEntryTIncludeTPublicTPrivate TParameter TAllocatable TDimension TExternalTIntent TIntrinsic TOptionalTPointerTSaveTTargetTInTOutTInOutTData TNamelist TImplicit TEquivalenceTCommonTFormatTBlob TAllocate TDeallocateTNullifyTNoneTGotoTAssignTTo TContinueTStopTPauseTDoTEndDoTWhileTIfTThenTElseTElsifTEndIfTCase TSelectCase TEndSelectTDefaultTCycleTExitTForall TEndForallTWhere TElsewhere TEndWhereTTypeTEndType TSequenceTKindTLenTIntegerTRealTDoublePrecisionTLogical TCharacterTComplexTOpenTCloseTReadTWriteTPrint TBackspaceTRewindTInquireTEndfileTEndTNewlineTEOFMove ContinuationCharNewlineUser LexAction AlexInput aiSourceBytes aiPosition aiEndOffsetaiPreviousCharaiLexeme aiStartCodeaiPreviousTokenaiPreviousTokensInLine StartCodescActualscStatusStartCodeStatusReturnStableLexeme lexemeMatch lexemeStart lexemeEnd lexemeIsCmt alex_tab_size alex_base alex_table alex_check alex_deflt alex_accept alex_actionsformatP followsDoP followsColonP selectorPifConditionEndPopPpartOfExpOrPointerAssignmentPprecedesDoubleColon attributePconstructNameP genericSpecPnotDefinedOperP typeSpecPresultPnotPrecedingDotPfollowsIntentPuseStPcaseStP assignStPprevTokenConstrnextTokenConstr seenConstr fillConstr adjustCommentleftParcommaslashOrDivisionaddSpanaddSpanAndMatch getLexeme putLexeme resetLexemegetMatchputMatchupdatePreviousTokenaddToPreviousTokensInLinecheckPreviousTokensInLine getLexemeSpan lexCharactertoSCstabiliseStartCodenormaliseStartCodeinvalidPositionisValidPosition initLexemevanillaAlexInput updateLexeme alexGetBytealexInputPrevChar currentCharadvanceWithoutContinuationisContinuationskipContinuationadvancelexerlexer'initParseStatecollectFreeTokensscCscIscNscT alex_action_0 alex_action_1 alex_action_3 alex_action_4 alex_action_5 alex_action_6 alex_action_7 alex_action_8 alex_action_9alex_action_10alex_action_11alex_action_12alex_action_13alex_action_14alex_action_15alex_action_16alex_action_17alex_action_18alex_action_19alex_action_20alex_action_21alex_action_22alex_action_23alex_action_24alex_action_25alex_action_26alex_action_27alex_action_28alex_action_29alex_action_30alex_action_31alex_action_32alex_action_33alex_action_34alex_action_35alex_action_36alex_action_37alex_action_38alex_action_39alex_action_40alex_action_41alex_action_42alex_action_43alex_action_44alex_action_45alex_action_46alex_action_47alex_action_48alex_action_49alex_action_50alex_action_51alex_action_52alex_action_53alex_action_54alex_action_55alex_action_56alex_action_57alex_action_58alex_action_59alex_action_60alex_action_61alex_action_62alex_action_63alex_action_64alex_action_65alex_action_66alex_action_67alex_action_68alex_action_69alex_action_70alex_action_71alex_action_72alex_action_73alex_action_74alex_action_75alex_action_76alex_action_77alex_action_78alex_action_79alex_action_80alex_action_81alex_action_82alex_action_83alex_action_84alex_action_85alex_action_86alex_action_87alex_action_88alex_action_89alex_action_90alex_action_91alex_action_92alex_action_93alex_action_94alex_action_95alex_action_96alex_action_97alex_action_98alex_action_99alex_action_100alex_action_101alex_action_102alex_action_103alex_action_104alex_action_105alex_action_106alex_action_107alex_action_108alex_action_109alex_action_110alex_action_111alex_action_112alex_action_113alex_action_114alex_action_115alex_action_116alex_action_117alex_action_118alex_action_119alex_action_120alex_action_121alex_action_122alex_action_123alex_action_124alex_action_125alex_action_126alex_action_127alex_action_128alex_action_129alex_action_130alex_action_131alex_action_132alex_action_133alex_action_134alex_action_135alex_action_136alex_action_137alex_action_138alex_action_139alex_action_140alex_action_141alex_action_142alex_action_143alex_action_144alex_action_145alex_action_146alex_action_147alex_action_148alex_action_149alex_action_150alex_action_151alex_action_152alex_action_153alex_action_154alex_action_155alex_action_156alex_action_157alex_action_158alex_action_159alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkn alexAndPredalexPrevCharIsalexPrevCharMatchesalexPrevCharIsOneOfalexRightContext$fSpannedLexeme $fTokToken$fSpannedToken$fFirstParameterTokenSrcSpan$fLastTokenAlexInputToken$fLocAlexInput$fSpecifiesType[]$fSpecifiesTypeToken $fShowLexeme$fShowStartCodeStatus$fShowStartCode $fEqToken $fShowToken $fDataToken$fGenericToken$fShowAlexInputaiBytesaiWhiteSensitiveCharCountaiCaseSensitive aiInFormataiFortranVersion TLeftArrayParTRightArrayParTDot TStructureTRecordTUnionTMap TEndStructure TEndUnionTEndMapTEndif TCaseDefaultTDoWhile TTypePrint TAutomaticTIntTBozInt TExponentTBool TAmpersandTOpXOr THollerithTLabellexNcollectFixedTokenscollectFixedTokensSafe $fOrdTokenNamedgetNamesetNameProgramUnitNameNamelessBlockDataNamelessComment NamelessMain Conditioned getConditionLabeledgetLabel getLastLabelsetLabel SpannedPair getTransSpan Annotated getAnnotation setAnnotationmodifyAnnotationBinaryOpAddition SubtractionMultiplicationDivisionExponentiation ConcatenationGTGTELTLTEEQNEOrXOrAnd Equivalent NotEquivalent BinCustomUnaryOpPlusMinusNotUnCustomDimensionDeclarator Declarator DeclVariable DeclArrayValue ValIntegerValReal ValComplex ValString ValHollerith ValVariable ValIntrinsic ValLogical ValOperator ValAssignmentValTypeValStarIndexIxSingleIxRange ExpressionExpValue ExpBinaryExpUnary ExpSubscript ExpDataRefExpFunctionCall ExpImpliedDoExpInitialisation ExpReturnSpecDoSpecification FormatItem FIFormatList FIHollerith FIDelimiterFIFieldDescriptorDEFGFIFieldDescriptorAILFIBlankDescriptor FIScaleFactorUnionMap StructureItem StructFields StructUnionStructStructure DataGroupNamelist CommonGroup ImpElement ImpCharacterImpRangeImpList ControlPairIntentInOutInOut Attribute AttrParameter AttrPublic AttrPrivateAttrAllocatable AttrDimension AttrExternal AttrIntent AttrIntrinsic AttrOptional AttrPointerAttrSave AttrTargetArgumentUse UseRenameUseIDOnly Exclusive Permissive ForallHeader Statement StDeclaration StStructureStIntent StOptionalStPublic StPrivateStSave StDimension StAllocatable StPointerStTargetStData StAutomatic StNamelist StParameter StExternal StIntrinsicStCommon StEquivalenceStFormat StImplicitStEntry StIncludeStDo StDoWhileStEnddoStCycleStExit StIfLogicalStIfArithmeticStIfThenStElseStElsifStEndif StSelectCaseStCase StEndcase StFunctionStExpressionAssignStPointerAssign StLabelAssignStGotoUnconditionalStGotoAssignedStGotoComputedStCallStReturn StContinueStStopStPauseStReadStRead2StWriteStPrint StTypePrintStOpenStClose StInquireStRewind StRewind2 StBackspace StBackspace2 StEndfile StEndfile2 StAllocate StNullify StDeallocateStWhereStWhereConstruct StElsewhere StEndWhereStUseStModuleProcedureStType StEndType StSequenceStForallStForallStatement StEndForall StFormatBogusBlock BlStatementBlForallBlIfBlCaseBlDo BlDoWhile BlInterface BlCommentComment PUFunctionOptNonePure Elemental IsRecursive ProgramUnitPUMainPUModule PUSubroutine PUFunction PUBlockData PUComment ProgramFileMetaInfo miVersion miFilenameSelectorTypeSpecBaseType TypeIntegerTypeRealTypeDoublePrecision TypeComplexTypeDoubleComplex TypeLogical TypeCharacter TypeCustomTypeByteAListNameA0fromListfromReverseListaConsaReverseaStripaMap pfSetFilename pfGetFilenamebuildPUFunctionOptbuildPUFunctionOptsfunctionIsRecursiveprogramUnitBodyupdateProgramUnitBodyprogramUnitSubprogramssetInitialisationnonExecutableStatementexecutableStatementexecutableStatementBlocknonExecutableStatementBlock$fOutFortranVersion $fOutAList$fSpannedAList$fSecondParameterAListSrcSpan$fFirstParameterALista$fFunctorAList $fOutBaseType$fBinaryBaseType $fOutMetaInfo$fOutPUFunctionOpt$fSpannedPUFunctionOpt%$fSecondParameterPUFunctionOptSrcSpan$fFirstParameterPUFunctionOpta $fOutComment $fOutOnly $fOutIntent$fOutImpElement$fSpannedImpElement"$fSecondParameterImpElementSrcSpan$fFirstParameterImpElementa $fOutUnaryOp $fOutBinaryOp$fOutForallHeader$fOutControlPair$fOutDimensionDeclarator$fOutDeclarator $fOutSelector $fOutTypeSpec $fOutValue$fOutDoSpecification $fOutIndex$fOutExpression$fOutFormatItem $fOutNamelist $fOutUnionMap$fOutStructureItem$fOutDataGroup$fOutCommonGroup $fOutBlock $fOutImpList$fOutAttribute$fOutUse $fOutArgument$fOutStatement$fOutProgramUnit$fSpannedControlPair$fSpannedDimensionDeclarator$fSpannedDeclarator$fSpannedDoSpecification$fSpannedIndex$fSpannedExpression$fSpannedFormatItem$fSpannedNamelist$fSpannedUnionMap$fSpannedStructureItem$fSpannedDataGroup$fSpannedCommonGroup$fSpannedBlock$fSpannedImpList$fSpannedSelector$fSpannedTypeSpec$fSpannedAttribute $fSpannedUse$fSpannedArgument$fSpannedStatement$fSpannedProgramUnit#$fSecondParameterControlPairSrcSpan+$fSecondParameterDimensionDeclaratorSrcSpan"$fSecondParameterDeclaratorSrcSpan'$fSecondParameterDoSpecificationSrcSpan$fSecondParameterIndexSrcSpan"$fSecondParameterExpressionSrcSpan"$fSecondParameterFormatItemSrcSpan $fSecondParameterNamelistSrcSpan $fSecondParameterUnionMapSrcSpan%$fSecondParameterStructureItemSrcSpan!$fSecondParameterDataGroupSrcSpan#$fSecondParameterCommonGroupSrcSpan$fSecondParameterImpListSrcSpan!$fSecondParameterAttributeSrcSpan $fSecondParameterSelectorSrcSpan $fSecondParameterTypeSpecSrcSpan$fSecondParameterUseSrcSpan $fSecondParameterArgumentSrcSpan!$fSecondParameterStatementSrcSpan$fSecondParameterBlockSrcSpan#$fSecondParameterProgramUnitSrcSpan$fFirstParameterControlPaira$$fFirstParameterDimensionDeclaratora$fFirstParameterDeclaratora $fFirstParameterDoSpecificationa$fFirstParameterIndexa$fFirstParameterExpressiona$fFirstParameterFormatItema$fFirstParameterNamelista$fFirstParameterUnionMapa$fFirstParameterStructureItema$fFirstParameterDataGroupa$fFirstParameterCommonGroupa$fFirstParameterImpLista$fFirstParameterAttributea$fFirstParameterSelectora$fFirstParameterTypeSpeca$fFirstParameterUsea$fFirstParameterArgumenta$fFirstParameterStatementa$fFirstParameterBlocka$fFirstParameterProgramUnita$fOutProgramFile$fSpannedProgramFile$fAnnotatedControlPair$fAnnotatedDimensionDeclarator$fAnnotatedDeclarator$fAnnotatedDoSpecification$fAnnotatedIndex$fAnnotatedExpression$fAnnotatedFormatItem$fAnnotatedNamelist$fAnnotatedUnionMap$fAnnotatedStructureItem$fAnnotatedDataGroup$fAnnotatedCommonGroup$fAnnotatedImpElement$fAnnotatedImpList$fAnnotatedAttribute$fAnnotatedSelector$fAnnotatedTypeSpec$fAnnotatedUse$fAnnotatedArgument$fAnnotatedStatement$fAnnotatedBlock$fAnnotatedProgramUnit$fAnnotatedAList$fSpannedPaira[]$fSpannedPaira[]0$fSpannedPairab $fSpanned(,,)$fSpanned(,,)0$fSpanned(,,)1$fSpanned(,,)2 $fSpanned(,) $fSpanned(,)0 $fSpanned(,)1 $fSpanned[]$fLabeledBlock$fConditionedStatement$fConditionedBlock$fBinaryProgramUnitName$fNamedProgramUnit $fEqAList $fShowAList $fDataAList$fGenericAList $fOrdBaseType $fEqBaseType$fShowBaseType$fDataBaseType$fGenericBaseType $fEqMetaInfo$fShowMetaInfo$fDataMetaInfo$fGenericMetaInfo$fEqPUFunctionOpt$fShowPUFunctionOpt$fDataPUFunctionOpt$fGenericPUFunctionOpt$fFunctorPUFunctionOpt $fEqComment $fShowComment $fDataComment$fGenericComment$fFunctorComment$fEqOnly $fShowOnly $fDataOnly $fGenericOnly $fEqIntent $fShowIntent $fDataIntent$fGenericIntent$fEqImpElement$fShowImpElement$fDataImpElement$fGenericImpElement$fFunctorImpElement $fEqUnaryOp $fShowUnaryOp $fDataUnaryOp$fGenericUnaryOp $fEqBinaryOp$fShowBinaryOp$fDataBinaryOp$fGenericBinaryOp$fEqExpression$fShowExpression$fDataExpression$fGenericExpression$fFunctorExpression $fEqValue $fShowValue $fDataValue$fGenericValue$fFunctorValue $fEqIndex $fShowIndex $fDataIndex$fGenericIndex$fFunctorIndex$fEqDoSpecification$fShowDoSpecification$fDataDoSpecification$fGenericDoSpecification$fFunctorDoSpecification $fEqStatement$fShowStatement$fDataStatement$fGenericStatement$fFunctorStatement$fEqDeclarator$fShowDeclarator$fDataDeclarator$fGenericDeclarator$fFunctorDeclarator$fEqDimensionDeclarator$fShowDimensionDeclarator$fDataDimensionDeclarator$fGenericDimensionDeclarator$fFunctorDimensionDeclarator$fEqFormatItem$fShowFormatItem$fDataFormatItem$fGenericFormatItem$fFunctorFormatItem$fEqStructureItem$fShowStructureItem$fDataStructureItem$fGenericStructureItem$fFunctorStructureItem $fEqUnionMap$fShowUnionMap$fDataUnionMap$fGenericUnionMap$fFunctorUnionMap $fEqAttribute$fShowAttribute$fDataAttribute$fGenericAttribute$fFunctorAttribute $fEqTypeSpec$fShowTypeSpec$fDataTypeSpec$fGenericTypeSpec$fFunctorTypeSpec $fEqSelector$fShowSelector$fDataSelector$fGenericSelector$fFunctorSelector $fEqDataGroup$fShowDataGroup$fDataDataGroup$fGenericDataGroup$fFunctorDataGroup $fEqNamelist$fShowNamelist$fDataNamelist$fGenericNamelist$fFunctorNamelist$fEqCommonGroup$fShowCommonGroup$fDataCommonGroup$fGenericCommonGroup$fFunctorCommonGroup $fEqImpList $fShowImpList $fDataImpList$fGenericImpList$fFunctorImpList$fEqControlPair$fShowControlPair$fDataControlPair$fGenericControlPair$fFunctorControlPair $fEqArgument$fShowArgument$fDataArgument$fGenericArgument$fFunctorArgument$fEqUse $fShowUse $fDataUse $fGenericUse $fFunctorUse$fEqForallHeader$fShowForallHeader$fDataForallHeader$fGenericForallHeader$fFunctorForallHeader $fEqBlock $fShowBlock $fDataBlock$fGenericBlock$fFunctorBlock$fEqProgramUnit$fShowProgramUnit$fDataProgramUnit$fGenericProgramUnit$fFunctorProgramUnit$fEqProgramFile$fShowProgramFile$fDataProgramFile$fGenericProgramFile$fFunctorProgramFile$fOrdProgramUnitName$fEqProgramUnitName$fShowProgramUnitName$fDataProgramUnitName$fGenericProgramUnitNamePrettypprint'IndentablePrettypprint IndentationtooOldnewlineincIndentationindentoverlay fixedFormpprintAndRenderendGencommaSep$fFirstParameterValue[]$fIndentablePrettyUnionMap$fIndentablePretty[]$fIndentablePretty[]0$fIndentablePrettyProgramFile$fIndentablePrettyMaybe$fPrettyBinaryOp$fPrettyUnaryOp$fPrettyDimensionDeclarator$fPrettyDeclarator$fIndentablePrettyStructureItem $fPrettyValue $fPrettyIndex$fPrettyExpression$fPrettyImpElement$fPrettyDataGroup$fPrettyNamelist$fPrettyCommonGroup$fPrettyImpList$fPrettyControlPair$fPrettyDoSpecification$fPrettyFormatItem$fPrettyIntent$fPrettyAttribute$fPrettyArgument $fPrettyUse $fPrettyOnly$fPrettyStatement$fPrettySelector$fPrettyTypeSpec$fPrettyBaseType $fPrettyAList $fPretty[] $fPrettyMaybe$fIndentablePrettyBlock$fIndentablePrettyProgramUnit$fIndentablePrettyaLValue LvSimpleVar LvSubscript LvDataReftoLValue$fSpannedLValue$fAnnotatedLValue$fSecondParameterLValueSrcSpan$fFirstParameterLValuea $fEqLValue $fShowLValue $fDataLValue$fGenericLValue$fFunctorLValueAnalysisprevAnnotation uniqueName sourceNamebBlocksinsLabel moduleEnvidType allLhsVarsAnnIDTypeidVTypeidCType ConstructType CTFunction CTSubroutine CTExternal CTVariableCTArray CTParameter CTIntrinsicModEnvNameType NTSubprogram NTVariable NTIntrinsic TransFuncM TransFuncBBGrBBisNamedExpressionvarNamesrcName lvVarName lvSrcNamegenVarpuName puSrcName initAnalysis stripAnalysislhsExprsrhsExprsisLExprallVarsanalyseAllLhsVarsanalyseAllLhsVars1 allLhsVars blockRhsExprs blockVarUses blockVarDefs$fDataGr $fOutNameType$fBinaryNameType$fBinaryConstructType$fOutConstructType$fBinaryIDType $fOutIDType $fOutAnalysis$fFunctorAnalysis$fShowNameType $fEqNameType $fOrdNameType$fDataNameType$fGenericNameType$fOrdConstructType$fEqConstructType$fShowConstructType$fDataConstructType$fGenericConstructType $fOrdIDType $fEqIDType $fShowIDType $fDataIDType$fGenericIDType$fDataAnalysis$fShowAnalysis $fEqAnalysis$fGenericAnalysisTypeEnv analyseTypesanalyseTypesWithEnvextractTypeEnv$fShowInferState ModuleMapanalyseRenamesanalyseRenamesWithModuleMaprenameunrename$fShowRenameState$fEqRenameStateModFilesModFileDeclMap DeclContextDCMain DCBlockDataDCModule DCFunction DCSubroutine modFileSuffix emptyModFiles emptyModFile regenModFile genModFilelookupModFileDatagetLabelsModFileDataalterModFileData encodeModFile decodeModFilecombinedModuleMapcombinedTypeEnvcombinedDeclMapmoduleFilenamegenUniqNameToFilenameMapextractModuleMapextractDeclMap$fBinaryDeclContext$fBinaryModFile$fOrdDeclContext$fEqDeclContext$fShowDeclContext$fDataDeclContext$fGenericDeclContext $fOrdModFile $fEqModFile $fShowModFile $fDataModFile$fGenericModFile Transform runTransformgetProgramFileputProgramFilemodifyProgramFile groupForallgroupIfgroupDogroupLabeledDo groupCasedisambiguateIntrinsicdisambiguateFunction$fIndexedExpression$fIndexedArgumentTransformation GroupForallGroupIf GroupCaseGroupDoGroupLabeledDoDisambiguateFunctionDisambiguateIntrinsictransformWithModFiles transform$fEqTransformationstatementParserfunctionParserfortran95Parserfortran95ParserWithModFilesfortran90Parserfortran90ParserWithModFilesexpressionParserfortran77Parserfortran77ParserWithModFilesextended77Parserextended77ParserWithModFileslegacy77Parserlegacy77ParserWithModFileslegacy77ParserWithIncludes includeParserfortran66Parserfortran66ParserWithModFilesParserWithModFilesParser deduceVersionparserVersionsparserWithModFilesVersionsafter fortranParserfortranParserWithModFilesCallMapDerivedInductionMap InductionExprIETopIELinearIEBottomInductionVarMapByASTBlockInductionVarMap LoopNodeMap BackEdgeMap VarFlowsMap FlowsGraphUDMapDUMapDefMapBlockMapOutFInFInOutMapOrderFIDomMapDomMap dominators iDominators postOrder revPostOrderpreOrder revPreOrder noPredNodesdataFlowSolver genBlockMap genDefMapliveVariableAnalysisreachingDefinitionsgenDUMap duMapToUdMapgenUDMapgenFlowsToGraphgenVarFlowsToMapgenBackEdgeMap loopNodesgenLoopNodeMapsccWithgenInductionVarMapgenInductionVarMapByASTBlockgenDerivedInductionMap showDataFlow genCallMap$fShowInductionExpr$fEqInductionExpr$fOrdInductionExpr$fGenericInductionExpr$fDataInductionExpr $fShowIEFlow $fEqIEFlow $fOrdIEFlow$fGenericIEFlow $fDataIEFlow SuperBBGr BBlockMapanalyseBBlocks genBBlockMapsuperBBGrGraphsuperBBGrEntriessuperBBGrClusters genSuperBBGrfindLabeledBBlockshowBBGrshowAnalysedBBGr showSuperBBGr showBBlocks bbgrToDOTsuperBBGrToDOT ParameterLeafisLeafGSecondParameter'getSecondParameter''setSecondParameter''GSecondParametergetSecondParameter'setSecondParameter'fortran77intrinsicsIntrinsicsEntryIEntryiType iDefsUsesNewlineCommentcomputeAllLhsVarsstatementRhsExprs InferState langVersion intrinsicsenviron entryPoints RenameState scopeStackuniqNums moduleMap mfFilename mfModuleMap mfDeclMap mfTypeEnv mfOtherDataTransformationStatetransProgramFileIndexed fromIndex HappyAddrHappyA#HappyStk Happy_IntList HappyCons HappyAbsSyndataFlowSolver' bblockKill bblockGen bblockGenFast blockKillblockGen mapToGraphtcbasicInductionVarsIEFlow ieFlowVars ieFlowExprsufoldM'gmapM'nmapM'"fgl-5.6.0.0-DDxvYDarHoD8InSsmJt0D7Data.Graph.Inductive.GraphNodegraphclustersentriesBBStateBBSbbGraphcurBBcurNodelabelMapnumstempNumsnewEdges