fix Sub/Div swap / fix wrong order for prefix/lisp display

This commit is contained in:
2021-01-25 17:36:40 +01:00
parent add6d02749
commit 5bd19cbe22
4 changed files with 33 additions and 34 deletions

18
tree.c
View File

@@ -66,19 +66,19 @@ void print_node(node, side, depth, details)
return;
switch (details) {
case 1:
case 1: /* prefix */
if (node->type==TREE_NODE) {
printf("%c ", node->op);
} else {
printf("%d ", node->val);
}
print_node(node->left, TREE_LEFT, depth+1, details);
print_node(node->right, TREE_RIGHT, depth+1, details);
print_node(node->left, TREE_LEFT, depth+1, details);
break;
case 0:
case 5:
print_node(node->left, TREE_LEFT, depth+1, details);
case 0: /* postfix */
case 5: /* dc suitable */
print_node(node->right, TREE_RIGHT, depth+1, details);
print_node(node->left, TREE_LEFT, depth+1, details);
if (node->type==TREE_NODE) {
printf("%c ", node->op);
} else {
@@ -87,7 +87,7 @@ void print_node(node, side, depth, details)
if (details==5 && depth==0)
printf("p");
break;
case 3:
case 3: /* lisp */
if (node->type==TREE_NODE) {
if (!depth) {
printf("(%c", node->op);
@@ -105,17 +105,17 @@ void print_node(node, side, depth, details)
printf(")");
}
break;
case 4:
case 4: /* infix */
if (node->type==TREE_NODE) {
printf("(");
}
print_node(node->left, TREE_LEFT, depth+1, details);
print_node(node->right, TREE_RIGHT, depth+1, details);
if (node->type==TREE_NODE) {
printf(" %c ", node->op);
} else {
printf("%d", node->val);
}
print_node(node->right, TREE_RIGHT, depth+1, details);
print_node(node->left, TREE_LEFT, depth+1, details);
if (node->type==TREE_NODE) {
printf(")");
}