-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstructure.dot
37 lines (33 loc) · 992 Bytes
/
structure.dot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Useful links:
// https://stackoverflow.com/questions/7115870/creating-straight-edges-in-graphviz
digraph {
rankdir=LR
splines=ortho
ranksep=0.3
nodesep=0.3
node [shape=none margin=0 width=0.75 height=0.2]
{ rank=same; input [label="input value"]; program [label="jq program"]; }
output [label="output values & errors"]
node [shape=box margin=0.1 width=0 height=0]
subgraph cluster_syntax {
label="Syntax"
hir [label="HIR"]
mir [label="MIR"]
}
subgraph cluster_semantics {
label = "Semantics"
{ rank=same; above_eval [width=0 shape=point label=""]; eval [label="Evaluation"] }
{ rank=same; update_eval [label="Update evaluation"]; value_ops [label="Value operations"] }
}
edge [arrowsize=0.5]
program -> hir
hir -> mir
mir -> eval
input -> above_eval [arrowhead=none]
above_eval -> eval [tailport=center]
eval -> output
edge [style=dashed]
eval -> update_eval [dir=both]
eval -> value_ops
update_eval -> value_ops
}