diff --git a/README.pdf b/README.pdf index de0c9ae..7f9395b 100644 Binary files a/README.pdf and b/README.pdf differ diff --git a/README.tex b/README.tex index 727efa0..d658447 100644 --- a/README.tex +++ b/README.tex @@ -81,8 +81,8 @@ The entire program revolves around the main struct defined as:\\ ; - program: Program\\ ; - ip: InstructionPointer\\ ; - error: Option\\ -; Interpretation: the current state of execution of a brainf*ck program.\\ \\ -\textbf{\large (struct prog-state (tape dp tape-len output program ip error)}} +; Interpretation: the current state of execution of a brainf*ck program.\\ +\textbf{(struct prog-state (tape dp tape-len output program ip error)} \\} And, likewise, each term in the struct has its own type definition: \\ diff --git a/changes.pdf b/changes.pdf new file mode 100644 index 0000000..f35d1dc Binary files /dev/null and b/changes.pdf differ diff --git a/changes.tex b/changes.tex new file mode 100644 index 0000000..21999a5 --- /dev/null +++ b/changes.tex @@ -0,0 +1,46 @@ +\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}