28#include <ql/patterns/visitor.hpp>
29#include <ql/types.hpp>
30#include <ql/utilities/null.hpp>
32#include <boost/fusion/container/vector.hpp>
33#include <boost/fusion/include/at_c.hpp>
34#include <ql/shared_ptr.hpp>
61 ASTNode(
const std::vector<ASTNodePtr>&
args,
const Size minArgs,
const Size maxArgs = Null<Size>());
62 virtual void accept(AcyclicVisitor&);
64 std::vector<ASTNodePtr>
args;
69 void accept(AcyclicVisitor&)
override;
74 void accept(AcyclicVisitor&)
override;
79 void accept(AcyclicVisitor&)
override;
84 void accept(AcyclicVisitor&)
override;
89 void accept(AcyclicVisitor&)
override;
94 void accept(AcyclicVisitor&)
override;
99 void accept(AcyclicVisitor&)
override;
104 void accept(AcyclicVisitor&)
override;
109 void accept(AcyclicVisitor&)
override;
114 void accept(AcyclicVisitor&)
override;
119 void accept(AcyclicVisitor&)
override;
124 void accept(AcyclicVisitor&)
override;
129 void accept(AcyclicVisitor&)
override;
134 void accept(AcyclicVisitor&)
override;
139 void accept(AcyclicVisitor&)
override;
144 void accept(AcyclicVisitor&)
override;
149 void accept(AcyclicVisitor&)
override;
154 void accept(AcyclicVisitor&)
override;
159 void accept(AcyclicVisitor&)
override;
164 void accept(AcyclicVisitor&)
override;
169 void accept(AcyclicVisitor&)
override;
174 void accept(AcyclicVisitor&)
override;
179 void accept(AcyclicVisitor&)
override;
184 void accept(AcyclicVisitor&)
override;
189 void accept(AcyclicVisitor&)
override;
194 void accept(AcyclicVisitor&)
override;
199 void accept(AcyclicVisitor&)
override;
204 const std::vector<ASTNodePtr>&
args)
206 void accept(AcyclicVisitor&)
override;
212 void accept(AcyclicVisitor&)
override;
217 void accept(AcyclicVisitor&)
override;
223 void accept(AcyclicVisitor&)
override;
229 void accept(AcyclicVisitor&)
override;
239 void accept(AcyclicVisitor&)
override;
245 void accept(AcyclicVisitor&)
override;
250 void accept(AcyclicVisitor&)
override;
255 void accept(AcyclicVisitor&)
override;
260 void accept(AcyclicVisitor&)
override;
265 void accept(AcyclicVisitor&)
override;
270 void accept(AcyclicVisitor&)
override;
275 void accept(AcyclicVisitor&)
override;
280 void accept(AcyclicVisitor&)
override;
285 void accept(AcyclicVisitor&)
override;
290 void accept(AcyclicVisitor&)
override;
295 void accept(AcyclicVisitor&)
override;
300 void accept(AcyclicVisitor&)
override;
305 void accept(AcyclicVisitor&)
override;
310 void accept(AcyclicVisitor&)
override;
315 void accept(AcyclicVisitor&)
override;
320 void accept(AcyclicVisitor&)
override;
std::string to_string(const LocationInfo &l)
boost::variant< RandomVariable, EventVec, CurrencyVec, IndexVec, DaycounterVec, Filter > ValueType
QuantLib::ext::shared_ptr< ASTNode > ASTNodePtr
Serializable Credit Default Swap.
std::vector< ASTNodePtr > args
virtual void accept(AcyclicVisitor &)
LocationInfo locationInfo
AssignmentNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
ConditionAndNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
void accept(AcyclicVisitor &) override
ConditionEqNode(const std::vector< ASTNodePtr > &args)
ConditionGeqNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
void accept(AcyclicVisitor &) override
ConditionGtNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
ConditionLeqNode(const std::vector< ASTNodePtr > &args)
ConditionLtNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
ConditionNeqNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
void accept(AcyclicVisitor &) override
ConditionNotNode(const std::vector< ASTNodePtr > &args)
ConditionOrNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
ConstantNumberNode(const double value, const std::vector< ASTNodePtr > &args={})
void accept(AcyclicVisitor &) override
void accept(AcyclicVisitor &) override
DeclarationNumberNode(const std::vector< ASTNodePtr > &args)
FunctionAboveProbNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionAbsNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
void accept(AcyclicVisitor &) override
FunctionBelowProbNode(const std::vector< ASTNodePtr > &args)
FunctionBlackNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
void accept(AcyclicVisitor &) override
FunctionDateIndexNode(const boost::fusion::vector< std::string, std::string > ¶ms, const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionDaysNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionDcfNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionDiscountNode(const std::vector< ASTNodePtr > &args)
FunctionExpNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionFwdAvgNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
void accept(AcyclicVisitor &) override
FunctionFwdCompNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionLogNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionLogPayNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionMaxNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionMinNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionNormalCdfNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionNormalPdfNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionNpvMemNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionNpvNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionPayNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
FunctionPowNode(const std::vector< ASTNodePtr > &args)
FunctionSqrtNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
HistFixingNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
void accept(AcyclicVisitor &) override
IfThenElseNode(const std::vector< ASTNodePtr > &args)
LocationInfo(const Size lineStart, const Size columnStart, const Size lineEnd, const Size columnEnd)
void accept(AcyclicVisitor &) override
LoopNode(const std::string &name, const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
NegateNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
OperatorDivideNode(const std::vector< ASTNodePtr > &args)
OperatorMinusNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
void accept(AcyclicVisitor &) override
OperatorMultiplyNode(const std::vector< ASTNodePtr > &args)
OperatorPlusNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
void accept(AcyclicVisitor &) override
PermuteNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
RequireNode(const std::vector< ASTNodePtr > &args)
SequenceNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
void accept(AcyclicVisitor &) override
SizeOpNode(const std::string &name, const std::vector< ASTNodePtr > &args={})
void accept(AcyclicVisitor &) override
SortNode(const std::vector< ASTNodePtr > &args)
void accept(AcyclicVisitor &) override
VarEvaluationNode(const std::vector< ASTNodePtr > &args)
VariableNode(const std::string &name, const std::vector< ASTNodePtr > &args={})
void accept(AcyclicVisitor &) override
std::vector< ValueType > * cachedVector
value type and operations