【正确答案】算符优先分析算法的形式化描述为:
k:=1;//k是栈顶指针
S[k]:='#';//S是堆栈。通过该语句首先将句子括号#压入堆栈
REPEAT
把下一个输入符号读进a中;
//将输入缓冲区指针指向的终结符赋予a,同时指针后移
IFS[k]∈VTTHENj:=kELSE j:=k-1;
//j指向栈顶的第一个终结符(由于算符文法句型的特点,如果k指向的不是终结符,则k-1指向的肯定是)。
WHILE S{j]>aDO
BEGIN
REPEAT//该循环根据最左素短语的条件,寻找最左素短语的左边界
Q:=S[i];
IFS[j-1]∈VTTHENj:=j-1 ELSEj:=j-2;
UNTILS[j]<Q;
//将S[j+1]…S[k]归约为代表文法非终结符的符号(我们用N来表示);
k:=j+1;//k指向新的栈顶
S[k]:=N;//将归约结果压栈
END;
IFS[j]<aORS[j]=aTHEN //当前的输入符号压栈
BEGIN
k:=k+1;
S[k]:=a;
END
ELSE//没有优先关系,表示出错,调用出错处理程序
ERROR;
UNTIL a='#';
IFK=2AND S[k]='N'AND s[k-1]='#'THEN
SUCCESS;//分析成功结束
ELSE
ERROR.//分析失败
【答案解析】