This version of the calculator implements simple arithmetic. It uses a recursive-descent parser to build a parse tree. Then it evaluates the parse tree and prints the result.
The node.hpp file declares the parse tree node class, which uses the pimpl idiom to wrap a pointer to a node_impl object. The node_impl class is the root of the parse tree classes.