nieuwe presentatie jow
[cc1516.git] / deliverables / p3 / p3.tex
1 %&p3
2 \begin{document}
3 \frame{\titlepage}
4
5 \begin{frame}
6 \frametitle{\textsc{SPLC}}
7 \begin{block}{Features}
8 \begin{itemize}
9 \item Implementation language:
10 Clean ({\tiny\url{http://clean.cs.ru.nl}})
11 \item Type checking and type inference
12 % \item No multiple recursion\ldots\pause\ yet\ldots\pause%
13 \item Higher order functions
14 \end{itemize}
15 \end{block}
16 \end{frame}
17
18 \begin{frame}
19 \frametitle{Progress since previous presentation}
20 \begin{itemize}[<+->]
21 \item Completely redid typechecking and inference
22 \item Extended semantic analysis with
23 \begin{itemize}[<+->]
24 \item Complain when unknown functions are used
25 \item Complain when there is no main
26 \item Complain when \CI{Void} is used as a non terminal type
27 \item Complain when duplicate functions are used
28 \item Complain when the main is not of the correct form
29 \end{itemize}
30 \item Higher order functions
31 \item Code generation for expressions
32 \item A lot needs to be done\ldots
33 \end{itemize}
34 \end{frame}
35
36 \begin{frame}[fragile]
37 \frametitle{Type checking}
38 \begin{block}{Two pass}
39 \begin{itemize}
40 \item Constraint collecting
41 \item Constraint satisfaction
42 \end{itemize}
43 \end{block}
44 \pause%
45 \begin{block}{\CI{RWST}}
46 \begin{CleanCode}
47 :: Scheme = Forall [TVar] Type
48 :: Gamma :== Map String Scheme
49 :: Typing a :== StateT (Gamma, [TVar]) (Either SemError) a
50 :: Substitution :== `Map'.Map TVar Type
51 :: Constraints :== [(Type, Type)]
52 :: SemError
53 \end{CleanCode}
54 \end{block}
55 \end{frame}
56
57 \begin{frame}[fragile]
58 \frametitle{Code generation}
59 \begin{block}{}
60 \begin{CleanCode}
61 :: SSMProgram :== [Instr]
62 :: Instr = Instr String [Arg] String
63 | Lab Label
64 :: Label :== String
65 :: Arg = L Label | Lit Int | Raw String
66 :: GenError = Error String
67 :: GenMap :== Map String LoadPlace
68 :: LoadPlace = LDA Int | LDC Int | LDH Int | LDL Int
69 | LDR Int | LDS Int
70 | FUNC Label
71 \end{CleanCode}
72 \end{block}
73 \pause%
74 \begin{block}{\CI{RWST} we meet again}
75 \begin{CleanCode}
76 :: Gen a :== RWST () SSMProgram (GenMap, [Label]) (Either GenError) a
77 \end{CleanCode}
78 \end{block}
79 \end{frame}
80
81 \begin{frame}[fragile]
82 \frametitle{Future}
83 \begin{block}{Higher order functions}
84 Read up on how to implement higher order functions
85 \end{block}
86 \pause%
87 \begin{block}{Hand in hand with code generation}
88 To get a fully working compiler and report before the deadline
89 \end{block}
90 \end{frame}
91 \end{document}