slides/slides09.tex
changeset 379 fa2589ec0fae
parent 312 5cdb4d40eb80
child 380 1e88390e81aa
equal deleted inserted replaced
378:e8ac05fe2630 379:fa2589ec0fae
     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}