slides/slides04.tex
changeset 786 da2488db453e
parent 785 faa4489267d5
child 788 3b1136fb6bee
equal deleted inserted replaced
785:faa4489267d5 786:da2488db453e
   485   \bl{$|Empty|$}     & \bl{$\dn$} & \bl{$[]$}\\
   485   \bl{$|Empty|$}     & \bl{$\dn$} & \bl{$[]$}\\
   486   \bl{$|Char(c)|$}   & \bl{$\dn$} & \bl{$[c]$}\\
   486   \bl{$|Char(c)|$}   & \bl{$\dn$} & \bl{$[c]$}\\
   487   \bl{$|Left(v)|$}   & \bl{$\dn$} & \bl{$|v|$}\\
   487   \bl{$|Left(v)|$}   & \bl{$\dn$} & \bl{$|v|$}\\
   488   \bl{$|Right(v)|$}  & \bl{$\dn$} & \bl{$|v|$}\\
   488   \bl{$|Right(v)|$}  & \bl{$\dn$} & \bl{$|v|$}\\
   489   \bl{$|Seq(v_1,v_2)|$}& \bl{$\dn$} & \bl{$|v_1| \,@\, |v_2|$}\\
   489   \bl{$|Seq(v_1,v_2)|$}& \bl{$\dn$} & \bl{$|v_1| \,@\, |v_2|$}\\
   490   \bl{$|[v_1,\ldots ,v_n]|$} & \bl{$\dn$} & \bl{$|v_1| \,@\ldots @\, |v_n|$}\\
   490   \bl{$|Stars\,[v_1,\ldots ,v_n]|$} & \bl{$\dn$} & \bl{$|v_1| \,@\ldots @\, |v_n|$}\\
   491 \end{tabular}
   491 \end{tabular}
   492 \end{center}
   492 \end{center}
   493 
   493 
   494 \end{frame}
   494 \end{frame}
   495 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   495 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   602 \end{center}
   602 \end{center}
   603 \end{frame}
   603 \end{frame}
   604 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   604 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   605 
   605 
   606   
   606   
   607   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   607 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   608   \begin{frame}[c]
   608   \begin{frame}[c]
   609   \frametitle{Inject}
   609   \frametitle{Inject}
   610   
   610   
   611   Injecting (``Adding'') a character to a value\\[-12mm]\mbox{}
   611   Injecting (``Adding'') a character to a value\\[-12mm]\mbox{}
   612   
   612   
   627   \bl{$inj$}: & 1st arg $\mapsto$ a rexp; 2nd arg $\mapsto$ a character; 
   627   \bl{$inj$}: & 1st arg $\mapsto$ a rexp; 2nd arg $\mapsto$ a character; 
   628   3rd arg $\mapsto$ a value\\
   628   3rd arg $\mapsto$ a value\\
   629               & result $\mapsto$ a value 
   629               & result $\mapsto$ a value 
   630   \end{tabular}
   630   \end{tabular}
   631   \end{frame}
   631   \end{frame}
   632   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   632   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   633 
       
   634 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   635   \begin{frame}[t]
       
   636   
       
   637   \begin{center}
       
   638   \begin{tabular}{@{\hspace{-3mm}}l@{\hspace{1mm}}c@{\hspace{1mm}}l@{}}
       
   639     \bl{$inj\,(c)\,c\,(Empty)$} & \bl{$\dn$}  & \bl{$Char\,c$}\\
       
   640   \end{tabular}
       
   641   \end{center}
       
   642 
       
   643 \end{frame}
       
   644 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
       
   645 
       
   646 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   647   \begin{frame}[t]
       
   648   
       
   649   \begin{center}
       
   650     \begin{tabular}{@{\hspace{-3mm}}l@{\hspace{1mm}}c@{\hspace{1mm}}l@{}}
       
   651     \bl{$inj\,(r_1 + r_2)\,c\,(Left(v))$} & \bl{$\dn$}  & \bl{$Left(inj\,r_1\,c\,v)$}\\
       
   652     \bl{$inj\,(r_1 + r_2)\,c\,(Right(v))$} & \bl{$\dn$}  & \bl{$Right(inj\,r_2\,c\,v)$}\\
       
   653 
       
   654   \end{tabular}
       
   655   \end{center}
       
   656 
       
   657 \end{frame}
       
   658 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   659 
       
   660 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   661   \begin{frame}[t]
       
   662   
       
   663   \begin{center}
       
   664     \begin{tabular}{@{\hspace{-8mm}}l@{\hspace{1mm}}c@{\hspace{1mm}}l@{}}
       
   665     \\[-15mm]  
       
   666     \bl{$inj\,(r_1 \cdot r_2)\,c\,(Seq(v_1,v_2))$} & \bl{$\dn$}  & \bl{$Seq(inj\,r_1\,c\,v_1,v_2)$}\\
       
   667     \bl{$inj\,(r_1 \cdot r_2)\,c\,(Left(Seq(v_1,v_2)))$} & \bl{$\dn$}  & \bl{$Seq(inj\,r_1\,c\,v_1,v_2)$}\\
       
   668     \bl{$inj\,(r_1 \cdot r_2)\,c\,(Right(v))$} & \bl{$\dn$}  & \bl{$Seq(mkeps(r_1),inj\,r_2\,c\,v)$}\\  
       
   669   \end{tabular}
       
   670 \end{center}
       
   671 
       
   672 
       
   673 \begin{textblock}{13}(1,13.4)
       
   674 \begin{bubble}[13cm]
       
   675 \small
       
   676 \bl{$\der\, c\, (r_1 \cdot r_2)$} \bl{$\dn$} \bl{\textbf{if} $nullable (r_1)$}
       
   677  \bl{\textbf{then} $(\der\,c\,r_1) \cdot r_2 + \der\, c\, r_2$}
       
   678  \bl{\textbf{else} $(\der\, c\, r_1) \cdot r_2$}
       
   679 \end{bubble}
       
   680 \end{textblock}
       
   681 
       
   682 \end{frame}
       
   683 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
       
   684 
       
   685 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   686   \begin{frame}[t]
       
   687   
       
   688   \begin{center}
       
   689   \begin{tabular}{@{\hspace{-3mm}}l@{\hspace{1mm}}c@{\hspace{1mm}}l@{}}
       
   690     \bl{$inj\,(r^*)\,c\,(Seq(v,Stars\,vs))$} & \bl{$\dn$}  & \bl{$Stars\,(inj\,r\,c\,v\,::\,vs)$}
       
   691   \end{tabular}
       
   692   \end{center}
       
   693 
       
   694 \end{frame}
       
   695 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
       
   696 
   633   
   697   
   634 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   698 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   635 \begin{frame}[c]
   699 \begin{frame}[c]
   636 \frametitle{Lexing}
   700 \frametitle{Lexing}
   637 
   701 
   638 \begin{center}
   702 \begin{center}
   639 \begin{tabular}{l@{\hspace{1mm}}c@{\hspace{1mm}}l}
   703 \begin{tabular}{l@{\hspace{1mm}}c@{\hspace{1mm}}l}
   640   \bl{$lex\,r\,[]$} & \bl{$\dn$}  & \bl{if $nullable(r)$ then $mkeps(r)$ else $error$}\\
   704   \bl{$lex\,r\,[]$} & \bl{$\dn$}  & \bl{if $nullable(r)$ then $mkeps(r)$ else $error$}\\
   641   \bl{$lex\,r\,c::s$} & \bl{$\dn$}  & \bl{$inj\,r\,c\,lex(der(c,r), s)$}\\
   705   \bl{$lex\,r\,a::s$} & \bl{$\dn$}  & \bl{$inj\,r\,a\,lex(der(a,r), s)$}\\
   642 \end{tabular}
   706 \end{tabular}
   643 \end{center}
   707 \end{center}
   644 
   708 
   645 \footnotesize
   709 \footnotesize
   646 \bl{$lex$}: returns a value
   710 \bl{$lex$}: returns a value
   686 \item \bl{$inj\,(x:r)\,c\,v \dn Rec(x, inj\,r\,c\,v)$}
   750 \item \bl{$inj\,(x:r)\,c\,v \dn Rec(x, inj\,r\,c\,v)$}
   687 \end{itemize}\bigskip\bigskip\pause
   751 \end{itemize}\bigskip\bigskip\pause
   688 
   752 
   689 \small
   753 \small
   690 for extracting subpatterns \bl{$(z: ((x:ab) + (y:ba))$}
   754 for extracting subpatterns \bl{$(z: ((x:ab) + (y:ba))$}
       
   755 
       
   756 \begin{textblock}{6}(10,10)
       
   757 \begin{bubble}[2cm]
       
   758 \small
       
   759 \begin{tabular}{l}
       
   760   \bl{$(id : r_{id})$}\\
       
   761   \bl{$(key : r_{key})$}\\
       
   762 \end{tabular}
       
   763 \end{bubble}
       
   764 \end{textblock}
       
   765 
   691 
   766 
   692 \end{frame}
   767 \end{frame}
   693 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   768 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   694 
   769 
   695 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   770 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%