stage3/fill_candidate_datatypes.cc
changeset 1021 21a97cdb317d
parent 1017 3f12e23b253b
child 1040 e8563dcaefca
equal deleted inserted replaced
1008:59435d4c5e0c 1021:21a97cdb317d
  1829 
  1829 
  1830 /* | function_name '(' eol_list [il_param_list] ')' */
  1830 /* | function_name '(' eol_list [il_param_list] ')' */
  1831 /* NOTE: The parameter 'called_function_declaration' is used to pass data between the stage 3 and stage 4. */
  1831 /* NOTE: The parameter 'called_function_declaration' is used to pass data between the stage 3 and stage 4. */
  1832 // SYM_REF2(il_formal_funct_call_c, function_name, il_param_list, symbol_c *called_function_declaration; int extensible_param_count;)
  1832 // SYM_REF2(il_formal_funct_call_c, function_name, il_param_list, symbol_c *called_function_declaration; int extensible_param_count;)
  1833 void *fill_candidate_datatypes_c::visit(il_formal_funct_call_c *symbol) {
  1833 void *fill_candidate_datatypes_c::visit(il_formal_funct_call_c *symbol) {
  1834 	symbol->il_param_list->accept(*this);
  1834 	/* non-standard extension allowing functions with no input parameters => il_param_list may be NULL !!! */
       
  1835 	if (NULL != symbol->il_param_list) symbol->il_param_list->accept(*this); 
  1835 
  1836 
  1836 	generic_function_call_t fcall_param = {
  1837 	generic_function_call_t fcall_param = {
  1837 		/* fcall_param.function_name               = */ symbol->function_name,
  1838 		/* fcall_param.function_name               = */ symbol->function_name,
  1838 		/* fcall_param.nonformal_operand_list      = */ NULL,
  1839 		/* fcall_param.nonformal_operand_list      = */ NULL,
  1839 		/* fcall_param.formal_operand_list         = */ symbol->il_param_list,
  1840 		/* fcall_param.formal_operand_list         = */ symbol->il_param_list,
  2168 
  2169 
  2169 
  2170 
  2170 void *fill_candidate_datatypes_c::visit(function_invocation_c *symbol) {
  2171 void *fill_candidate_datatypes_c::visit(function_invocation_c *symbol) {
  2171 	if      (NULL != symbol->formal_param_list)        symbol->   formal_param_list->accept(*this);
  2172 	if      (NULL != symbol->formal_param_list)        symbol->   formal_param_list->accept(*this);
  2172 	else if (NULL != symbol->nonformal_param_list)     symbol->nonformal_param_list->accept(*this);
  2173 	else if (NULL != symbol->nonformal_param_list)     symbol->nonformal_param_list->accept(*this);
  2173 	else ERROR;
  2174 	// else ERROR;  NOTE-> We support the non-standard feature of POUS with no in, out and inout parameters, so this is no longer an internal error!
  2174 
  2175 
  2175 	generic_function_call_t fcall_param = {
  2176 	generic_function_call_t fcall_param = {
  2176 			  function_name:                symbol->function_name,
  2177 			  function_name:                symbol->function_name,
  2177 			  nonformal_operand_list:       symbol->nonformal_param_list,
  2178 			  nonformal_operand_list:       symbol->nonformal_param_list,
  2178 			  formal_operand_list:          symbol->formal_param_list,
  2179 			  formal_operand_list:          symbol->formal_param_list,