diff -r c55b02ca2342 -r cece842c7417 stage4/generate_c/generate_c_st.cc --- a/stage4/generate_c/generate_c_st.cc Tue Dec 15 11:18:19 2009 +0100 +++ b/stage4/generate_c/generate_c_st.cc Tue Dec 15 16:29:44 2009 +0100 @@ -295,7 +295,8 @@ current_array_type = search_varfb_instance_type->get_rawtype(symbol->subscripted_variable); symbol->subscripted_variable->accept(*this); if (current_array_type != NULL) { - symbol->subscript_list->accept(*this); + s4o.print(".table"); + symbol->subscript_list->accept(*this); current_array_type = NULL; } break; @@ -304,6 +305,7 @@ current_array_type = search_varfb_instance_type->get_rawtype(symbol->subscripted_variable); symbol->subscripted_variable->accept(*this); if (current_array_type != NULL) { + s4o.print(".table"); symbol->subscript_list->accept(*this); current_array_type = NULL; } @@ -332,15 +334,27 @@ /******************************************/ /* B 1.4.3 - Declaration & Initialisation */ /******************************************/ + +/* helper symbol for structure_initialization */ +/* structure_element_initialization_list ',' structure_element_initialization */ void *visit(structure_element_initialization_list_c *symbol) { generate_c_structure_initialization_c *structure_initialization = new generate_c_structure_initialization_c(&s4o); structure_initialization->init_structure_default(this->current_param_type); - structure_initialization->current_mode = generate_c_structure_initialization_c::initializationvalue_sm; - symbol->accept(*structure_initialization); + structure_initialization->init_structure_values(symbol); delete structure_initialization; return NULL; } +/* helper symbol for array_initialization */ +/* array_initial_elements_list ',' array_initial_elements */ +void *visit(array_initial_elements_list_c *symbol) { + generate_c_array_initialization_c *array_initialization = new generate_c_array_initialization_c(&s4o); + array_initialization->init_array_size(this->current_param_type); + array_initialization->init_array_values(symbol); + delete array_initialization; + return NULL; +} + /***************************************/ /* B.3 - Language ST (Structured Text) */ /***************************************/