coursework/cw02.tex
changeset 748 383f2a5952ce
parent 719 0de3527e6ae3
child 750 e93a9e74ca8e
--- a/coursework/cw02.tex	Mon Aug 24 15:03:55 2020 +0100
+++ b/coursework/cw02.tex	Mon Aug 31 16:57:15 2020 +0100
@@ -5,16 +5,16 @@
 
 \begin{document}
 
-\section*{Coursework 2 (Strand 1)}
+\section*{Coursework 2}
 
-\noindent This coursework is worth 5\% and is due on
-\cwTWO{} at 18:00. You are asked to implement the Sulzmann \&
-Lu lexer for the WHILE language. You can do the
-implementation in any programming language you like, but you
-need to submit the source code with which you answered the
-questions, otherwise a mark of 0\% will be awarded. You can
-submit your answers in a txt-file or as pdf. Code submit as 
-code.
+\noindent This coursework is worth 8\% and is due on \cwTWO{} at
+18:00. You are asked to implement the Sulzmann \& Lu lexer for the
+WHILE language. You can do the implementation in any programming
+language you like, but you need to submit the source code with which
+you answered the questions, otherwise a mark of 0\% will be
+awarded. You can submit your answers in a txt-file or as pdf. Code
+submit as code. Please package everything in a zip-file that creates a
+directory with the name \texttt{YournameYourfamilyname} on my end. Thanks!
 
 \subsection*{Disclaimer}
 
@@ -28,12 +28,12 @@
 
 To implement a lexer for the WHILE language, you first
 need to design the appropriate regular expressions for the
-following eight syntactic entities:
+following eleven syntactic entities:
 
 \begin{enumerate}
 \item keywords are
 
-\begin{quote}
+\begin{center}
 \texttt{while}, 
 \texttt{if}, 
 \texttt{then}, 
@@ -46,11 +46,9 @@
 \texttt{read}, 
 \texttt{write},
 \texttt{skip}
-\end{quote} 
+\end{center} 
 
-\item operators are
-
-\begin{quote}
+\item operators are:
 \texttt{+}, 
 \texttt{-}, 
 \texttt{*}, 
@@ -59,13 +57,27 @@
 \texttt{==}, 
 \texttt{!=}, 
 \texttt{>}, 
-\texttt{<}, 
+\texttt{<},
+\texttt{<=}, 
+\texttt{>=},
 \texttt{:=},
 \texttt{\&\&},
 \texttt{||}
-\end{quote} 
+
+\item letters are uppercase and lowercase
 
-\item strings are enclosed by \texttt{"\ldots"} 
+\item symbols are letters plus the characters
+  \texttt{.},
+  \texttt{\_},
+  \texttt{>},
+  \texttt{<},
+  \texttt{=},
+  \texttt{;},
+  \texttt{,} and
+  \texttt{:}
+
+\item strings are enclosed by \texttt{"\ldots"} and consisting of
+  symbols, whitespaces and digits
 \item parentheses are \texttt{(}, \texttt{\{}, \texttt{)} and \texttt{\}}
 \item there are semicolons \texttt{;}
 \item whitespaces are either \texttt{" "} (one or more) or \texttt{$\backslash$n} or
@@ -75,6 +87,7 @@
 \item numbers are \pcode{0}, \pcode{1}, \ldots and so on; give 
 a regular expression that can recognise \pcode{0}, but not numbers 
 with leading zeroes, such as \pcode{001}
+\item comments start with \texttt{//} and contain symbols, spaces and digits until the end of the line
 \end{enumerate}
 
 \noindent
@@ -169,31 +182,38 @@
 
 \subsection*{Question 3}
 
-Extend your lexer from Q2 to also simplify regular expressions
-after each derivation step and rectify the computed values after each
+Extend your lexer from Q2 to also simplify regular expressions after
+each derivation step and rectify the computed values after each
 injection. Use this lexer to tokenize the programs in
-Figure~\ref{fib}, \ref{loop} and \ref{factors}. Give the tokens of these
-programs where whitespaces are filtered out. Make sure you can
-tokenise \textbf{exactly} these programs.\bigskip
+Figures~\ref{fib} -- \ref{collatz}. You can find the programms also on
+KEATS. Give the tokens of these programs where whitespaces are
+filtered out. Make sure you can tokenise \textbf{exactly} these
+programs.\bigskip
 
 
 \begin{figure}[h]
-\mbox{\lstinputlisting[language=While,xleftmargin=10mm]{../progs/fib.while}}
+\mbox{\lstinputlisting[language=While,xleftmargin=10mm]{../progs/while-tests/fib.while}}
 \caption{Fibonacci program in the WHILE language.\label{fib}}
 \end{figure}
 
 \begin{figure}[h]
-\mbox{\lstinputlisting[language=While,xleftmargin=10mm]{../progs/loops.while}}
+\mbox{\lstinputlisting[language=While,xleftmargin=10mm]{../progs/while-tests/loops.while}}
 \caption{The three-nested-loops program in the WHILE language. 
 (Usually used for timing measurements.)\label{loop}}
 \end{figure}
 
 \begin{figure}[h]
-\mbox{\lstinputlisting[language=While,xleftmargin=10mm]{../progs/factors.while}}
+\mbox{\lstinputlisting[language=While,xleftmargin=10mm]{../progs/while-tests/factors.while}}
 \caption{A program that calculates factors for numbers in the WHILE
   language.\label{factors}}
 \end{figure}
 
+\begin{figure}[h]
+\mbox{\lstinputlisting[language=While,xleftmargin=10mm]{../progs/while-tests/collatz2.while}}
+\caption{A program that calculates the Collatz series for numbers
+  between 1 and 100.\label{collatz}}
+\end{figure}
+
 \end{document}
 
 %%% Local Variables: