|    518   \draw [->,line width=4mm] (B) -- (C);  |    519   \draw [->,line width=4mm] (B) -- (C);  | 
|    519   \draw [->,line width=4mm] (C) -- (1);  |    520   \draw [->,line width=4mm] (C) -- (1);  | 
|    520   \end{tikzpicture} |    521   \end{tikzpicture} | 
|    521   \end{center} |    522   \end{center} | 
|    522    |    523    | 
|    523 We have lexer and parser. |    524 We have a lexer and a parser\ldots | 
|    524    |    525    | 
|    525 \end{frame} |    526 \end{frame} | 
|    526  |    527  | 
|    527 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |    528 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|    528 \begin{frame}[c] |    529 \begin{frame}[c] | 
|    529  |    530  | 
|    530 \begin{center} |    531 \begin{center} | 
|    531 \bl{\begin{tabular}{@{}lcl@{}} |    532 \bl{\begin{tabular}{@{}lcl@{}} | 
|    532 \textit{Stmt} & $::=$ &  $\texttt{skip}$\\ |    533 \meta{Stmt} & $::=$ &  $\texttt{skip}$\\ | 
|    533               & $|$ & \textit{Id}\;\texttt{:=}\;\textit{AExp}\\ |    534               & $|$ & \textit{Id}\;\texttt{:=}\;\meta{AExp}\\ | 
|    534               & $|$ & \texttt{if}\; \textit{BExp} \;\texttt{then}\; \textit{Block} \;\texttt{else}\; \textit{Block}\\ |    535               & $|$ & \texttt{if}\; \meta{BExp} \;\texttt{then}\; \meta{Block} \;\texttt{else}\; \meta{Block}\\ | 
|    535               & $|$ & \texttt{while}\; \textit{BExp} \;\texttt{do}\; \textit{Block}\\ |    536               & $|$ & \texttt{while}\; \meta{BExp} \;\texttt{do}\; \meta{Block}\\ | 
|    536               & $|$ & \texttt{read}\;\textit{Id}\\ |    537               & $|$ & \texttt{read}\;\textit{Id}\\ | 
|    537               & $|$ & \texttt{write}\;\textit{Id}\\ |    538               & $|$ & \texttt{write}\;\textit{Id}\\ | 
|    538               & $|$ & \texttt{write}\;\textit{String}\medskip\\ |    539               & $|$ & \texttt{write}\;\textit{String}\medskip\\ | 
|    539 \textit{Stmts} & $::=$ &  \textit{Stmt} \;\texttt{;}\; \textit{Stmts}\\ |    540 \meta{Stmts} & $::=$ &  \meta{Stmt} \;\texttt{;}\; \meta{Stmts}\\ | 
|    540               & $|$ & \textit{Stmt}\medskip\\ |    541               & $|$ & \meta{Stmt}\medskip\\ | 
|    541 \textit{Block} & $::=$ &  \texttt{\{}\,\textit{Stmts}\,\texttt{\}}\\ |    542 \meta{Block} & $::=$ &  \texttt{\{}\,\meta{Stmts}\,\texttt{\}}\\ | 
|    542                 & $|$ & \textit{Stmt}\medskip\\ |    543                 & $|$ & \meta{Stmt}\medskip\\ | 
|    543 \textit{AExp} & $::=$ & \ldots\\ |    544 \meta{AExp} & $::=$ & \ldots\\ | 
|    544 \textit{BExp} & $::=$ & \ldots\\ |    545 \meta{BExp} & $::=$ & \ldots\\ | 
|    545 \end{tabular}} |    546 \end{tabular}} | 
|    546 \end{center} |    547 \end{center} | 
|    547 \end{frame} |    548 \end{frame} | 
|    548 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    |    549 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    | 
|    549  |    550  | 
|    577 \item the interpreter has to record the value of \bl{$x$} before assigning a value to \bl{$y$}\pause |    577 \item the interpreter has to record the value of \bl{$x$} before assigning a value to \bl{$y$}\pause | 
|    578 \item \bl{\text{eval}(stmt, env)} |    578 \item \bl{\text{eval}(stmt, env)} | 
|    579 \end{itemize} |    579 \end{itemize} | 
|    580  |    580  | 
|    581  |    581  | 
|    582 \end{frame}} |    582 \end{frame} | 
|    583 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |    583 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|    584  |    584  | 
|    585 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |    585 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|    586 \mode<presentation>{ |    586 \begin{frame}[c] | 
|    587 \begin{frame}[c] |    587 \frametitle{An Interpreter} | 
|    588 \frametitle{\begin{tabular}{c}Interpreter\end{tabular}} |         | 
|    589  |    588  | 
|    590 \begin{center} |    589 \begin{center} | 
|    591 \bl{\begin{tabular}{@{}lcl@{}} |    590 \bl{\begin{tabular}{@{}lcl@{}} | 
|    592 $\text{eval}(n, E)$ & $\dn$ & $n$\\ |    591 $\text{eval}(n, E)$ & $\dn$ & $n$\\ | 
|    593 $\text{eval}(x, E)$ & $\dn$ & $E(x)$ \;\;\;\textcolor{black}{lookup \bl{$x$} in \bl{$E$}}\\ |    592 $\text{eval}(x, E)$ & $\dn$ & $E(x)$ \;\;\;\textcolor{black}{lookup \bl{$x$} in \bl{$E$}}\\ | 
|    598 $\text{eval}(a_1\,!\!= a_2, E)$ & $\dn$ & $\neg(\text{eval}(a_1, E) = \text{eval}(a_2, E))$\\ |    597 $\text{eval}(a_1\,!\!= a_2, E)$ & $\dn$ & $\neg(\text{eval}(a_1, E) = \text{eval}(a_2, E))$\\ | 
|    599 $\text{eval}(a_1 < a_2, E)$ & $\dn$ & $\text{eval}(a_1, E) < \text{eval}(a_2, E)$\ |    598 $\text{eval}(a_1 < a_2, E)$ & $\dn$ & $\text{eval}(a_1, E) < \text{eval}(a_2, E)$\ | 
|    600 \end{tabular}} |    599 \end{tabular}} | 
|    601 \end{center} |    600 \end{center} | 
|    602  |    601  | 
|    603 \end{frame}} |    602 \end{frame} | 
|    604 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    |    603 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    | 
|    605 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |    604  | 
|    606 \mode<presentation>{ |    605 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
|    607 \begin{frame}[c] |    606 \begin{frame}[c] | 
|    608 \frametitle{\begin{tabular}{c}Interpreter (2)\end{tabular}} |    607 \frametitle{An Interpreter (2)} | 
|    609  |    608  | 
|    610 \begin{center} |    609 \begin{center} | 
|    611 \bl{\begin{tabular}{@{}lcl@{}} |    610 \bl{\begin{tabular}{@{}lcl@{}} | 
|    612 $\text{eval}(\text{skip}, E)$ & $\dn$ & $E$\\ |    611 $\text{eval}(\text{skip}, E)$ & $\dn$ & $E$\\ | 
|    613 $\text{eval}(x:=a, E)$ & $\dn$ & \bl{$E(x \mapsto \text{eval}(a, E))$}\\ |    612 $\text{eval}(x:=a, E)$ & $\dn$ & \bl{$E(x \mapsto \text{eval}(a, E))$}\\ | 
|    622 \multicolumn{3}{@{}l@{}}{\hspace{2cm}$\text{else}\; E$}\\ |    621 \multicolumn{3}{@{}l@{}}{\hspace{2cm}$\text{else}\; E$}\\ | 
|    623 $\text{eval}(\text{write}\; x, E)$ & $\dn$ & $\{\;\text{println}(E(x))\; ;\;E\;\}$\\ |    622 $\text{eval}(\text{write}\; x, E)$ & $\dn$ & $\{\;\text{println}(E(x))\; ;\;E\;\}$\\ | 
|    624 \end{tabular}} |    623 \end{tabular}} | 
|    625 \end{center} |    624 \end{center} | 
|    626  |    625  | 
|    627 \end{frame}} |    626 \end{frame} | 
|    628 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    |    627 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    | 
|    629  |    628  | 
|    630 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |    629 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|    631 \begin{frame}[c] |    630 \begin{frame}[c] | 
|    632 \frametitle{\begin{tabular}{c}Test Program\end{tabular}} |    631 \frametitle{\begin{tabular}{c}Test Program\end{tabular}} | 
|    671  |    670  | 
|    672 \end{frame}} |    671 \end{frame}} | 
|    673 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    |    672 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    | 
|    674  |    673  | 
|    675  |    674  | 
|         |    675 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|         |    676 \begin{frame}[c] | 
|         |    677   \frametitle{Coursework: MkEps} | 
|         |    678  | 
|         |    679 \begin{center} | 
|         |    680 \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}} | 
|         |    681   \bl{$mkeps([c_1 c_2 \ldots c_n])$}  & \bl{$\dn$} & $\bl{undefined}$\\ | 
|         |    682   \bl{$mkeps(r^*)$}                   & \bl{$\dn$} & $\bl{Stars\,[]}$\\ | 
|         |    683   \bl{$mkeps(r^{\{n\}})$}              & \bl{$\dn$} & $\bl{Stars\,(mkeps(r))^n}$\\ | 
|         |    684   \bl{$mkeps(r^{\{n..\}})$}            & \bl{$\dn$} & $\bl{Stars\,(mkeps(r))^n}$\\ | 
|         |    685   \bl{$mkeps(r^{\{..n\}})$}            & \bl{$\dn$} & $\bl{Stars\,[]}$\\ | 
|         |    686   \bl{$mkeps(r^{\{n..m\}})$}           & \bl{$\dn$} & $\bl{Stars\,(mkeps(r))^n}$\medskip\\ | 
|         |    687    | 
|         |    688   \bl{$mkeps(r^+)$}                   & \bl{$\dn$} & \bl{$mkeps(r^{\{1..\}})$}\\ | 
|         |    689   \bl{$mkeps(r^?)$}                   & \bl{$\dn$} & \bl{$mkeps(r^{\{..1\}})$}\\ | 
|         |    690 \end{tabular} | 
|         |    691 \end{center} | 
|         |    692  | 
|         |    693 \end{frame} | 
|         |    694 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   | 
|         |    695  | 
|         |    696 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|         |    697 \begin{frame}[c] | 
|         |    698   \frametitle{Coursework: Inj} | 
|         |    699  | 
|         |    700 \begin{center} | 
|         |    701 \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}} | 
|         |    702   \bl{$inj([c_1 c_2 \ldots c_n])\,c\,Empty$}  & \bl{$\dn$} & $\bl{Chr\,c}$\\ | 
|         |    703   \bl{$inj(r^*)\,c\;(Seq\,v\,(Stars\,vs))$}                   & \bl{$\dn$} & $\bl{Stars\,(inj\,r\,c\,v::vs)}$\\ | 
|         |    704   \bl{$inj(r^{\{n\}})\,c\;(Seq\,v\,(Stars\,vs))$}              & \bl{$\dn$} & $\bl{Stars\,(inj\,r\,c\,v::vs)}$\\ | 
|         |    705   \bl{$inj(r^{\{n..\}})\,c\;(Seq\,v\,(Stars\,vs))$}            & \bl{$\dn$} & $\bl{Stars\,(inj\,r\,c\,v::vs)}$\\ | 
|         |    706   \bl{$inj(r^{\{..n\}})\,c\;(Seq\,v\,(Stars\,vs))$}            & \bl{$\dn$} & $\bl{Stars\,(inj\,r\,c\,v::vs)}$\\ | 
|         |    707   \bl{$inj(r^{\{n..m\}})\,c\;(Seq\,v\,(Stars\,vs))$}           & \bl{$\dn$} & $\bl{Stars\,(inj\,r\,c\,v::vs)}$\medskip\\ | 
|         |    708    | 
|         |    709   \bl{$inj(r^+)\,c\,v$}                   & \bl{$\dn$} & \bl{$inj(r^{\{1..\}})\,c\,v$}\\ | 
|         |    710   \bl{$inj(r^?)\,c\,v$}                   & \bl{$\dn$} & \bl{$inj(r^{\{..1\}})\,c\,v$}\\ | 
|         |    711 \end{tabular} | 
|         |    712 \end{center} | 
|         |    713  | 
|         |    714 \end{frame} | 
|         |    715 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   | 
|         |    716  | 
|         |    717  | 
|         |    718  | 
|    676 \end{document} |    719 \end{document} | 
|    677  |    720  | 
|    678 %%% Local Variables:   |    721 %%% Local Variables:   | 
|    679 %%% mode: latex |    722 %%% mode: latex | 
|    680 %%% TeX-master: t |    723 %%% TeX-master: t |