27 std::vector<Node*>
const &v
31 std::vector<csl::Expr> &expr,
35 std::vector<csl::Expr> &expr,
44 std::vector<csl::Expr> vec { expr };
49 inline void compress_impl(
54 std::vector<csl::Expr> vec { expr };
55 compress_impl(vec, nIter);
61 using Container = std::vector<Node*>;
62 using iterator = Container::iterator;
63 using const_iterator = Container::const_iterator;
70 static inline bool useDifferedStart =
false;
71 static inline size_t maxLeaf = 10;
73 bool empty()
const {
return children.empty(); }
74 auto size()
const {
return children.size(); }
75 auto begin() {
return children.begin(); }
76 auto end() {
return children.end(); }
77 auto begin()
const {
return children.begin(); }
78 auto end()
const {
return children.end(); }
80 bool isRoot()
const {
return !parent; }
81 bool isAbbreviated()
const;
89 std::vector<csl::Expr>
const &args,
93 static size_t distance(
97 static size_t nLeafs(
csl::Expr const &expr);
101 std::pair<Node*, std::vector<csl::Expr>::const_iterator>
103 std::vector<csl::Expr>::const_iterator first,
104 std::vector<csl::Expr>::const_iterator last
107 std::vector<csl::Expr> getArgs()
const;
109 std::vector<csl::Expr>
const &args,
112 csl::Expr getChainExpr(ExprType type)
const;
116 void setAbbreviation(
117 std::vector<Tree*> &trees,
122 std::vector<csl::Expr>::const_iterator first,
123 std::vector<csl::Expr>::const_iterator last
128 Node *t_parent =
nullptr 131 static void destroy(
Node *&node);
132 static void removeSingle(
Node *&node);
134 void print(
int indent = 0)
const;
140 size_t nOccurences {1};
141 std::vector<Node*> children {};
146 Tree(Node::ExprType t_type);
149 std::pair<Node*, std::vector<csl::Expr>::const_iterator>
151 std::vector<csl::Expr>
const &vec,
152 size_t minElements = 2
155 static std::optional<csl::Expr> getChainAbbreviationFor(
157 std::vector<Tree*> &trees
160 static void findAllAbbreviations(
161 std::vector<Tree*> &trees
164 static void findAllAbbreviations(
167 std::vector<Tree*> &trees
170 void parse(std::vector<csl::Expr>
const &vec);
Definition: patternMatch.h:20
Handles a sum, function of multiple arguments.
Definition: operations.h:33
Handles a product, function of multiple arguments.
Definition: operations.h:289
Definition: patternMatch.h:59
Definition: patternMatch.h:144
Base classes for all exprs in the program.
Expression type/.
Definition: abstract.h:1573