/* PUBLIC */ void sprint_term(String_buf sb, Term t) { if (t == NULL) printf("sprint_term: NULL term\n"); else { if (VARIABLE(t)) { char s[MAX_NAME]; sprintf(s, "v%d", VARNUM(t)); sb_append(sb, s); } else { sprint_sym(sb, SYMNUM(t)); if (COMPLEX(t)) { int i; sb_append(sb, "("); for (i = 0; i < ARITY(t); i++) { sprint_term(sb, ARG(t,i)); if (i < ARITY(t)-1) sb_append(sb, ","); } sb_append(sb, ")"); } } } } /* sprint_term */
int print_tree(struct idl *idl, struct sym *sym, int indent) { char buf[1024]; iter_t iter; struct sym *mem; sprint_sym(buf, sym, indent, 14); fputs(buf, stderr); if (*buf) fputc('\n', stderr); linkedlist_iterate(&sym->mems, &iter); while ((mem = linkedlist_next(&sym->mems, &iter))) { print_tree(idl, mem, indent + 2); } return 0; }
int print_comment(struct idl *idl, const char *comment, struct sym *sym, int indent, int depth) { char buf[1024]; if (idl->verbose < 2) { return 0; } sp(idl->out, indent); fprintf(idl->out, "/* %-30s depth: %d\n", comment, depth); sp(idl->out, indent); sprint_sym(buf, sym, 0, 10); buf[50] = '\0'; fprintf(idl->out, " * %s\n", buf); sp(idl->out, indent); fputs(" */\n", idl->out); return 0; }