print_indented_statement(statement->statement);
}
+static void print_inner_statement(statement_t const *const stmt)
+{
+ if (stmt->kind == STATEMENT_COMPOUND) {
+ print_char(' ');
+ print_compound_statement(&stmt->compound);
+ } else {
+ print_char('\n');
+ ++indent;
+ print_indented_statement(stmt);
+ --indent;
+ }
+}
+
/**
* Print an if statement.
*
{
print_string("if (");
print_expression(statement->condition);
- print_string(") ");
- print_statement(statement->true_statement);
+ print_char(')');
+ print_inner_statement(statement->true_statement);
- if (statement->false_statement != NULL) {
+ statement_t const *const f = statement->false_statement;
+ if (f) {
print_char('\n');
print_indent();
- print_string("else ");
- print_statement(statement->false_statement);
+ print_string("else");
+ if (f->kind == STATEMENT_IF) {
+ print_char(' ');
+ print_if_statement(&f->ifs);
+ } else {
+ print_inner_statement(f);
+ }
}
}
{
print_string("switch (");
print_expression(statement->expression);
- print_string(") ");
- print_statement(statement->body);
+ print_char(')');
+ print_inner_statement(statement->body);
}
/**
{
print_string("while (");
print_expression(statement->condition);
- print_string(") ");
- print_statement(statement->body);
+ print_char(')');
+ print_inner_statement(statement->body);
}
/**
*/
static void print_do_while_statement(const do_while_statement_t *statement)
{
- print_string("do ");
- print_statement(statement->body);
+ print_string("do");
+ print_inner_statement(statement->body);
print_char('\n');
print_indent();
print_string("while (");
print_string(" ");
print_expression(statement->step);
}
- print_string(") ");
- print_statement(statement->body);
+ print_char(')');
+ print_inner_statement(statement->body);
}
/**
*/
static void print_ms_try_statement(const ms_try_statement_t *statement)
{
- print_string("__try ");
- print_statement(statement->try_statement);
+ print_string("__try");
+ print_inner_statement(statement->try_statement);
print_char('\n');
print_indent();
if (statement->except_expression != NULL) {
print_string("__except(");
print_expression(statement->except_expression);
- print_string(") ");
+ print_char(')');
} else {
- print_string("__finally ");
+ print_string("__finally");
}
- print_statement(statement->final_statement);
+ print_inner_statement(statement->final_statement);
}
/**