| author | Christian Urban <urbanc@in.tum.de> | 
| Fri, 01 Jun 2018 15:28:37 +0100 | |
| changeset 550 | a62357075346 | 
| parent 544 | 91926c861910 | 
| child 556 | 4b0fffaef849 | 
| permissions | -rw-r--r-- | 
| 
200
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
1  | 
\documentclass{article}
 | 
| 
299
 
6322922aa990
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
298 
diff
changeset
 | 
2  | 
\usepackage{../style}
 | 
| 
216
 
f5ec7c597c5b
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
214 
diff
changeset
 | 
3  | 
\usepackage{../langs}
 | 
| 
200
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
4  | 
|
| 
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
5  | 
\begin{document}
 | 
| 
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
6  | 
|
| 
419
 
4110ab35e5d8
updated courseworks
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
358 
diff
changeset
 | 
7  | 
\section*{Coursework 3}
 | 
| 
200
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
8  | 
|
| 537 | 9  | 
\noindent This coursework is worth 5\% and is due on 26  | 
| 
358
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
10  | 
November at 16:00. You are asked to implement a parser for the  | 
| 
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
11  | 
WHILE language and also an interpreter. You can do the  | 
| 
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
12  | 
implementation in any programming language you like, but you  | 
| 
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
13  | 
need to submit the source code with which you answered the  | 
| 
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
14  | 
questions, otherwise a mark of 0\% will be awarded. You should  | 
| 
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
15  | 
use the lexer from the previous coursework for the parser.  | 
| 
200
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
16  | 
|
| 
358
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
17  | 
\subsection*{Disclaimer}
 | 
| 
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
18  | 
|
| 
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
19  | 
It should be understood that the work you submit represents  | 
| 
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
20  | 
your own effort. You have not copied from anyone else. An  | 
| 
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
21  | 
exception is the Scala code I showed during the lectures,  | 
| 
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
22  | 
which you can use. You can also use your own code from the  | 
| 
 
b3129cff41e9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
333 
diff
changeset
 | 
23  | 
CW~1 and CW~2.  | 
| 
200
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
24  | 
|
| 
299
 
6322922aa990
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
298 
diff
changeset
 | 
25  | 
|
| 
419
 
4110ab35e5d8
updated courseworks
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
358 
diff
changeset
 | 
26  | 
\subsection*{Question 1}
 | 
| 
200
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
27  | 
|
| 
419
 
4110ab35e5d8
updated courseworks
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
358 
diff
changeset
 | 
28  | 
Design a grammar for the WHILE language and give the grammar  | 
| 544 | 29  | 
rules. The main categories of non-terminals should be:  | 
| 
300
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
30  | 
|
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
31  | 
\begin{itemize}
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
32  | 
\item arithmetic expressions (with the operations from the  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
33  | 
  previous coursework, such as \pcode{+}, \pcode{*} and so on)
 | 
| 
301
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
34  | 
\item boolean expressions (such as \pcode{<}, \code{!=} and 
 | 
| 
300
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
35  | 
so on)  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
36  | 
\item single statements (such as \pcode{skip}, assignments, \pcode{if}s,
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
37  | 
  \pcode{while}-loops and so on)
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
38  | 
\item compound statements separated by semicolons  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
39  | 
\item blocks which are enclosed in curly parentheses  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
40  | 
\end{itemize}
 | 
| 
200
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
41  | 
|
| 
419
 
4110ab35e5d8
updated courseworks
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
358 
diff
changeset
 | 
42  | 
\subsection*{Question 2}
 | 
| 
201
 
c813506e0ee8
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
200 
diff
changeset
 | 
43  | 
|
| 
301
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
44  | 
You should implement a parser for the WHILE language using  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
45  | 
parser combinators. Be careful that the parser takes as input  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
46  | 
a stream, or list, of tokens generated by the tokenizer from  | 
| 
419
 
4110ab35e5d8
updated courseworks
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
358 
diff
changeset
 | 
47  | 
the previous coursework. For this you might want to filter out  | 
| 
304
 
1daaf6f6e45b
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
301 
diff
changeset
 | 
48  | 
whitespaces and comments. Your parser should be able to handle  | 
| 
300
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
49  | 
the WHILE programs in Figures~\ref{fib} and \ref{loop}.
 | 
| 
301
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
50  | 
In addition give the parse tree for the statement:  | 
| 
300
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
51  | 
|
| 
301
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
52  | 
\begin{lstlisting}[language=While,numbers=none]
 | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
53  | 
if (a < b) then skip else a := a * b + 1  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
54  | 
\end{lstlisting}
 | 
| 
300
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
55  | 
|
| 
301
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
56  | 
\noindent  | 
| 
300
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
57  | 
A (possibly incomplete) datatype for parse trees in Scala would  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
58  | 
look as in Figure~\ref{trees}.
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
59  | 
|
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
60  | 
\begin{figure}
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
61  | 
\begin{lstlisting}[language=Scala]
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
62  | 
abstract class Stmt  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
63  | 
abstract class AExp  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
64  | 
abstract class BExp  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
65  | 
|
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
66  | 
type Block = List[Stmt]  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
67  | 
|
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
68  | 
case object Skip extends Stmt  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
69  | 
case class If(a: BExp, bl1: Block, bl2: Block) extends Stmt  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
70  | 
case class While(b: BExp, bl: Block) extends Stmt  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
71  | 
case class Assign(s: String, a: AExp) extends Stmt  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
72  | 
|
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
73  | 
case class Var(s: String) extends AExp  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
74  | 
case class Num(i: Int) extends AExp  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
75  | 
case class Aop(o: String, a1: AExp, a2: AExp) extends AExp  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
76  | 
|
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
77  | 
case object True extends BExp  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
78  | 
case object False extends BExp  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
79  | 
case class Bop(o: String, a1: AExp, a2: AExp) extends BExp  | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
80  | 
\end{lstlisting}
 | 
| 
301
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
81  | 
\caption{The datatype for parse trees in Scala.\label{trees}}
 | 
| 
300
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
82  | 
\end{figure}
 | 
| 
201
 
c813506e0ee8
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
200 
diff
changeset
 | 
83  | 
|
| 
419
 
4110ab35e5d8
updated courseworks
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
358 
diff
changeset
 | 
84  | 
\subsection*{Question 3}
 | 
| 
205
 
0b59588d28d2
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
204 
diff
changeset
 | 
85  | 
|
| 
301
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
86  | 
Implement an interpreter for the WHILE language you designed  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
87  | 
and parsed in Question 1 and 2. This interpreter should take  | 
| 
419
 
4110ab35e5d8
updated courseworks
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
358 
diff
changeset
 | 
88  | 
as input a parse tree. However be careful because, programs  | 
| 
301
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
89  | 
contain variables and variable assignments. This means  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
90  | 
you need to maintain a kind of memory, or environment,  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
91  | 
where you can look up a value of a variable and also  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
92  | 
store a new value if it is assigned. Therefore an  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
93  | 
evaluation function (interpreter) needs to look roughly as  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
94  | 
follows  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
95  | 
|
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
96  | 
\begin{lstlisting}[numbers=none]
 | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
97  | 
eval_stmt(stmt, env)  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
98  | 
\end{lstlisting}
 | 
| 
300
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
99  | 
|
| 
301
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
100  | 
\noindent  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
101  | 
where \pcode{stmt} corresponds to the parse tree
 | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
102  | 
of the program and \pcode{env} is an environment
 | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
103  | 
acting as a store for variable values.  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
104  | 
Consider the Fibonacci program in Figure~\ref{fib}.
 | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
105  | 
At the beginning of the program this store will be  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
106  | 
empty, but needs to be extended in line 3 and 4 where  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
107  | 
the variables \pcode{minus1} and \pcode{minus2}
 | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
108  | 
are assigned values. These values need to be reassigned in  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
109  | 
lines 7 and 8. The program should be interpreted  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
110  | 
according to straightforward rules: for example an  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
111  | 
if-statement will ``run'' the if-branch if the boolean  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
112  | 
evaluates to \pcode{true}, otherwise the else-branch.
 | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
113  | 
Loops should be run as long as the boolean is \pcode{true}.
 | 
| 
205
 
0b59588d28d2
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
204 
diff
changeset
 | 
114  | 
|
| 
301
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
115  | 
Give some time measurements for your interpreter  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
116  | 
and the loop program in Figure~\ref{loop}. For example
 | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
117  | 
how long does your interpreter take when \pcode{start}
 | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
118  | 
is initialised with 100, 500 and so on. How far can  | 
| 
 
e8c0269c8ff5
update
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
300 
diff
changeset
 | 
119  | 
you scale this value if you are willing to wait, say  | 
| 473 | 120  | 
1 Minute?  | 
| 
202
 
180cbfc1520a
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
201 
diff
changeset
 | 
121  | 
|
| 
300
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
122  | 
\begin{figure}[p]
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
123  | 
\begin{center}
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
124  | 
\mbox{\lstinputlisting[language=while]{../progs/fib.while}}
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
125  | 
\end{center}
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
126  | 
\caption{Fibonacci program in the WHILE language.\label{fib}}
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
127  | 
\end{figure}
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
128  | 
|
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
129  | 
\begin{figure}[p]
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
130  | 
\begin{center}
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
131  | 
\mbox{\lstinputlisting[language=while]{../progs/loops.while}}
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
132  | 
\end{center}
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
133  | 
\caption{The three-nested-loops program in the WHILE language. 
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
134  | 
Usually used for timing measurements.\label{loop}}
 | 
| 
 
08d99acd35e8
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
299 
diff
changeset
 | 
135  | 
\end{figure}
 | 
| 
214
 
5be68de225e9
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents: 
213 
diff
changeset
 | 
136  | 
|
| 
200
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
137  | 
\end{document}
 | 
| 
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
138  | 
|
| 
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
139  | 
%%% Local Variables:  | 
| 
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
140  | 
%%% mode: latex  | 
| 
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
141  | 
%%% TeX-master: t  | 
| 
 
7415871b1ef5
added
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
142  | 
%%% End:  |