TODO
Table of Contents
1 Documentation Doc
- DONE Complete the replacement of
\begin{lstlisting}
for\lstinputlisting
such that all code listings are imported directly from the source files inSrc
. Seechap.tex
for an example of what needs to be done. Note that using the annotation syntax/// <lable name>
the Makefile generates the list of first and last line numbers automatically. SeeSrc/main.C
for an example.
- TODO Rename files to correspond to the languages rather than the chapters
Alternatively combine the language name and the chapter number e.g. "chap2_lisp.tex"
2 Source code Src
- DONE Complete the conversion of member functions and arguments to
const
where appropriate. Once this is done theconst_cast
statements can be removed.
- TODO Introduce a
namespace
e.g.Kamin
orBudd
orBuddKamin
.
- TODO Update
Makefile
adding proper dependency checking.
- DONE Rename files to correspond to the languages rather than the chapters.
- TODO Replace use of
char*
with C++std::string
- TODO Replace C IO functions with C++
std::iostream
operators.
- TODO Complete updating Kamin test codes for the Budd versions of the intepreters
- TODO Use valgrind to test for memory leaks
- TODO Improve handling for
args
to resolve memory leaks
To temporarily fix memory leaks in the interpreters originating from theListNode* args
being created on free-store but not always transferred to a reference-countedList
structure in the environment they are now explicitly deleted at the end of function in which it is known they will not be needed anymore. It would be MUCH better if they were created as reference-counted list structures in the first place and parsed around and automatically deleted if they do out of scope without being held somewhere incrementing the count. i.e. make full use of RAII in C++. This is a substantial undertaking as currently destructors and RAII are not used and would require a lot of change to the reference-counting framework and classes.
3 Release GitHub
- TODO When the code is updated release on GitHub