aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/parse.c
diff options
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c155
1 files changed, 0 insertions, 155 deletions
diff --git a/parse.c b/parse.c
index 5aed9c5f..a3b0f34e 100644
--- a/parse.c
+++ b/parse.c
@@ -25,161 +25,6 @@ typedef int __builtin_va_list;
#include "scope.h"
#include "expression.h"
-void show_statement(struct statement *stmt)
-{
- if (!stmt) {
- printf("\t<nostatement>");
- return;
- }
- switch (stmt->type) {
- case STMT_RETURN:
- printf("\treturn ");
- show_expression(stmt->expression);
- break;
- case STMT_COMPOUND:
- printf("{\n");
- if (stmt->syms) {
- printf("\t");
- show_symbol_list(stmt->syms, "\n\t");
- printf("\n\n");
- }
- show_statement_list(stmt->stmts, ";\n");
- printf("\n}\n\n");
- break;
- case STMT_EXPRESSION:
- printf("\t");
- show_expression(stmt->expression);
- return;
- case STMT_IF:
- printf("\tif (");
- show_expression(stmt->if_conditional);
- printf(")\n");
- show_statement(stmt->if_true);
- if (stmt->if_false) {
- printf("\nelse\n");
- show_statement(stmt->if_false);
- }
- break;
- case STMT_SWITCH:
- printf("\tswitch (");
- show_expression(stmt->switch_expression);
- printf(")\n");
- show_statement(stmt->switch_statement);
- break;
-
- case STMT_CASE:
- if (!stmt->case_expression)
- printf("default");
- else {
- printf("case ");
- show_expression(stmt->case_expression);
- if (stmt->case_to) {
- printf(" ... ");
- show_expression(stmt->case_to);
- }
- }
- printf(":");
- show_statement(stmt->case_statement);
- break;
-
- case STMT_BREAK:
- printf("\tbreak");
- break;
-
- case STMT_WHILE:
- printf("\twhile (");
- show_expression(stmt->e1);
- printf(")\n");
- show_statement(stmt->iterate);
- break;
-
- case STMT_DO:
- printf("\tdo");
- show_statement(stmt->iterate);
- printf("\nwhile (");
- show_expression(stmt->e1);
- printf(")\n");
- break;
-
- case STMT_FOR:
- printf("\tfor (" );
- show_expression(stmt->e1);
- printf(" ; ");
- show_expression(stmt->e2);
- printf(" ; ");
- show_expression(stmt->e3);
- printf(")\n");
- show_statement(stmt->iterate);
- break;
-
- default:
- printf("WTF");
- }
-}
-
-static void show_one_statement(struct statement *stmt, void *sep, int flags)
-{
- show_statement(stmt);
- if (!(flags & ITERATE_LAST))
- printf("%s", (const char *)sep);
-}
-
-void show_statement_list(struct statement_list *stmt, const char *sep)
-{
- statement_iterate(stmt, show_one_statement, (void *)sep);
-}
-
-void show_expression(struct expression *expr)
-{
- if (!expr)
- return;
-
- printf("< ");
- switch (expr->type) {
- case EXPR_BINOP:
- show_expression(expr->left);
- printf(" %s ", show_special(expr->op));
- show_expression(expr->right);
- break;
- case EXPR_PREOP:
- printf("%s<", show_special(expr->op));
- show_expression(expr->unop);
- printf(">");
- break;
- case EXPR_POSTOP:
- show_expression(expr->unop);
- printf(" %s ", show_special(expr->op));
- break;
- case EXPR_CONSTANT:
- printf("%s", show_token(expr->token));
- break;
- case EXPR_SYMBOL:
- if (!expr->symbol) {
- warn(expr->token, "undefined symbol '%s'", show_token(expr->token));
- printf("<nosymbol>");
- break;
- }
- printf("<%s:", show_token(expr->symbol->token));
- show_type(expr->symbol);
- printf(">");
- break;
- case EXPR_DEREF:
- show_expression(expr->deref);
- printf("%s", show_special(expr->op));
- printf("%s", show_token(expr->member));
- break;
- case EXPR_CAST:
- printf("<cast>(");
- show_type(expr->cast_type);
- printf(")");
- show_expression(expr->cast_expression);
- break;
- default:
- printf("WTF");
- }
- printf(" >");
-}
-
struct statement *alloc_statement(struct token * token, int type)
{
struct statement *stmt = __alloc_statement(0);