Added changes document
This commit is contained in:
parent
69730a34f0
commit
3cb6fac4c0
4 changed files with 48 additions and 2 deletions
BIN
README.pdf
BIN
README.pdf
Binary file not shown.
|
@ -81,8 +81,8 @@ The entire program revolves around the main struct defined as:\\
|
||||||
; - program: Program\\
|
; - program: Program\\
|
||||||
; - ip: InstructionPointer\\
|
; - ip: InstructionPointer\\
|
||||||
; - error: Option<String>\\
|
; - error: Option<String>\\
|
||||||
; Interpretation: the current state of execution of a brainf*ck program.\\ \\
|
; Interpretation: the current state of execution of a brainf*ck program.\\
|
||||||
\textbf{\large (struct prog-state (tape dp tape-len output program ip error)}}
|
\textbf{(struct prog-state (tape dp tape-len output program ip error)} \\}
|
||||||
|
|
||||||
|
|
||||||
And, likewise, each term in the struct has its own type definition: \\
|
And, likewise, each term in the struct has its own type definition: \\
|
||||||
|
|
BIN
changes.pdf
Normal file
BIN
changes.pdf
Normal file
Binary file not shown.
46
changes.tex
Normal file
46
changes.tex
Normal file
|
@ -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}
|
Loading…
Reference in a new issue