23 \begin{frame}[t] |
23 \begin{frame}[t] |
24 \frametitle{% |
24 \frametitle{% |
25 \begin{tabular}{@ {}c@ {}} |
25 \begin{tabular}{@ {}c@ {}} |
26 \\[-3mm] |
26 \\[-3mm] |
27 \LARGE Compilers and \\[-2mm] |
27 \LARGE Compilers and \\[-2mm] |
28 \LARGE Formal Languages (5)\\[3mm] |
28 \LARGE Formal Languages\\[3mm] |
29 \end{tabular}} |
29 \end{tabular}} |
30 |
30 |
31 \normalsize |
31 \normalsize |
32 \begin{center} |
32 \begin{center} |
33 \begin{tabular}{ll} |
33 \begin{tabular}{ll} |
34 Email: & christian.urban at kcl.ac.uk\\ |
34 Email: & christian.urban at kcl.ac.uk\\ |
35 Office Hours: & Thursdays 12 -- 14\\ |
35 %Office Hours: & Thursdays 12 -- 14\\ |
36 Location: & N7.07 (North Wing, Bush House)\\ |
36 %Location: & N7.07 (North Wing, Bush House)\\ |
37 Slides \& Progs: & KEATS (also homework is there)\\ |
37 Slides \& Progs: & KEATS (also homework is there)\\ |
38 \end{tabular} |
38 \end{tabular} |
|
39 \end{center} |
|
40 |
|
41 \begin{center} |
|
42 \begin{tikzpicture} |
|
43 \node[drop shadow,fill=white,inner sep=0pt] |
|
44 {\footnotesize\rowcolors{1}{capri!10}{white} |
|
45 \begin{tabular}{|p{4.8cm}|p{4.8cm}|}\hline |
|
46 1 Introduction, Languages & 6 While-Language \\ |
|
47 2 Regular Expressions, Derivatives & 7 Compilation, JVM \\ |
|
48 3 Automata, Regular Languages & 8 Compiling Functional Languages \\ |
|
49 4 Lexing, Tokenising & 9 Optimisations \\ |
|
50 \cellcolor{blue!50} |
|
51 5 Grammars, Parsing & 10 LLVM \\ \hline |
|
52 \end{tabular}% |
|
53 }; |
|
54 \end{tikzpicture} |
39 \end{center} |
55 \end{center} |
40 \end{frame} |
56 \end{frame} |
41 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
57 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
42 |
58 |
43 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
59 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
44 \begin{frame}[c] |
60 %\begin{frame}[c] |
45 \frametitle{Coursework 1: Submissions} |
61 % \frametitle{Coursework 1: Submissions} |
46 |
62 % |
47 \begin{itemize} |
63 % \begin{itemize} |
48 \item Scala (29) |
64 % \item Scala (29) |
49 \item Haskell (1) |
65 % \item Haskell (1) |
50 \item Kotlin (1) |
66 % \item Kotlin (1) |
51 \item Rust (1) |
67 % \item Rust (1) |
52 \end{itemize}\bigskip\bigskip |
68 % \end{itemize}\bigskip\bigskip |
53 |
69 % |
54 \small |
70 % \small |
55 Please get in contact if you intend to do CW Strand 2. No zips please. |
71 % Please get in contact if you intend to do CW Strand 2. No zips please. |
56 Give definitions also on paper if asked. BTW, simp |
72 % Give definitions also on paper if asked. BTW, simp |
57 can stay unchanged. Use \texttt{ders} for CW2, not \texttt{ders2}! |
73 % can stay unchanged. Use \texttt{ders} for CW2, not \texttt{ders2}! |
58 \end{frame} |
74 % \end{frame} |
59 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
75 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
60 |
76 |
61 |
|
62 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
63 \begin{frame}[c] |
|
64 \frametitle{\begin{tabular}{c}Last Week\\[-2mm] |
|
65 Regexes and Values\end{tabular}} |
|
66 |
|
67 Regular expressions and their corresponding values: |
|
68 |
|
69 \begin{center} |
|
70 \begin{columns} |
|
71 \begin{column}{3cm} |
|
72 \begin{tabular}{@{}rrl@{}} |
|
73 \bl{$r$} & \bl{$::=$} & \bl{$\ZERO$}\\ |
|
74 & \bl{$\mid$} & \bl{$\ONE$} \\ |
|
75 & \bl{$\mid$} & \bl{$c$} \\ |
|
76 & \bl{$\mid$} & \bl{$r_1 \cdot r_2$}\\ |
|
77 & \bl{$\mid$} & \bl{$r_1 + r_2$} \\ |
|
78 \\ |
|
79 & \bl{$\mid$} & \bl{$r^*$} \\ |
|
80 \end{tabular} |
|
81 \end{column} |
|
82 \begin{column}{3cm} |
|
83 \begin{tabular}{@{\hspace{-7mm}}rrl@{}} |
|
84 \bl{$v$} & \bl{$::=$} & \\ |
|
85 & & \bl{$Empty$} \\ |
|
86 & \bl{$\mid$} & \bl{$Char(c)$} \\ |
|
87 & \bl{$\mid$} & \bl{$Seq(v_1,v_2)$}\\ |
|
88 & \bl{$\mid$} & \bl{$Left(v)$} \\ |
|
89 & \bl{$\mid$} & \bl{$Right(v)$} \\ |
|
90 & \bl{$\mid$} & \bl{$Stars [v_1,\ldots\,v_n]$} \\ |
|
91 \end{tabular} |
|
92 \end{column} |
|
93 \end{columns} |
|
94 \end{center} |
|
95 |
|
96 |
|
97 \end{frame} |
|
98 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
99 |
|
100 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
101 \begin{frame}[c] |
|
102 |
|
103 \begin{textblock}{10}(3,5) |
|
104 \begin{tikzpicture}[scale=2,node distance=1.3cm,every node/.style={minimum size=8mm}] |
|
105 \node (r1) {\bl{$r_1$}}; |
|
106 \node (r2) [right=of r1] {\bl{$r_2$}}; |
|
107 \draw[->,line width=1mm] (r1) -- (r2) node[above,midway] {\bl{$der\,a$}}; |
|
108 \node (r3) [right=of r2] {\bl{$r_3$}}; |
|
109 \draw[->,line width=1mm] (r2) -- (r3) node[above,midway] {\bl{$der\,b$}}; |
|
110 \node (r4) [right=of r3] {\bl{$r_4$}}; |
|
111 \draw[->,line width=1mm] (r3) -- (r4) node[above,midway] {\bl{$der\,c$}}; |
|
112 \draw (r4) node[anchor=west] {\;\raisebox{3mm}{\bl{$nullable$}}}; |
|
113 \node (v4) [below=of r4] {\bl{$v_4$}}; |
|
114 \draw[->,line width=1mm] (r4) -- (v4); |
|
115 \node (v3) [left=of v4] {\bl{$v_3$}}; |
|
116 \draw[->,line width=1mm] (v4) -- (v3) node[below,midway] {\bl{$inj\,c$}}; |
|
117 \node (v2) [left=of v3] {\bl{$v_2$}}; |
|
118 \draw[->,line width=1mm] (v3) -- (v2) node[below,midway] {\bl{$inj\,b$}}; |
|
119 \node (v1) [left=of v2] {\bl{$v_1$}}; |
|
120 \draw[->,line width=1mm] (v2) -- (v1) node[below,midway] {\bl{$inj\,a$}}; |
|
121 \draw[->,line width=0.5mm] (r3) -- (v3); |
|
122 \draw[->,line width=0.5mm] (r2) -- (v2); |
|
123 \draw[->,line width=0.5mm] (r1) -- (v1); |
|
124 \draw (r4) node[anchor=north west] {\;\raisebox{-8mm}{\bl{$mkeps$}}}; |
|
125 \end{tikzpicture} |
|
126 \end{textblock} |
|
127 |
|
128 \begin{textblock}{6}(1,0.8) |
|
129 \begin{bubble}[6cm] |
|
130 \small |
|
131 \begin{tabular}{ll} |
|
132 \bl{$r_1$}: & \bl{$a \cdot (b \cdot c)$}\\ |
|
133 \bl{$r_2$}: & \bl{$\ONE \cdot (b \cdot c)$}\\ |
|
134 \bl{$r_3$}: & \bl{$(\ZERO \cdot (b \cdot c)) + (\ONE \cdot c)$}\\ |
|
135 \bl{$r_4$}: & \bl{$(\ZERO \cdot (b \cdot c)) + ((\ZERO \cdot c) + \ONE)$}\\ |
|
136 \end{tabular} |
|
137 \end{bubble} |
|
138 \end{textblock} |
|
139 |
|
140 \begin{textblock}{6}(1,11.4) |
|
141 \begin{bubble}[7.6cm] |
|
142 \small |
|
143 \begin{tabular}{ll} |
|
144 \bl{$v_1$}: & \bl{$Seq(Char(a), Seq(Char(b), Char(c)))$}\\ |
|
145 \bl{$v_2$}: & \bl{$Seq(Empty, Seq(Char(b), Char(c)))$}\\ |
|
146 \bl{$v_3$}: & \bl{$Right(Seq(Empty, Char(c)))$}\\ |
|
147 \bl{$v_4$}: & \bl{$Right(Right(Empty))$}\\ |
|
148 \end{tabular} |
|
149 \end{bubble} |
|
150 \end{textblock} |
|
151 |
|
152 \begin{textblock}{6}(12,11.4) |
|
153 \begin{bubble}[2cm] |
|
154 \small |
|
155 \begin{tabular}{ll} |
|
156 \bl{$|v_1|$}: & \bl{$abc$}\\ |
|
157 \bl{$|v_2|$}: & \bl{$bc$}\\ |
|
158 \bl{$|v_3|$}: & \bl{$c$}\\ |
|
159 \bl{$|v_4|$}: & \bl{$[]$} |
|
160 \end{tabular} |
|
161 \end{bubble} |
|
162 \end{textblock} |
|
163 |
|
164 |
|
165 \end{frame} |
|
166 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
167 |
|
168 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
169 \begin{frame}[c] |
|
170 \frametitle{Simplification} |
|
171 |
|
172 \begin{itemize} |
|
173 \item If we simplify after the derivative, then we are builing the |
|
174 value for the simplified regular expression, but \emph{not} for the original |
|
175 regular expression. |
|
176 \end{itemize} |
|
177 |
|
178 \begin{center} |
|
179 \begin{tikzpicture}[scale=2,node distance=1.3cm,every node/.style={minimum size=8mm}] |
|
180 \node (r1) {\bl{$r_1$}}; |
|
181 \node (r2) [right=of r1] {\bl{$r_2$}}; |
|
182 \draw[->,line width=1mm] (r1) -- (r2) node[above,midway] {\bl{$der\,a$}}; |
|
183 \node (r3) [right=of r2] {\bl{$r_3$}}; |
|
184 \draw[->,line width=1mm] (r2) -- (r3) node[above,midway] {\bl{$der\,b$}}; |
|
185 \node (r4) [right=of r3] {\bl{$r_4$}}; |
|
186 \draw[->,line width=1mm] (r3) -- (r4) node[above,midway] {\bl{$der\,c$}}; |
|
187 \draw (r4) node[anchor=west] {\;\raisebox{3mm}{\bl{$nullable$}}}; |
|
188 \node (v4) [below=of r4] {\bl{$v_4$}}; |
|
189 \draw[->,line width=1mm] (r4) -- (v4); |
|
190 \node (v3) [left=of v4] {\bl{$v_3$}}; |
|
191 \draw[->,line width=1mm] (v4) -- (v3) node[below,midway] {\bl{$inj\,c$}}; |
|
192 \node (v2) [left=of v3] {\bl{$v_2$}}; |
|
193 \draw[->,line width=1mm] (v3) -- (v2) node[below,midway] {\bl{$inj\,b$}}; |
|
194 \node (v1) [left=of v2] {\bl{$v_1$}}; |
|
195 \draw[->,line width=1mm] (v2) -- (v1) node[below,midway] {\bl{$inj\,a$}}; |
|
196 \draw[->,line width=0.5mm] (r3) -- (v3); |
|
197 \draw[->,line width=0.5mm] (r2) -- (v2); |
|
198 \draw[->,line width=0.5mm] (r1) -- (v1); |
|
199 \draw (r4) node[anchor=north west] {\;\raisebox{-8mm}{\bl{$mkeps$}}}; |
|
200 \end{tikzpicture} |
|
201 \end{center} |
|
202 |
|
203 \small |
|
204 \hspace{4.5cm}\bl{$(b \cdot c) + (\ZERO + \ONE)$} |
|
205 $\mapsto$ |
|
206 \bl{$(b \cdot c) + \ONE$} |
|
207 |
|
208 \end{frame} |
|
209 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
210 |
|
211 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
212 % \begin{frame}[t] |
|
213 |
|
214 % \begin{center} |
|
215 % \bl{$\only<1>{(b \cdot c)}% |
|
216 % \only<2-3>{(\underline{b \cdot c})}% |
|
217 % \only<1-3>{+}% |
|
218 % \only<1>{(\ZERO + \ONE)}% |
|
219 % \only<2-3>{(\underline{\ZERO + \ONE})}$}% |
|
220 % \only<4->{% |
|
221 % \bl{$\underline{(b \cdot c) + (\ZERO + \ONE)}$}% |
|
222 % } |
|
223 % $\mapsto$ |
|
224 % \bl{$(b \cdot c) + \ONE$} |
|
225 % \end{center}\bigskip |
|
226 |
|
227 % \onslide<3->{% |
|
228 % \begin{center} |
|
229 % \begin{tabular}{lcl} |
|
230 % \bl{$f_{s1}$} & \bl{$=$} & \bl{$\lambda v.v$}\\ |
|
231 % \bl{$f_{s2}$} & \bl{$=$} & \bl{$\lambda v. \textit{Right}(v)$} |
|
232 % \end{tabular} |
|
233 % \end{center}} |
|
234 |
|
235 % \only<4>{% |
|
236 % \begin{center} |
|
237 % \begin{tabular}{@{}l@{\hspace{1mm}}l@{}} |
|
238 % \bl{$f_{alt}(f_{s1}, f_{s2}) \dn$}\\ |
|
239 % \quad \bl{$\lambda v.\,$} |
|
240 % case \bl{$v = Left(v')$}: |
|
241 % & return \bl{$Left(f_{s1}(v'))$}\\ |
|
242 % \quad \phantom{$\lambda v.\,$} |
|
243 % case \bl{$v = Right(v')$}: |
|
244 % & return \bl{$Right(f_{s2}(v'))$}\\ |
|
245 % \end{tabular} |
|
246 % \end{center}}% |
|
247 % \only<5->{% |
|
248 % \begin{center} |
|
249 % \begin{tabular}{@{}l@{\hspace{1mm}}l@{}} |
|
250 % \only<5->{\phantom{\bl{$f_{alt}(f_{s1}, f_{s2}) \dn$}}}\\ |
|
251 % \quad \bl{$\lambda v.\,$} |
|
252 % case \bl{$v = Left(v')$}: |
|
253 % & return \bl{$Left(v')$}\\ |
|
254 % \quad \phantom{$\lambda v.\,$} |
|
255 % case \bl{$v = Right(v')$}: |
|
256 % & return \bl{$Right(Right(v'))$}\\ |
|
257 % \end{tabular} |
|
258 % \end{center}}% |
|
259 |
|
260 % \only<6->{% |
|
261 % \begin{center} |
|
262 % \begin{tabular}{@{}l@{\hspace{4mm}}l@{}} |
|
263 % \bl{$\textit{mkeps}$} simplified case: & |
|
264 % \bl{$\textit{Right}(\textit{Empty})$}\\ |
|
265 % rectified case: & |
|
266 % \bl{$\textit{Right}(\textit{Right}(\textit{Empty}))$} |
|
267 % \end{tabular} |
|
268 % \end{center}}% |
|
269 |
|
270 % \end{frame} |
|
271 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
272 |
|
273 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
274 \begin{frame}[c] |
|
275 \frametitle{Records} |
|
276 |
|
277 \begin{itemize} |
|
278 \item new regex: \bl{$(x:r)$}\hspace{7mm}new value: \bl{$Rec(x,v)$}\medskip\pause |
|
279 |
|
280 \item \bl{$nullable(x:r) \dn nullable(r)$} |
|
281 \item \bl{$der\,c\,(x:r) \dn der\,c\,r$} |
|
282 \item \bl{$mkeps(x:r) \dn Rec(x, mkeps(r))$} |
|
283 \item \bl{$inj\,(x:r)\,c\,v \dn Rec(x, inj\,r\,c\,v)$} |
|
284 \end{itemize}\bigskip\bigskip\pause |
|
285 |
|
286 \small |
|
287 for extracting subpatterns \bl{$(z: ((x:ab) + (y:ba))$} |
|
288 |
|
289 \end{frame} |
|
290 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
291 |
|
292 |
|
293 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
294 \begin{frame}[c] |
|
295 \frametitle{Environments} |
|
296 |
|
297 Obtaining the ``recorded'' parts of a value: |
|
298 |
|
299 \begin{center} |
|
300 \begin{tabular}{lcl} |
|
301 \bl{$env(Empty)$} & \bl{$\dn$} & \bl{$[]$}\\ |
|
302 \bl{$env(Char(c))$} & \bl{$\dn$} & \bl{$[]$}\\ |
|
303 \bl{$env(Left(v))$} & \bl{$\dn$} & \bl{$env(v)$}\\ |
|
304 \bl{$env(Right(v))$} & \bl{$\dn$} & \bl{$env(v)$}\\ |
|
305 \bl{$env(Seq(v_1,v_2))$}& \bl{$\dn$} & \bl{$env(v_1) \,@\, env(v_2)$}\\ |
|
306 \bl{$env(Stars [v_1,\ldots ,v_n])$} & \bl{$\dn$} & |
|
307 \bl{$env(v_1) \,@\ldots @\, env(v_n)$}\\ |
|
308 \bl{$env(Rec(x:v))$} & \bl{$\dn$} & \bl{$(x:|v|) :: env(v)$}\\ |
|
309 \end{tabular} |
|
310 \end{center} |
|
311 |
|
312 \end{frame} |
|
313 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
314 |
|
315 |
|
316 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
317 \begin{frame}[c] |
|
318 \frametitle{While Tokens} |
|
319 |
|
320 \begin{center} |
|
321 \begin{tabular}{@{}r@{\hspace{2mm}}c@{\hspace{2mm}}l@{}} |
|
322 \pcode{WHILE\_REGS} & $\dn$ & \raisebox{-1mm}{\large(}\pcode{("k" : KEYWORD)} +\\ |
|
323 & & \phantom{(}\pcode{("i" : ID)} +\\ |
|
324 & & \phantom{(}\pcode{("o" : OP)} + \\ |
|
325 & & \phantom{(}\pcode{("n" : NUM)} + \\ |
|
326 & & \phantom{(}\pcode{("s" : SEMI)} +\\ |
|
327 & & \phantom{(}\pcode{("p" : (LPAREN + RPAREN))} +\\ |
|
328 & & \phantom{(}\pcode{("b" : (BEGIN + END))} +\\ |
|
329 & & \phantom{(}\pcode{("w" : WHITESPACE)}\raisebox{-1mm}{\large)$^*$} |
|
330 \end{tabular} |
|
331 \end{center} |
|
332 |
|
333 \end{frame} |
|
334 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
335 |
|
336 |
|
337 |
|
338 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
339 \begin{frame}[t] |
|
340 |
|
341 \consolas |
|
342 \begin{center} |
|
343 \code{"if true then then 42 else +"} |
|
344 \end{center} |
|
345 |
|
346 \only<1>{ |
|
347 \small\begin{tabular}{l} |
|
348 KEYWORD(if),\\ |
|
349 WHITESPACE,\\ |
|
350 IDENT(true),\\ |
|
351 WHITESPACE,\\ |
|
352 KEYWORD(then),\\ |
|
353 WHITESPACE,\\ |
|
354 KEYWORD(then),\\ |
|
355 WHITESPACE,\\ |
|
356 NUM(42),\\ |
|
357 WHITESPACE,\\ |
|
358 KEYWORD(else),\\ |
|
359 WHITESPACE,\\ |
|
360 OP(+) |
|
361 \end{tabular}} |
|
362 |
|
363 \only<2>{ |
|
364 \small\begin{tabular}{l} |
|
365 KEYWORD(if),\\ |
|
366 IDENT(true),\\ |
|
367 KEYWORD(then),\\ |
|
368 KEYWORD(then),\\ |
|
369 NUM(42),\\ |
|
370 KEYWORD(else),\\ |
|
371 OP(+) |
|
372 \end{tabular}} |
|
373 |
|
374 \end{frame} |
|
375 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
376 |
|
377 |
|
378 |
|
379 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
380 %\begin{frame}[c] |
|
381 %\frametitle{Coursework: PLs (16)} |
|
382 % |
|
383 %\begin{itemize} |
|
384 %\item Java (16) |
|
385 %\item C++, C, C\# (14) |
|
386 %\item JavaScript (10) |
|
387 %\item Scala (9) |
|
388 %\item Python (9) |
|
389 %\item PHP (6) |
|
390 %\item Haskell (3) |
|
391 %\item Ruby (4) |
|
392 %\item Bash, Perl, Powershell (2) |
|
393 %\item TypeScript (1) |
|
394 %\item R (1) |
|
395 %\item Coconut (1) |
|
396 %\item Pascal (1) |
|
397 %\end{itemize} |
|
398 % |
|
399 %\end{frame} |
|
400 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
401 |
|
402 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
403 %\begin{frame}[c] |
|
404 %\frametitle{Coursework: Nullable} |
|
405 % |
|
406 %\begin{center} |
|
407 %\begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}} |
|
408 % \bl{$nullable([c_1 c_2 \ldots c_n])$} & \bl{$\dn$} & $?$\\ |
|
409 % \bl{$nullable(r^+)$} & \bl{$\dn$} & $?$\\ |
|
410 % \bl{$nullable(r^?)$} & \bl{$\dn$} & $?$\\ |
|
411 % \bl{$nullable(r^{\{n\}})$} & \bl{$\dn$} & $?$\\ |
|
412 % \bl{$nullable(r^{\{n..\}})$} & \bl{$\dn$} & $?$\\ |
|
413 % \bl{$nullable(r^{\{..n\}})$} & \bl{$\dn$} & $?$\\ |
|
414 % \bl{$nullable(r^{\{n..m\}})$} & \bl{$\dn$} & $?$\\ |
|
415 % \bl{$nullable(\sim{}r)$} & \bl{$\dn$} & $?$\\ |
|
416 % |
|
417 %\end{tabular} |
|
418 %\end{center} |
|
419 % |
|
420 %\end{frame} |
|
421 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
422 |
|
423 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
424 %\begin{frame}[c] |
|
425 %%%\frametitle{Coursework: der} |
|
426 % |
|
427 %\begin{center} |
|
428 %\begin{tabular}{@ {}l@ {\hspace{1mm}}c@ {\hspace{1mm}}l@ {}} |
|
429 % \bl{$der\, c\, ([c_1 c_2 \ldots c_n])$} & \bl{$\dn$} & $?$\\ |
|
430 % \bl{$der\, c\, (r^+)$} & \bl{$\dn$} & $?$\\ |
|
431 % \bl{$der\, c\, (r^?)$} & \bl{$\dn$} & $?$\\ |
|
432 % \bl{$der\, c\, (r^{\{n\}})$} & \bl{$\dn$} & |
|
433 % \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{n-\liningnums{1}\}}$}\\ |
|
434 % \bl{$der\, c\, (r^{\{n..\}})$} & \bl{$\dn$} & |
|
435 % \bl{$if\;n=0\;then (der\,c\,r)\cdot r^*$}\\ |
|
436 % & & \bl{$\phantom{if\;n=0\;}else \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..\}}$}\\ |
|
437 % \bl{$der\, c\, (r^{\{..n\}})$} & \bl{$\dn$} & |
|
438 % \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{..n-\liningnums{1}\}}$}\\ |
|
439 % |
|
440 % \bl{$der\, c\, (r^{\{n..m\}})$} & \bl{$\dn$} & |
|
441 % \bl{$if\;n = 0 \wedge m = 0\;then\;\ZERO\; else$}\\ |
|
442 % \multicolumn{3}{l}{\bl{$if\;n = 0 \wedge m > 0\;then\;(der\,c\,r)\cdot r^{\{..m-\liningnums{1}\}}$}}\\ |
|
443 % \multicolumn{3}{l}{\bl{$\phantom{if\;n = 0 \wedge m > 0\;}else |
|
444 % \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..m-\liningnums{1}\}}$}}\\ |
|
445 % \bl{$der\, c\, (\sim{}r)$} & \bl{$\dn$} & $?$\\ |
|
446 %\end{tabular} |
|
447 %\end{center} |
|
448 % |
|
449 %\end{frame} |
|
450 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
451 |
|
452 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
453 %\begin{frame}[c] |
|
454 %\frametitle{Coursework: CFUN} |
|
455 % |
|
456 %\begin{center} |
|
457 %\begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}} |
|
458 % \bl{$nullable(CFUN(\_))$} & \bl{$\dn$} & \bl{$false$}\\ |
|
459 % \bl{$der\,c\,(CFUN(f))$} & \bl{$\dn$} & |
|
460 % \bl{$if\;f(c)\;then\;\ONE\;else\;\ZERO$}\bigskip\\ |
|
461 % \bl{$CHAR(c)$} & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;c=d)$}\\ |
|
462 % \bl{$CSET([c_1,\ldots,c_n])$} & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;d\in [c_1,\ldots,c_n])$}\\ |
|
463 % \bl{$ALL$} & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;true)$}\\ |
|
464 %\end{tabular} |
|
465 %\end{center} |
|
466 % |
|
467 %\end{frame} |
|
468 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
469 |
|
470 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
77 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
471 \begin{frame}[t] |
78 \begin{frame}[t] |
472 \frametitle{Lexer, Parser} |
79 \frametitle{Lexer, Parser} |
473 \mbox{}\\[-16mm]\mbox{} |
80 \mbox{}\\[-16mm]\mbox{} |
474 |
81 |