updates
[phd-thesis.git] / top / toolchain.tex
1 \documentclass[tikz]{standalone}
2 \usepackage{stmaryrd}
3 \usepackage{listings}
4
5 \usepackage{../preamble/lstlangclean}
6 \usetikzlibrary{arrows.meta,shapes.symbols,matrix,positioning,calc,fit}
7 \begin{document}
8 \begin{tikzpicture}
9 \node [draw,label=above:{Clean source code}] (src) {
10 \begin{lstlisting}[language=Clean,
11 basewidth=0.5em,
12 basicstyle=\tt\scriptsize,
13 breakatwhitespace=false,
14 breaklines=true,
15 backgroundcolor=,
16 commentstyle=\sl,
17 frame=,
18 keepspaces=true,
19 keywordstyle=\bf,
20 showspaces=false,
21 showstringspaces=false,
22 showtabs=false,
23 stringstyle=\it,
24 tabsize=2]
25 someTask :: MTask v Int | ...
26 someTask =
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 }
34 \end{lstlisting}
35 };
36
37 \node (bc) [draw,node distance=4em,right=of src,label=above:{byte code}] {
38 \scriptsize
39 \begin{tabular}{ll}
40 \verb|main:| & \ldots\\
41 & \ldots\\
42 \verb|fun0:| & \ldots\\
43 & \ldots\\
44 \verb|fun1:| & \ldots\\
45 & \ldots\\
46 \verb|sds0:| & \ldots\\
47 \verb|sds1:| & \ldots\\
48 \verb|periph0:| & \ldots\\
49 \verb|periph1:| & \ldots\\
50 \end{tabular}
51 };
52 \draw [->] (src) to node [midway,above] {compile} (bc);
53
54 \matrix (m) [node distance=4em,right=of bc,matrix of nodes,nodes in empty cells,row sep=1em] {
55 interpreter & rewriter\\
56 \verb|main|\\
57 tree & tree\\
58 & \\
59 & tree\\
60 };
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);
66
67 \node (dev) [draw,fit=(m),label=above:{device}] {};
68 \draw [dashed,->] (bc) to node [midway,above] {send} (dev);
69 \end{tikzpicture}
70 \end{document}