cws/cw04.tex
changeset 942 7f52427568ff
parent 920 bcff91cc274f
child 950 285da21f44c0
equal deleted inserted replaced
941:38456acd29f3 942:7f52427568ff
   235 Explain your decision and indicate what this program would
   235 Explain your decision and indicate what this program would
   236 print out.
   236 print out.
   237 
   237 
   238 \subsection*{Question 4}
   238 \subsection*{Question 4}
   239 
   239 
   240 Extend the lexer and parser to add a \texttt{break} keyword.  Modify
   240 Extend the lexer and parser to add a \textcolor{codepurple}{\pcode{break}} keyword.  Modify
   241 the compiler such that when a \texttt{break}-statement is encountered
   241 the compiler (including lexer and parser) such that when a \textcolor{codepurple}{\texttt{break}}-statement is encountered
   242 the code should jump out of the ``enclosing'' for-loop, or in case it
   242 the code should jump out of the ``enclosing'' for-loop, or in case it
   243 is not inside a for-loop to the end of the program. For example the
   243 is not inside a for-loop to the end of the program. For example the
   244 program
   244 program
   245 
   245 
   246 \begin{center}
   246 \begin{center}
   247 \begin{minipage}{12cm}
   247 \begin{minipage}{12cm}
   248 \begin{lstlisting}[language=While, numbers=none]
   248 \begin{lstlisting}[language=While, numbers=none]
       
   249 // should print 0 .. 10    
   249 for i := 0 upto 10 do {
   250 for i := 0 upto 10 do {
   250   write i;
   251   write i;
   251   write "\n"
   252   write "\n"
   252 };
   253 };
   253 
   254 
       
   255 // should print 0 .. 4  
   254 for i := 0 upto 10 do {
   256 for i := 0 upto 10 do {
   255   if i > 4 then break else skip;
   257   if i > 4 then break else skip;
   256   write i;
   258   write i;
   257   write "\n"
   259   write "\n"
   258 };
   260 };