Things to learn during this stage that you should remember:
“Functional” programming in C++
See for instance the use of std::binary_function to sort
Temp*.
Traits
Traits are a useful technique that allows to write (compile time)
functions ranging over types. Voir Glossary.
Lazy/delayed computation
The Ix, Cx, Nx, and Ex classes delay
computation to address context-depend issues in a context independent
way.
Intermediate Representations
A different approach of hierarchies
In this project, the ast is composed of different classes
related by inheritance (as if the kinds of the nodes were class
members). Here, the nodes are members of a single class, but their
nature is specified by the object itself (as if the kinds of the nodes
were object members).