blob: bf7403f7226bb9aa8c4b5870c998f8a04fdd0355 (
plain)
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
digraph Lattice {
// Define nodes
splines=false;
node [shape=circle, style=filled, fillcolor=lightblue];
nodesep=0.6;
TOP [label="⊤"];
BOT [label="⊥"];
XCTRL [label="~Ctrl"];
CTRL [label="Ctrl"];
INT_TOP [label="IntTop"];
INT_BOT [label="IntBot"];
INT_MIN [label="-n"];
INT_MINDOTS [label="..." shape=none style=none];
INT_ZERO [label="0"];
INT_MAXDOTS [label="..." shape=none style=none];
INT_MAX [label="+n"];
TUPLE [label="TUPLE"];
STRUCT_TOP [label="$TOP"];
STRUCT_S1 [label="S1"];
STRUCT_DOTS [label="..." shape=none style=none];
STRUCT_SN [label="Sn"];
STRUCT_BOT [label="$BOT"]
PTR_TOP [label="*$TOP"];
PTR_NULL [label="null"];
PTR_VOIDPTR [label="*void"];
PTR_S1 [label="*S1"];
PTR_SDOTS [label="..." shape=none style=none];
PTR_SN [label="*SN"];
PTR_S1OPT [label="*S1?"];
PTR_SOPTDOTS [label="..." shape=none style=none];
PTR_SNOPT [label="*SN?"];
PTR_BOT [label="*$BOT?"];
MEM_TOP [label="MEM#TOP"];
MEM_ALIAS1 [label="#1"];
MEM_ALIAS2 [label="#2"];
MEM_ALIASDOTS [label="..." shape=none style=none];
MEM_ALIASN [label="#n"];
MEM_BOT [label="MEM#BOT"];
// Define edges
edge [arrowhead=none];
TOP -> XCTRL;
XCTRL -> CTRL;
CTRL -> BOT;
TOP -> INT_TOP;
INT_TOP -> INT_MIN;
INT_TOP -> INT_MINDOTS;
INT_TOP -> INT_ZERO;
INT_TOP -> INT_MAXDOTS;
INT_TOP -> INT_MAX;
INT_MIN -> INT_BOT;
INT_MINDOTS -> INT_BOT;
INT_ZERO -> INT_BOT;
INT_MAXDOTS -> INT_BOT;
INT_MAX -> INT_BOT;
INT_BOT -> BOT;
INT_MIN -> INT_MINDOTS -> INT_ZERO -> INT_MAXDOTS -> INT_MAX [style=invis];
TOP -> TUPLE;
TUPLE -> BOT;
TOP -> STRUCT_TOP;
STRUCT_TOP -> STRUCT_S1;
STRUCT_TOP -> STRUCT_DOTS;
STRUCT_TOP -> STRUCT_SN;
STRUCT_S1 -> STRUCT_BOT;
STRUCT_DOTS -> STRUCT_BOT;
STRUCT_SN -> STRUCT_BOT;
STRUCT_BOT -> BOT;
STRUCT_S1 -> STRUCT_DOTS -> STRUCT_SN [style=invis];
TOP -> PTR_TOP;
PTR_TOP -> PTR_S1;
PTR_TOP -> PTR_SDOTS;
PTR_TOP -> PTR_SN;
PTR_TOP -> PTR_NULL;
PTR_TOP -> PTR_VOIDPTR;
PTR_NULL -> PTR_BOT;
PTR_NULL -> PTR_S1OPT;
PTR_NULL -> PTR_SOPTDOTS;
PTR_NULL -> PTR_SNOPT;
PTR_S1 -> PTR_S1OPT;
PTR_S1 -> PTR_VOIDPTR;
PTR_SDOTS -> PTR_SOPTDOTS;
PTR_SDOTS -> PTR_VOIDPTR;
PTR_SN -> PTR_SNOPT;
PTR_SN -> PTR_VOIDPTR;
PTR_VOIDPTR -> PTR_BOT;
PTR_S1OPT -> PTR_BOT;
PTR_SOPTDOTS -> PTR_BOT;
PTR_SNOPT -> PTR_BOT;
PTR_BOT -> BOT;
PTR_S1 -> PTR_SDOTS -> PTR_SN [style=invis];
PTR_S1OPT -> PTR_SOPTDOTS -> PTR_SNOPT [style=invis];
TOP -> MEM_TOP;
MEM_TOP -> MEM_ALIAS1;
MEM_TOP -> MEM_ALIAS2;
MEM_TOP -> MEM_ALIASDOTS;
MEM_TOP -> MEM_ALIASN;
MEM_ALIAS1 -> MEM_BOT;
MEM_ALIAS2 -> MEM_BOT;
MEM_ALIASDOTS -> MEM_BOT;
MEM_ALIASN -> MEM_BOT;
MEM_BOT -> BOT;
MEM_ALIAS1 -> MEM_ALIAS2 -> MEM_ALIASDOTS -> MEM_ALIASN [style=invis];
// Additional customization
{rank=same; TOP;}
{rank=same; INT_TOP; XCTRL; STRUCT_TOP; PTR_TOP; MEM_TOP;}
{rank=same; PTR_S1; PTR_SDOTS; PTR_SN;}
{rank=same; INT_MIN; INT_MINDOTS;
INT_ZERO; INT_MAXDOTS;
INT_MAX; TUPLE; STRUCT_S1; STRUCT_DOTS; STRUCT_SN;
PTR_NULL; PTR_VOIDPTR;
MEM_ALIAS1; MEM_ALIAS2;
MEM_ALIASDOTS; MEM_ALIASN;}
{rank=same; PTR_S1OPT; PTR_SOPTDOTS; PTR_SNOPT; }
{rank=same; INT_BOT; CTRL; STRUCT_BOT; PTR_BOT; MEM_BOT;}
{rank=same; BOT;}
}
|