\documentclass[12pt]{scrartcl} \usepackage[margin=3cm]{geometry} \title{DrBrainf*ck -- Changes from original proposal} \author{Claudio Maggioni \and Tommaso Rodolfo Masera} \newcommand{\brainfuck}{\emph{Brainf*ck} } \begin{document} \maketitle \tableofcontents \section{Interpreter} The interpreter has been implemented as planned. All interpreter logic resides in \texttt{interpreter.rkt}. This section is entirely functional and uses as the basic data structure the type \texttt{ProgState}. The most exotic element in the interpreter is the use of callback functions as arguments in order to handle input asynchronously. The test suite is complete in this file. \section{CLI} A CLI version of the interpreter is available running the file \texttt{cli.rkt}. The code uses the \texttt{command-line} function from \textit{Racket} in order to parse CLI flags and arguments. Since the entire implementation relies on imperative elements (like \texttt{read-line} and \texttt{display}) we were unable to build a function-to-function test suite. \section{GUI} The GUI has been implemented with \texttt{\#lang racket/gui}. The implementation is mostly imperative (since that is the paradigm \texttt{racket/gui} is built on), and so the test suite is limited to \texttt{bf-lexer} and helper functions. Advanced editing functionality has been implemented mostly through \texttt{racket/gui} editors and the library \texttt{framework}. \section{Language} The languages \texttt{racket/gui} and \texttt{racket} have been used instead of ISL due to greater flexibility and functionality. \section{Libraries} The most important libraries used are: \begin{description} \item[racket/gui] used to implement the GUI and the editor functionality; \item[framework] used to add line numbers to the editor and to add syntax highlighting; \item[rackunit] used to replace the *SL \texttt{check-\ldots} functions as a testing suite. \end{description} \end{document}