stage4/generate_c/generate_c_il.cc
changeset 377 60b012b7793f
parent 355 30db860bd3bd
child 382 ac6dfec701c9
equal deleted inserted replaced
376:7dcbd8418771 377:60b012b7793f
   546 }
   546 }
   547 TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO
   547 TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO
   548 #endif
   548 #endif
   549 
   549 
   550 
   550 
       
   551 /********************************/
       
   552 /* B 1.3.3 - Derived data types */
       
   553 /********************************/
       
   554 
       
   555 /* ARRAY '[' array_subrange_list ']' OF non_generic_type_name */
       
   556 void *visit(array_specification_c *symbol) {
       
   557   symbol->non_generic_type_name->accept(*this);
       
   558   return NULL;
       
   559 }
       
   560 
   551 /*********************/
   561 /*********************/
   552 /* B 1.4 - Variables */
   562 /* B 1.4 - Variables */
   553 /*********************/
   563 /*********************/
   554 
   564 
   555 void *visit(symbolic_variable_c *symbol) {
   565 void *visit(symbolic_variable_c *symbol) {
   674   return NULL;
   684   return NULL;
   675 }
   685 }
   676 
   686 
   677 /* subscript_list ',' subscript */
   687 /* subscript_list ',' subscript */
   678 void *visit(subscript_list_c *symbol) {
   688 void *visit(subscript_list_c *symbol) {
       
   689   array_dimension_iterator_c* array_dimension_iterator = new array_dimension_iterator_c(current_array_type);
   679   for (int i =  0; i < symbol->n; i++) {
   690   for (int i =  0; i < symbol->n; i++) {
   680     s4o.print("[__");
   691     symbol_c* dimension = array_dimension_iterator->next();
   681     current_array_type->accept(*this);
   692 	if (dimension == NULL) ERROR;
   682     s4o.print("_TRANSIDX(");
   693 
   683     print_integer(i);
   694 	s4o.print("[(");
   684     s4o.print(",");
       
   685     symbol->elements[i]->accept(*this);
   695     symbol->elements[i]->accept(*this);
       
   696     s4o.print(") - (");
       
   697     dimension->accept(*this);
   686     s4o.print(")]");
   698     s4o.print(")]");
   687   }
   699   }
       
   700   delete array_dimension_iterator;
   688   return NULL;
   701   return NULL;
   689 }
   702 }
   690 
   703 
   691 /******************************************/
   704 /******************************************/
   692 /* B 1.4.3 - Declaration & Initialisation */
   705 /* B 1.4.3 - Declaration & Initialisation */