projects
/
cparser
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
change back union stuff and expriment with new union mode for initializers
[cparser]
/
ast.c
diff --git
a/ast.c
b/ast.c
index
27105f6
..
984df78
100644
(file)
--- a/
ast.c
+++ b/
ast.c
@@
-380,6
+380,7
@@
static void print_case_label(const case_label_statement_t *statement)
print_expression(statement->expression);
fputs(":\n", out);
}
print_expression(statement->expression);
fputs(":\n", out);
}
+ print_statement(statement->label_statement);
}
static void print_declaration_statement(
}
static void print_declaration_statement(
@@
-512,22
+513,22
@@
static void print_storage_class(storage_class_t storage_class)
void print_initializer(const initializer_t *initializer)
{
if(initializer->type == INITIALIZER_VALUE) {
void print_initializer(const initializer_t *initializer)
{
if(initializer->type == INITIALIZER_VALUE) {
- //print_expression(initializer->v.value);
+ const initializer_value_t *value = &initializer->value;
+ print_expression(value->value);
return;
}
return;
}
-#if 0
assert(initializer->type == INITIALIZER_LIST);
fputs("{ ", out);
assert(initializer->type == INITIALIZER_LIST);
fputs("{ ", out);
-
initializer_t *iter = initializer->v.
list;
- for( ; iter != NULL; iter = iter->next) {
- print_initializer(iter);
- if(i
ter->next != NULL
) {
+
const initializer_list_t *list = &initializer->
list;
+
+ for(size_t i = 0 ; i < list->len; ++i) {
+ if(i
> 0
) {
fputs(", ", out);
}
fputs(", ", out);
}
+ print_initializer(list->initializers[i]);
}
fputs("}", out);
}
fputs("}", out);
-#endif
}
static void print_normal_declaration(const declaration_t *declaration)
}
static void print_normal_declaration(const declaration_t *declaration)