diff options
Diffstat (limited to 'src/nodes.h')
| -rw-r--r-- | src/nodes.h | 43 | 
1 files changed, 19 insertions, 24 deletions
diff --git a/src/nodes.h b/src/nodes.h index 2581a2d..9559722 100644 --- a/src/nodes.h +++ b/src/nodes.h @@ -9,61 +9,56 @@ namespace SimpleParser {  enum class TokenType;  typedef std::map<std::string, double> ConstantMap; -enum class NodeType { -	OPERAND, -	OPERATOR, -	CONSTANT, -}; -  class Node {  	public:  		virtual ~Node() {}; -		virtual double solve()      = 0; -		virtual NodeType type()     = 0; -		virtual std::string print() = 0; +		virtual double solve()      const = 0; +		virtual std::string print() const = 0;  		Node* leftChild;  		Node* rightChild; +  };  class OperatorNode: public Node {  	public:  		explicit OperatorNode(TokenType); -		virtual double solve(); -		virtual NodeType type(); -		virtual std::string print(); +		TokenType token() const; + +		virtual double solve()      const; +		virtual std::string print() const; -		TokenType token();  	private: -		TokenType operator_; +		const TokenType operator_; +  };  class OperandNode: public Node {  	public:  		explicit OperandNode(double); -		virtual double solve(); -		virtual NodeType type(); -		virtual std::string print(); +		virtual double solve()      const; +		virtual std::string print() const;  	private: -		double value_; +		const double value_; +  };  class ConstantNode: public Node {  	public: -		explicit ConstantNode(std::string, const ConstantMap*); +		ConstantNode(const std::string&, const ConstantMap*); -		virtual double solve(); -		virtual NodeType type(); -		virtual std::string print(); +		virtual double solve()      const; +		virtual std::string print() const;  	private: -		std::string identifier_; -		const ConstantMap* constants_; +		const std::string identifier_; +		const ConstantMap* const constants_; +  };  }  | 
