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);
69 % \node (int) [block,node distance=5em,right=of bc.north] {Interpreter};
70 % \node (rew) [block,node distance=1em,right=of int] {Rewrite engine};
71 % \node (main) [block,node distance=.5em,below=of int] {\verb|main|};
72 % \node (t1) [block,node distance=.5em,below=of main] {tree};
73 % \node (t2) [block,node distance=1em,right=of t1] {tree};
74 % \node (t3) [block,node distance=.5em,below=of t2] {};
75 % \node (t4) [block,node distance=1em,left=of t3] {};
76 % \node (t5) [block,node distance=.5em,below=of t4] {};
77 % \node (t6) [block,node distance=1em,right=of t5] {};
78 % \node (t7) [block,node distance=.5em,below=of t6] {tree};
80 % \draw [->] (main) -- (t1);
81 % \draw [->] (t1) -- (t2);
82 % \draw [->] (t2) -- (t3) -- (t4) -- (t5) -- (t6) -- (t7);
83 % %\node (dev) [draw,fit right=of bc,label=above:{Device}] {};