发布时间 : 星期日 文章编译原理 语法分析更新完毕开始阅读
福州大学 数学与计算机科学(软件)学院 03928 bH; f(i>i)i=i+iei=ni@ 根据B->bH;规约 02 B f(i>i)i=i+iei=ni@ 移入 027 Bf (i>i)i=i+iei=ni@ 移入 02713 Bf( i>i)i=i+iei=ni@ 移入
0271320 Bf(i >i)i=i+iei=ni@ 根据F->i规约 0271319 Bf(F >i)i=i+iei=ni@ 根据T->F规约 0271318 Bf(T >i)i=i+iei=ni@ 根据E->T规约 0271334 Bf(E >i)i=i+iei=ni@ 移入 027133435 Bf(E> i)i=i+iei=ni@ 移入
02713343520 Bf(E>i )i=i+iei=ni@ 根据F->i规约 02713343519 Bf(E>F )i=i+iei=ni@ 根据T->F规约 02713343518 Bf(E>T )i=i+iei=ni@ 根据E->T规约 02713343536 Bf(E>E )i=i+iei=ni@ 根据K->E>E规约 0271330 Bf(K )i=i+iei=ni@ 移入 027133043 Bf(K) i=i+iei=ni@ 移入 0271330435 Bf(K)i =i+iei=ni@ 移入 027133043511 Bf(K)i= i+iei=ni@ 移入
02713304351120 Bf(K)i=i +iei=ni@ 根据F->i规约 02713304351119 Bf(K)i=F +iei=ni@ 根据T->F规约 02713304351118 Bf(K)i=T +iei=ni@ 根据E->T规约 02713304351117 Bf(K)i=E +iei=ni@ 移入 0271330435111737 Bf(K)i=E+ iei=ni@ 移入
027133043511173720 Bf(K)i=E+i ei=ni@ 根据F->i规约 027133043511173719 Bf(K)i=E+F ei=ni@ 根据T->F规约 027133043511173738 Bf(K)i=E+T ei=ni@ 根据E->E+T规约 02713304351117 Bf(K)i=E ei=ni@ 根据D->i=E规约 02713304331 Bf(K)D ei=ni@ 移入 0271330433132 Bf(K)De i=ni@ 移入 02713304331325 Bf(K)Dei =ni@ 移入 0271330433132511 Bf(K)Dei= ni@ 移入 027133043313251121 Bf(K)Dei=n i@
5b ERROR
心得体会:
通过实验,明白了LL(1),LR(1),SLR(1),LALR这几个文法的区别,同时由于自己编程的能力,对分析表的构造采用了人工手法,但是从中掌握了分析表构造的原理,经过自己亲手实践,对分析表有了更深的了解。LR(1)语法分析移进和规约如何对程序进行分析。实验过程中也碰到很多麻烦,比如分析表的构造由于文法多,状态多,容易出错,赋值分析表过程中,也需要人力。程序还不够完善,删减了一些文法,使测试数据不是很完整。出错处理不到位,只能做到检测错误,无法跳过错误,重新下一行的分析。不管怎样,最后我们还是完成了实验,还是挺满足的,付出劳动,总有收获的。
9
福州大学 数学与计算机科学(软件)学院
实验代码:
#include
using namespace std;
char Keywords[55][10] = {\\\\\\\\
\ \ \ \
\\
int f[45][30];// 分析表 赋值(s9=900,r1=1;acc=20) char
wf[20][15]={\D->f(K)DeD\n\文法单元;
char tempchr[10],p,in_put[100],table[100][10];//存放识别字符串; int t,j,val,b,flag;
char flag1,put[100],*arr;
int begin=0,forward=0,pos;// 开始符号和向前看指针;
int main() { f[0][8]=300;f[0][17]=4;//分析表 f[1][17]=20;
f[2][1]=500;f[2][3]=600;f[2][4]=700;f[2][6]=800; f[3][1]=1000; f[4][17]=2; f[5][14]=1100; f[6][15]=1200; f[7][15]=1300; f[8][15]=1400;
f[9][9]=1500;f[9][10]=2800; f[10][9]=5;f[10][10]=5;
f[11][1]=2000;f[11][2]=2100;f[11][15]=2200; f[12][1]=2300;
f[13][1]=2000;f[13][2]=2100;f[13][15]=2200; f[14][1]=2000;f[14][2]=2100;f[14][15]=2200; f[15][1]=1600;
10
福州大学 数学与计算机科学(软件)学院
f[16][9]=6;f[16][10]=6; f[17][12]=3700;f[17][17]=7;
f[18][11]=3900;f[18][12]=12;f[18][13]=12;f[18][16]=12;f[18][17]=12; f[19][11]=15;f[19][12]=15;f[19][13]=15;f[19][16]=15;f[19][17]=15; f[20][11]=16;f[20][12]=16;f[20][13]=16;f[20][16]=16;f[20][17]=16; f[21][11]=17;f[21][12]=17;f[21][13]=17;f[21][16]=17;f[21][17]=17; f[22][1]=2000;f[22][2]=2100; f[23][16]=2400; f[24][17]=8; f[25][16]=2600; f[26][7]=2700;
f[27][1]=500;f[27][3]=600;f[27][4]=700;f[27][6]=800;
f[28][17]=3;f[28][1]=3;f[28][3]=3;f[28][4]=3;f[28][6]=3;f[28][8]=3; f[29][1]=500;f[29][3]=600;f[29][4]=700;f[29][6]=800;f[29][17]=10; f[30][16]=4300; f[31][5]=3200;
f[32][1]=500;f[32][3]=600;f[32][4]=700;f[32][6]=800; f[33][17]=9; f[34][13]=3500;
f[35][1]=2000;f[35][2]=2100;f[35][15]=2200; f[36][12]=3700;f[36][16]=11;
f[37][1]=2000;f[37][2]=2100;f[37][15]=2200;
f[38][11]=3900;f[38][12]=13;f[38][13]=13;f[38][16]=13;f[38][17]=13; f[39][1]=2000;f[39][2]=2100;f[39][15]=2200; f[40][12]=3700;f[40][16]=4100;
f[41][11]=18;f[41][12]=18;f[41][13]=18;f[41][16]=18;f[41][17]=18; f[42][11]=14;f[42][12]=14;f[42][13]=14;f[42][16]=14;f[42][17]=14; f[43][1]=500;f[43][3]=600;f[43][6]=800;f[43][20]=3100; f[0][18]=100;f[0][19]=200; f[2][20]=400; f[3][21]=900;
f[11][23]=1700;f[11][24]=1800;f[11][25]=1900;
f[13][22]=3000;f[13][23]=3400;f[13][24]=1800;f[13][25]=1900; f[14][22]=2500;f[14][23]=3400;f[14][24]=1800;f[14][25]=1900; f[22][23]=4000;f[22][24]=1800;f[22][25]=1900; f[27][20]=2900; f[32][20]=3300;
f[35][23]=3600;f[35][24]=1800;f[35][25]=1900; f[37][24]=3800;f[37][25]=1900; f[39][25]=4200;
f[17][5]=7;f[18][5]=12;f[19][5]=15;f[20][5]=16;f[21][5]=17;f[24][5]=8; f[29][5]=10;f[33][5]=9;f[38][5]=13;f[41][5]=18;f[42][5]=14;
11
福州大学 数学与计算机科学(软件)学院
list
12