16 template<
typename Grammar_t>
33 std::set<Node> unique;
37 (not unique.contains(x)) and
38 (not x.is_terminal())) {
49 std::set<Node> unique;
53 (not unique.contains(x)) and
54 (not x.is_terminal())) {
57 if(cnt == 0)
return x;
63 assert(
false &&
"*** You asked for a referent that was impossible!");
83 is -= possible_referents;
87 if(is.get_value() < numterm) {
88 return this->grammar->makeNode(this->grammar->get_rule(nt, is.get_value()));
93 auto ri = is.
pop(this->grammar->count_nonterminals(nt));
94 Rule* r = this->grammar->get_rule(nt, ri+numterm);
95 Node out = this->grammar->makeNode(r);
97 for(
auto v : is.split(r->
N)) {
119 return toNode(is, nt, root);
value_t pop()
Definition: IntegerizedStack.h:82
Node & get_referent(const Node &root, size_t cnt, const nonterminal_t nt)
Definition: FullLZEnumeration.h:48
virtual Node toNode(enumerationidx_t z, const nonterminal_t nt, Node &root)
Definition: FullLZEnumeration.h:117
Enumerate subtrees of a given tree.
nonterminal_t type(size_t i) const
Definition: Rule.h:152
Definition: FullLZEnumeration.h:17
virtual enumerationidx_t toInteger(const Node &root, const Node &n)
Definition: FullLZEnumeration.h:133
value_t get_value() const
Definition: IntegerizedStack.h:124
size_t compute_possible_referents(const Node &root, const nonterminal_t nt)
Compute the number of things in n which could be referenced Here, we will require references to prior...
Definition: FullLZEnumeration.h:31
size_t N
Definition: Rule.h:29
bool is_null() const
Definition: Node.h:165
virtual Node toNode(enumerationidx_t z, const nonterminal_t nt)
Definition: FullLZEnumeration.h:123
FullLZEnumeration(Grammar_t *g)
Definition: FullLZEnumeration.h:22
unsigned short nonterminal_t
Definition: Nonterminal.h:4
void set_child(const size_t i, Node &n)
Definition: Node.h:88
size_t enumerationidx_t
Definition: IntegerizedStack.h:3
Definition: IntegerizedStack.h:12
virtual Node toNode(IntegerizedStack &is, const nonterminal_t nt, Node &root)
Convert to a node, using root as the root – NOTE that when root is null, we use out as the root...
Definition: FullLZEnumeration.h:72