b. 掉转参数,寻找一个做为反向操作符匹配时指向自身操作符。如果找到,则掉转分析树上的参数并使用该操作符。
2. 寻找最优匹配
a. 生成一个同名的操作符的列表。
b. 如果表中只有一个操作符:如果输入类型可以匹配或转换,则使用该操作符,否则输出一个错误。
c. 挑出具有最多显式的类型匹配的操作符.挑出所有没有显式的类型匹配的操作符并进行下一步.如果结果只有一个候选操作符,而且类型匹配或可转换.则使用之。
d. 如果输入参数是“unknown”, 将输入按布尔(boolean),数字(numeric),字符串(string),几何(geometric)或用户定义(user-defined)分类。如果分类结果有多种类型,或超过一种用户定义类型,则产生一个错误,因为在没有更多线索的条件下不能导出正确的选择。如果分类结果只有一类,则将先前“unknown”的类型转为“优选类型”。
e. 挑出类型匹配最准确的和从前一步中挑出的匹配各类的“优选类型”的操作符。如果还有超过一个的候选操作符或是没有候选操作符,则产生一个错误。
b. 如果表中只有一个函数,而且该函数的输入类型可以匹配或转换则使用之,如果不能,生成一个错误。 c. 找出所有具有最多显式参数类型匹配的函数。如果没有显式参数匹配的函数则进行下一步。如果只有一个候选函数,而且其参数类型可以匹配或转换,使用之。
d. 如果任何输入参数类型是“未知”(“unknown”),将输入的参数分类成布尔( boolean),数字(numeric),字符串(string),几何(geometric)和用户定义(user-defined)类型.如果分类后有多于一类,或多于一种用户定义类型则生成一个错误,因为在没有更多线索的情况下不能导出正确的选择。如果分类结果只有一类,则将原先的“未知”(“unknown”)类型转换成该类的“优选类型”(“preferred type”)。
e. 挑出类型匹配最准确的函数以及在上一步里每一类中匹配该类的"优选类型"("preferred type")的函数.如果这时仍然有多个函数可选,或一个都没有,则生成一个错误。