|C--||Harvard EECS C-- Home C-- Downloads Tools|
|C-- Home | Specification & Downloads | Old News | Papers | Mailing List | People | FAQ|
During the development of the Quick C-- compiler we have written some tools that might be useful for others, independent of C--. We provide the followig tools as mostly self-contained source distributions.
Mk is Andrew Hume's reimplementation of make, which is recommended by Stu Feldman, who created make. Mk has evolved through many systems from Bell Labs. Mk does not try to do everything but instead provides small but coherent set of features, including especially good integration with the shell. We use it to build Quick C--, and we're very happy.
The C code for Mk is extracted from the Plan 9 source distribution and comes with an Open Source License. Requirements for compilation are a C compiler and Make. The documentation includes a PDF file about Mk, and a Unix man page.
When an Objective Caml bytecode program dies with an uncaught exception, it can leave a stack trace for debugging. The stack trace mentions source code positions in modules, where each position is a character-offset from the beginning of the file. The OCamlError tools reads such a stack trace and annotates it with more readable (file, line, column) source code positions. It also honors CPP line directives that are useful when source code is created by tools like OCamlYacc or other pre-processors.
Requirements for compilation: Objective Caml 3.*, GNU Make, Perl. The source code is a literate program and comes with documentation in HTML format and a Unix-style manual page.
Burg is somewhat analagous to Yacc for tree grammars as opposed to string grammars. Like `Yacc', Burg can stand for an idea or a family of tools as well as a particular tool. A typical use is to use Burg to map an intermediate-code tree to a sequence of machine instructions. OCamlBurg is member of the Burg family and emits Objective Caml code. OCamlBurg is inspired by IBurg from Fraser, Hanson, and Proebsting. Their paper about IBurg includes an introduction to code generation with IBurg.
Requirements for compilation: Objective Caml 3.*, GNU Make, Perl. The source code is a literate program and comes with documentation in HTML format, a Unix-style manual page, and examples.