Releases: jutge-org/cmm
Releases · jutge-org/cmm
C-- Release 2.0
- Fixes several major bugs in the previous release with function calls and cin statements.
- Fixes some bugs with the debugger
- Fixes some minor bugs with character printing and negative division.
- Modularizes the semantic analysis and interpretation by creating a class for every AST node which handles compilation and execution with
compile
andexecute
methods. - Rewrites the grammar from bison language to coffeescript language for dynamic generation of rules, reducing redundancies.
- Implements instruction generation in the compilation step, such that an instruction list is produced and the program can be executed step by step.
- Implements variable mapping into a typed address space, which means storing values in a simulated memory implemented with Javascript Typed Arrays. This means every variable has an address associated with it. Fixes inaccurate representation of types: now values overflow as expected for every type.
- Implements const declaration attribute support.
- Implements global variable support.
- Implements variable shadowing support.
- Implements pointer support.
- Implements array support. Currently only literal values are supported as array dimension values on array declarations.
- Implements memory allocation and deallocation with new and delete operators.
- Implements unnamed scopes: (See example).
- Implements a simple Command Line Interface.
- Improves compiler semantic error reporting. Now line/column information is provided, and a specialized description message for each error is provided.
- Implements a testing framework. Every test is C-- program that defines its expected compilation error/success and its input/output pairs and exit status.
- Adds 141 handcrafted compilation and runtime tests.
C-- Debugger Support
C-- compiler release 1.0
Update README