úÎ!¦portableunstableAndy 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 2s, with optional node sub-labels, and 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. "##* generates a simple graph from a netlist. Attributes for each node Out edges leaving each node  The netlist  !"# !"#)$%&'()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 7Tries to put swimlines in the specified order. Syntax: order swimline1 swimline2 ... 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 ./012345678@Parse specified file and return Flow Diagram contained therein. " All syntax errors are thrown via 9 >Parse given string and return Flow Diagram contained therein. " All syntax errors are thrown via 9 :;<=>?@ABC,Print element of the flow diagram as String DEF       !"#$$%%&''()*+,-./0123456789:;<=>?@ABCDE flow2dot-0.7Text.FlowDiagramText.DotFlowOrderActionMsgflow2dotparseFlowFromFile parseFlowshowFlowDotunDot GraphElementSubGraphScope GraphEdge' GraphEdge GraphNodeGraphAttributeNodeId UserNodeIdDotGraphnode userNodeIduserNodeedgeedge'scope.->.sharesamecluster attributeshowDot netlistGraphMessageNameDiagramDiagS swimlinesnumTierheadings flow2dot'flowElement2dotmkLabel invisNodereflow connectToPrevmkHeaderincTier getSwimline setSwimline addHeadingbaseGHC.ErrerrordocumentflowLineparseMsg parseAction identifier whitespaceanythingtrimlistOf' vectorOf' prop_reparseprop_russian_k