slides/slides05.tex
changeset 664 dc2f5eb33a9a
parent 593 bb24d4e207b6
child 665 6d74d2a0a4b0
equal deleted inserted replaced
663:a7071c2a9446 664:dc2f5eb33a9a
     1 
     1 
       
     2 % !TEX program = xelatex
     2 \documentclass[dvipsnames,14pt,t]{beamer}
     3 \documentclass[dvipsnames,14pt,t]{beamer}
     3 \usepackage{../slides}
     4 \usepackage{../slides}
     4 \usepackage{../graphics}
     5 \usepackage{../graphics}
     5 \usepackage{../langs}
     6 \usepackage{../langs}
     6 \usepackage{../data}
     7 \usepackage{../data}
    28   \end{tabular}}
    29   \end{tabular}}
    29 
    30 
    30   \normalsize
    31   \normalsize
    31   \begin{center}
    32   \begin{center}
    32   \begin{tabular}{ll}
    33   \begin{tabular}{ll}
    33   Email:  & christian.urban at kcl.ac.uk\\
    34     Email:  & christian.urban at kcl.ac.uk\\
    34   Office: & N\liningnums{7.07} (North Wing, Bush House)\\
    35     Office Hours: & Thursdays 12 -- 14\\
    35   Slides: & KEATS (also home work is there)\\
    36     Location: & N7.07 (North Wing, Bush House)\\
       
    37     Slides \& Progs: & KEATS (also homework is there)\\  
    36   \end{tabular}
    38   \end{tabular}
    37   \end{center}
    39   \end{center}
    38 \end{frame}
    40 \end{frame}
    39 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
    41 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
    40 
       
    41 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
    42 % \begin{frame}[c]
       
    43 % \frametitle{Survey: Thanks!}
       
    44 % \small
       
    45 
       
    46 % \begin{itemize}
       
    47 % \item {\bf My Voice} ``could be a bit louder''
       
    48 % \item {\bf Writing} ``sometimes a bit difficult to read''
       
    49 % \item {\bf Recording} ``video caps of blackboard''
       
    50 % \item ``It's all great''
       
    51 % \end{itemize}
       
    52   
       
    53 % \end{frame}
       
    54 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
       
    55 
       
    56 
    42 
    57 
    43 
    58 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    44 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    59 \begin{frame}[c]
    45 \begin{frame}[c]
    60 \frametitle{\begin{tabular}{c}Last Week\\[-1mm] 
    46 \frametitle{\begin{tabular}{c}Last Week\\[-1mm] 
    81            &             & \bl{$Empty$}   \\
    67            &             & \bl{$Empty$}   \\
    82            & \bl{$\mid$} & \bl{$Char(c)$}          \\
    68            & \bl{$\mid$} & \bl{$Char(c)$}          \\
    83            & \bl{$\mid$} & \bl{$Seq(v_1,v_2)$}\\
    69            & \bl{$\mid$} & \bl{$Seq(v_1,v_2)$}\\
    84            & \bl{$\mid$} & \bl{$Left(v)$}   \\
    70            & \bl{$\mid$} & \bl{$Left(v)$}   \\
    85            & \bl{$\mid$} & \bl{$Right(v)$}  \\
    71            & \bl{$\mid$} & \bl{$Right(v)$}  \\
    86            & \bl{$\mid$} & \bl{$[v_1,\ldots\,v_n]$} \\
    72            & \bl{$\mid$} & \bl{$Stars [v_1,\ldots\,v_n]$} \\
    87   \end{tabular}
    73   \end{tabular}
    88 \end{column}
    74 \end{column}
    89 \end{columns}
    75 \end{columns}
    90 \end{center}
    76 \end{center}
    91 
    77 
   297   \bl{$env(Empty)$}     & \bl{$\dn$} & \bl{$[]$}\\
   283   \bl{$env(Empty)$}     & \bl{$\dn$} & \bl{$[]$}\\
   298   \bl{$env(Char(c))$}   & \bl{$\dn$} & \bl{$[]$}\\
   284   \bl{$env(Char(c))$}   & \bl{$\dn$} & \bl{$[]$}\\
   299   \bl{$env(Left(v))$}   & \bl{$\dn$} & \bl{$env(v)$}\\
   285   \bl{$env(Left(v))$}   & \bl{$\dn$} & \bl{$env(v)$}\\
   300   \bl{$env(Right(v))$}  & \bl{$\dn$} & \bl{$env(v)$}\\
   286   \bl{$env(Right(v))$}  & \bl{$\dn$} & \bl{$env(v)$}\\
   301   \bl{$env(Seq(v_1,v_2))$}& \bl{$\dn$} & \bl{$env(v_1) \,@\, env(v_2)$}\\
   287   \bl{$env(Seq(v_1,v_2))$}& \bl{$\dn$} & \bl{$env(v_1) \,@\, env(v_2)$}\\
   302   \bl{$env([v_1,\ldots ,v_n])$} & \bl{$\dn$} & 
   288   \bl{$env(Stars [v_1,\ldots ,v_n])$} & \bl{$\dn$} & 
   303      \bl{$env(v_1) \,@\ldots @\, env(v_n)$}\\
   289      \bl{$env(v_1) \,@\ldots @\, env(v_n)$}\\
   304   \bl{$env(Rec(x:v))$} & \bl{$\dn$} & \bl{$(x:|v|) :: env(v)$}\\
   290   \bl{$env(Rec(x:v))$} & \bl{$\dn$} & \bl{$(x:|v|) :: env(v)$}\\
   305 \end{tabular}
   291 \end{tabular}
   306 \end{center}
   292 \end{center}
   307 
   293 
   370 \end{frame}
   356 \end{frame}
   371 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   357 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   372 
   358 
   373 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   359 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   374 \begin{frame}[c]
   360 \begin{frame}[c]
   375 \frametitle{Coursework: PLs (16)}
   361 \frametitle{Coursework: Submissions}
   376 
   362 
   377 \begin{itemize}
   363 \begin{itemize}
   378 \item Java (16)
   364 \item Scala (29)
   379 \item C++, C, C\# (14)
   365 \item Haskell (1)
   380 \item JavaScript (10)
   366 \item Kotlin (1)
   381 \item Scala (9)
   367 \item Rust (1)
   382 \item Python (9)  
   368 \end{itemize}\bigskip  
   383 \item PHP (6)
   369 
   384 \item Haskell (3)
   370 Please get in contact if you intend to do CW Strand 2.
   385 \item Ruby (4)
   371 \end{frame}
   386 \item Bash, Perl, Powershell (2)
   372 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   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]
       
   398 \frametitle{Coursework: Nullable}
       
   399 
       
   400 \begin{center}
       
   401 \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}}
       
   402   \bl{$nullable([c_1 c_2 \ldots c_n])$}  & \bl{$\dn$} & $?$\\
       
   403   \bl{$nullable(r^+)$}                   & \bl{$\dn$} & $?$\\
       
   404   \bl{$nullable(r^?)$}                   & \bl{$\dn$} & $?$\\
       
   405   \bl{$nullable(r^{\{n\}})$}              & \bl{$\dn$} & $?$\\
       
   406   \bl{$nullable(r^{\{n..\}})$}            & \bl{$\dn$} & $?$\\
       
   407   \bl{$nullable(r^{\{..n\}})$}            & \bl{$\dn$} & $?$\\
       
   408   \bl{$nullable(r^{\{n..m\}})$}           & \bl{$\dn$} & $?$\\
       
   409   \bl{$nullable(\sim{}r)$}               & \bl{$\dn$} & $?$\\
       
   410                                                         
       
   411 \end{tabular}
       
   412 \end{center}
       
   413 
       
   414 \end{frame}
       
   415 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   416 
       
   417 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   418 \begin{frame}[c]
       
   419 %%\frametitle{Coursework: der}
       
   420 
       
   421 \begin{center}
       
   422 \begin{tabular}{@ {}l@ {\hspace{1mm}}c@ {\hspace{1mm}}l@ {}}
       
   423   \bl{$der\, c\, ([c_1 c_2 \ldots c_n])$}  & \bl{$\dn$} & $?$\\
       
   424   \bl{$der\, c\, (r^+)$}                   & \bl{$\dn$} & $?$\\
       
   425   \bl{$der\, c\, (r^?)$}                   & \bl{$\dn$} & $?$\\
       
   426   \bl{$der\, c\, (r^{\{n\}})$}              & \bl{$\dn$} &
       
   427      \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{n-\liningnums{1}\}}$}\\
       
   428   \bl{$der\, c\, (r^{\{n..\}})$}            & \bl{$\dn$} &
       
   429      \bl{$if\;n=0\;then (der\,c\,r)\cdot r^*$}\\
       
   430   & & \bl{$\phantom{if\;n=0\;}else \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..\}}$}\\
       
   431   \bl{$der\, c\, (r^{\{..n\}})$}            & \bl{$\dn$} &
       
   432      \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{..n-\liningnums{1}\}}$}\\
       
   433   
   373   
   434   \bl{$der\, c\, (r^{\{n..m\}})$}          & \bl{$\dn$} &
   374 
   435      \bl{$if\;n = 0 \wedge m = 0\;then\;\ZERO\; else$}\\
   375 
   436   \multicolumn{3}{l}{\bl{$if\;n = 0 \wedge m > 0\;then\;(der\,c\,r)\cdot r^{\{..m-\liningnums{1}\}}$}}\\
   376 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   437   \multicolumn{3}{l}{\bl{$\phantom{if\;n = 0 \wedge m > 0\;}else
   377 %\begin{frame}[c]
   438           \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..m-\liningnums{1}\}}$}}\\
   378 %\frametitle{Coursework: PLs (16)}
   439   \bl{$der\, c\, (\sim{}r)$}              & \bl{$\dn$} & $?$\\
   379 %
   440 \end{tabular}
   380 %\begin{itemize}
   441 \end{center}
   381 %\item Java (16)
   442 
   382 %\item C++, C, C\# (14)
   443 \end{frame}
   383 %\item JavaScript (10)
   444 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   384 %\item Scala (9)
   445 
   385 %\item Python (9)  
   446 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   386 %\item PHP (6)
   447 \begin{frame}[c]
   387 %\item Haskell (3)
   448 \frametitle{Coursework: CFUN}
   388 %\item Ruby (4)
   449 
   389 %\item Bash, Perl, Powershell (2)
   450 \begin{center}
   390 %\item TypeScript (1)
   451 \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}}
   391 %\item R (1)
   452   \bl{$nullable(CFUN(\_))$}  & \bl{$\dn$} & \bl{$false$}\\
   392 %\item Coconut (1)  
   453   \bl{$der\,c\,(CFUN(f))$}   & \bl{$\dn$} &
   393 %\item Pascal (1)
   454      \bl{$if\;f(c)\;then\;\ONE\;else\;\ZERO$}\bigskip\\
   394 %\end{itemize}  
   455   \bl{$CHAR(c)$}                   & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;c=d)$}\\
   395 %
   456   \bl{$CSET([c_1,\ldots,c_n])$} & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;d\in [c_1,\ldots,c_n])$}\\
   396 %\end{frame}
   457   \bl{$ALL$}                   & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;true)$}\\                                                      
   397 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   458 \end{tabular}
   398 
   459 \end{center}
   399 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   460 
   400 %\begin{frame}[c]
   461 \end{frame}
   401 %\frametitle{Coursework: Nullable}
       
   402 %
       
   403 %\begin{center}
       
   404 %\begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}}
       
   405 %  \bl{$nullable([c_1 c_2 \ldots c_n])$}  & \bl{$\dn$} & $?$\\
       
   406 %  \bl{$nullable(r^+)$}                   & \bl{$\dn$} & $?$\\
       
   407 %  \bl{$nullable(r^?)$}                   & \bl{$\dn$} & $?$\\
       
   408 %  \bl{$nullable(r^{\{n\}})$}              & \bl{$\dn$} & $?$\\
       
   409 %  \bl{$nullable(r^{\{n..\}})$}            & \bl{$\dn$} & $?$\\
       
   410 %  \bl{$nullable(r^{\{..n\}})$}            & \bl{$\dn$} & $?$\\
       
   411 %  \bl{$nullable(r^{\{n..m\}})$}           & \bl{$\dn$} & $?$\\
       
   412 %  \bl{$nullable(\sim{}r)$}               & \bl{$\dn$} & $?$\\
       
   413 %                                                        
       
   414 %\end{tabular}
       
   415 %\end{center}
       
   416 %
       
   417 %\end{frame}
       
   418 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   419 
       
   420 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   421 %\begin{frame}[c]
       
   422 %%%\frametitle{Coursework: der}
       
   423 %
       
   424 %\begin{center}
       
   425 %\begin{tabular}{@ {}l@ {\hspace{1mm}}c@ {\hspace{1mm}}l@ {}}
       
   426 %  \bl{$der\, c\, ([c_1 c_2 \ldots c_n])$}  & \bl{$\dn$} & $?$\\
       
   427 %  \bl{$der\, c\, (r^+)$}                   & \bl{$\dn$} & $?$\\
       
   428 %  \bl{$der\, c\, (r^?)$}                   & \bl{$\dn$} & $?$\\
       
   429 %  \bl{$der\, c\, (r^{\{n\}})$}              & \bl{$\dn$} &
       
   430 %     \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{n-\liningnums{1}\}}$}\\
       
   431 %  \bl{$der\, c\, (r^{\{n..\}})$}            & \bl{$\dn$} &
       
   432 %     \bl{$if\;n=0\;then (der\,c\,r)\cdot r^*$}\\
       
   433 %  & & \bl{$\phantom{if\;n=0\;}else \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..\}}$}\\
       
   434 %  \bl{$der\, c\, (r^{\{..n\}})$}            & \bl{$\dn$} &
       
   435 %     \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{..n-\liningnums{1}\}}$}\\
       
   436 %  
       
   437 %  \bl{$der\, c\, (r^{\{n..m\}})$}          & \bl{$\dn$} &
       
   438 %     \bl{$if\;n = 0 \wedge m = 0\;then\;\ZERO\; else$}\\
       
   439 %  \multicolumn{3}{l}{\bl{$if\;n = 0 \wedge m > 0\;then\;(der\,c\,r)\cdot r^{\{..m-\liningnums{1}\}}$}}\\
       
   440 %  \multicolumn{3}{l}{\bl{$\phantom{if\;n = 0 \wedge m > 0\;}else
       
   441 %          \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..m-\liningnums{1}\}}$}}\\
       
   442 %  \bl{$der\, c\, (\sim{}r)$}              & \bl{$\dn$} & $?$\\
       
   443 %\end{tabular}
       
   444 %\end{center}
       
   445 %
       
   446 %\end{frame}
       
   447 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   448 
       
   449 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   450 %\begin{frame}[c]
       
   451 %\frametitle{Coursework: CFUN}
       
   452 %
       
   453 %\begin{center}
       
   454 %\begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}}
       
   455 %  \bl{$nullable(CFUN(\_))$}  & \bl{$\dn$} & \bl{$false$}\\
       
   456 %  \bl{$der\,c\,(CFUN(f))$}   & \bl{$\dn$} &
       
   457 %     \bl{$if\;f(c)\;then\;\ONE\;else\;\ZERO$}\bigskip\\
       
   458 %  \bl{$CHAR(c)$}                   & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;c=d)$}\\
       
   459 %  \bl{$CSET([c_1,\ldots,c_n])$} & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;d\in [c_1,\ldots,c_n])$}\\
       
   460 %  \bl{$ALL$}                   & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;true)$}\\                                                      
       
   461 %\end{tabular}
       
   462 %\end{center}
       
   463 %
       
   464 %\end{frame}
   462 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   465 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   463  
   466  
   464 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   467 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   465 \begin{frame}[t]
   468 \begin{frame}[t]
   466 \frametitle{Lexer, Parser}
   469 \frametitle{Lexer, Parser}
   569 \frametitle{CF Grammars}
   572 \frametitle{CF Grammars}
   570 
   573 
   571 A \alert{\bf context-free grammar} \bl{$G$} consists of
   574 A \alert{\bf context-free grammar} \bl{$G$} consists of
   572 
   575 
   573 \begin{itemize}
   576 \begin{itemize}
   574 \item a finite set of nonterminal symbols ($\langle$upper case$\rangle$)
   577 \item a finite set of nonterminal symbols (e.g.~$\meta{A}$ upper case)
   575 \item a finite terminal symbols or tokens (lower case)
   578 \item a finite set terminal symbols or tokens (lower case)
   576 \item a start symbol (which must be a nonterminal)
   579 \item a start symbol (which must be a nonterminal)
   577 \item a set of rules
   580 \item a set of rules
   578 \begin{center}
   581 \begin{center}
   579 \bl{$\meta{A} ::= \textit{rhs}$}
   582 \bl{$\meta{A} ::= \textit{rhs}$}
   580 \end{center}
   583 \end{center}
   707 \end{frame}
   710 \end{frame}
   708 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   711 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   709 
   712 
   710 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   713 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   711 \begin{frame}[c]
   714 \begin{frame}[c]
   712 \frametitle{\begin{tabular}{c}Context Sensitive\\[-1mm] 
   715 \frametitle{Context Sensitive Grammars}
   713              Grammars\end{tabular}}
       
   714 
   716 
   715 It is much harder to find out whether a string is parsed
   717 It is much harder to find out whether a string is parsed
   716 by a context sensitive grammar:
   718 by a context sensitive grammar:
   717 
   719 
   718 \bl{\begin{plstx}[margin=2cm]
   720 \bl{\begin{plstx}[margin=2cm]
  1034 \frametitle{Scannerless Parsers}
  1036 \frametitle{Scannerless Parsers}
  1035 
  1037 
  1036 \begin{itemize}
  1038 \begin{itemize}
  1037 \item input: \alert{string}
  1039 \item input: \alert{string}
  1038 \item output: set of (output\_type, \alert{string})
  1040 \item output: set of (output\_type, \alert{string})
  1039 \end{itemize}\bigskip
  1041 \end{itemize}\bigskip\bigskip
  1040 
  1042 
  1041 but lexers are better when whitespaces or comments need to be
  1043 but using lexers is better because whitespaces or comments can be
  1042 filtered out; then input is a sequence of tokens
  1044 filtered out; then input is a sequence of tokens
  1043 
  1045 
  1044 \end{frame}
  1046 \end{frame}
  1045 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  1047 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  1046 
  1048