前的最后一个符号的位置。RANK是记录秩值之和的计数器,而j用作每次从被搜索的子串中选取一个符号的下标计数器。符号i是记录所抽出的运算对象个数的计数器,TEMP是只用来存贮子串中的一个符号的临时工作单元。SIGN是一个内部函数,它分别依赖于它的自变量是负的、零或正的而返回值-1,0或1。符号''用来表示长度为0的串。
1.[位置和运算对象数组赋初值]置LOC←POS,OPER[1] ← '',
OPER[2] ← ''。
2.[求运算对象循环]对于i=1,2,┅,NUM,重复第3步到第7步。
3.[秩和下标计数器初态并置长度限]
置RANK←1,j←0和MAXL←LENGTH(SUB(FORM,LOC+1))。
4.[求到一个运算对象吗? ]如果RANK=0,则转到第7步。
5.[如果还是合式公式,取下一符号]
置j←j+1,如果j>MAXL,则打印错误信息并退出;
否则取TEMP←SUB(FORM,LOC+j,1).
6.[如果还是合式公式,构造新的秩值]如果TEMP='?'则打印错误信
息并退出;否则置RANK←RANK+SIGN(INDEX(SYMBOLS,TEMP)-1)并转到第4步。
7.[抽出运算对象,位置重新赋值]置OPER[i] ←SUB(FORM,LOC+1,j)
和LOC←LOC+j.
8.[取出被删除公式的长度]
置MAXL←LENGTH(OPER[1])+ LENGTH(OPER[2])+3.