error: split some definitions into separate header file (expr.h).
error: move parse_variable() into expr.h.
differentiator: add skeleton main() and CMakeLists.
differentiator: lexer: add basic lexer.
differentiator: lexer: cache last returned lexem.
expr.h: make parse_variable() inline.
differentiator: lexer: add operator->(), operator bool(), check() and check_and_advance().
expr, error, differentiator: have two distinct Variable classes for vector and map.

NamedVariable: contains name (also contains current error mode), supposed to be
stored in a vector (non-indexed).

Variable: does not contain name, supposed to be stored in a map indexed by name.
differentiator: main: add a lexer test.
differentiator: node, visitor: add basic arithmetic syntax tree node classes along with dummy visitor infrastructure.
differentiator: parser: add a basic arithmetic expression parser.
fixup node
differentiator: node, parser: store both name and value in a Variable node.
differentiator: parser: add basic error checking.
differentiator: parser: add parsing of power operator (^, **).
differentiator: parser: handle mismatched parentheses.
differentiator: lexer: inherit LexerIterator from std::iterator<>.
differentiator: lexer: add check() for single string, for uniformity.
differentiator: parser: streamline get_sub_expr().
differentiator: node, parser: implement parsing of functions.

There is no table of functions. Each function's name is stored as is.