/** dump ast node to file at indent level */ static int genbind_ast_dump(FILE *dfile, struct genbind_node *node, int indent) { const char *SPACES=" "; char *txt; int *val; while (node != NULL) { fprintf(dfile, "%.*s%s", indent, SPACES, genbind_node_type_to_str(node->type)); txt = genbind_node_gettext(node); if (txt == NULL) { val = genbind_node_getint(node); if (val == NULL) { fprintf(dfile, "\n"); genbind_ast_dump(dfile, genbind_node_getnode(node), indent + 2); } else { fprintf(dfile, ": %d\n", *val); } } else { fprintf(dfile, ": \"%.*s\"\n", 75 - indent, txt); } node = node->l; } return 0; }
int genbind_ast_dump(struct genbind_node *node, int indent) { const char *SPACES=" "; char *txt; while (node != NULL) { printf("%.*s%s", indent, SPACES, genbind_node_type_to_str(node->type)); txt = genbind_node_gettext(node); if (txt == NULL) { printf("\n"); genbind_ast_dump(genbind_node_getnode(node), indent + 2); } else { printf(": \"%.*s\"\n", 75 - indent, txt); } node = node->l; } return 0; }