23#include <opm/input/eclipse/Schedule/Action/ActionValue.hpp>
28#include <unordered_set>
31namespace Opm::Action {
35namespace Opm::Action {
63 explicit ASTNode(TokenType type_arg);
70 explicit ASTNode(
double value);
89 explicit ASTNode(TokenType type_arg,
90 FuncType func_type_arg,
91 std::string_view func_arg,
92 const std::vector<std::string>& arg_list_arg);
105 static ASTNode serializationTestObject();
118 void add_child(ASTNode&& child);
127 Result eval(
const Context& context)
const;
135 void required_summary(std::unordered_set<std::string>& required_summary)
const;
143 bool operator==(
const ASTNode& that)
const;
146 std::size_t size()
const;
156 template<
class Serializer>
157 void serializeOp(Serializer& serializer)
160 serializer(func_type);
162 serializer(arg_list);
164 serializer(children);
173 std::vector<std::string> arg_list{};
183 std::vector<ASTNode> children{};
194 Result evalLogicalOperation(
const Context& context)
const;
206 Result evalComparison(
const Context& context)
const;
219 Value nodeValue(
const Context& context)
const;
233 Value evalListExpression(
const Context& context)
const;
247 Value evalScalarExpression(
const Context& context)
const;
261 Value evalWellExpression(
const Context& context)
const;
271 std::vector<std::string> getWellList(
const Context& context)
const;
275 bool argListIsPattern()
const;
280 bool argListIsWellList()
const;