stage3/fill_candidate_datatypes.cc
changeset 437 0e09a8840c92
parent 435 82cb6a64a763
child 438 744b125d911e
equal deleted inserted replaced
436:f9fd63f64f5c 437:0e09a8840c92
   414 /***************************/
   414 /***************************/
   415 /************************/
   415 /************************/
   416 /* B 1.2.3.1 - Duration */
   416 /* B 1.2.3.1 - Duration */
   417 /************************/
   417 /************************/
   418 void *fill_candidate_datatypes_c::visit(duration_c *symbol) {
   418 void *fill_candidate_datatypes_c::visit(duration_c *symbol) {
       
   419 	/* TODO: check whether the literal follows the rules specified in section '2.2.3.1 Duration' of the standard! */
   419 	symbol->candidate_datatypes.push_back(symbol->type_name);
   420 	symbol->candidate_datatypes.push_back(symbol->type_name);
   420 	if (debug) std::cout << "TIME_LITERAL [" << symbol->candidate_datatypes.size() << "]\n";
   421 	if (debug) std::cout << "TIME_LITERAL [" << symbol->candidate_datatypes.size() << "]\n";
   421 	return NULL;
   422 	return NULL;
   422 }
   423 }
   423 
   424 
   549 	 */
   550 	 */
   550 	symbol_c *result = search_varfb_instance_type->get_basetype_decl(symbol);
   551 	symbol_c *result = search_varfb_instance_type->get_basetype_decl(symbol);
   551 	if (NULL != result) symbol->candidate_datatypes.push_back(result);
   552 	if (NULL != result) symbol->candidate_datatypes.push_back(result);
   552 	
   553 	
   553 	/* recursively call the subscript list, so we can check the data types of the expressions used for the subscripts */
   554 	/* recursively call the subscript list, so we can check the data types of the expressions used for the subscripts */
   554 if (debug) std::cout << "ARRAY_VAR XXX\n";		
       
   555 	symbol->subscript_list->accept(*this);
   555 	symbol->subscript_list->accept(*this);
   556 if (debug) std::cout << "ARRAY_VAR YYY\n";		
       
   557 
   556 
   558 	if (debug) std::cout << "ARRAY_VAR [" << symbol->candidate_datatypes.size() << "]\n";	
   557 	if (debug) std::cout << "ARRAY_VAR [" << symbol->candidate_datatypes.size() << "]\n";	
   559 	return NULL;
   558 	return NULL;
   560 }
   559 }
   561 
   560