úΚ8portableunstableAndy Gill <andygill@ku.edu> ? takes a list of attributes, generates a new node, and gives a . 3 allows a user to use their own (Int-based) node id'"s, without needing to remap them. 9 takes a NodeId, and adds some attributes to that node.  generates an edge between two s, with attributes.  generates an edge between two s. C groups a subgraph together; in dot these are the subgraphs inside { and }. U is when a set of nodes share specific attributes. Usually used for layout tweaking. 6 provides a combinator for a common pattern; a set of s with the same rank. B builds an explicit, internally named subgraph (called cluster). ) gives a attribute to the current scope.   ( !"#$%State of the diagram builder &'0name of the swimline, ID of the last node on it ( number of the next diagram tier ) IDs of all swimline start nodes BFlow could include messages and actions, one item per source line 9Action (actor, message text). Syntax in the source file: actor: message text =Message (from, to, message text). Syntax in the source file: from -> to: message text $ take a list of flow diagram items (%) and converts them to Graphviz code *+,-./01234@Parse specified file and return Flow Diagram contained therein. " All syntax errors are thrown via 5 >Parse given string and return Flow Diagram contained therein. " All syntax errors are thrown via 5 6789:;<=>?,Print element of the flow diagram as String @AB        !!"##$%&'()*+,-./0123456789:;<=>?@Aflow2dot-0.6.1Text.FlowDiagramText.DotFlowActionMsgflow2dotparseFlowFromFile parseFlowshowFlowDotunDot GraphElementSubGraphScope GraphEdge GraphNodeGraphAttributeNodeId UserNodeIdDotGraphnode userNodeIduserNodeedgescope.->.sharesamecluster attributeshowDotMessageNameDiagramDiagS swimlinesnumTierheadings flow2dot'flowElement2dotmkLabel invisNodereflow connectToPrevmkHeaderincTier getSwimline setSwimline addHeadingbaseGHC.ErrerrordocumentflowLineparseMsg parseAction identifier whitespaceanythingtrimlistOf' vectorOf' prop_reparseprop_russian_k