void print_composite(FILE *f, composite_t *c) { uint32_t i, n; composite_kind_t k; k = composite_kind(c); n = composite_arity(c); fputc('(', f); switch (k) { case COMPOSITE_APPLY: print_occurrence(f, c->child[0]); for (i=1; i<n; i++) { fputc(' ', f); print_occurrence(f, c->child[i]); } break; case COMPOSITE_LAMBDA: print_kind(f, COMPOSITE_LAMBDA); fprintf(f, "[%"PRId32"] ", c->child[2]); // print the lambda tag print_occurrence(f, c->child[0]); break; default: print_kind(f, composite_kind(c)); for (i=0; i<n; i++) { fputc(' ', f); print_occurrence(f, c->child[i]); } break; } fputc(')', f); }
static void init_hooks(composite_t *c) { uint32_t i, n; int32_t *h; n = composite_arity(c); h = c->child + n; for (i=0; i<n; i++) { h[i] = no_ptr; } }