예제 #1
0
void print_sub_tree(FILE* f, node_t* node){
	if(node->value==V_NODE){
		fprintf(f, "  n%p -> n%p [label=\"0\"]\n", (void*)node, node->left);
		fprintf(f, "  n%p -> n%p [label=\"1\"]\n", (void*)node, node->right);
		print_sub_tree(f, node->left);
		print_sub_tree(f, node->right);
	}else{
		int v;
		v = node->value;
		fprintf(f, "  n%p [label=\"%2.2X (%c)\", fillcolor=green,style=filled]\n",
		        (void*)node, v, (v>32&&v<128&&v!='"')?v:' '); 
	}
}
예제 #2
0
void print_sub_tree(node_t* node, int depth) {
    assert(node);
    print_tabs(depth); print_node(node); printf("\n");

    if (node->n1)
        print_sub_tree(node->n1, depth+1);
    if (node->n2)
        print_sub_tree(node->n2, depth+1);
    if (node->n3)
        print_sub_tree(node->n3, depth+1);
    if (node->n4)
        print_sub_tree(node->n4, depth+1);

    if ( node->next ) print_sub_tree(node->next, depth);
}
예제 #3
0
void print_ast(node_t* ast) {
    assert ( ast->nodetype == NODE_PROGRAM );
    print_sub_tree(ast, 0);
}
예제 #4
0
void print_tree(FILE* f){
	fprintf(f, "digraph G{\n");
	print_sub_tree(f, tree);
	fprintf(f, "}\n");
}