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

Taddeus Kroes 2986554c58 Gave constant propagation phase a better identifier %!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
phases f496ce57f6 Made some better error messages for array assignments %!s(int64=12) %!d(string=hai) anos
test f496ce57f6 Made some better error messages for array assignments %!s(int64=12) %!d(string=hai) anos
.gitignore 2126ae7cee Removed preprocessor from parser, improved some error messages, moved some functions to common files %!s(int64=12) %!d(string=hai) anos
Makefile d7b07541bb Fixed shift/reduce conflicts by making vardecs list right-recursive %!s(int64=12) %!d(string=hai) anos
OCamlMakefile ee11dce399 Started on implementing CiviC compiler %!s(int64=12) %!d(string=hai) anos
README.md f496ce57f6 Made some better error messages for array assignments %!s(int64=12) %!d(string=hai) anos
lexer.mll cd39b017b6 Cleanup %!s(int64=12) %!d(string=hai) anos
main.ml 2986554c58 Gave constant propagation phase a better identifier %!s(int64=12) %!d(string=hai) anos
parser.mly fcb75e6424 Parser cleanup %!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 2866a1f1ef Re-enabled VarDecs and LocalFuns annotation for high verbosity level %!s(int64=12) %!d(string=hai) anos
stringify.mli 21fc065c8f Changed constant node types, added VarDecs|LocalFuns wrappers, implemented first steps of assembler %!s(int64=12) %!d(string=hai) anos
types.ml f979c1faf4 Changed the way array types are represented, and cleaned up a lot of code in the process %!s(int64=12) %!d(string=hai) anos
util.ml d57caab46f Error printer now handles tabs in input file correctly %!s(int64=12) %!d(string=hai) anos
util.mli 7462e88b3d Added warning and constant propagation check for division by zero %!s(int64=12) %!d(string=hai) anos

README.md

CiviCaml

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

Issues & TODO

  • Documentation for each phase, in ocamldoc format.
  • 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).