X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast.c;h=f09b346bbf096d12bebbcd07ca5eee42c6adab9c;hb=ed1ed2b5fb813fd8de24b2eaa6fffce033246a8c;hp=846d47879cd04113fa8809b95ec38633746b9280;hpb=9b89ff8e7535a022101d3ccfd8497c4a19f1a0d3;p=cparser diff --git a/ast.c b/ast.c index 846d478..f09b346 100644 --- a/ast.c +++ b/ast.c @@ -304,10 +304,10 @@ static void print_quoted_wide_string(const wide_string_t *const wstr, default: { const unsigned tc = *c; if (tc < 0x80U) { - if (!isprint(*c)) { - fprintf(out, "\\%03o", (char)*c); - } else { + if (isprint(*c)) { fputc(*c, out); + } else { + fprintf(out, "\\%03o", tc); } } else if (tc < 0x800) { fputc(0xC0 | (tc >> 6), out); @@ -999,25 +999,6 @@ static void print_case_label(const case_label_statement_t *statement) } } -static void print_local_label(const local_label_statement_t *statement) -{ - fputs("__label__ ", out); - - bool first = true; - entity_t *entity = statement->labels_begin; - for (; - entity != statement->labels_end->base.next; - entity = entity->base.next) { - if (!first) { - fputs(", ", out); - } else { - first = false; - } - fputs(entity->base.symbol->string, out); - } - fputs(";\n", out); -} - static void print_typedef(const entity_t *entity) { fputs("typedef ", out); @@ -1272,9 +1253,6 @@ void print_statement(const statement_t *statement) case STATEMENT_LABEL: print_label_statement(&statement->label); break; - case STATEMENT_LOCAL_LABEL: - print_local_label(&statement->local_label); - break; case STATEMENT_GOTO: print_goto_statement(&statement->gotos); break; @@ -1619,9 +1597,11 @@ void print_entity(const entity_t *entity) case ENTITY_NAMESPACE: print_namespace(&entity->namespacee); return; + case ENTITY_LOCAL_LABEL: + fprintf(out, "__label__ %s;", entity->base.symbol->string); + return; case ENTITY_LABEL: case ENTITY_ENUM_VALUE: - case ENTITY_LOCAL_LABEL: panic("print_entity used on unexpected entity type"); case ENTITY_INVALID: break;