X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast.c;h=3cdc37444f70c831d9f67a5c8fdefb9751cbbac7;hb=659fb8e34ebdf612319f58c3ffe67f91d24efde7;hp=0d283f81281d686add6e807cb9b953f8f90349ac;hpb=35b6bfa9d3d3cbaa12c753901d53751a3ea7c0af;p=cparser diff --git a/ast.c b/ast.c index 0d283f8..3cdc374 100644 --- a/ast.c +++ b/ast.c @@ -467,6 +467,25 @@ static void print_storage_class(storage_class_t storage_class) } } +void print_initializer(const initializer_t *initializer) +{ + if(initializer->type == INITIALIZER_VALUE) { + print_expression(initializer->v.value); + return; + } + + assert(initializer->type == INITIALIZER_LIST); + fputs("{ ", out); + initializer_t *iter = initializer->v.list; + for( ; iter != NULL; iter = iter->next) { + print_initializer(iter); + if(iter->next != NULL) { + fputs(", ", out); + } + } + fputs("}", out); +} + static void print_declaration(const declaration_t *declaration) { print_storage_class(declaration->storage_class); @@ -477,7 +496,7 @@ static void print_declaration(const declaration_t *declaration) print_statement(declaration->statement); } else if(declaration->initializer != NULL) { fputs(" = ", out); - print_expression(declaration->initializer); + print_initializer(declaration->initializer); fprintf(out, ";\n"); } else { fprintf(out, ";\n");