Significant improvements to three-address code generation for expressions, however this breaks some assumptions made by the naive x64 implementation. Moved to a new branch for now until all tests pass again.
Initial reimplementation of x64 code generator. Still needs work to support non-simple assignment statements, but should be a lot more efficient when coupled with new tac generation.
Reimplemented unary operator support and added support for boolean NOT.
Added reimplementation of addition using new tac visitor.
Added support for subtract operations.
Added simplistic reaching definition tracking to ast. Does not currently taking scopes into account.
Added failing lastuse test to identify and resolve scoping issues.
Moved ast last use tracking into seperate pass.
Modified ast to reference symbol table identifiers and types once found.
Added lastuse tests.
Propogating last usage details through tac generator.
Finally have register allocator using lastuse flags. Needs some peephole optimisation for redundant movs, but otherwise not bad.
Minor change to simplify binop x64 codegen.
Added reimplementation of div and mod instructions.
Initial implementation of ternary statements.
Implementation of boolean comparison operations. All tests now finally pass again.
Merge pull request #1 from gds12/tac_v2

Tac v2