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

Taddeus Kroes 4f4ff50e16 Now using Int32 for integer bounds checking 12 年 前
bin32 ee11dce399 Started on implementing CiviC compiler 12 年 前
doc 3d3c4d5421 Added empty assmebly phase 12 年 前
phases 4f4ff50e16 Now using Int32 for integer bounds checking 12 年 前
test 60a3a48b60 Scalar array initialisation now supports non-constant values, which are evaluated only once 12 年 前
.gitignore 2126ae7cee Removed preprocessor from parser, improved some error messages, moved some functions to common files 12 年 前
Makefile d7b07541bb Fixed shift/reduce conflicts by making vardecs list right-recursive 12 年 前
OCamlMakefile ee11dce399 Started on implementing CiviC compiler 12 年 前
README.md 4f4ff50e16 Now using Int32 for integer bounds checking 12 年 前
lexer.mll cd39b017b6 Cleanup 12 年 前
main.ml 9e5ee5acf8 Phase titles are now only printed when verbosity >= 2 12 年 前
parser.mly fcb75e6424 Parser cleanup 12 年 前
run df77f208ef Run script now does not continue when compiling fails 12 年 前
stringify.ml f979c1faf4 Changed the way array types are represented, and cleaned up a lot of code in the process 12 年 前
stringify.mli 21fc065c8f Changed constant node types, added VarDecs|LocalFuns wrappers, implemented first steps of assembler 12 年 前
types.ml f979c1faf4 Changed the way array types are represented, and cleaned up a lot of code in the process 12 年 前
util.ml d57caab46f Error printer now handles tabs in input file correctly 12 年 前
util.mli 7462e88b3d Added warning and constant propagation check for division by zero 12 年 前

README.md

CiviCaml

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

Issues & TODO

  • Keep file content in buffer to prevent error messages from crashing when reading from stdin.
  • Documentation for each phase, in ocamldoc format.
  • Create automated testsuite runner.
  • Assembly printer should print optimized instructions.
  • Erronous array initialisation needs more insightfull error messages and array assignment needs better better type checking.
  • 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).