首页 > 技术文章 > 【编译原理】迭代法求算符优先函数

Acapplella 2021-04-22 10:34 原文

若已知运算符之间的优先关系,可按如下步骤构造优先函数:

  1. 对每个运算符a(包括\(\sharp\)在内)令f(a)=g(a)=1
  2. 如果\(a \gtrdot b\)\(f(a) \le g(b)\),令f(a)=g(b)+1
  3. 如果\(a \lessdot b\)\(f(a) \ge g(b)\),令g(b)=f(a)+1
  4. 如果\(a \doteq b\)\(f(a) \neq g(b)\),令\(min\left \{ f(a),g(b) \right \}=max\left \{ f(a),g(b) \right \}\)
  5. 重复\(2\sim 4\),直到过程收敛。如果存在重复过程中有一个值大于2n,则表明不存在算符优先函数。

推荐阅读