语法分析-—自顶向下分析技术 带回溯的自顶向下分析技术的算法实现续 Match(X,X,.Xn, X) var Input: array [1. Max] of SymbolStrings b flag =0 while (1 >=0 and k<=n) do begin fx1是终结符号 then begin fx1l=lnpu的首符号 or flag=1; then begin :l-1; flag =1; end else begin Input(I+1]=tail(Input[ID; I=I+1; flag =0; end; 选取新的关于Ⅺ的规则,设其右部为Y1Y2.Ym Input[1+1]=Match(Y 1Y2.Ym, Input[D); if (Input([I+1]=ERROR) then begin f没有更多X的规则 then begin I=l-1;fag=l;end flag =0 else begin I: l+l; flag=0; end end of while) then return Input(n+1]: 南京大学计算机系赵建华 else return erRo
南京大学计算机系 赵建华 语法分析----自顶向下分析技术 带回溯的自顶向下分析技术的算法实现续 Match(X1X2…Xn , X) var Input:array [1..Max] of SymbolStrings; begin I=1; Input[I]:= X; flag = 0; while (I >= 0 and I<=n) do begin if X1是终结符号 then begin if X1 != Input[I]的首符号 or flag = 1; then beginI := I-1; flag := 1; end else begin Input[I+1]:=tail(Input[I]); I:=I+1; flag = 0;end; end else begin 选取新的关于XI的规则,设其右部为Y1Y2….Ym; Input[I+1]:=Match(Y1Y2…Ym,Input[I])); if (Input[I+1] = ERROR) then begin if 没有更多Xi的规则 then begin I:=I-1; flag = 1; end else flag := 0; end else begin I:=I+1; flag := 0; end end end{of while} if(I>n) then return Input[n+1]; else return ERROR; end
语法分析-自顶向下分析技术 回溯自顶向下技术的问题 效率问题 语义处理问题 ·语法错误的显示 左递归问题 南京大学计算机系赵建华
南京大学计算机系 赵建华 语法分析----自顶向下分析技术 回溯自顶向下技术的问题 •效率问题 •语义处理问题 •语法错误的显示 •左递归问题
语法分析-自顶向下分析技术 3.无回溯的自顶向下分析技术 先决条件: 1:无左递归,既不能有规则左递归,又不能 有文法左递归。否则自顶向下技术就可能 进入死循环 2:无回溯,要求对任何一个非终结符号对应 的规则,其右部的符号串所能推导出来的 终结符号串的头部是两两不相交的。回顾 在带回溯的算法,可以知道这使得在选择 规则的时候唯一确定适合的规则 南京大学计算机系赵建华
南京大学计算机系 赵建华 语法分析----自顶向下分析技术 3. 无回溯的自顶向下分析技术 先决条件: 1:无左递归,既不能有规则左递归,又不能 有文法左递归。否则自顶向下技术就可能 进入死循环。 2:无回溯,要求对任何一个非终结符号对应 的规则,其右部的符号串所能推导出来的 终结符号串的头部是两两不相交的。回顾 在带回溯的算法,可以知道这使得在选择 规则的时候唯一确定适合的规则