updated draft
authorChristian Urban <christian.urban@kcl.ac.uk>
Sun, 01 Oct 2023 13:35:51 +0100
changeset 933 4d9674598682
parent 932 c54e0c472891
child 934 114d6638a3fc
updated
cws/cw01.pdf
cws/cw02.pdf
cws/cw02.tex
cwtests/cw02/factors.while
cwtests/cw02/fib.while
Binary file cws/cw01.pdf has changed
Binary file cws/cw02.pdf has changed
--- a/cws/cw02.tex	Sun Oct 01 12:04:51 2023 +0100
+++ b/cws/cw02.tex	Sun Oct 01 13:35:51 2023 +0100
@@ -15,8 +15,9 @@
 you answered the questions, otherwise a mark of 0\% will be
 awarded. You need to submit your written
 answers as pdf---see attached questionaire.  Code send as code. If you use
-Scala in your code, a good place to start is the file \texttt{re3.sc}
-that is uploaded to Github.
+Scala in your code, a good place to start is the file \texttt{lexer.sc}
+and \texttt{token.sc}
+that are uploaded to Github.
 
 \subsection*{Disclaimer\alert}
 
@@ -83,18 +84,20 @@
   \texttt{$\backslash$} and
   \texttt{:}
 
-\item strings are enclosed by double quotes, like \texttt{"\ldots"}, and consisting of
-  symbols, whitespaces and digits
 \item parentheses are \texttt{(}, \texttt{\{}, \texttt{)} and \texttt{\}}
+\item digits are \pcode{0} to \pcode{9}
 \item there are semicolons \texttt{;}
 \item whitespaces are either \texttt{" "} (one or more) or \texttt{$\backslash$n} or
   \texttt{$\backslash$t} or \texttt{$\backslash$r}
 \item identifiers are letters followed by underscores \texttt{\_\!\_}, letters
-or digits
-\item numbers are \pcode{0}, \pcode{1}, \ldots and so on; give 
+  or digits  
+\item numbers for numbers 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
+\item strings are enclosed by double quotes, like \texttt{"\ldots"}, and consisting of
+  symbols, digits, parentheses, whitespaces and \texttt{$\backslash$n} (note the latter is not the escaped version but \texttt{$\backslash$} followed by \texttt{n}, otherwise we would not be able to indicate in our strings when to write a newline).
+\item comments start with \texttt{//} and contain symbols, spaces and digits until the end-of-the-line markers
+\item endo-of-line-markers are \texttt{$\backslash$n} and \texttt{$\backslash$r$\backslash$n}  
 \end{enumerate}
 
 \noindent
@@ -177,7 +180,7 @@
 that you can extract easily the tokens from a value).\medskip 
 
 \noindent
-Finally give the tokens for your regular expressions from Q1 and the
+Finally give \textbf{all} the tokens for your regular expressions from Q1 and the
 string
 
 \begin{center}
@@ -192,9 +195,10 @@
 
 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
-Figures~\ref{fib} -- \ref{collatz}. You can find the programms also on
-KEATS. Give the tokens of these programs where whitespaces are
+injection. Use this lexer to tokenize six WHILE programs some of which
+are given in Figures~\ref{fib} -- \ref{collatz}. You can find these programms also on
+Github under the \texttt{cw2} directory. Give the tokens of these
+programs where whitespaces and comments are
 filtered out. Make sure you can tokenise \textbf{exactly} these
 programs.\bigskip
 
@@ -217,7 +221,7 @@
 \end{figure}
 
 \begin{figure}[h]
-\mbox{\lstinputlisting[language=While,xleftmargin=10mm]{../progs/while-tests/collatz2.while}}
+\mbox{\lstinputlisting[language=While,xleftmargin=10mm]{../cwtests/cw02/collatz2.while}}
 \caption{A program that calculates the Collatz series for numbers
   between 1 and 100.\label{collatz}}
 \end{figure}
@@ -229,7 +233,7 @@
 \mbox{}
 
 \noindent
-\textbf{Question 2:}
+\textbf{Question 2:}\\ (Use mathematical notation, such as $r^+$, rather than code, such as \code{PLUS(r)})
 
 \begin{center}
   \def\arraystretch{1.6}  
--- a/cwtests/cw02/factors.while	Sun Oct 01 12:04:51 2023 +0100
+++ b/cwtests/cw02/factors.while	Sun Oct 01 13:35:51 2023 +0100
@@ -1,13 +1,13 @@
 // Find all factors of a given input number
-
+// by J.R. Cordy August 2005
 
-write "Input n please: ";
+write "Input n please";
 read n;
-write "The factors of n are: \n";
+write "The factors of n are:\n";
 f := 2;
 while (f < n / 2 + 1) do {
   if ((n / f) * f == n)
-  then { write(f); write("\n") }
+  then  { write(f); write "\n" }
   else { skip };
   f := f + 1
-}
\ No newline at end of file
+}
--- a/cwtests/cw02/fib.while	Sun Oct 01 12:04:51 2023 +0100
+++ b/cwtests/cw02/fib.while	Sun Oct 01 13:35:51 2023 +0100
@@ -9,6 +9,5 @@
        n := n - 1
 };
 write "Result: ";
-write minus2 ;
-write "\n"
+write minus2