and/or-conversion works
This commit is contained in:
@@ -131,6 +131,7 @@ static void node_print(node_t* node, int nesting)
|
||||
static node_t* convert_operator(node_t* node)
|
||||
{
|
||||
assert(node->type == OPERATOR);
|
||||
assert(node->children[0] && node->children[1]);
|
||||
if (strcmp(node->data.operator, "or") == 0) {
|
||||
node_t *one = node_create(NUMBER_LITERAL, 0);
|
||||
one->data.number_literal = 1;
|
||||
@@ -146,7 +147,7 @@ static node_t* convert_operator(node_t* node)
|
||||
node_finalize(node);
|
||||
node = converted_op;
|
||||
} else {
|
||||
printf("convert_operator: found op `%s`", node->data.operator);
|
||||
printf("convert_operator: found op `%s`\n", node->data.operator);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
@@ -315,19 +316,16 @@ static node_t* simplify_subtree(node_t* node)
|
||||
|
||||
for (int i = 0; i < node->n_children; i++) {
|
||||
node_t *child = node->children[i];
|
||||
simplify_subtree(child);
|
||||
node->children[i] = simplify_subtree(child);
|
||||
}
|
||||
|
||||
switch (node->type) {
|
||||
case OPERATOR:
|
||||
convert_operator(node);
|
||||
break;
|
||||
/* case PRINTLN_STATEMENT: */
|
||||
/* simplify_println_statement(node); */
|
||||
/* break; */
|
||||
/* case BLOCK: */
|
||||
/* flatten_variable_declarations(node); */
|
||||
/* break; */
|
||||
return convert_operator(node);
|
||||
case PRINTLN_STATEMENT:
|
||||
return simplify_println_statement(node);
|
||||
case BLOCK:
|
||||
return flatten_variable_declarations(node);
|
||||
}
|
||||
|
||||
return node;
|
||||
|
||||
Reference in New Issue
Block a user