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, |