| author | Christian Urban <christian.urban@kcl.ac.uk> | 
| Mon, 29 Jun 2020 22:19:05 +0100 | |
| changeset 728 | 9a251e86c3ee | 
| parent 726 | f6c2e8c48a1c | 
| child 768 | fd7f4f23d4af | 
| permissions | -rw-r--r-- | 
| 31 | 1 | \documentclass{article}
 | 
| 264 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
166diff
changeset | 2 | \usepackage{../style}
 | 
| 292 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 3 | \usepackage{../graphics}
 | 
| 146 
9da175d5eb63
added new hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
102diff
changeset | 4 | |
| 31 | 5 | \begin{document}
 | 
| 6 | ||
| 7 | \section*{Homework 4}
 | |
| 8 | ||
| 347 
22b5294daa2a
updated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
294diff
changeset | 9 | \HEADER | 
| 
22b5294daa2a
updated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
294diff
changeset | 10 | |
| 31 | 11 | \begin{enumerate}
 | 
| 34 | 12 | |
| 726 | 13 | \item Given the regular expressions | 
| 14 | ||
| 15 | \begin{center}
 | |
| 16 | \begin{tabular}{ll}    
 | |
| 17 | 1) & $(ab + a)\cdot (\ONE + b)$\\ | |
| 18 | 2) & $(aa + a)^*$\\ | |
| 19 | \end{tabular}
 | |
| 20 | \end{center}
 | |
| 21 | ||
| 22 | there are several values for how these regular expressions can | |
| 23 | recognise the strings (for 1) $ab$ and (for 2) $aaa$. Give in each case | |
| 24 | \emph{all} the values and indicate which one is the POSIX value.
 | |
| 25 | ||
| 26 | ||
| 444 
3056a4c071b0
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
401diff
changeset | 27 | \item If a regular expression $r$ does not contain any occurrence of $\ZERO$, | 
| 525 | 28 | is it possible for $L(r)$ to be empty? Explain why, or give a proof. | 
| 32 | 29 | |
| 264 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
166diff
changeset | 30 | \item Define the tokens and regular expressions for a language | 
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 31 | consisting of numbers, left-parenthesis $($, right-parenthesis $)$, | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 32 | identifiers and the operations $+$, $-$ and $*$. Can the following | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 33 | strings in this language be lexed? | 
| 264 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
166diff
changeset | 34 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 35 |   \begin{itemize}
 | 
| 264 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
166diff
changeset | 36 | \item $(a + 3) * b$ | 
| 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
166diff
changeset | 37 | \item $)()++ -33$ | 
| 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
166diff
changeset | 38 | \item $(a / 3) * 3$ | 
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 39 |   \end{itemize}
 | 
| 264 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
166diff
changeset | 40 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 41 | In case they can, can you give the corresponding token | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 42 | sequences. | 
| 264 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
166diff
changeset | 43 | |
| 32 | 44 | \item Assume that $s^{-1}$ stands for the operation of reversing a
 | 
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 45 |   string $s$. Given the following \emph{reversing} function on regular
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 46 | expressions | 
| 32 | 47 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 48 |   \begin{center}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 49 |     \begin{tabular}{r@{\hspace{1mm}}c@{\hspace{1mm}}l}
 | 
| 401 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 50 | $rev(\ZERO)$ & $\dn$ & $\ZERO$\\ | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 51 | $rev(\ONE)$ & $\dn$ & $\ONE$\\ | 
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 52 | $rev(c)$ & $\dn$ & $c$\\ | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 53 | $rev(r_1 + r_2)$ & $\dn$ & $rev(r_1) + rev(r_2)$\\ | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 54 | $rev(r_1 \cdot r_2)$ & $\dn$ & $rev(r_2) \cdot rev(r_1)$\\ | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 55 | $rev(r^*)$ & $\dn$ & $rev(r)^*$\\ | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 56 |     \end{tabular}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 57 |   \end{center}
 | 
| 34 | 58 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 59 | and the set | 
| 32 | 60 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 61 |   \begin{center}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 62 |     $Rev\,A \dn \{s^{-1} \;|\; s \in A\}$
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 63 |   \end{center}
 | 
| 31 | 64 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 65 | prove whether | 
| 32 | 66 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 67 |   \begin{center}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 68 | $L(rev(r)) = Rev (L(r))$ | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 69 |   \end{center}
 | 
| 31 | 70 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 71 | holds. | 
| 42 | 72 | |
| 401 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 73 | \item Assume the delimiters for comments are | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 74 |       \texttt{$\slash$*} and \texttt{*$\slash$}. Give a
 | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 75 | regular expression that can recognise comments of the | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 76 | form | 
| 42 | 77 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 78 |   \begin{center}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 79 |     \texttt{$\slash$*~\ldots{}~*$\slash$} 
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 80 |   \end{center}
 | 
| 42 | 81 | |
| 401 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 82 | where the three dots stand for arbitrary characters, but | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 83 | not comment delimiters. (Hint: You can assume you are | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 84 |       already given a regular expression written \texttt{ALL},
 | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 85 | that can recognise any character, and a regular | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 86 |       expression \texttt{NOT} that recognises the complement
 | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 87 | of a regular expression.) | 
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 88 | |
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 89 | \item Simplify the regular expression | 
| 42 | 90 | |
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 91 | \[ | 
| 401 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 92 | (\ZERO \cdot (b \cdot c)) + | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 93 | ((\ZERO \cdot c) + \ONE) | 
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 94 | \] | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 95 | |
| 401 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 96 | Does simplification always preserve the meaning of a | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 97 | regular expression? | 
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 98 | |
| 401 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 99 | \item The Sulzmann \& Lu algorithm contains the function | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 100 | $mkeps$ which answers how a regular expression can match | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 101 | the empty string. What is the answer of $mkeps$ for the | 
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 102 | regular expressions: | 
| 146 
9da175d5eb63
added new hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
102diff
changeset | 103 | |
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 104 | \[ | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 105 |   \begin{array}{l}
 | 
| 401 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 106 | (\ZERO \cdot (b \cdot c)) + | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 107 | ((\ZERO \cdot c) + \ONE)\\ | 
| 577 | 108 | (a + \ONE) \cdot (\ONE + \ONE)\\ | 
| 109 | a^* | |
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 110 |   \end{array}
 | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 111 | \] | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 112 | |
| 401 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 113 | \item What is the purpose of the record regular expression in | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
359diff
changeset | 114 | the Sulzmann \& Lu algorithm? | 
| 498 | 115 | |
| 116 | \item Recall the functions \textit{nullable} and \textit{zeroable}.
 | |
| 117 |   Define recursive functions \textit{atmostempty} (for regular expressions
 | |
| 118 |   that match no string or only the empty string), \textit{somechars} (for regular
 | |
| 119 |   expressions that match some non-empty string), \textit{infinitestrings} (for regular
 | |
| 120 | expressions that can match infinitely many strings). | |
| 121 | ||
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 122 | |
| 146 
9da175d5eb63
added new hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
102diff
changeset | 123 | %\item (Optional) The tokenizer in \texttt{regexp3.scala} takes as
 | 
| 
9da175d5eb63
added new hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
102diff
changeset | 124 | %argument a string and a list of rules. The result is a list of tokens. Improve this tokenizer so | 
| 
9da175d5eb63
added new hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
102diff
changeset | 125 | %that it filters out all comments and whitespace from the result. | 
| 
9da175d5eb63
added new hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
102diff
changeset | 126 | |
| 
9da175d5eb63
added new hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
102diff
changeset | 127 | %\item (Optional) Modify the tokenizer in \texttt{regexp2.scala} so that it
 | 
| 
9da175d5eb63
added new hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
102diff
changeset | 128 | %implements the \texttt{findAll} function. This function takes a regular
 | 
| 
9da175d5eb63
added new hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
102diff
changeset | 129 | %expressions and a string, and returns all substrings in this string that | 
| 444 
3056a4c071b0
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
401diff
changeset | 130 | %match the regular expression. | 
| 
3056a4c071b0
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
401diff
changeset | 131 | |
| 
3056a4c071b0
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
401diff
changeset | 132 | \item \POSTSCRIPT | 
| 31 | 133 | \end{enumerate}
 | 
| 134 | ||
| 135 | ||
| 136 | \end{document}
 | |
| 137 | ||
| 138 | %%% Local Variables: | |
| 139 | %%% mode: latex | |
| 140 | %%% TeX-master: t | |
| 141 | %%% End: |