This is an interpreter for the MiniML language, a functional, Turing-complete subset of the OCaml language that has both concrete and abstract syntax and is capable of evaluating basic functional operations. The project includes three crucial parts: lexical analyzer, parser, and the interpreter. They work together to interpret miniML's logical expressions.
The interpreter provides support for primitive types such as integer, variable, boolean, unit, float, and string, and also complex types such as functions, binary and unary operations. The language is capable of evaluating using three evaluator paradigms: substitution, dynamic, and lexical. The PDF report provides further detail on the differences between these three models of evalutators.