OCaml implementation of the CiviC compiler for Compiler Construction course at UvA

Taddeus Kroes a1fb541ec0 Indent fix %!s(int64=12) %!d(string=hai) anos
bin32 ee11dce399 Started on implementing CiviC compiler %!s(int64=12) %!d(string=hai) anos
doc 3d3c4d5421 Added empty assmebly phase %!s(int64=12) %!d(string=hai) anos
manual_test ad7dc96aa6 Deleted old test suite %!s(int64=12) %!d(string=hai) anos
phases a1fb541ec0 Indent fix %!s(int64=12) %!d(string=hai) anos
test 3082b87b35 Fixed weird context analysis on array dimension names %!s(int64=12) %!d(string=hai) anos
.gitignore 580ae7e235 Added output files for testsuite %!s(int64=12) %!d(string=hai) anos
Makefile 880b03d7a9 Moved preprocess tests to separate directory, tweaked some test configuration vars %!s(int64=12) %!d(string=hai) anos
OCamlMakefile ee11dce399 Started on implementing CiviC compiler %!s(int64=12) %!d(string=hai) anos
README.md 7da2050c83 Added some TODO items %!s(int64=12) %!d(string=hai) anos
globals.ml 3403c4a3fc Formatted all source code to 2 spaces as tab, and some more prettifications %!s(int64=12) %!d(string=hai) anos
globals.mli bdb928d7bc made comment into link %!s(int64=12) %!d(string=hai) anos
lexer.mll 71110a2f43 Fixed indenting in parser and lexer %!s(int64=12) %!d(string=hai) anos
main.ml 9a81eb7fa6 Fixed usage message %!s(int64=12) %!d(string=hai) anos
main.mli b8ec1c056c Added interface for Main module and generalised main phase function in a type %!s(int64=12) %!d(string=hai) anos
parser.mly 013ecd4880 Global arrays may now also be initialised %!s(int64=12) %!d(string=hai) anos
run df77f208ef Run script now does not continue when compiling fails %!s(int64=12) %!d(string=hai) anos
stringify.ml 625095f367 Documented all global modules (phases still need to be done) %!s(int64=12) %!d(string=hai) anos
stringify.mli 625095f367 Documented all global modules (phases still need to be done) %!s(int64=12) %!d(string=hai) anos
types.mli 41961457ea Updated some comments %!s(int64=12) %!d(string=hai) anos
util.ml 625095f367 Documented all global modules (phases still need to be done) %!s(int64=12) %!d(string=hai) anos
util.mli b21183186b Made function reference into a link in docs %!s(int64=12) %!d(string=hai) anos

README.md

CiviCaml

CiviCaml is a compiler for the CiviC language, written in OCaml.

Documentation

make doc generates HTML documentation, which is accessible through doc/civicc.index.html.

The coding style adheres to http://wiki.xen.org/wiki/OCaml_Best_Practices_for_Developers#Use_of_open.

The Makefile uses [OCamlMakefile(https://bitbucket.org/mmottl/ocaml-makefile/).

Issues & TODO

  • Generated variables should have leading _ instead of containing a $. Typechecking should print multiple errors before quitting.
  • Typechecking now gives an error when integers are not in the 32-bit range, as the reference compiler implements it. However, 64-bit should imo also be supported (using Nativeint instead of Int32).
  • Replace VarDec with Var_dec etc? (to adhere to the coding style)