7#include "formula_post_process_context.hpp"
8#include "formula_evaluation_context.hpp"
9#include "../required.hpp"
10#include "../parse_location.hpp"
11#include "../datum.hpp"
12#include "../exception.hpp"
44 context.disable_output();
46 context.enable_output();
54 throw operation_error(
"{}: Expression is not a modifiable value.", location);
57 virtual bool has_evaluate_xvalue()
const
78 context.disable_output();
79 auto &r =
assign(context, rhs);
80 context.enable_output();
95 throw parse_error(
"{}: Expect a name got {})", location, *
this);
103 throw parse_error(
"{}: Expect a function definition got {})", location, *
this);
115 return lhs << to_string(rhs);
119template<
typename CharT>
120struct std::formatter<tt::
formula_node, CharT> : std::formatter<string_view, CharT> {
123 return std::formatter<string_view, CharT>::format(to_string(t), fc);
Exception thrown during parsing on an error.
Definition exception.hpp:26
Exception thrown during execution of a dynamic operation.
Definition exception.hpp:42
Definition formula_evaluation_context.hpp:16
Definition formula_node.hpp:19
virtual void resolve_function_pointer(formula_post_process_context &context)
Resolve function and method pointers.
Definition formula_node.hpp:36
virtual datum & assign(formula_evaluation_context &context, datum const &rhs) const
Assign to a non-existing or existing lvalue.
Definition formula_node.hpp:71
virtual datum const & evaluate_xvalue(formula_evaluation_context const &context) const
Evaluate an existing xvalue.
Definition formula_node.hpp:64
virtual datum evaluate(formula_evaluation_context &context) const =0
Evaluate an rvalue.
virtual datum & evaluate_lvalue(formula_evaluation_context &context) const
Evaluate an existing lvalue.
Definition formula_node.hpp:52
virtual std::string get_name() const
Get the name of a formula_name_node.
Definition formula_node.hpp:93
virtual datum call(formula_evaluation_context &context, datum::vector const &arguments) const
Call a function with a datum::vector as arguments.
Definition formula_node.hpp:86
virtual void post_process(formula_post_process_context &context)
Resolve function and method pointers.
Definition formula_node.hpp:31
virtual std::vector< std::string > get_name_and_argument_names() const
Get name and argument names from a function declaration.
Definition formula_node.hpp:101
Definition formula_post_process_context.hpp:19
Definition parse_location.hpp:17