10 template<
typename Grammar_t>
36 return this->grammar->makeNode(this->grammar->get_rule(nt, is.
get_value()));
42 const auto numnonterm = this->grammar->count_nonterminals(nt);
45 auto ri = is.
pop(numnonterm);
47 Rule* r = this->grammar->get_rule(nt, ri+numterm);
48 Node out = this->grammar->makeNode(r);
51 for(
auto v : is.
split(r->
N)) {
63 return toNode(is, nt);
68 assert(
false &&
"*** You got the order of nonterminal_t and enumerationidx_t wrong and I'm really friendly because I'm here just to tell you that you should switch the order. ");
74 return this->grammar->get_index_of(n.
rule);
82 for(
int i=n.
rule->
N-2;i>=0;i--) {
85 is.
push(this->grammar->get_index_of(n.
rule)-numterm, this->grammar->count_nonterminals(nt));
value_t pop()
Definition: IntegerizedStack.h:82
Grammar_t * grammar
Definition: BasicEnumeration.h:14
nonterminal_t type(size_t i) const
Definition: Rule.h:152
value_t get_value() const
Definition: IntegerizedStack.h:124
std::vector< value_t > split(size_t n)
Split into n children – this is the same as looping and popping, but provides a nicer interface NOTE...
Definition: IntegerizedStack.h:114
virtual size_t count_terminals() const
Definition: BaseNode.h:388
size_t N
Definition: Rule.h:29
virtual Node toNode(IntegerizedStack &is, const nonterminal_t &nt)
This is a handy function to enumerate trees produced by the grammar. This works by encoding each tree...
Definition: BasicEnumeration.h:30
Definition: BasicEnumeration.h:8
virtual Node toNode(const nonterminal_t nt, enumerationidx_t z)
Definition: BasicEnumeration.h:66
void push(value_t x)
Definition: IntegerizedStack.h:94
this_t & child(const size_t i)
Definition: BaseNode.h:175
const Rule * rule
Definition: Node.h:32
unsigned short nonterminal_t
Definition: Nonterminal.h:4
void set_child(const size_t i, Node &n)
Definition: Node.h:88
BasicEnumeration(Grammar_t *g)
Definition: BasicEnumeration.h:16
virtual Node toNode(enumerationidx_t z, const nonterminal_t nt)
Definition: BasicEnumeration.h:61
nonterminal_t nt
Definition: Rule.h:27
size_t enumerationidx_t
Definition: IntegerizedStack.h:3
Definition: IntegerizedStack.h:12
Definition: BasicEnumeration.h:11
size_t nchildren() const
Definition: BaseNode.h:208
virtual enumerationidx_t toInteger(const Node &n)
Definition: BasicEnumeration.h:71