static int undef_iter0(pRule r, pRule rules) { struct rule_closure closure; closure.rules = rules; closure.rule = r; option_map(r->options, (OptionIterator)&undef_iter1, &closure); };
static int ps_rule_iterator(pRule r, aux_t l) { FILE *f = (FILE *) l; fprintf(f, "/%s{[\n", r->symbol); option_map(r->options, (OptionIterator) & ps_option_iterator, l); fprintf(f, "]choose}bind def\n"); }
static int ps_node_iterator(pNode n, aux_t l) { FILE *f = (FILE *) l; switch (n->type) { case literal: fprintf(f, "(%s)", n->data); break; case symbol: fprintf(f, "{%s}", n->data); break; case mapping: ps_node_iterator(n->params, l); fprintf(f, " %s-map", n->data); break; case deref: ps_node_iterator(n->params, l); fprintf(f, " cvx exec"); break; case var_conddef: fprintf(f, "/%s ", n->data); ps_node_iterator(n->params, l); fprintf(f, " exec conddef"); break; case var_def: fprintf(f, "/%s ", n->data); ps_node_iterator(n->params, l); fprintf(f, " exec def"); break; case var_ref: fprintf(f, "%s", n->data); break; case code: /* FIXME */ break; case silence: ps_node_iterator(n->params, l); fprintf(f, " pop"); break; case choice: fprintf(f, "[\n"); option_map(n->data, (OptionIterator) & ps_option_iterator, l); fprintf(f, "] choose\n"); break; case star: ps_node_iterator(n->params, f); fprintf(f, " star"); break; case plus: ps_node_iterator(n->params, f); fprintf(f, " plus"); break; case repeat_const: ps_node_iterator(n->params, f); fprintf(f, " %d rep", n->int_param); break; } }
static void dump_options(pOption opt) { option_map(opt, (OptionIterator)&option_iter, NULL); };