编译原理 语法分析 联系客服

发布时间 : 星期一 文章编译原理 语法分析更新完毕开始阅读cb8489c34028915f804dc2ba

福州大学 数学与计算机科学(软件)学院

开始[A->α.aβ,b]在Ii中,且N[A->α.,a]在Ii中,且Ii中A不等N[S’->S.,$]在Ii中,goto(Ii,a)=Ij于S’且Ii中A不等于S’C初始化{closure},{S→S',$}YYI中A→α.Bβ,αG‘中B→r;将action[I,a]设置为将action[I,a]设置为将action[I,$]设置为把B→.r,first(βα)加入I“移入就”“规约A→α”“接受”得到closure(I)Y是否有新的项?NN分析完?输出error,结束I中A→α.Bβ,a G'中每个产生式B→r,first(βα)中每NY个终结符将B→.r,b加入I中;得到GOTO(I,X)YNNAction[s,a]=移入Action[s,a]=规约A→αAction[s,a]=接受Y是否有新的项?YYNY弹出|β|符号,将t为栈顶状态,将得到LR(1)项集族将t压入栈a为下一个输入符goto[t,,A]压入栈结束,分析正确中,输出A→α5

福州大学 数学与计算机科学(软件)学院

实验结果:

输入:

输出:

输入的字符串以结束@

bi,i,i;f(i>i)i=n*n+new(i>n)di=i+i@

栈 符号 输入 动作

0 bi,i,i;f(i>i)i=n*n+new(i>n)di=i+i@ 移入 03 b i,i,i;f(i>i)i=n*n+new(i>n)di=i+i@ 移入

0310 bi ,i,i;f(i>i)i=n*n+new(i>n)di=i+i@ 根据H->i规约 039 bH ,i,i;f(i>i)i=n*n+new(i>n)di=i+i@ 移入 03915 bH, i,i;f(i>i)i=n*n+new(i>n)di=i+i@ 移入

0391516 bH,i ,i;f(i>i)i=n*n+new(i>n)di=i+i@ 根据H->H,i规约 039 bH ,i;f(i>i)i=n*n+new(i>n)di=i+i@ 移入 03915 bH, i;f(i>i)i=n*n+new(i>n)di=i+i@ 移入

6

福州大学 数学与计算机科学(软件)学院 0391516 bH,i ;f(i>i)i=n*n+new(i>n)di=i+i@ 根据H->H,i规约 039 bH ;f(i>i)i=n*n+new(i>n)di=i+i@ 移入

03928 bH; f(i>i)i=n*n+new(i>n)di=i+i@ 根据B->bH;规约 02 B f(i>i)i=n*n+new(i>n)di=i+i@ 移入 027 Bf (i>i)i=n*n+new(i>n)di=i+i@ 移入 02713 Bf( i>i)i=n*n+new(i>n)di=i+i@ 移入

0271320 Bf(i >i)i=n*n+new(i>n)di=i+i@ 根据F->i规约 0271319 Bf(F >i)i=n*n+new(i>n)di=i+i@ 根据T->F规约 0271318 Bf(T >i)i=n*n+new(i>n)di=i+i@ 根据E->T规约 0271334 Bf(E >i)i=n*n+new(i>n)di=i+i@ 移入 027133435 Bf(E> i)i=n*n+new(i>n)di=i+i@ 移入

02713343520 Bf(E>i )i=n*n+new(i>n)di=i+i@ 根据F->i规约 02713343519 Bf(E>F )i=n*n+new(i>n)di=i+i@ 根据T->F规约 02713343518 Bf(E>T )i=n*n+new(i>n)di=i+i@ 根据E->T规约 02713343536 Bf(E>E )i=n*n+new(i>n)di=i+i@ 根据K->E>E规约 0271330 Bf(K )i=n*n+new(i>n)di=i+i@ 移入 027133043 Bf(K) i=n*n+new(i>n)di=i+i@ 移入 0271330435 Bf(K)i =n*n+new(i>n)di=i+i@ 移入 027133043511 Bf(K)i= n*n+new(i>n)di=i+i@ 移入

02713304351121 Bf(K)i=n *n+new(i>n)di=i+i@ 根据F->n规约 02713304351119 Bf(K)i=F *n+new(i>n)di=i+i@ 根据T->F规约 02713304351118 Bf(K)i=T *n+new(i>n)di=i+i@ 移入 0271330435111839 Bf(K)i=T* n+new(i>n)di=i+i@ 移入

027133043511183921 Bf(K)i=T*n +new(i>n)di=i+i@ 根据F->n规约 027133043511183942 Bf(K)i=T*F +new(i>n)di=i+i@ 根据T->T*F规 约

02713304351118 Bf(K)i=T +new(i>n)di=i+i@ 根据E->T规约 02713304351117 Bf(K)i=E +new(i>n)di=i+i@ 移入 0271330435111737 Bf(K)i=E+ new(i>n)di=i+i@ 移入

027133043511173721 Bf(K)i=E+n ew(i>n)di=i+i@ 根据F->n规约 027133043511173719 Bf(K)i=E+F ew(i>n)di=i+i@ 根据T->F规约 027133043511173738 Bf(K)i=E+T ew(i>n)di=i+i@ 根据E->E+T规约 02713304351117 Bf(K)i=E ew(i>n)di=i+i@ 根据D->i=E规约 02713304331 Bf(K)D ew(i>n)di=i+i@ 移入 0271330433132 Bf(K)De w(i>n)di=i+i@ 移入 02713304331328 Bf(K)Dew (i>n)di=i+i@ 移入 0271330433132814 Bf(K)Dew( i>n)di=i+i@ 移入

027133043313281420 Bf(K)Dew(i >n)di=i+i@ 根据F->i规约 027133043313281419 Bf(K)Dew(F >n)di=i+i@ 根据T->F规约 027133043313281418 Bf(K)Dew(T >n)di=i+i@ 根据E->T规约 027133043313281434 Bf(K)Dew(E >n)di=i+i@ 移入 02713304331328143435 Bf(K)Dew(E> n)di=i+i@ 移入

0271330433132814343521 Bf(K)Dew(E>n )di=i+i@ 根据F->n规约 0271330433132814343519 Bf(K)Dew(E>F )di=i+i@ 根据T->F规约

7

福州大学 数学与计算机科学(软件)学院 0271330433132814343518 Bf(K)Dew(E>T )di=i+i@ 根据E->T规约 0271330433132814343536 Bf(K)Dew(E>E )di=i+i@ 根据K->E>E规约 027133043313281425 Bf(K)Dew(K )di=i+i@ 移入 02713304331328142526 Bf(K)Dew(K) di=i+i@ 移入 0271330433132814252627 Bf(K)Dew(K)d i=i+i@ 移入 02713304331328142526275 Bf(K)Dew(K)di =i+i@ 移入 0271330433132814252627511 Bf(K)Dew(K)di= i+i@ 移入

027133043313281425262751120 Bf(K)Dew(K)di=i +i@ 根据F->i规约 027133043313281425262751119 Bf(K)Dew(K)di=F +i@ 根据T->F规约 027133043313281425262751118 Bf(K)Dew(K)di=T +i@ 根据E->T规约 027133043313281425262751117 Bf(K)Dew(K)di=E +i@ 移入 02713304331328142526275111737 Bf(K)Dew(K)di=E+ i@ 移入

0271330433132814252627511173720 Bf(K)Dew(K)di=E+i @ 根据F->i规约 0271330433132814252627511173719 Bf(K)Dew(K)di=E+F @ 根据T->F规约 0271330433132814252627511173738 Bf(K)Dew(K)di=E+T @ 根据E->E+T规约 027133043313281425262751117 Bf(K)Dew(K)di=E @ 根据D->i=E规约 027133043313281425262729 Bf(K)Dew(K)dD @ 根据D->w(K)dD规约 027133043313233 Bf(K)DeD @ 根据D->f(K)DeD规约 024 BD @ 根据S->BD规约 01 S @ 接受 出错分析 输入:

输出:

输入的字符串以结束@ bi,i,i;f(i>i)i=i+iei=ni@

栈 符号 输入 动作

0 bi,i,i;f(i>i)i=i+iei=ni@ 移入 03 b i,i,i;f(i>i)i=i+iei=ni@ 移入

0310 bi ,i,i;f(i>i)i=i+iei=ni@ 根据H->i规约 039 bH ,i,i;f(i>i)i=i+iei=ni@ 移入 03915 bH, i,i;f(i>i)i=i+iei=ni@ 移入

0391516 bH,i ,i;f(i>i)i=i+iei=ni@ 根据H->H,i规约 039 bH ,i;f(i>i)i=i+iei=ni@ 移入 03915 bH, i;f(i>i)i=i+iei=ni@ 移入

0391516 bH,i ;f(i>i)i=i+iei=ni@ 根据H->H,i规约 039 bH ;f(i>i)i=i+iei=ni@ 移入

8