stage4/generate_c/generate_c_il.cc
changeset 237 cece842c7417
parent 236 c55b02ca2342
child 238 0919986a5c98
equal deleted inserted replaced
236:c55b02ca2342 237:cece842c7417
   658       break;
   658       break;
   659     case complextype_suffix_vg:
   659     case complextype_suffix_vg:
   660       current_array_type = search_varfb_instance_type->get_rawtype(symbol->subscripted_variable);
   660       current_array_type = search_varfb_instance_type->get_rawtype(symbol->subscripted_variable);
   661       symbol->subscripted_variable->accept(*this);
   661       symbol->subscripted_variable->accept(*this);
   662       if (current_array_type != NULL) {
   662       if (current_array_type != NULL) {
       
   663     	s4o.print(".table");
   663         symbol->subscript_list->accept(*this);
   664         symbol->subscript_list->accept(*this);
   664         current_array_type = NULL;
   665         current_array_type = NULL;
   665       }
   666       }
   666       break;
   667       break;
   667     default:
   668     default:
   668       if (this->is_variable_prefix_null()) {
   669       if (this->is_variable_prefix_null()) {
   669     	current_array_type = search_varfb_instance_type->get_rawtype(symbol->subscripted_variable);
   670     	current_array_type = search_varfb_instance_type->get_rawtype(symbol->subscripted_variable);
   670     	symbol->subscripted_variable->accept(*this);
   671     	symbol->subscripted_variable->accept(*this);
   671     	if (current_array_type != NULL) {
   672     	if (current_array_type != NULL) {
       
   673           s4o.print(".table");
   672     	  symbol->subscript_list->accept(*this);
   674     	  symbol->subscript_list->accept(*this);
   673     	  current_array_type = NULL;
   675     	  current_array_type = NULL;
   674     	}
   676     	}
   675       }
   677       }
   676       else
   678       else
   695 }
   697 }
   696 
   698 
   697 /******************************************/
   699 /******************************************/
   698 /* B 1.4.3 - Declaration & Initialisation */
   700 /* B 1.4.3 - Declaration & Initialisation */
   699 /******************************************/
   701 /******************************************/
       
   702 
       
   703 /* helper symbol for structure_initialization */
       
   704 /* structure_element_initialization_list ',' structure_element_initialization */
   700 void *visit(structure_element_initialization_list_c *symbol) {
   705 void *visit(structure_element_initialization_list_c *symbol) {
   701   generate_c_structure_initialization_c *structure_initialization = new generate_c_structure_initialization_c(&s4o);
   706   generate_c_structure_initialization_c *structure_initialization = new generate_c_structure_initialization_c(&s4o);
   702   structure_initialization->init_structure_default(this->current_param_type);
   707   structure_initialization->init_structure_default(this->current_param_type);
   703   structure_initialization->current_mode = generate_c_structure_initialization_c::initializationvalue_sm;
   708   structure_initialization->init_structure_values(symbol);
   704   symbol->accept(*structure_initialization);
       
   705   delete structure_initialization;
   709   delete structure_initialization;
   706   return NULL;
   710   return NULL;
   707 }
   711 }
   708 
   712 
       
   713 /* helper symbol for array_initialization */
       
   714 /* array_initial_elements_list ',' array_initial_elements */
       
   715 void *visit(array_initial_elements_list_c *symbol) {
       
   716   generate_c_array_initialization_c *array_initialization = new generate_c_array_initialization_c(&s4o);
       
   717   array_initialization->init_array_size(this->current_param_type);
       
   718   array_initialization->init_array_values(symbol);
       
   719   delete array_initialization;
       
   720   return NULL;
       
   721 }
   709 /****************************************/
   722 /****************************************/
   710 /* B.2 - Language IL (Instruction List) */
   723 /* B.2 - Language IL (Instruction List) */
   711 /****************************************/
   724 /****************************************/
   712 
   725 
   713 /***********************************/
   726 /***********************************/