projects
/
cparser
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
string literals as array intiailizers are supported now
[cparser]
/
write_fluffy.c
diff --git
a/write_fluffy.c
b/write_fluffy.c
index
78a41fe
..
4ad6fc0
100644
(file)
--- a/
write_fluffy.c
+++ b/
write_fluffy.c
@@
-3,6
+3,7
@@
#include <errno.h>
#include <string.h>
#include <errno.h>
#include <string.h>
+#include "write_fluffy.h"
#include "ast_t.h"
#include "type_t.h"
#include "type.h"
#include "ast_t.h"
#include "type_t.h"
#include "type.h"
@@
-220,7
+221,7
@@
static void write_expression(const expression_t *expression)
case EXPR_CONST:
constant = (const const_t*) expression;
if(is_type_integer(expression->datatype)) {
case EXPR_CONST:
constant = (const const_t*) expression;
if(is_type_integer(expression->datatype)) {
- fprintf(out, "%d", constant->v.int_value);
+ fprintf(out, "%
ll
d", constant->v.int_value);
} else {
fprintf(out, "%Lf", constant->v.float_value);
}
} else {
fprintf(out, "%Lf", constant->v.float_value);
}
@@
-233,26
+234,17
@@
static void write_expression(const expression_t *expression)
}
}
}
}
-static void write_initializer(const initializer_t *initializer)
-{
- if(initializer->type != INITIALIZER_VALUE) {
- panic("list initializers not supported yet");
- }
-
- write_expression(initializer->v.value);
-}
-
static void write_enum(const symbol_t *symbol, const enum_type_t *type)
{
fprintf(out, "enum %s:\n", symbol->string);
static void write_enum(const symbol_t *symbol, const enum_type_t *type)
{
fprintf(out, "enum %s:\n", symbol->string);
- declaration_t *entry = type->declaration->
context_
next;
+ declaration_t *entry = type->declaration->next;
for ( ; entry != NULL && entry->storage_class == STORAGE_CLASS_ENUM_ENTRY;
entry = entry->next) {
fprintf(out, "\t%s", entry->symbol->string);
if(entry->init.initializer != NULL) {
fprintf(out, " <- ");
for ( ; entry != NULL && entry->storage_class == STORAGE_CLASS_ENUM_ENTRY;
entry = entry->next) {
fprintf(out, "\t%s", entry->symbol->string);
if(entry->init.initializer != NULL) {
fprintf(out, " <- ");
- write_
initializer(entry->init.initializer
);
+ write_
expression(entry->init.enum_value
);
}
fputc('\n', out);
}
}
fputc('\n', out);
}
@@
-349,6
+341,8
@@
void write_fluffy_decls(const translation_unit_t *unit)
/* write global variables */
declaration = unit->context.declarations;
for( ; declaration != NULL; declaration = declaration->next) {
/* write global variables */
declaration = unit->context.declarations;
for( ; declaration != NULL; declaration = declaration->next) {
+ if(declaration->namespc != NAMESPACE_NORMAL)
+ continue;
if(declaration->storage_class == STORAGE_CLASS_TYPEDEF
|| declaration->storage_class == STORAGE_CLASS_ENUM_ENTRY)
continue;
if(declaration->storage_class == STORAGE_CLASS_TYPEDEF
|| declaration->storage_class == STORAGE_CLASS_ENUM_ENTRY)
continue;
@@
-363,6
+357,8
@@
void write_fluffy_decls(const translation_unit_t *unit)
/* write functions */
declaration = unit->context.declarations;
for( ; declaration != NULL; declaration = declaration->next) {
/* write functions */
declaration = unit->context.declarations;
for( ; declaration != NULL; declaration = declaration->next) {
+ if(declaration->namespc != NAMESPACE_NORMAL)
+ continue;
if(declaration->storage_class == STORAGE_CLASS_TYPEDEF
|| declaration->storage_class == STORAGE_CLASS_ENUM_ENTRY)
continue;
if(declaration->storage_class == STORAGE_CLASS_TYPEDEF
|| declaration->storage_class == STORAGE_CLASS_ENUM_ENTRY)
continue;