Index of sample files created by Graph::Easy::Marpa V 2.00.

All scripts, input files and output files required to generate these examples are shipped in the Graph::Easy::Marpa distro.

Some sample data is deliberately faulty, and so does not show up here. Some sample data contains fake attributes, just to test the code. These will make 'dot' die, but are included here.

The output for input file data/graph.04.ge corresponds to the output for scripts/jointed.edges.pl in the GraphViz2 demo.

Input file # 1 - data/class.edge.01.ge:
# Class with no attributes (and no graph). Error.
edge
# Class with no attributes (and no graph). Error.

Output file # 1 - None
Input file # 2 - data/class.edge.02.ge:
# Class with attributes but no graph. Error.
edge {color: green;}
# Class with attributes but no graph. Error.

Output file # 2 - None
Input file # 3 - data/class.edge.03.ge:
# Class with attributes. OK.
edge {color: green} [node.1] -> [node.2]
# Class with attributes. OK.

Output file # 3 - html/class.edge.03.svg
Input file # 4 - data/class.edge.04.ge:
# Classes with and without attributes. Error.
edge {color: green} graph [node.1] -> [node.2]
# Classes with and without attributes. Error.

Output file # 4 - None
Input file # 5 - data/class.edge.05.ge:
# Classes with attributes. OK.
edge {color: green} node {color: lightblue} [node.1] {color: pink} -> [node.2]
# Classes with attributes. OK.

Output file # 5 - html/class.edge.05.svg
Input file # 6 - data/class.edge.06.ge:
# Class with attributes. OK.
edge.blue {arrowtail: odot; color: blue; dir: both} [node.1] -> {class: blue} [node.2]
# Class with attributes. OK.

Output file # 6 - html/class.edge.06.svg
Input file # 7 - data/class.global.01.ge:
# Global class. OK.
global {directed: 0} [node.1] -- [node.2]
# Global class. OK.

Output file # 7 - html/class.global.01.svg
Input file # 8 - data/class.graph.01.ge:
# Class with no attributes and no graph. Error.
graph
# Class with no attributes and no graph. Error.

Output file # 8 - None
Input file # 9 - data/class.graph.02.ge:
# Class with attributes but no graph. Error.
graph {color: blue}
# Class with attributes but no graph. Error.

Output file # 9 - None
Input file # 10 - data/class.graph.03.ge:
# Illegal class name. Error.
x {color: blue} [node.1]
# Illegal class name. Error.

Output file # 10 - None
Input file # 11 - data/class.graph.04.ge:
# Illegal class name. Error.
graph. {color: blue} [node.1]
# Illegal class name. Error.

Output file # 11 - None
Input file # 12 - data/class.graph.05.ge:
# Graph class. OK.
graph {rankdir: LR} [node.1] -- [node.2]
# Graph class. OK.

Output file # 12 - html/class.graph.05.svg
Input file # 13 - data/class.group.01.ge:
# Class with no attributes and no graph. Error.
group
# Class with no attributes and no graph. Error.

Output file # 13 - None
Input file # 14 - data/class.group.02.ge:
# Class with attributes but no graph. Error.
group {color: red}
# Class with attributes but no graph. Error.

Output file # 14 - None
Input file # 15 - data/class.group.03.ge:
# Group without attributes. OK.
(cluster.1: [node.1] -> [node.2])
# Group without attributes. OK.

Output file # 15 - html/class.group.03.svg
Input file # 16 - data/class.group.04.ge:
# Group with attributes. OK.
(cluster.1: [node.1] -> [node.2]) {class: group}
# Group with attributes. OK.

Output file # 16 - html/class.group.04.svg
Input file # 17 - data/class.group.05.ge:
# Group with attributes. OK.
group {bgcolor: red} (cluster.1: [node.1] -> [node.2]) {class: group}
# Group with attributes. OK.

Output file # 17 - html/class.group.05.svg
Input file # 18 - data/class.group.06.ge:
# Edge, group and node classes. OK.
edge {color: white} group {bgcolor: red} node.green {color: green; shape: rect} (cluster.1: [node.1] {class: green} -> [node.2]) {class: group}
# Edge, group and node classes. OK.

Output file # 18 - html/class.group.06.svg
Input file # 19 - data/class.node.01.ge:
# Class with no attributes and no graph. Error.
node
# Class with no attributes and no graph. Error.

Output file # 19 - None
Input file # 20 - data/class.node.02.ge:
# Class with attributes but no graph. Error.
node {color: yellow}
# Class with attributes but no graph. Error.

Output file # 20 - None
Input file # 21 - data/class.node.03.ge:
# Subclass with no attributes (and no graph). Error.
node.green
# Subclass with no attributes (and no graph). Error.

Output file # 21 - None
Input file # 22 - data/class.node.04.ge:
# Subclass with attributes but no graph. Error.
node.green {color: green}
# Subclass with attributes but no graph. Error.

Output file # 22 - None
Input file # 23 - data/class.node.05.ge:
# Unused class with attributes. OK.
node.green {color: green} [node.1] -> [node.2]
# Unused class with attributes. OK.

Output file # 23 - html/class.node.05.svg
Input file # 24 - data/class.node.06.ge:
# Classes with and without attributes. Error.
node.green {color: green} graph [node.1] -> [node.2]
# Classes with and without attributes. Error.

Output file # 24 - None
Input file # 25 - data/class.node.07.ge:
# Class with attributes. OK.
node.green {color: green} [node.1] {color: pink} -> [node.2]
# Class with attributes. OK.

Output file # 25 - html/class.node.07.svg
Input file # 26 - data/class.node.08.ge:
# Class with attributes. OK.
node.green {color: green} [node.1] {color: pink} -> [node.2] {class: green}
# Class with attributes. OK.

Output file # 26 - html/class.node.08.svg
Input file # 27 - data/class.node.09.ge:
# Classes with attributes. OK.
edge {color: blue; arrowhead: odot} node.green {color: green; shape: rect} [node.1] {color: pink} -> [node.2] {class: green}
# Classes with attributes. OK.

Output file # 27 - html/class.node.09.svg
Input file # 28 - data/edge.01.ge:
# Edge. OK.
--
# Edge. OK.

Output file # 28 - html/edge.01.svg
Input file # 29 - data/edge.02.ge:
# Edge with attributes. OK.
--{color:cornflowerblue}
# Edge with attributes. OK.

Output file # 29 - html/edge.02.svg
Input file # 30 - data/edge.03.ge:
# Juxtaposed edges (without comma) without attributes. OK.
-- --
# Juxtaposed edges (without comma) without attributes. OK.

Output file # 30 - html/edge.03.svg
Input file # 31 - data/edge.04.ge:
# Juxtaposed edges (with comma) without attributes. OK.
--, --
# Juxtaposed edges (with comma) without attributes. OK.

Output file # 31 - html/edge.04.svg
Input file # 32 - data/edge.05.ge:
# Juxtaposed edges (without comma) with attributes. OK.
--{color:cornflowerblue} --{color:red}
# Juxtaposed edges (without comma) with attributes. OK.

Output file # 32 - html/edge.05.svg
Input file # 33 - data/edge.06.ge:
# Juxtaposed edges (with comma) with attributes. OK.
--{color:cornflowerblue},--{color:red}
# Juxtaposed edges (with comma) with attributes. OK.

Output file # 33 - html/edge.06.svg
Input file # 34 - data/edge.07.ge:
# Edge followed by node. OK.
--{color:cornflowerblue}[node.1]{color:red}
# Edge followed by node. OK.

Output file # 34 - html/edge.07.svg
Input file # 35 - data/edge.08.ge:
# Edges with fancy arrows. OK.
[node.1]{color:green}--{color:maroon; arrowhead: box; dir: forward; label: box} [node.2]{color:blue}
[node.3]{color:green}--{color:maroon; arrowhead: crow; dir: forward; label: crow} [node.4]{color:blue}
[node.5]{color:green}--{color:maroon; arrowhead: diamond; dir: forward; label: diamond} [node.6]{color:blue}
[node.7]{color:green}--{color:maroon; arrowhead: veevee; dir: forward; label: veevee} [node.8]{color:blue}
[node.9]{color:green}--{color:maroon; arrowhead: teetee; dir: forward; label: teetee} [node.10]{color:blue}
[node.11]{color:green}--{color:maroon; arrowhead: odot; dir: forward; label: odot} [node.12]{color:blue}
# Edges with fancy arrows. OK.

Output file # 35 - html/edge.08.svg
Input file # 36 - data/edge.09.ge:
# Juxtaposed edges (without any spacing) without attributes. OK.
------
# Juxtaposed edges (without any spacing) without attributes. OK.

Output file # 36 - html/edge.09.svg
Input file # 37 - data/graph.01.ge:
# Ends with edge without attributes. OK.
[node.1]{color: red}->{color: green;}->{color: red}[node.2]
# Ends with edge without attributes. OK.

Output file # 37 - html/graph.01.svg
Input file # 38 - data/graph.02.ge:
# Juxtapositioned edges (without comma). OK.
[Murrumbeena] {color: blue} -> {color: green} -> {color: red} [Carnegie] {color: crimson} -> {color: brown} [Chadstone] {color: blueviolet}
# Juxtapositioned edges (without comma). OK.

Output file # 38 - html/graph.02.svg
Input file # 39 - data/graph.03.ge:
# Juxtapositioned edges (with comma). OK.
[Murrumbeena] {color: blue} -> {color: green}, -> {color: red} [Carnegie] {color: crimson} -- {color: brown} [Chadstone] {color: blueviolet}
# Juxtapositioned edges (with comma). OK.

Output file # 39 - html/graph.03.svg
Input file # 40 - data/graph.04.ge:
# Reverse-engineered from GraphViz2/scripts/joint.edges.pl. OK.

[Carnegie] {color: aquamarine; style: filled}
-> {arrowhead: none; samehead: 1}
[one] {label:''; style: filled; fillcolor: white; fixedsize: 1; width: 0; height: 0}

[Murrumbeena] {color: bisque; style: filled}
-> {arrowhead: none; samehead: 1}
[one]

[one]
-> {sametail: 1}
[Oakleigh] {color: blueviolet; style: filled}

[Ashburton] {color: chartreuse; style: filled}
-> {arrowhead: none; samehead: 1}
[two] {label:''; style: filled; fillcolor: white; fixedsize: 1; width: 0; height: 0}

[Chadstone] {color: coral; style: filled}
-> {arrowhead: none; samehead: 1}
[two]

[two]
-> {sametail: 1}
[Waverley] {color: crimson; style: filled}
# Reverse-engineered from GraphViz2/scripts/joint.edges.pl. OK.

Output file # 40 - html/graph.04.svg
Input file # 41 - data/group.01.ge:
# Group with attributes. OK.
group {bgcolor: red} (cluster.1: [node.1] -> [node.2]) {class: group}
# Group with attributes. OK.

Output file # 41 - html/group.01.svg
Input file # 42 - data/node.01.ge:
# Empty file. Error.
# Empty file. Error.

Output file # 42 - None
Input file # 43 - data/node.02.ge:
# Anonymous node without attributes. OK.
[]
# Anonymous node without attributes. OK.

Output file # 43 - html/node.02.svg
Input file # 44 - data/node.03.ge:
# Named node with space. OK.
[Perl 6]
# Named node with space. OK.

Output file # 44 - html/node.03.svg
Input file # 45 - data/node.04.ge:
# Anonymous node with attributes. OK.
[]{color:red}
# Anonymous node with attributes. OK.

Output file # 45 - html/node.04.svg
Input file # 46 - data/node.05.ge:
# Named node with attributes. OK.
[node.1]{color:red}
# Named node with attributes. OK.

Output file # 46 - html/node.05.svg
Input file # 47 - data/node.06.ge:
# Juxtaposed nodes (without comma) with attributes. OK.
[node.1]{color:red}[node.2]{color:blue}
# Juxtaposed nodes (without comma) with attributes. OK.

Output file # 47 - html/node.06.svg
Input file # 48 - data/node.07.ge:
# Juxtaposed nodes (with comma) with attributes. OK.
[node.1]{color:red},[node.2]{color:blue}
# Juxtaposed nodes (with comma) with attributes. OK.

Output file # 48 - html/node.07.svg
Input file # 49 - data/node.08.ge:
# Named node, with spaces. OK.
[ node.1 ]
# Named node, with spaces. OK.

Output file # 49 - html/node.08.svg
Input file # 50 - data/node.09.ge:
# Named node with attributes, with spaces. OK.
[ node.1 ] { color : red }
# Named node with attributes, with spaces. OK.

Output file # 50 - html/node.09.svg
Input file # 51 - data/node.10.ge:
# Named node with attributes, with spaces. OK.
[ node.1 ] { label : Flight Path from Melbourne to London }
# Named node with attributes, with spaces. OK.

Output file # 51 - html/node.10.svg
Input file # 52 - data/node.11.ge:
# Juxtaposed nodes (without comma) without attributes. OK.
[node.1][node.2]
# Juxtaposed nodes (without comma) without attributes. OK.

Output file # 52 - html/node.11.svg
Input file # 53 - data/node.12.ge:
# Juxtaposed nodes (with comma) without attributes. OK.
[node.1],[node.2]
# Juxtaposed nodes (with comma) without attributes. OK.

Output file # 53 - html/node.12.svg
Input file # 54 - data/node.13.ge:
# Anonymous node without attributes. OK.
[node.1] -> [] -> [node.2]
# Anonymous node without attributes. OK.

Output file # 54 - html/node.13.svg
Input file # 55 - data/node.14.ge:
# Anonymous node with attributes. OK.
[node.1] -> [] {color: red; label: 'Anonymous!'} -> [node.2]
# Anonymous node with attributes. OK.

Output file # 55 - html/node.14.svg
Input file # 56 - data/node.15.ge:
# Class node, and anonymous node. OK.
node {color: red}
[node.1] -> {arrowhead: odot; arrowtail: ediamond; color: green; dir: both; label: A; penwidth: 1}
-> {color: blue; label: B; penwidth: 3}
-> {arrowhead: box; arrowtail: invdot; color: maroon; dir: both; label: C; penwidth: 5}
[] {label: 'Some node'} -> [node.2]
# Class node, and anonymous node. OK.

Output file # 56 - html/node.15.svg
Input file # 57 - data/node.16.ge:
# Node with HTML-style label. OK.
[node.1] {color: pink; label: <<table border='1'><tr><td>HTML-style label</td></tr></table>>; shape: doublecircle}
# Node with HTML-style label. OK.

Output file # 57 - html/node.16.svg
Input file # 58 - data/node.17.ge:
# Node with HTML-style label. OK.
[node.1] {color: red; label: <<table border='0'><tr><td>HTML-style label but without borders</td></tr></table>>; shape: tripleoctagon}
# Node with HTML-style label. OK.

Output file # 58 - html/node.17.svg
Input file # 59 - data/subgraph.01.ge:
# Group opened but not closed. Error.
(
# Group opened but not closed. Error.

Output file # 59 - None
Input file # 60 - data/subgraph.02.ge:
# Group not opened but closed. Error.
)
# Group not opened but closed. Error.

Output file # 60 - None
Input file # 61 - data/subgraph.03.ge:
# Group without a name or content. Error.
()
# Group without a name or content. Error.

Output file # 61 - None
Input file # 62 - data/subgraph.04.ge:
# Group (i.e. subgraph). OK.
(cluster_1:[Great]->{arrowhead: odot}[Small]){bgcolor: lightblue; label: Creatures}
# Group (i.e. subgraph). OK.

Output file # 62 - html/subgraph.04.svg
Input file # 63 - data/subgraph.05.ge:
# Group (i.e. subgraph) + Group. OK.
(cluster_1: [Solar system] -> {arrowhead: diamond} [Earth]) {bgcolor: cornflowerblue; label: Locale}
(cluster_2: [Great] -> {arrowhead: odot} [Small]) {bgcolor: lightblue; label: Creatures}
# Group (i.e. subgraph) + Group. OK.

Output file # 63 - html/subgraph.05.svg
Input file # 64 - data/subgraph.06.ge:
# Node + Group (i.e. subgraph). OK.
[Sol] (cluster_1:[Solar system]->{arrowhead: diamond}[Earth]){bgcolor: cornflowerblue; label: Locale}
# Node + Group (i.e. subgraph). OK.

Output file # 64 - html/subgraph.06.svg
Input file # 65 - data/subgraph.07.ge:
# Group (i.e. subgraph) + Node. OK.
(cluster_1:[Solar system]->{arrowhead: diamond}[Earth]){bgcolor: cornflowerblue; label: Locale} [Sol]
# Group (i.e. subgraph) + Node. OK.

Output file # 65 - html/subgraph.07.svg
Input file # 66 - data/subgraph.08.ge:
# Edge + Group (i.e. subgraph). OK.
-> (cluster_1:[Solar system]->{arrowhead: diamond}[Earth]){bgcolor: cornflowerblue; label: Locale}
# Edge + Group (i.e. subgraph). OK.

Output file # 66 - html/subgraph.08.svg
Input file # 67 - data/subgraph.09.ge:
# Group (i.e. subgraph) + Edge. OK.
(cluster_1:[Solar system]->{arrowhead: diamond}[Earth]){bgcolor: cornflowerblue; label: Locale} ->
# Group (i.e. subgraph) + Edge. OK.

Output file # 67 - html/subgraph.09.svg
Input file # 68 - data/subgraph.10.ge:
# Node + Edge + Group (i.e. subgraph). OK.
[Andromeda] ->
(cluster_1:[Solar system]->{arrowhead: diamond}[Earth]){bgcolor: cornflowerblue; label: Locale}
# Node + Edge + Group (i.e. subgraph). OK.

Output file # 68 - html/subgraph.10.svg
Input file # 69 - data/subgraph.11.ge:
# Node + Edge + Node + Edge + Group (i.e. subgraph). OK.
[Andromeda] -> [Milky\sWay] ->
(cluster_1:[Solar system]->{arrowhead: diamond}[Earth]){bgcolor: cornflowerblue; label: Locale}
# Node + Edge + Node + Edge + Group (i.e. subgraph). OK.

Output file # 69 - html/subgraph.11.svg
Input file # 70 - data/subgraph.12.ge:
# Group (i.e. subgraph) + Edge + Node. OK.
(cluster_1:[Solar system]->{arrowhead: diamond}[Earth]){bgcolor: cornflowerblue; label: Locale}
-> [Australia]
# Group (i.e. subgraph) + Edge + Node. OK.

Output file # 70 - html/subgraph.12.svg
Input file # 71 - data/subgraph.13.ge:
# Group (i.e. subgraph) + Edge + Node + Edge + Node + Edge + Node. OK.
(cluster_1:[Solar system]->{arrowhead: diamond}[Earth]){bgcolor: cornflowerblue; label: Locale}
-> [Australia] -> [Victoria] -> [Melbourne] -> [Murrumbeena]
# Group (i.e. subgraph) + Edge + Node + Edge + Node + Edge + Node. OK.

Output file # 71 - html/subgraph.13.svg
Input file # 72 - data/subgraph.14.ge:
# Group (i.e. subgraph) + Edge + Group. OK.
(cluster_1: [Solar system]->{arrowhead: diamond}[Earth]){bgcolor: cornflowerblue; label: Locale}
->
(cluster_2: [Australia] -> [Victoria] -> [Melbourne] -> [Murrumbeena]){bgcolor: lightblue; label: Home}
# Group (i.e. subgraph) + Edge + Group. OK.

Output file # 72 - html/subgraph.14.svg
Input file # 73 - data/subgraph.15.ge:
# Group (i.e. subgraph) without a node before the edge. OK.
(cluster_1: -> [Small] )
# Group (i.e. subgraph) without a node before the edge. OK.

Output file # 73 - html/subgraph.15.svg
Input file # 74 - data/subgraph.16.ge:
# Group (i.e. subgraph) without a node after the edge. OK.
(cluster_1: [Small] -> )
# Group (i.e. subgraph) without a node after the edge. OK.

Output file # 74 - html/subgraph.16.svg
Input file # 75 - data/utf8.01.ge:
# Graph with utf8 attributes. OK.
[From]{color: green; label: Reichwaldstraße}
-> {color:maroon; label: Πηληϊάδεω Ἀχιλῆος}
[To]{color: blue; label: Δ Lady}
# Graph with utf8 attributes. OK.

Output file # 75 - html/utf8.01.svg

Links

Index page for all graph module demos


Environment

Author
Date
2013-07-30
OS
Debian V 6
Perl
5.14.2