1 \documentclass[tikz
]{standalone
}
5 \usepackage{../preamble/lstlangclean
}
6 \usetikzlibrary{arrows.meta,shapes.symbols,matrix,positioning,calc,fit
}
9 \node [draw,label=above:
{Clean source code
}] (src)
{
10 \begin{lstlisting
}[language=Clean,
12 basicstyle=
\tt\scriptsize,
13 breakatwhitespace=false,
21 showstringspaces=false,
25 someTask :: MTask v Int | ...
27 sensor1 config1
\sns1->
28 sensor2 config2
\sns2->
29 sds
\s1 = initialValue
30 In lowerSds
\s2 = someiTaskSDS
31 In fun
\fun1= ( \(a0, a1)->...)
32 In fun
\fun2= (
\a->...)
33 In
{ main = mainexpr
}
37 \node (bc)
[draw,node distance=
4em,right=of src,label=above:
{byte code
}] {
40 \verb|main:| &
\ldots\\
42 \verb|fun0:| &
\ldots\\
44 \verb|fun1:| &
\ldots\\
46 \verb|sds0:| &
\ldots\\
47 \verb|sds1:| &
\ldots\\
48 \verb|periph0:| &
\ldots\\
49 \verb|periph1:| &
\ldots\\
52 \draw [->
] (src) to node
[midway,above
] {compile
} (bc);
54 \matrix (m)
[node distance=
4em,right=of bc,matrix of nodes,nodes in empty cells,row sep=
1em
] {
55 interpreter & rewriter\\
61 \draw [->
] (m-
2-
1) -- (m-
3-
1);
62 \draw [->
] (m-
3-
1) -- (m-
3-
2);
63 \draw [->
] (m-
3-
2) -- (m-
4-
2.north) -- (m-
4-
1.north) -- (m-
4-
1.south) -- (m-
4-
2.south) -- (m-
5-
2);
64 \draw [dashed
]($(m-
1-
1.north)!
0.5!(m-
1-
2.north)$) -- ($(m-
5-
1.south)!
0.5!(m-
5-
2.south)$);
65 \draw [->
] (m-
5-
2) to
[out=
0,in=
0] (m-
3-
2);
67 \node (dev)
[draw,fit=(m),label=above:
{device
}] {};
68 \draw [dashed,->
] (bc) to node
[midway,above
] {send
} (dev);