X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast.c;h=3d8c045d13b520cfff3547d624c0156bfee876b0;hb=af75875e8faedae0deb5571f503a9c0f521ff298;hp=5bd7ceaa9218304ab29c2c226421d3da70d17942;hpb=3bd432f7fe5fa4d3f84ddeaf5806398c141e4f28;p=cparser diff --git a/ast.c b/ast.c index 5bd7cea..3d8c045 100644 --- a/ast.c +++ b/ast.c @@ -321,17 +321,18 @@ static void print_expression_statement(const expression_statement_t *statement) static void print_goto_statement(const goto_statement_t *statement) { fprintf(out, "goto "); - if(statement->label != NULL) { - fprintf(out, "%s", statement->label->symbol->string); - } else { - fprintf(out, "?%s", statement->label_symbol->string); - } + fputs(statement->label->symbol->string, out); + fprintf(stderr, "(%p)", (void*) statement->label); fputs(";\n", out); } static void print_label_statement(const label_statement_t *statement) { - fprintf(out, "%s:\n", statement->symbol->string); + fprintf(stderr, "(%p)", (void*) statement->label); + fprintf(out, "%s:\n", statement->label->symbol->string); + if(statement->label_statement != NULL) { + print_statement(statement->label_statement); + } } static void print_if_statement(const if_statement_t *statement) @@ -413,10 +414,13 @@ static void print_for_statement(const for_statement_t *statement) if(statement->context.declarations->next != NULL) { panic("multiple declarations in for statement not supported yet"); } - } else if(statement->initialisation) { - print_expression(statement->initialisation); + fputc(' ', out); + } else { + if(statement->initialisation) { + print_expression(statement->initialisation); + } + fputs("; ", out); } - fputs("; ", out); if(statement->condition != NULL) { print_expression(statement->condition); }