support for pointer add/sub, no need for type_environment in ast2firm
[cparser] / ast.c
diff --git a/ast.c b/ast.c
index f70f743..93ba57f 100644 (file)
--- a/ast.c
+++ b/ast.c
@@ -70,7 +70,7 @@ static void print_string_literal(const string_literal_t *string_literal)
 
 static void print_call_expression(const call_expression_t *call)
 {
-       print_expression(call->method);
+       print_expression(call->function);
        fprintf(out, "(");
        call_argument_t *argument = call->arguments;
        int              first    = 1;
@@ -374,8 +374,8 @@ static void print_declaration_statement(
 {
        int first = 1;
        declaration_t *declaration = statement->declarations_begin;
-       for( ; declaration != statement->declarations_end->context_next;
-              declaration = declaration->context_next) {
+       for( ; declaration != statement->declarations_end->next;
+              declaration = declaration->next) {
                if(!first) {
                        print_indent();
                } else {
@@ -410,13 +410,14 @@ static void print_for_statement(const for_statement_t *statement)
        if(statement->context.declarations != NULL) {
                assert(statement->initialisation == NULL);
                print_declaration(statement->context.declarations);
-               if(statement->context.declarations->context_next != NULL) {
+               if(statement->context.declarations->next != NULL) {
                        panic("multiple declarations in for statement not supported yet");
                }
+               fputc(' ', out);
        } else if(statement->initialisation) {
                print_expression(statement->initialisation);
+               fputs("; ", out);
        }
-       fputs("; ", out);
        if(statement->condition != NULL) {
                print_expression(statement->condition);
        }
@@ -517,7 +518,7 @@ static void print_normal_declaration(const declaration_t *declaration)
        print_storage_class(declaration->storage_class);
        print_type_ext(declaration->type, declaration->symbol,
                       &declaration->context);
-       if(declaration->type->type == TYPE_METHOD) {
+       if(declaration->type->type == TYPE_FUNCTION) {
                if(declaration->init.statement != NULL) {
                        fputs("\n", out);
                        print_statement(declaration->init.statement);
@@ -570,7 +571,7 @@ void print_ast(const translation_unit_t *unit)
        set_print_compound_entries(true);
 
        declaration_t *declaration = unit->context.declarations;
-       for( ; declaration != NULL; declaration = declaration->context_next) {
+       for( ; declaration != NULL; declaration = declaration->next) {
                if(declaration->storage_class == STORAGE_CLASS_ENUM_ENTRY)
                        continue;
                if(declaration->namespace != NAMESPACE_NORMAL &&