# HG changeset patch # User Mario de Sousa # Date 1305624912 -3600 # Node ID de1be61482fae13f62bc5557d0992535b1c0d495 # Parent 022a874149cefa6fb334010b9d10a5972d1bf036# Parent aae14da3c296d8f4f7e98a9431028918ce727bcd Merging with Edouard's changes diff -r aae14da3c296 -r de1be61482fa stage1_2/iec.y --- a/stage1_2/iec.y Mon May 16 14:19:20 2011 +0200 +++ b/stage1_2/iec.y Tue May 17 10:35:12 2011 +0100 @@ -5186,7 +5186,7 @@ step_name: any_identifier; action_association: - action_name '(' {cmd_goto_sfc_qualifier_state()} action_qualifier {cmd_pop_state()} indicator_name_list ')' + action_name '(' {cmd_goto_sfc_qualifier_state();} action_qualifier {cmd_pop_state();} indicator_name_list ')' {$$ = new action_association_c($1, $4, $6, locloc(@$));} /* ERROR_CHECK_BEGIN */ /*| action_name '(' error ')' diff -r aae14da3c296 -r de1be61482fa stage4/generate_c/generate_c_st.cc --- a/stage4/generate_c/generate_c_st.cc Mon May 16 14:19:20 2011 +0200 +++ b/stage4/generate_c/generate_c_st.cc Tue May 17 10:35:12 2011 +0100 @@ -205,22 +205,22 @@ void *visit(symbolic_variable_c *symbol) { unsigned int vartype; if (wanted_variablegeneration == complextype_base_vg) - generate_c_base_c::visit(symbol); + generate_c_base_c::visit(symbol); else if (wanted_variablegeneration == complextype_suffix_vg) - return NULL; + return NULL; else if (this->is_variable_prefix_null()) { - vartype = search_varfb_instance_type->get_vartype(symbol); - if (wanted_variablegeneration == fparam_output_vg) { - s4o.print("&("); - generate_c_base_c::visit(symbol); - s4o.print(")"); - } - else { - generate_c_base_c::visit(symbol); - } + vartype = search_varfb_instance_type->get_vartype(symbol); + if (wanted_variablegeneration == fparam_output_vg) { + s4o.print("&("); + generate_c_base_c::visit(symbol); + s4o.print(")"); + } + else { + generate_c_base_c::visit(symbol); + } } else - print_getter(symbol); + print_getter(symbol); return NULL; } @@ -301,7 +301,9 @@ if (current_array_type == NULL) ERROR; s4o.print(".table"); + wanted_variablegeneration = expression_vg; symbol->subscript_list->accept(*this); + wanted_variablegeneration = complextype_suffix_vg; current_array_type = NULL; break; diff -r aae14da3c296 -r de1be61482fa stage4/stage4.cc --- a/stage4/stage4.cc Mon May 16 14:19:20 2011 +0200 +++ b/stage4/stage4.cc Tue May 17 10:35:12 2011 +0100 @@ -93,6 +93,10 @@ } } +void stage4out_c::flush(void) { + out->flush(); +} + void stage4out_c::enable_output(void) { allow_output = true; } diff -r aae14da3c296 -r de1be61482fa stage4/stage4.hh --- a/stage4/stage4.hh Mon May 16 14:19:20 2011 +0200 +++ b/stage4/stage4.hh Tue May 17 10:35:12 2011 +0100 @@ -48,7 +48,9 @@ stage4out_c(std::string indent_level = " "); stage4out_c(const char *dir, const char *radix, const char *extension, std::string indent_level = " "); ~stage4out_c(void); - + + void flush(void); + void enable_output(void); void disable_output(void);