369 \end{frame} |
370 \end{frame} |
370 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
371 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
371 |
372 |
372 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
373 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
373 \begin{frame}[c] |
374 \begin{frame}[c] |
|
375 \frametitle{Coursework: PLs (16)} |
|
376 |
|
377 \begin{itemize} |
|
378 \item Java (16) |
|
379 \item C++, C, C\# (14) |
|
380 \item JavaScript (10) |
|
381 \item Scala (9) |
|
382 \item Python (9) |
|
383 \item PHP (6) |
|
384 \item Haskell (3) |
|
385 \item Ruby (4) |
|
386 \item Bash, Perl, Powershell (2) |
|
387 \item TypeScript (1) |
|
388 \item R (1) |
|
389 \item Coconut (1) |
|
390 \item Pascal (1) |
|
391 \end{itemize} |
|
392 |
|
393 \end{frame} |
|
394 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
395 |
|
396 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
397 \begin{frame}[c] |
374 \frametitle{Coursework: Nullable} |
398 \frametitle{Coursework: Nullable} |
375 |
399 |
376 \begin{center} |
400 \begin{center} |
377 \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}} |
401 \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}} |
378 \bl{$nullable([c_1 c_2 \ldots c_n])$} & \bl{$\dn$} & $?$\\ |
402 \bl{$nullable([c_1 c_2 \ldots c_n])$} & \bl{$\dn$} & $?$\\ |
398 \begin{tabular}{@ {}l@ {\hspace{1mm}}c@ {\hspace{1mm}}l@ {}} |
422 \begin{tabular}{@ {}l@ {\hspace{1mm}}c@ {\hspace{1mm}}l@ {}} |
399 \bl{$der\, c\, ([c_1 c_2 \ldots c_n])$} & \bl{$\dn$} & $?$\\ |
423 \bl{$der\, c\, ([c_1 c_2 \ldots c_n])$} & \bl{$\dn$} & $?$\\ |
400 \bl{$der\, c\, (r^+)$} & \bl{$\dn$} & $?$\\ |
424 \bl{$der\, c\, (r^+)$} & \bl{$\dn$} & $?$\\ |
401 \bl{$der\, c\, (r^?)$} & \bl{$\dn$} & $?$\\ |
425 \bl{$der\, c\, (r^?)$} & \bl{$\dn$} & $?$\\ |
402 \bl{$der\, c\, (r^{\{n\}})$} & \bl{$\dn$} & |
426 \bl{$der\, c\, (r^{\{n\}})$} & \bl{$\dn$} & |
403 \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{n-1\}}$}\\ |
427 \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{n-\liningnums{1}\}}$}\\ |
404 \bl{$der\, c\, (r^{\{n..\}})$} & \bl{$\dn$} & |
428 \bl{$der\, c\, (r^{\{n..\}})$} & \bl{$\dn$} & |
405 \bl{$if\;n=0\;then (der\,c\,r)\cdot r^*$}\\ |
429 \bl{$if\;n=0\;then (der\,c\,r)\cdot r^*$}\\ |
406 & & \bl{$\phantom{if\;n=0\;}else \;(der\,c\,r)\cdot r^{\{n-1..\}}$}\\ |
430 & & \bl{$\phantom{if\;n=0\;}else \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..\}}$}\\ |
407 \bl{$der\, c\, (r^{\{..n\}})$} & \bl{$\dn$} & |
431 \bl{$der\, c\, (r^{\{..n\}})$} & \bl{$\dn$} & |
408 \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{..n-1\}}$}\\ |
432 \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{..n-\liningnums{1}\}}$}\\ |
409 |
433 |
410 \bl{$der\, c\, (r^{\{n..m\}})$} & \bl{$\dn$} & |
434 \bl{$der\, c\, (r^{\{n..m\}})$} & \bl{$\dn$} & |
411 \bl{$if\;n = 0 \wedge m = 0\;then\;\ZERO\; else$}\\ |
435 \bl{$if\;n = 0 \wedge m = 0\;then\;\ZERO\; else$}\\ |
412 \multicolumn{3}{l}{\bl{$if\;n = 0 \wedge m > 0\;then\;(der\,c\,r)\cdot r^{\{..m-1\}}$}}\\ |
436 \multicolumn{3}{l}{\bl{$if\;n = 0 \wedge m > 0\;then\;(der\,c\,r)\cdot r^{\{..m-\liningnums{1}\}}$}}\\ |
413 \multicolumn{3}{l}{\bl{$\phantom{if\;n = 0 \wedge m > 0\;}else |
437 \multicolumn{3}{l}{\bl{$\phantom{if\;n = 0 \wedge m > 0\;}else |
414 \;(der\,c\,r)\cdot r^{\{n-1..m-1\}}$}}\\ |
438 \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..m-\liningnums{1}\}}$}}\\ |
415 \bl{$der\, c\, (\sim{}r)$} & \bl{$\dn$} & $?$\\ |
439 \bl{$der\, c\, (\sim{}r)$} & \bl{$\dn$} & $?$\\ |
416 \end{tabular} |
440 \end{tabular} |
417 \end{center} |
441 \end{center} |
418 |
442 |
419 \end{frame} |
443 \end{frame} |
614 |
638 |
615 \begin{enumerate} |
639 \begin{enumerate} |
616 \item Begin with a string containing only the start symbol, say \bl{\meta{S}}\bigskip |
640 \item Begin with a string containing only the start symbol, say \bl{\meta{S}}\bigskip |
617 \item Replace any nonterminal \bl{\meta{X}} in the string by the |
641 \item Replace any nonterminal \bl{\meta{X}} in the string by the |
618 right-hand side of some production \bl{$\meta{X} ::= \textit{rhs}$}\bigskip |
642 right-hand side of some production \bl{$\meta{X} ::= \textit{rhs}$}\bigskip |
619 \item Repeat 2 until there are no nonterminals |
643 \item Repeat 2 until there are no nonterminals left |
620 \end{enumerate} |
644 \end{enumerate} |
621 |
645 |
622 \begin{center} |
646 \begin{center} |
623 \bl{$\meta{S} \rightarrow \ldots \rightarrow \ldots \rightarrow \ldots \rightarrow \ldots $} |
647 \bl{$\meta{S} \rightarrow \ldots \rightarrow \ldots \rightarrow \ldots \rightarrow \ldots $} |
624 \end{center} |
648 \end{center} |
724 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
748 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
725 |
749 |
726 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
750 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
727 \begin{frame}[t] |
751 \begin{frame}[t] |
728 \frametitle{Parse Trees} |
752 \frametitle{Parse Trees} |
729 \mbox{}\\[-16mm] |
753 \mbox{}\\[-12mm] |
730 |
754 |
731 \bl{\begin{plstx}: \meta{E} ::= \meta{F} | \meta{T} \cdot + \cdot \meta{E} | \meta{T} \cdot - \cdot \meta{E}\\ |
755 \bl{\begin{plstx}: \meta{E} ::= \meta{F} | \meta{T} \cdot + \cdot \meta{E} | \meta{T} \cdot - \cdot \meta{E}\\ |
732 : \meta{T} ::= \meta{F} | \meta{F} \cdot * \cdot \meta{T}\\ |
756 : \meta{T} ::= \meta{F} | \meta{F} \cdot * \cdot \meta{T}\\ |
733 : \meta{F} ::= num\_token | ( \cdot \meta{E} \cdot )\\ |
757 : \meta{F} ::= num\_token | ( \cdot \meta{E} \cdot )\\ |
734 \end{plstx}} |
758 \end{plstx}} |
936 \frametitle{\begin{tabular}{c}Semantic Actions\end{tabular}} |
960 \frametitle{\begin{tabular}{c}Semantic Actions\end{tabular}} |
937 |
961 |
938 Addition |
962 Addition |
939 |
963 |
940 \begin{center} |
964 \begin{center} |
941 \bl{$T \sim + \sim E \Rightarrow \underbrace{f((x,y), z) \Rightarrow x + z}_{\text{semantic action}}$} |
965 \bl{$\meta{T} \sim + \sim \meta{E} \Rightarrow \underbrace{f\,((x,y), z) \Rightarrow x + z}_{\text{semantic action}}$} |
942 \end{center}\pause |
966 \end{center}\pause |
943 |
967 |
944 Multiplication |
968 Multiplication |
945 |
969 |
946 \begin{center} |
970 \begin{center} |
947 \bl{$F \sim * \sim T \Rightarrow f((x,y), z) \Rightarrow x * z$} |
971 \bl{$\meta{F} \sim * \sim \meta{T} \Rightarrow f\,((x,y), z) \Rightarrow x * z$} |
948 \end{center}\pause |
972 \end{center}\pause |
949 |
973 |
950 Parenthesis |
974 Parenthesis |
951 |
975 |
952 \begin{center} |
976 \begin{center} |
953 \bl{$\text{(} \sim E \sim \text{)} \Rightarrow f((x,y), z) \Rightarrow y$} |
977 \bl{$\text{(} \sim \meta{E} \sim \text{)} \Rightarrow f\,((x,y), z) \Rightarrow y$} |
954 \end{center} |
978 \end{center} |
955 |
979 |
956 \end{frame}} |
980 \end{frame}} |
957 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
981 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
958 |
982 |