1 \documentclass[dvipsnames,14pt,t]{beamer} |
1 \documentclass[dvipsnames,14pt,t]{beamer} |
2 \usepackage{../slides} |
2 \usepackage{../slides} |
3 \usepackage{../langs} |
3 \usepackage{../langs} |
4 \usepackage{../data} |
4 \usepackage{../data} |
5 \usepackage{../graphics} |
5 \usepackage{../graphics} |
|
6 \usepackage{../grammar} |
6 \usepackage{soul} |
7 \usepackage{soul} |
7 |
8 |
8 \tikzset{onslide/.code args={<#1>#2}{% |
9 \tikzset{onslide/.code args={<#1>#2}{% |
9 \only<#1>{\pgfkeysalso{#2}} % \pgfkeysalso doesn't change the path |
10 \only<#1>{\pgfkeysalso{#2}} % \pgfkeysalso doesn't change the path |
10 }} |
11 }} |
15 {\end{lrbox}\bt@HL@box[bt@Highlight@par]{\@tempboxa}\endgroup\end{onlyenv}} |
16 {\end{lrbox}\bt@HL@box[bt@Highlight@par]{\@tempboxa}\endgroup\end{onlyenv}} |
16 |
17 |
17 \newcommand<>\btHL[1][]{% |
18 \newcommand<>\btHL[1][]{% |
18 \only#2{\begin{btHighlight}[#1]\bgroup\aftergroup\bt@HL@endenv}% |
19 \only#2{\begin{btHighlight}[#1]\bgroup\aftergroup\bt@HL@endenv}% |
19 } |
20 } |
20 \def\bt@HL@endenv{% |
21 \def\bt@HL@endenv{%b jm |
21 \end{btHighlight}% |
22 \end{btHighlight}% |
22 \egroup |
23 \egroup |
23 } |
24 } |
24 \newcommand{\bt@HL@box}[2][]{% |
25 \newcommand{\bt@HL@box}[2][]{% |
25 \tikz[#1]{% |
26 \tikz[#1]{% |
28 \node[anchor=base west, fill=orange!30,outer sep=0pt,inner xsep=1pt, inner ysep=0pt, rounded corners=3pt, minimum height=\ht\strutbox+1pt,#1]{\raisebox{1pt}{\strut}\strut\usebox{#2}}; |
29 \node[anchor=base west, fill=orange!30,outer sep=0pt,inner xsep=1pt, inner ysep=0pt, rounded corners=3pt, minimum height=\ht\strutbox+1pt,#1]{\raisebox{1pt}{\strut}\strut\usebox{#2}}; |
29 }% |
30 }% |
30 } |
31 } |
31 \makeatother |
32 \makeatother |
32 |
33 |
|
34 \lstset{morekeywords={def,if,then,else,write,read},keywordstyle=\color{codepurple}\bfseries} |
33 |
35 |
34 % beamer stuff |
36 % beamer stuff |
35 \renewcommand{\slidecaption}{AFL 09, King's College London} |
37 \renewcommand{\slidecaption}{AFL 09, King's College London} |
36 \newcommand{\bl}[1]{\textcolor{blue}{#1}} |
38 \newcommand{\bl}[1]{\textcolor{blue}{#1}} |
37 |
39 |
63 \begin{frame}[c,fragile] |
65 \begin{frame}[c,fragile] |
64 \frametitle{Functional Programming} |
66 \frametitle{Functional Programming} |
65 |
67 |
66 \footnotesize |
68 \footnotesize |
67 \begin{textblock}{13}(0.9,3) |
69 \begin{textblock}{13}(0.9,3) |
68 \lstset{emph={def,if,then,else},emphstyle=\color{codepurple}} |
|
69 \begin{lstlisting}[basicstyle=\ttfamily, numbers=none] |
70 \begin{lstlisting}[basicstyle=\ttfamily, numbers=none] |
70 def fib(n) = if n == 0 then 0 |
71 def fib(n) = if n == 0 then 0 |
71 else if n == 1 then 1 |
72 else if n == 1 then 1 |
72 else fib(n - 1) + fib(n - 2); |
73 else fib(n - 1) + fib(n - 2); |
73 |
74 |
83 |
84 |
84 \end{frame} |
85 \end{frame} |
85 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
86 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
86 |
87 |
87 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
88 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
88 \mode<presentation>{ |
|
89 \begin{frame}[c] |
89 \begin{frame}[c] |
90 |
90 \frametitle{Fun Grammar} |
91 \begin{center} |
91 \bl{ |
92 \bl{\begin{tabular}{@{}lcl@{}} |
92 \begin{plstx}[rhs style=] |
93 \textit{Exp} & $\rightarrow$ & \textit{Var} $|$ \textit{Num}\\ |
93 : \meta{Exp} ::= \meta{Var} | \meta{Num}{\hspace{3cm}} |
94 & $|$ & \textit{Exp} \texttt{+} \textit{Exp} $|$ ... $|$ ( \textit{Exp} )\\ |
94 | \meta{Exp} + \meta{Exp} | ... | (\meta{ExP}) |
95 & $|$ & \texttt{if}\; \textit{BExp} \;\texttt{then}\; \textit{Exp} \;\texttt{else}\; \textit{Exp}\\ |
95 | \code{if} \meta{BExp} \code{then} \meta{Exp} \code{else} \meta{Exp} |
96 & $|$ & \texttt{write}\;\textit{Exp}\\ |
96 | \code{write} \meta{Exp} {\hspace{3cm}} |
97 & $|$ & \textit{Exp}\;\texttt{;}\;\textit{Exp}\\ |
97 | \meta{Exp} ; \meta{Exp} |
98 & $|$ & \textit{FunName} \texttt{(}\textit{Exp},...,\textit{Exp}\texttt{)}\medskip\\ |
98 | \textit{FunName} (\meta{Exp}, ..., \meta{Exp})\\ |
99 \textit{BExp} & $\rightarrow$ & \ldots\medskip\\ |
99 : \meta{BExp} ::= ...\\ |
100 \textit{Decl} & $\rightarrow$ & \textit{Def} \;\texttt{;}\; \textit{Decl}\\ |
100 : \meta{Decl} ::= \meta{Def} ; \meta{Decl} |
101 & $|$ & \textit{Exp}\medskip\\ |
101 | \meta{Exp}\\ |
102 \textit{Def} & |
102 : \meta{Def} ::= \code{def} \textit{FunName} ($\hspace{0.4mm}x_1$, ..., $x_2$)\\ |
103 $\rightarrow$ & \texttt{def} \textit{FunName}\texttt{(}\textit{x}$_1$,..., \textit{x}$_n$\texttt{)} \texttt{=} \textit{Exp}\\ |
103 \end{plstx}} |
104 \end{tabular}} |
104 |
105 \end{center} |
105 |
106 |
106 |
107 |
107 \end{frame} |
108 \end{frame}} |
108 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
109 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
109 |
110 |
110 |
111 |
111 |
112 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
112 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
113 \begin{frame}[c, fragile] |
113 \begin{frame}[c, fragile] |
114 \frametitle{Abstract Syntax Tree} |
114 \frametitle{Abstract Syntax Tree} |