156 |
156 |
157 \end{frame} |
157 \end{frame} |
158 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
158 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
159 |
159 |
160 |
160 |
161 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
162 \begin{frame}[t,fragile] |
|
163 |
|
164 \small |
|
165 \begin{textblock}{13}(-0.5,1) |
|
166 \begin{lstlisting}[numbers=none] |
|
167 def mkeps(r: Rexp) : Val = r match { |
|
168 ... |
|
169 case PLUS(r) => Stars(List(mkeps(r))) |
|
170 case OPTIONAL(r) => Stars(Nil) |
|
171 case NTIMES(r, n) => Stars(List.fill(n)(mkeps(r))) |
|
172 } |
|
173 |
|
174 def inj(r: Rexp, c: Char, v: Val) : Val = (r, v) match { |
|
175 ... |
|
176 case (RANGE(_), Empty) => Chr(c) |
|
177 case (PLUS(r), Sequ(v1, Stars(vs))) => Stars(inj(r, c, v1)::vs) |
|
178 case (OPTIONAL(r), v) => Stars(inj(r, c, v)::Nil) |
|
179 case (NTIMES(r, n), Sequ(v1, Stars(vs))) => Stars(inj(r, c, v1)::vs) |
|
180 } |
|
181 \end{lstlisting} |
|
182 \end{textblock} |
|
183 |
|
184 |
|
185 \begin{textblock}{5}(3,13.5) |
|
186 \bl{$r^? \dn r^{\{0..1\}}$} |
|
187 \end{textblock} |
|
188 |
|
189 \end{frame} |
|
190 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
191 |
|
192 |
161 |
193 |
162 |
194 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
163 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
195 % \begin{frame}[c] |
164 % \begin{frame}[c] |
196 |
165 |