24 void print(std::ostream& stream,
int indent)
const;
36 virtual void print_node(std::ostream& stream,
int indent)
const = 0;
49 virtual void print_node(std::ostream& stream,
int indent)
const override;
62 virtual void print_node(std::ostream& stream,
int indent)
const override;
74 std::string
const&
name()
const;
76 virtual void print_node(std::ostream& stream,
int indent)
const override;
92 virtual void print_node(std::ostream& stream,
int indent)
const override;
104 std::string
name()
const;
107 virtual void print_node(std::ostream& stream,
int indent)
const override;
122 virtual void print_node(std::ostream& stream,
int indent)
const override = 0;
138 virtual void print_node(std::ostream& stream,
int indent)
const override = 0;
150 virtual void print_node(std::ostream& stream,
int indent)
const override;
159 virtual void print_node(std::ostream& stream,
int indent)
const override;
168 virtual void print_node(std::ostream& stream,
int indent)
const override;
177 virtual void print_node(std::ostream& stream,
int indent)
const override;
186 virtual void print_node(std::ostream& stream,
int indent)
const override;
virtual double evaluate_node() const override
node_number(double value)
double evaluate_right() const
virtual std::string evaluate_string() const override
virtual std::string evaluate_string() const
virtual void print_node(std::ostream &stream, int indent) const override
virtual double evaluate_node() const =0
virtual double evaluate_node() const override
node_list const & arguments() const
virtual void print_node(std::ostream &stream, int indent) const override
virtual void print_node(std::ostream &stream, int indent) const override
double evaluate_left() const
node_function_call(std::string name, node_list arguments)
node_binary(node left, node right)
virtual double evaluate_node() const override=0
virtual double evaluate_node() const override
virtual double evaluate_node() const override
std::string const & name() const
virtual void print_node(std::ostream &stream, int indent) const override
virtual std::string evaluate_string() const override
node_identifier(std::string name)
virtual void print_node(std::ostream &stream, int indent) const override
virtual double evaluate_node() const override
virtual double evaluate_node() const override
void print(std::ostream &stream, int indent) const
std::vector< std::string > identifier_list
A sequence of identifiers (e.g., parameter names).
virtual double evaluate_node() const override=0
virtual void print_node(std::ostream &stream, int indent) const override
node_function(identifier_list parameters, node definition)
double evaluate_operand() const
node_multiply(node left, node right)
virtual identifier_list const & evaluate_parameters() const override
virtual void print_node(std::ostream &stream, int indent) const override
node_impl & operator=(node_impl &&)=default
virtual void print_node(std::ostream &stream, int indent) const override
virtual void print_node(std::ostream &stream, int indent) const =0
identifier_list parameters_
node_subtract(node left, node right)
virtual double evaluate_node() const override
virtual void print_node(std::ostream &stream, int indent) const override
virtual identifier_list const & evaluate_parameters() const
virtual double evaluate_node() const override
identifier_list const & get_parameters() const
std::vector< node > node_list
A sequence of nodes.
std::string to_string() const
node_negate(node operand)
virtual void print_node(std::ostream &stream, int indent) const override
virtual double evaluate_node() const override
node_divide(node left, node right)
virtual void print_node(std::ostream &stream, int indent) const override=0
node_add(node left, node right)
identifier_list const & parameters() const
virtual void print_node(std::ostream &stream, int indent) const override=0
virtual double evaluate_node() const override