Exemple #1
0
void expr_print(struct expr *e) {
	if(!e)
		return;
	expr_print(e -> left);
	expr_pretty_print(e);
	expr_print(e->right);
	if (e->kind == EXPR_FUNC)
		printf(")");
	if (e->kind == EXPR_ARRAY_DEREF)
		printf("]");
}
Exemple #2
0
//recursively prints out an expression tree
void expr_print(struct expr *e){
	if(!e) return;
	if(e->kind == EXPR_PARENS) {
		printf("(");
		expr_print(e->right);
		printf(")");
	} else if(e->kind == EXPR_FCALL){
		expr_print(e->left);
		printf("(");
		expr_print(e->right);
		printf(")");
	} else if(e->kind == EXPR_ARRCALL){
		expr_print(e->left);
		expr_print(e->right);
	} else if(e->kind == EXPR_ARRINDEX){
		printf("[");
		expr_print(e->left);
		printf("]");
		expr_print(e->right);
	} else if(e->kind == EXPR_BLOCK){
		printf("{");
		expr_print(e->right);
		printf("}");
	} else { 
		if(e->left || e->right){
			//printf("(");
			expr_print(e->left);
			expr_pretty_print(e);
			expr_print(e->right);
			//printf(")");
		} else {
			expr_print(e->left);
			expr_pretty_print(e);
			expr_print(e->right);
		}
	}
}