diff options
Diffstat (limited to 'compiler/print.c')
-rw-r--r-- | compiler/print.c | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/compiler/print.c b/compiler/print.c deleted file mode 100644 index a71e71f..0000000 --- a/compiler/print.c +++ /dev/null @@ -1,102 +0,0 @@ -#include "print.h" - -#include <stdio.h> - -#include "log.h" - -void print_token(token* tk) { - char c; - switch (tk->kind) { - case TOKEN_SEMICOLON: c = ';'; break; - case TOKEN_COLON: c = ':'; break; - case TOKEN_OPEN_P: c = '('; break; - case TOKEN_CLOSE_P: c = ')'; break; - case TOKEN_OPEN_SQ: c = '['; break; - case TOKEN_CLOSE_SQ: c = ']'; break; - case TOKEN_EQUALS: c = '='; break; - case TOKEN_COMMA: c = ','; break; - case TOKEN_NAME: - printf("%s", (char*) tk->var); - return; - case TOKEN_INT: - printf("%d", *((int*) tk->var)); - return; - } - printf("%c", c); -} - -void print_token_list(token_list* list) { - print_token(&list->elem); - if (list->rest) { - printf(list->elem.kind == TOKEN_SEMICOLON ? "\n" : " "); - print_token_list(list->rest); - } -} - -void print_expression(expression* expr) { - switch (expr->kind) { - case EXPR_INT: - printf("%d", *((int*) expr->var1)); - break; - case EXPR_NAME: - printf("%s", (char*) expr->var1); - break; - case EXPR_LIST: - if (!expr->var1) { - printf("[]"); - } else { - printf("["); - print_expression(expr->var1); - printf(":"); - print_expression(expr->var2); - printf("]"); - } - break; - case EXPR_TUPLE: - printf("("); - print_expression(expr->var1); - printf(","); - print_expression(expr->var2); - printf(")"); - break; - case EXPR_APP: - if (((expression*) expr->var1)->kind == EXPR_APP) - printf("("); - print_expression(expr->var1); - if (((expression*) expr->var1)->kind == EXPR_APP) - printf(")"); - printf(" "); - if (((expression*) expr->var2)->kind == EXPR_APP) - printf("("); - print_expression(expr->var2); - if (((expression*) expr->var2)->kind == EXPR_APP) - printf(")"); - break; - } -} - -void print_arg_list(arg_list* args) { - if (!args) - return; - - print_expression(&args->elem); - printf(" "); - if (args->rest) - print_arg_list(args->rest); -} - -void print_rewrite_rule(rewrite_rule* rule) { - printf("%s ", rule->name); - print_arg_list(rule->args); - printf("= "); - print_expression(&rule->rhs); - printf(";"); -} - -void print_fuspel(fuspel* rules) { - print_rewrite_rule(&rules->rule); - if (rules->rest) { - printf("\n"); - print_fuspel(rules->rest); - } -} |