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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |