Esempio n. 1
0
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);
}
Esempio n. 2
0
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;
  }
}