若已知运算符之间的优先关系,可按如下步骤构造优先函数:
- 对每个运算符a(包括(sharp)在内)令f(a)=g(a)=1
- 如果(a gtrdot b)且(f(a) le g(b)),令f(a)=g(b)+1
- 如果(a lessdot b)且(f(a) ge g(b)),令g(b)=f(a)+1
- 如果(a doteq b)而(f(a) eq g(b)),令(minleft { f(a),g(b) ight }=maxleft { f(a),g(b) ight })
- 重复(2sim 4),直到过程收敛。如果存在重复过程中有一个值大于2n,则表明不存在算符优先函数。