-
Notifications
You must be signed in to change notification settings - Fork 38
/
pegasus.gv
97 lines (97 loc) · 2.88 KB
/
pegasus.gv
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
digraph commands {
node [shape=square];
subgraph cluster_sequence {
label="a b c";
penwidth=0;
in1 [shape=circle, label=""];
out1 [shape=circle, label="+"];
fail1 [shape=circle, label="-"];
a1 [label="a"];
b1 [label="b"];
c1 [label="c"];
edge [weight=1];
in1 -> a1 [label="1"];
a1 -> b1;
b1 -> c1;
c1 -> out1;
edge [weight=0];
a1 -> fail1 [style=dashed];
b1 -> fail1 [style=dashed, label="(1)"];
c1 -> fail1 [style=dashed, label="(1)"];
};
subgraph cluster_choice {
label="a / b / c";
penwidth=0;
in2 [shape=circle, label=""];
out2 [shape=circle, label="+"];
fail2 [shape=circle, label="-"];
a2 [label="a"];
b2 [label="b"];
c2 [label="c"];
edge [weight=1];
in2 -> a2;
a2 -> out2;
edge [weight=0];
a2 -> b2 [style=dashed];
b2 -> out2;
b2 -> c2 [style=dashed];
c2 -> out2;
c2 -> fail2 [style=dashed];
};
subgraph cluster_and {
label="&a";
penwidth=0;
in3 [shape=circle, label=""];
out3 [shape=circle, label="+"];
fail3 [shape=circle, label="-"];
a3 [label="a"];
edge [weight=1];
in3 -> a3 [label="1"];
a3 -> out3 [label="(1)"];
edge [weight=0];
a3 -> fail3 [style=dashed];
};
subgraph cluster_not {
label="!a";
penwidth=0;
in4 [shape=circle, label=""];
out4 [shape=circle, label="+"];
fail4 [shape=circle, label="-"];
a4 [label="a"];
edge [weight=1];
in4 -> a4 [label="1"];
a4 -> out4 [style=dashed];
edge [weight=0];
a4 -> fail4 [label="(1)"];
};
subgraph cluster_repetition {
label="a<min, max, b>";
penwidth=0;
in5 [shape=circle, label=""];
out5 [shape=circle, label="+"];
fail5 [shape=circle, label="-"];
a5 [label="a"];
b5 [label="b"];
set5_1 [shape=rectangle, style=rounded, label="n=0"];
set5_2 [shape=rectangle, style=rounded, label="n+=1"];
check5_1 [shape=rectangle, style=rounded, label="n<max?"];
check5_2 [shape=rectangle, style=rounded, label="n>0?"];
check5_3 [shape=rectangle, style=rounded, label="n>=min?"];
edge [weight=1];
in5 -> set5_1 [label="1"];
set5_1 -> check5_1;
check5_1 -> check5_2 [label="2"];
edge [weight=129];
check5_2 -> a5 [style=dashed];
a5 -> set5_2;
check5_3 -> out5;
edge [weight=0];
check5_1 -> check5_3 [style=dashed];
check5_2 -> b5;
b5 -> a5;
b5 -> check5_3 [style=dashed];
a5 -> check5_3 [style=dashed, label="(2)"];
set5_2 -> check5_1;
check5_3 -> fail5 [style=dashed, label="(1)"];
};
}