TC-D, Removing the syntactic sugar from the Abstract Syntax Tree

TC-D is an additional assignment.

At the end of this stage, the compiler must be able to remove syntactic sugar from a type-checked AST. These features are triggered by the options --desugar and can be combined using --c-desugar.