结构推理 给出LR分析算法的形式化描述。
【正确答案】LR分析算法的形式化描述为:
   k:=1;    //k是栈顶指针
   X[k]:='#';    //X是堆栈,存放符号串。通过该语句首先将句子括号#压入堆栈
   S[k]:=0;    //是堆栈,存放状态。通过该语句首先将初始状态0压入堆栈
   把输入缓冲区指针指向的符号读进a中;//将输入缓冲区指针指向的符号赋予a,同时指针后移
   REPEAT
     IF ACTION[S[K],a]="Sj"  THEN
       BEGIN
       k:=k+1:
       S[K]:=j;
       X[k]:=a;
       把输入缓冲区指针指向的符号读进a中;//将输入缓冲区指针指向的符号赋予a,同时指针后移
     END
   ELSE IF ACTION[S[K],a]="rj"
     BEGIN
       K:=K-|α|;//如果文法第j个产生式是P→α,则弹出栈顶|α|项,|α|表示α的长度
       IF GOTO[S[K],P]=t THEN//如果GOTO[S[K],P]=t,则将<t,P>压入堆栈
         BEGIN
           K:=K+1:
           S[K]:=t;
           X[K]:='P';
         END
       ELSEERROR //如果没有动作,表示出错,调用出错处理程序
       END
     ELSE break  //跳出循环
   UNTIL a='#';
   IF K=2 AND S[K]='N' AND a='#'THEN //N为文法的起始符号
         SUCCESS; //分析成功结束
   ELSE
       ERROR;//分析失败
【答案解析】