图中符号说明如下: "#"句子括号即输入串的括号 "S"文法的开始符号 "X"存放当前栈顶符号的工作单元 "a"存放当前输入符号a的工作单元 预测分析程序的算法可为: BEGIN 首先把'#'和文法开始符号推入 STACK 栈; 把第一个输入符号读进a; FLAG:=TRUE; WHILE FIAG DO BEGIN 把STACK栈顶符号上托出去并放在X中; IF X ∈ VT THEN IF X=a THEN 把下一个输入符号读进a ELSE ERROR ELSE IF X='#' THEN IF X=a THEN FLAG:=FALSE ELSE ERROR ELSE IF M[X,a]={X→X1X2...XK} THEN 把XK,XK-1,…X1一一推 进 STACK /*若X1X2…XK=ε ,不推什么进栈*/ ELSE ERROR END OF WHILE; STOP/*分析成功,过程完毕*/ |