\documentclass[dvipsnames,14pt,t,xelatex]{beamer}+ −
\usepackage{beamerthemeplaincu}+ −
\usepackage{fontenc,xltxtra,xunicode}+ −
\defaultfontfeatures{Mapping=tex-text}+ −
\usepackage{mathpartir}+ −
\usepackage[absolute,overlay]{textpos}+ −
\usepackage{ifthen}+ −
\usepackage{tikz}+ −
\usepackage{pgf}+ −
\usepackage{calc} + −
\usepackage{ulem}+ −
%%\usepackage{courier}+ −
\usepackage{listings}+ −
\renewcommand{\uline}[1]{#1}+ −
\usetikzlibrary{arrows}+ −
\usetikzlibrary{automata}+ −
\usetikzlibrary{shapes}+ −
\usetikzlibrary{shadows}+ −
\usetikzlibrary{positioning}+ −
\usetikzlibrary{calc}+ −
\usetikzlibrary{plotmarks}+ −
\usepackage{graphicx} + −
\usepackage{pgfplots}+ −
+ −
\definecolor{javared}{rgb}{0.6,0,0} % for strings+ −
\definecolor{javagreen}{rgb}{0.25,0.5,0.35} % comments+ −
\definecolor{javapurple}{rgb}{0.5,0,0.35} % keywords+ −
\definecolor{javadocblue}{rgb}{0.25,0.35,0.75} % javadoc+ −
+ −
\makeatletter+ −
\lst@CCPutMacro\lst@ProcessOther {"2D}{\lst@ttfamily{-{}}{-{}}}+ −
\@empty\z@\@empty+ −
\makeatother+ −
+ −
\lstset{language=Java,+ −
basicstyle=\ttfamily,+ −
keywordstyle=\color{javapurple}\bfseries,+ −
stringstyle=\color{javagreen},+ −
commentstyle=\color{javagreen},+ −
morecomment=[s][\color{javadocblue}]{/**}{*/},+ −
numbers=left,+ −
numberstyle=\tiny\color{black},+ −
stepnumber=1,+ −
numbersep=10pt,+ −
tabsize=2,+ −
showspaces=false,+ −
showstringspaces=false}+ −
+ −
\lstdefinelanguage{scala}{+ −
morekeywords={abstract,case,catch,class,def,%+ −
do,else,extends,false,final,finally,%+ −
for,if,implicit,import,match,mixin,%+ −
new,null,object,override,package,%+ −
private,protected,requires,return,sealed,%+ −
super,this,throw,trait,true,try,%+ −
type,val,var,while,with,yield},+ −
otherkeywords={=>,<-,<\%,<:,>:,\#,@},+ −
sensitive=true,+ −
morecomment=[l]{//},+ −
morecomment=[n]{/*}{*/},+ −
morestring=[b]",+ −
morestring=[b]',+ −
morestring=[b]"""+ −
}+ −
+ −
\lstset{language=Scala,+ −
basicstyle=\ttfamily,+ −
keywordstyle=\color{javapurple}\bfseries,+ −
stringstyle=\color{javagreen},+ −
commentstyle=\color{javagreen},+ −
morecomment=[s][\color{javadocblue}]{/**}{*/},+ −
numbers=left,+ −
numberstyle=\tiny\color{black},+ −
stepnumber=1,+ −
numbersep=10pt,+ −
tabsize=2,+ −
showspaces=false,+ −
showstringspaces=false}+ −
+ −
+ −
\begin{filecontents}{interpreted2.data}+ −
%1 0.00503+ −
200 1.005863+ −
400 7.8296765+ −
600 27.2321885+ −
800 65.249271+ −
1000 135.4493445+ −
1200 232.134097+ −
1400 382.527227+ −
\end{filecontents}+ −
+ −
\begin{filecontents}{compiled2.data}+ −
200 0.222058+ −
400 0.215204+ −
600 0.202031+ −
800 0.21986+ −
1000 0.205934+ −
1200 0.1981615+ −
1400 0.207116+ −
\end{filecontents}+ −
+ −
% beamer stuff + −
\renewcommand{\slidecaption}{AFL 01, King's College London, 25.~September 2013}+ −
+ −
+ −
\begin{document}+ −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}<1>[t]+ −
\frametitle{%+ −
\begin{tabular}{@ {}c@ {}}+ −
\\[-3mm]+ −
\LARGE Automata and \\[-2mm] + −
\LARGE Formal Languages (1)\\[-3mm] + −
\end{tabular}}+ −
+ −
\begin{center}+ −
\includegraphics[scale=0.3]{pics/ante1.jpg}\hspace{5mm}+ −
\includegraphics[scale=0.31]{pics/ante2.jpg}\\+ −
\footnotesize\textcolor{gray}{Antikythera automaton, 100 BC (Archimedes?)}+ −
\end{center}+ −
+ −
\normalsize+ −
\begin{center}+ −
\begin{tabular}{ll}+ −
Email: & christian.urban at kcl.ac.uk\\+ −
Office: & S1.27 (1st floor Strand Building)\\+ −
Slides: & KEATS+ −
\end{tabular}+ −
\end{center}+ −
+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
+ −
\begin{textblock}{1}(2,5)+ −
\begin{tabular}{c}+ −
\includegraphics[scale=0.15]{pics/servers.png}\\[-2mm]+ −
\small Server+ −
\end{tabular}+ −
\end{textblock}+ −
+ −
\begin{textblock}{1}(5.6,4)+ −
\begin{tikzpicture}[scale=1.1]+ −
\draw[white] (0,1) node (X) {};+ −
\draw[white] (2,1) node (Y) {};+ −
\draw[white] (0,0) node (X1) {};+ −
\draw[white] (2,0) node (Y1) {};+ −
\draw[white] (0,-1) node (X2) {};+ −
\draw[white] (2,-1) node (Y2) {};+ −
\draw[red, <-, line width = 2mm] (X) -- (Y);+ −
\node [inner sep=5pt,label=above:\textcolor{black}{GET request}] at ($ (X)!.5!(Y) $) {};+ −
\draw[red, ->, line width = 2mm] (X1) -- (Y1);+ −
\node [inner sep=5pt,label=above:\textcolor{black}{webpage}] at ($ (X1)!.5!(Y1) $) {};+ −
\draw[red, <-, line width = 2mm] (X2) -- (Y2);+ −
\node [inner sep=7pt,label=above:\textcolor{black}{POST data}] at ($ (X2)!.5!(Y2) $) {};+ −
\end{tikzpicture}+ −
\end{textblock}+ −
+ −
+ −
\begin{textblock}{1}(9,5.5)+ −
\begin{tabular}{c}+ −
\includegraphics[scale=0.15]{pics/laptop.png}\\[-2mm]+ −
\small Browser+ −
\end{tabular}+ −
\end{textblock}+ −
+ −
\only<2>{ + −
\begin{textblock}{10}(2,13.5)+ −
\begin{itemize}+ −
\item programming languages, compilers+ −
\end{itemize}+ −
\end{textblock}}+ −
+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
+ −
transforming strings into structured data\\[10mm]+ −
+ −
{\LARGE\bf Lexing}\medskip\\+ −
\hspace{5mm}(recognising ``words'')\\[6mm]+ −
+ −
{\LARGE\bf Parsing}\medskip\\+ −
\hspace{5mm}(recognising ``sentences'')+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
+ −
The subject is quite old:+ −
+ −
\begin{itemize}+ −
\item Turing Machines, 1936+ −
\item first compiler for COBOL, 1957 (Grace Hopper)+ −
\item but surprisingly research papers are still published now+ −
\end{itemize}+ −
+ −
\begin{flushright}+ −
\includegraphics[scale=0.3]{pics/hopper.jpg}\\+ −
\footnotesize\textcolor{gray}{Grace Hopper}+ −
\end{flushright}+ −
+ −
{\footnotesize\textcolor{gray}{(she made it to David Letterman's Tonight Show, \url{http://www.youtube.com/watch?v=aZOxtURhfEU})}}+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
\frametitle{\begin{tabular}{c}This Course\end{tabular}}+ −
+ −
\begin{itemize}+ −
\item the ultimate goal is to implement a small compiler (a really small one for the JVM)\bigskip+ −
\end{itemize}+ −
+ −
Let's start with:+ −
+ −
\begin{itemize}+ −
\item a web-crawler+ −
\item an email harvester+ −
\item a web-scraper+ −
\end{itemize}+ −
+ −
\begin{textblock}{6}(10,7)+ −
\begin{tikzpicture}[scale=0.38]+ −
\begin{axis}[axis x line=bottom, axis y line=left, ylabel=secs,+ −
xlabel=n,+ −
enlargelimits=0.05,+ −
ybar interval=0.7, legend style=small]+ −
\addplot file {interpreted2.data};+ −
\addplot file {compiled2.data};+ −
%\legend{interpreted, compiled}+ −
\end{axis}+ −
\end{tikzpicture}+ −
\end{textblock}+ −
+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[t]+ −
\frametitle{\begin{tabular}{c}A Web-Crawler\end{tabular}}+ −
+ −
\mbox{}\\[10mm]+ −
+ −
\begin{enumerate}+ −
\item given an URL, read the corresponding webpage+ −
\item extract all links from it+ −
\item call the web-crawler again for all these links+ −
\end{enumerate}+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[t]+ −
\frametitle{\begin{tabular}{c}A Web-Crawler\end{tabular}}+ −
+ −
\mbox{}\\[10mm]+ −
+ −
+ −
\begin{enumerate}+ −
\item given an URL, read the corresponding webpage+ −
\item if not possible print, out a problem+ −
\item if possible, extract all links from it+ −
\item call the web-crawler again for all these links+ −
\end{enumerate}\bigskip\pause+ −
+ −
\small (we need a bound for the number of recursive calls)+ −
+ −
\small (the purpose is to check all links on my own webpage)+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
\frametitle{\begin{tabular}{c}Scala\end{tabular}}+ −
+ −
\small a simple Scala function for reading webpages\\[-3mm]+ −
+ −
\footnotesize+ −
{\lstset{language=Scala}\texttt{\lstinputlisting{../progs/app0.scala}}}\pause+ −
{\lstset{language=Scala}\texttt{\lstinline{get_page("""http://www.inf.kcl.ac.uk/staff/urbanc/""")}}}\pause\bigskip+ −
+ −
+ −
\small slightly more complicated for handling errors properly:\\[-3mm]+ −
+ −
\footnotesize+ −
{\lstset{language=Scala}\texttt{\lstinputlisting{../progs/app1.scala}}}+ −
+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}}+ −
+ −
\begin{textblock}{6}(1,3)+ −
\begin{tabular}{l}+ −
\mbox{}\hspace{-1mm}\includegraphics[scale=0.36]{pics/twitter.png}\\[-1mm]+ −
\includegraphics[scale=0.30]{pics/linked.png}\\+ −
\includegraphics[scale=0.30]{pics/guardian.jpg}\\[-3mm]+ −
\mbox{}\hspace{-2mm}\includegraphics[scale=0.38]{pics/morgan.png}\\[-3mm]+ −
\includegraphics[scale=0.30]{pics/suisse.png}\\+ −
\includegraphics[scale=0.20]{pics/edf.png}\\[-1mm]+ −
\includegraphics[scale=0.08]{pics/novell.png}\\[-1mm]+ −
\includegraphics[scale=0.30]{pics/foursquare.png}\\+ −
\includegraphics[scale=0.30]{pics/hsbc.png}\\+ −
{\large\bf ...}+ −
\end{tabular}+ −
\end{textblock}+ −
+ −
\only<2->{ + −
\begin{textblock}{6}(6,3)+ −
\includegraphics[scale=0.35]{pics/jobgraph.png}\\+ −
\end{textblock}} + −
+ −
\only<3->{ + −
\begin{textblock}{6}(7.3,9.2)+ −
\begin{tabular}{l}+ −
\footnotesize 2013: 1$\%$\\[-2mm]+ −
\footnotesize 2014: 3$\%$\\[-2mm]+ −
\footnotesize 2015: 9$\%$\\[-2mm]+ −
\footnotesize 2016: 27$\%$\\[-2mm]+ −
\footnotesize 2017: 81$\%$\\[-2mm]+ −
\footnotesize 2018: 243$\%$ \raisebox{-1mm}{\includegraphics[scale=0.02]{pics/smiley.jpg}}+ −
\end{tabular}+ −
\end{textblock}} + −
+ −
\only<3->{ + −
\begin{textblock}{6}(6,9.5)+ −
\footnotesize 5 yrs $\begin{cases}\mbox{}\\[1.4cm]\end{cases}$+ −
\end{textblock}}+ −
+ −
\only<4->{ + −
\begin{textblock}{11}(5,14.1)+ −
\textcolor{gray}{+ −
\footnotesize {\bf in London today:} 1 Scala job for every 30 Java jobs;\\[-2mm]+ −
Scala programmers seem to get up to 20\% better salary}+ −
\end{textblock}}+ −
+ −
+ −
\only<5->{+ −
\begin{textblock}{1}(3,6)+ −
\begin{tikzpicture}+ −
\draw (0,0) node[inner sep=2mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] + −
{\normalsize\color{darkgray}+ −
\begin{minipage}{8.5cm}\raggedright\normalsize+ −
Scala is a functional and object-oriented programming language; compiles to the JVM; does not + −
need null-pointer exceptions; a course on Coursera\\+ −
\mbox{}\hfill\textcolor{blue}{\url{http://www.scala-lang.org}}+ −
\end{minipage}};+ −
\end{tikzpicture}+ −
\end{textblock}}+ −
+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[t]+ −
\frametitle{\begin{tabular}{c}A Regular Expression\end{tabular}}+ −
+ −
\begin{itemize}+ −
\item \ldots{} is a pattern or template for specifying strings+ −
\end{itemize}\bigskip+ −
+ −
\begin{center} + −
\only<1>{{\lstset{language=Scala}\fontsize{18}{19}\selectfont\bf+ −
\texttt{"https?://[$\hat{\hspace{2mm}}$"]*"}}}%+ −
\only<2>{{\lstset{language=Scala}\fontsize{18}{19}\selectfont\bf+ −
\texttt{"""\textbackslash{}"https?://[$\hat{\hspace{2mm}}$\textbackslash{}"]*\textbackslash{}"""".r}}}+ −
\end{center}\bigskip\bigskip+ −
+ −
matches for example\\ + −
\;{\lstset{language=Scala}\fontsize{12}{14}\selectfont\bf+ −
\texttt{"http://www.foobar.com"}}\\+ −
\;{\lstset{language=Scala}\fontsize{12}{14}\selectfont\bf+ −
\texttt{"https://www.tls.org"}}\\+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
+ −
{\lstset{language=Scala}\fontsize{18}{19}\selectfont\bf+ −
\texttt{rexp.findAllIn(string)}}\medskip+ −
+ −
returns a list of all (sub)strings that match the regular expression\bigskip\bigskip + −
+ −
{\lstset{language=Scala}\fontsize{18}{19}\selectfont\bf+ −
\texttt{rexp.findFirstIn(string)}}\medskip+ −
+ −
returns either {\bf\texttt{None}} if no (sub)string matches + −
or {\bf\texttt{Some(s)}} with the first (sub)string+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
+ −
\small+ −
{\lstset{language=Scala}\texttt{\lstinputlisting{../progs/app2.scala}}}\medskip+ −
+ −
{\lstset{language=Scala}\texttt{crawl(some\_start\_URL, 2)}}\+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
+ −
\footnotesize+ −
a version that only ``crawls'' links in my domain:+ −
+ −
\small+ −
{\lstset{language=Scala}\texttt{\lstinputlisting{../progs/app3.scala}}}+ −
+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
+ −
\footnotesize+ −
a little email ``harvester'':+ −
+ −
\small+ −
{\lstset{language=Scala}\texttt{\lstinputlisting{../progs/app4.scala}}}\bigskip+ −
+ −
\tiny+ −
\textcolor{gray}{\url{http://net.tutsplus.com/tutorials/other/8-regular-expressions-you-should-know/}}+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
\newcommand{\bl}[1]{\textcolor{blue}{#1}} + −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[t]+ −
\frametitle{\begin{tabular}{c}Regular Expressions\end{tabular}}+ −
+ −
Their inductive definition:\medskip+ −
+ −
\begin{textblock}{6}(2,5)+ −
\begin{tabular}{@ {}rrl@ {\hspace{13mm}}l}+ −
\bl{r} & \bl{$::=$} & \bl{$\varnothing$} & null\\+ −
& \bl{$\mid$} & \bl{$\epsilon$} & empty string / "" / []\\+ −
& \bl{$\mid$} & \bl{c} & character\\+ −
& \bl{$\mid$} & \bl{r$_1$ $\cdot$ r$_2$} & sequence\\+ −
& \bl{$\mid$} & \bl{r$_1$ + r$_2$} & alternative / choice\\+ −
& \bl{$\mid$} & \bl{r$^*$} & star (zero or more)\\+ −
\end{tabular}+ −
\end{textblock}+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[t]+ −
\frametitle{\begin{tabular}{c}Regular Expressions\end{tabular}}+ −
+ −
\small+ −
In Scala:+ −
+ −
+ −
{\lstset{language=Scala}\fontsize{8}{10}\selectfont+ −
\texttt{\lstinputlisting{../progs/app51.scala}}}+ −
+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
\newcommand{\dn}{\stackrel{\mbox{\scriptsize def}}{=}}% for definitions+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
\frametitle{\begin{tabular}{c}The Meaning of a\\[-2mm] Regular Expression\end{tabular}}+ −
+ −
\begin{textblock}{15}(1,4)+ −
\begin{tabular}{@ {}rcl}+ −
\bl{$L$($\varnothing$)} & \bl{$\dn$} & \bl{$\varnothing$}\\+ −
\bl{$L$($\epsilon$)} & \bl{$\dn$} & \bl{$\{$""$\}$}\\+ −
\bl{$L$(c)} & \bl{$\dn$} & \bl{$\{$"c"$\}$}\\+ −
\bl{$L$(r$_1$ + r$_2$)} & \bl{$\dn$} & \bl{$L$(r$_1$) $\cup$ $L$(r$_2$)}\\+ −
\bl{$L$(r$_1$ $\cdot$ r$_2$)} & \bl{$\dn$} & \bl{$\{$ s$_1$ @ s$_2$ $|$ s$_1$ $\in$ $L$(r$_1$) $\wedge$ s$_2$ $\in$ + −
$L$(r$_2$) $\}$}\\+ −
\bl{$L$(r$^*$)} & \bl{$\dn$} & \onslide<4->{\bl{$\bigcup_{n \ge 0}$ $L$(r)$^n$}}\\+ −
\end{tabular}\bigskip+ −
+ −
\onslide<2->{+ −
\hspace{5mm}\bl{$L$(r)$^0$ $\;\dn\;$ $\{$""$\}$}\\+ −
\bl{$L$(r)$^{n+1}$ $\;\dn\;$ $L$(r) @ $L$(r)$^n$}\hspace{9mm}\onslide<3->{\small\textcolor{gray}{(append on sets)}\\+ −
\small\hspace{5cm}\textcolor{gray}{$\{$ s$_1$ @ s$_2$ $|$ s$_1$ $\in$ $L$(r) $\wedge$ s$_2$ $\in$ + −
$L$(r)$^n$ $\}$}}+ −
} + −
\end{textblock}+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
\frametitle{\begin{tabular}{c}The Meaning of Matching\end{tabular}}+ −
+ −
\large+ −
a regular expression \bl{r} matches a string \bl{s} is defined as+ −
+ −
\begin{center}+ −
\bl{s $\in$ $L$(r)}\\ + −
\end{center}+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
\frametitle{\begin{tabular}{c}This Course\end{tabular}}+ −
+ −
We will have a look at:+ −
+ −
\begin{itemize}+ −
\item regular expressions / regular expression matching+ −
\item derivatives + −
\item automata+ −
\item parsing+ −
\item grammars+ −
\item a small interpreter / compiler+ −
\end{itemize}+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
+ −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\mode<presentation>{+ −
\begin{frame}[c]+ −
\frametitle{\begin{tabular}{c}Exam\end{tabular}}+ −
+ −
\begin{itemize}+ −
\item The question ``Is this relevant for the exam?'' is not appreciated!\bigskip\\+ −
+ −
Whatever is in the homework sheets (and is not marked ``optional'') is relevant for the+ −
exam.\\ No code needs to be written in the exam.+ −
\end{itemize}+ −
+ −
\end{frame}}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
+ −
\end{document}+ −
+ −
%%% Local Variables: + −
%%% mode: latex+ −
%%% TeX-master: t+ −
%%% End: + −
+ −