| author | cu | 
| Wed, 18 Oct 2017 08:36:44 +0100 | |
| changeset 521 | fa5c34e42a35 | 
| parent 459 | 858f62bc930a | 
| child 525 | e5a004ffa681 | 
| permissions | -rw-r--r-- | 
| 
208
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
1  | 
\documentclass{article}
 | 
| 
292
 
7ed2a25dd115
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
208 
diff
changeset
 | 
2  | 
\usepackage{../style}
 | 
| 
 
7ed2a25dd115
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
208 
diff
changeset
 | 
3  | 
\usepackage{../graphics}
 | 
| 459 | 4  | 
\usepackage{../langs}
 | 
| 
208
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
5  | 
|
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
6  | 
\begin{document}
 | 
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
7  | 
|
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
8  | 
\section*{Homework 9}
 | 
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
9  | 
|
| 
359
 
db106e5b7c4d
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
314 
diff
changeset
 | 
10  | 
\HEADER  | 
| 
 
db106e5b7c4d
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
314 
diff
changeset
 | 
11  | 
|
| 
208
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
12  | 
\begin{enumerate}
 | 
| 
292
 
7ed2a25dd115
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
208 
diff
changeset
 | 
13  | 
\item Describe what is meant by \emph{eliminating tail
 | 
| 459 | 14  | 
recursion}? When can this optimization be applied and  | 
15  | 
why is it of benefit?  | 
|
16  | 
||
17  | 
\item A programming language has arithmetic expression. For an  | 
|
18  | 
arithmetic expression the compiler of this language produces the  | 
|
19  | 
following snippet of JVM code.  | 
|
20  | 
||
21  | 
\begin{lstlisting}[language=JVMIS,numbers=none]
 | 
|
22  | 
ldc 1  | 
|
23  | 
ldc 2  | 
|
24  | 
ldc 3  | 
|
25  | 
imul  | 
|
26  | 
ldc 4  | 
|
27  | 
ldc 3  | 
|
28  | 
isub  | 
|
29  | 
iadd  | 
|
30  | 
iadd  | 
|
31  | 
\end{lstlisting}
 | 
|
32  | 
||
33  | 
Give the arithmetic expression that produced this code. Make sure  | 
|
34  | 
you give all necessary parentheses.  | 
|
35  | 
||
36  | 
\item Describe what the following two JVM instructions do!  | 
|
37  | 
||
38  | 
\begin{lstlisting}[language=JVMIS,numbers=none]
 | 
|
39  | 
iload 3  | 
|
40  | 
istore 1  | 
|
41  | 
\end{lstlisting}
 | 
|
42  | 
||
43  | 
\item \POSTSCRIPT  | 
|
| 
208
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
44  | 
|
| 
314
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
45  | 
% \item It is true (I confirmed it) that  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
46  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
47  | 
%  \begin{center} if $\varnothing$ does not occur in $r$
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
48  | 
%  \;\;then\;\;$L(r) \not= \{\}$ 
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
49  | 
%  \end{center}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
50  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
51  | 
% \noindent  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
52  | 
% holds, or equivalently  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
53  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
54  | 
%  \begin{center}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
55  | 
%  $L(r) = \{\}$ \;\;implies\;\; $\varnothing$ occurs in $r$.
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
56  | 
%  \end{center}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
57  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
58  | 
% \noindent  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
59  | 
% You can prove either version by induction on $r$. The best way to  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
60  | 
% make more formal what is meant by `$\varnothing$ occurs in $r$', you can define  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
61  | 
% the following function:  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
62  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
63  | 
%  \begin{center}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
64  | 
%  \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
65  | 
% $occurs(\varnothing)$ & $\dn$ & $true$\\  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
66  | 
% $occurs(\epsilon)$ & $\dn$ & $f\!alse$\\  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
67  | 
% $occurs (c)$ & $\dn$ & $f\!alse$\\  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
68  | 
% $occurs (r_1 + r_2)$ & $\dn$ & $occurs(r_1) \vee occurs(r_2)$\\  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
69  | 
% $occurs (r_1 \cdot r_2)$ & $\dn$ & $occurs(r_1) \vee occurs(r_2)$\\  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
70  | 
% $occurs (r^*)$ & $\dn$ & $occurs(r)$ \\  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
71  | 
%  \end{tabular}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
72  | 
%  \end{center}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
73  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
74  | 
% \noindent  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
75  | 
% Now you can prove  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
76  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
77  | 
%  \begin{center}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
78  | 
%  $L(r) = \{\}$ \;\;implies\;\; $occurs(r)$.
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
79  | 
%  \end{center}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
80  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
81  | 
% \noindent  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
82  | 
% The interesting cases are $r_1 + r_2$ and $r^*$.  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
83  | 
%  The other direction is not true, that is if $occurs(r)$ then $L(r) = \{\}$. A counter example
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
84  | 
% is $\varnothing + a$: although $\varnothing$ occurs in this regular expression, the corresponding  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
85  | 
% language is not empty. The obvious extension to include the not-regular expression, $\sim r$,  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
86  | 
% also leads to an incorrect statement. Suppose we add the clause  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
87  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
88  | 
%  \begin{center}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
89  | 
%  \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
90  | 
% $occurs(\sim r)$ & $\dn$ & $occurs(r)$  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
91  | 
%  \end{tabular}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
92  | 
%  \end{center}  
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
93  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
94  | 
% \noindent  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
95  | 
% to the definition above, then it will not be true that  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
96  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
97  | 
%  \begin{center}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
98  | 
%  $L(r) = \{\}$ \;\;implies\;\; $occurs(r)$.
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
99  | 
%  \end{center}
 | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
100  | 
%  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
101  | 
% \noindent  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
102  | 
% Assume the alphabet contains just $a$ and $b$, find a counter example to this  | 
| 
 
7dd5797a5ffa
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
292 
diff
changeset
 | 
103  | 
% property.  | 
| 
208
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
104  | 
|
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
105  | 
\end{enumerate}
 | 
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
106  | 
|
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
107  | 
\end{document}
 | 
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
108  | 
|
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
109  | 
%%% Local Variables:  | 
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
110  | 
%%% mode: latex  | 
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
111  | 
%%% TeX-master: t  | 
| 
 
bd5a8a6b3871
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
112  | 
%%% End:  |