many 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 % \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};
79 %
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}] {};
84 \end{tikzpicture}
85 \end{document}