diff -r 6384168a8e95 -r 866eb35e4e14 absyntax/absyntax.def --- a/absyntax/absyntax.def Thu Feb 02 10:00:53 2012 +0000 +++ b/absyntax/absyntax.def Thu Feb 02 14:18:02 2012 +0000 @@ -1045,7 +1045,9 @@ /* formal_param_list -> may be NULL ! */ /* nonformal_param_list -> may be NULL ! */ -/* NOTE: The parameter 'called_function_declaration' is used to pass data between the stage 3 and stage 4. +/* NOTES: + * The parameter 'called_function_declaration'... + * ...is used to pass data between the stage 3 and stage 4. * The IEC 61131-3 standard allows for overloaded standard functions. This means that some * function calls are not completely defined by the name of the function being called, * and need to be disambiguated with using the data types of the parameters being passed. @@ -1054,8 +1056,23 @@ * It does not make sense to determine the exact function being called twice (once in stage 3, * and again in stage 4), so stage 3 will store this info in the parameter called_function_declaration * for stage 4 to use it later on. - */ -SYM_REF3(function_invocation_c, function_name, formal_param_list, nonformal_param_list, symbol_c *called_function_declaration; int extensible_param_count;) + * The parameter 'candidate_functions'... + * ...is used to pass data between two passes within stage 3 + * (actually between fill_candidate_datatypes_c and narrow_candidate_datatypes_c). + * It is used to store all the functions that may be legally called with the current parameters + * being used in this function invocation. Note that the standard includes some standard functions + * that have the exact same input parameter types, but return different data types. + * In order to determine which of these functions should be called, we first create a list + * of all possible functions, and then narrow down the list (hopefully down to 1 function) + * once we know the data type that the function invocation must return (this will take into + * account the expression in which the function invocation is inserted/occurs). + * The parameter 'extensible_param_count'... + * ...is used to pass data between the stage 3 and stage 4. + * The IEC 61131-3 standard allows for extensible standard functions. This means that some + * standard functions may be called with a variable number of paramters. Stage 3 will store + * in extensible_param_count the number of parameters being passed to the extensible parameter. + */ +SYM_REF3(function_invocation_c, function_name, formal_param_list, nonformal_param_list, symbol_c *called_function_declaration; int extensible_param_count; std::vector candidate_functions;) /********************/