A Composite/Visitor pattern for expression processing
To demonstrate the journey from the GoF pattern catalog to Observables, we will model a four-function calculator as a running example. Since expression trees or AST are hierarchical in nature, they will be a good example to model as a Composite pattern. We have purposefully omitted writing a parser to keep the code listing small:
#include <iostream>
#include <memory>
#include <list>
#include <stack>
#include <functional>
#include <thread>
#include <future>
#include <random>
#include "FuncCompose.h" // available int the code base
using namespace std;
//---------------------List of operators supported by the evaluator
enum class OPERATOR{ ILLEGAL,PLUS,MINUS,MUL,DIV,UNARY_PLUS,UNARY_MINUS }; We have defined an enum type to represent the four binary operators (+ , - , * , /) and two unary operators (+ , -). Other than the standard C++ headers, we have included a custom header (FuncCompose...