= Multiple Changes to CIVL Code = == Model Changes == * add a method to expressions like `SymbolicExpression getConstantValue()` and a corresponding setter, to cache the value of any expression that has a constant value, such as a literal expression * add new subtype of `Variable`: `CIVLScopeVariable` with method * `Scope getScope();` * add to the CIVL pointer type a method to get the scope variable, implement appropriate constructors and modifications to the factory, etc. == Semantics Changes == * use interfaces for `Executor`, `Evaluator`, etc. * finish javadocs for all methods * don't use `Vector`. Use `LinkedList` if you only need to iterate; use `ArrayList` if you need constant time access * use `switch` instead of big `if...else if…` sequence (mostly DONE) * implement pointer subtraction * construct and set the heap type in the constructor for `Evaluator`, just like the other special types == Translation == Thoughts on processing struct definitions: * transform the AST to factor out all struct definitions embedded in declarations. This is really part of "side-effect-removal".