# HG changeset patch # User Christian Urban # Date 1630882297 -3600 # Node ID a3418ee8c404ec415a335829546f77e605c0d5c8 # Parent 08b157566a73ca2b16ab3121089d08a3bb3d6d00 updated diff -r 08b157566a73 -r a3418ee8c404 cws/build.sc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cws/build.sc Sun Sep 05 23:51:37 2021 +0100 @@ -0,0 +1,25 @@ +#!/usr/bin/env amm + +val files = List("cw01.tex", + "cw02.tex", + "cw03.tex", + "cw04.tex", + "cw05.tex") + + + + +@main +def make() = { + for (f <- files) { + println(s"Processing $f ...") + os.proc("xelatex", f).call(stdout = os.Inherit, stdin = os.Inherit) + os.proc("xelatex", f).call(stdout = os.Inherit, stdin = os.Inherit) + } +} + + +@main +def hg() = { + os.proc("hg", "commit", "-m texupdate", files.mkString(" ")).call() +} diff -r 08b157566a73 -r a3418ee8c404 cws/cw01.pdf Binary file cws/cw01.pdf has changed diff -r 08b157566a73 -r a3418ee8c404 cws/cw02.pdf Binary file cws/cw02.pdf has changed diff -r 08b157566a73 -r a3418ee8c404 cws/cw03.pdf Binary file cws/cw03.pdf has changed diff -r 08b157566a73 -r a3418ee8c404 cws/cw04.pdf Binary file cws/cw04.pdf has changed diff -r 08b157566a73 -r a3418ee8c404 cws/cw04.tex --- a/cws/cw04.tex Sat Sep 04 14:09:26 2021 +0100 +++ b/cws/cw04.tex Sun Sep 05 23:51:37 2021 +0100 @@ -13,7 +13,7 @@ \section*{Coursework 4} -\noindent This coursework is worth 10\% and is due on \cwFOUR{} +\noindent This coursework is worth 15\% and is due on \cwFOUR{} at 18:00. You are asked to implement a compiler for the WHILE language that targets the assembler language provided by Jasmin or Krakatau (both have a very similar @@ -82,13 +82,13 @@ Internet, for example \begin{center} -\small\url{http://www.ceng.metu.edu.tr/courses/ceng444/link/f3jasmintutorial.html} +\small\url{https://saksagan.ceng.metu.edu.tr/courses/ceng444/link/f3jasmintutorial.html} \end{center} \noindent and \begin{center} - \small\url{http://www.csc.villanova.edu/~tway/courses/csc4181/s2018/labs/lab4/JVM.pdf} + \small\url{http://www.csc.villanova.edu/~tway/courses/csc4181/s2021/labs/lab4/JVM.pdf} \end{center} \subsection*{Krakatau Assembler} diff -r 08b157566a73 -r a3418ee8c404 cws/cw05.pdf Binary file cws/cw05.pdf has changed diff -r 08b157566a73 -r a3418ee8c404 cws/cw05.tex --- a/cws/cw05.tex Sat Sep 04 14:09:26 2021 +0100 +++ b/cws/cw05.tex Sun Sep 05 23:51:37 2021 +0100 @@ -6,11 +6,11 @@ \begin{document} -\section*{Coursework 5\footnote{\today}} +\section*{Coursework 5} -\noindent This coursework is worth 12\% and is due on \cwFIVE{} at +\noindent This coursework is worth 25\% and is due on \cwFIVE{} at 18:00. You are asked to implement a compiler targeting the LLVM-IR. Be careful that this CW needs some material about the LLVM-IR that has not been shown in the lectures and your own experiments @@ -27,8 +27,8 @@ you generated the LLVM-IR files, otherwise a mark of 0\% will be awarded. You should use the lexer and parser from the previous courseworks, but you need to make some modifications to them for the -`typed' fun-language. I will award up to 4\% if a lexer and parser are -implemented. At the end, please package everything(!) in a zip-file +`typed' fun-language. I will award up to 5\% if a lexer and a parser are +correctly implemented. At the end, please package everything(!) in a zip-file that creates a directory with the name \texttt{YournameYourFamilyname} on my end. @@ -214,7 +214,9 @@ with simple first-order functions, nothing on the scale as the `Hindley-Milner' typing-algorithm is needed. I suggest to just look at what data is avaliable and generate all - missing information by simple means. + missing information by ``simple means''\ldots rather than + looking at the literature which solves the problem + with much heavier machinery. \item \textbf{Build-In Functions}: The `prelude' comes with several build-in functions: \texttt{new\_line()}, diff -r 08b157566a73 -r a3418ee8c404 cwtests/cw03/collatz2.while --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cwtests/cw03/collatz2.while Sun Sep 05 23:51:37 2021 +0100 @@ -0,0 +1,27 @@ +// Collatz series +// +// needs writing of strings and numbers; comments + +bnd := 1; +while bnd < 101 do { + write bnd; + write ": "; + n := bnd; + cnt := 0; + + while n > 1 do { + write n; + write ","; + + if n % 2 == 0 + then n := n / 2 + else n := 3 * n+1; + + cnt := cnt + 1 + }; + + write " => "; + write cnt; + write "\n"; + bnd := bnd + 1 +} \ No newline at end of file diff -r 08b157566a73 -r a3418ee8c404 cwtests/cw03/fib.while --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cwtests/cw03/fib.while Sun Sep 05 23:51:37 2021 +0100 @@ -0,0 +1,13 @@ +write "Fib"; +read n; +minus1 := 0; +minus2 := 1; +while n > 0 do { + temp := minus2; + minus2 := minus1 + minus2; + minus1 := temp; + n := n - 1 +}; +write "Result"; +write minus2 + diff -r 08b157566a73 -r a3418ee8c404 cwtests/cw03/loops.while --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cwtests/cw03/loops.while Sun Sep 05 23:51:37 2021 +0100 @@ -0,0 +1,14 @@ +start := 1000; +x := start; +y := start; +z := start; +while 0 < x do { + while 0 < y do { + while 0 < z do { z := z - 1 }; + z := start; + y := y - 1 + }; + y := start; + x := x - 1 +} + diff -r 08b157566a73 -r a3418ee8c404 cwtests/cw03/primes.while --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cwtests/cw03/primes.while Sun Sep 05 23:51:37 2021 +0100 @@ -0,0 +1,14 @@ +// prints out prime numbers from 2 to 100 + +end := 100; +n := 2; +while (n < end) do { + f := 2; + tmp := 0; + while ((f < n / 2 + 1) && (tmp == 0)) do { + if ((n / f) * f == n) then { tmp := 1 } else { skip }; + f := f + 1 + }; + if (tmp == 0) then { write(n) } else { skip }; + n := n + 1 +} \ No newline at end of file diff -r 08b157566a73 -r a3418ee8c404 cwtests/cw04/fib.while --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cwtests/cw04/fib.while Sun Sep 05 23:51:37 2021 +0100 @@ -0,0 +1,12 @@ +write "Fib"; +read n; +minus1 := 0; +minus2 := 1; +while n > 0 do { +temp := minus2; +minus2 := minus1 + minus2; +minus1 := temp; +n := n - 1 +}; +write "Result"; +write minus2