语法分析实验报告文档格式.docx
- 文档编号:16137853
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:7
- 大小:38.57KB
语法分析实验报告文档格式.docx
《语法分析实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《语法分析实验报告文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
*'
('
)'
构成的以'
#'
结束的字符串进行分析)
五、源程序实现
/*LL
(1)分析法源程序,只能在VC++中运行*/
#include<
>
charA[20];
charB[20];
charv1[20]={'
};
/*终结符*/
charv2[20]={'
E'
G'
T'
S'
F'
/*非终结符*/
intj=0,b=0,top=0,l;
/*L为输入串长度*/
typedefstructtype
{
charorigin;
/*大写字符*/
chararray[5];
/*产生式右边字符*/
intlength;
/*字符个数*/
}type;
typee,t,g,g1,s,s1,f,f1;
/*结构体变量*/
typeC[10][10];
/*预测分析表*/
voidprint()/*输出分析栈*/
inta;
/*指针*/
for(a=0;
a<
=top+1;
a++)
printf("
%c"
A[a]);
\t\t"
);
}/*print*/
voidprint1()/*输出剩余串*/
intj;
for(j=0;
j<
b;
j++)/*输出对齐符*/
"
for(j=b;
=l;
j++)
B[j]);
\t\t\t"
}/*print1*/
voidmain()
intm,n,k=0,flag=0,finish=0;
charch,x;
typecha;
/*用来接受C[m][n]*/
/*把文法产生式赋值结构体*/
='
;
strcpy,"
TG"
=2;
FS"
+TG"
=3;
[0]='
^'
=1;
*FS"
(E)"
for(m=0;
m<
=4;
m++)/*初始化分析表*/
for(n=0;
n<
=5;
n++)
C[m][n].origin='
N'
/*全部赋为空*/
/*填充分析表*/
C[0][0]=e;
C[0][3]=e;
C[1][1]=g;
C[1][4]=g1;
C[1][5]=g1;
C[2][0]=t;
C[2][3]=t;
C[3][1]=s1;
C[3][2]=s;
C[3][4]=C[3][5]=s1;
C[4][0]=f1;
C[4][3]=f;
请输入要分析的字符串:
"
do/*读入分析串*/
{
scanf("
&
ch);
if((ch!
='
)&
&
(ch!
)&
))
输入串中有非法字符\n"
exit
(1);
}
B[j]=ch;
j++;
}while(ch!
l=j;
/*分析串长度*/
ch=B[0];
/*当前分析字符*/
A[top]='
A[++top]='
/*'
进栈*/
步骤\t\t分析栈\t\t剩余字符\t\t所用产生式\n"
do
x=A[top--];
/*x为当前栈顶字符*/
%d"
k++);
j++)/*判断是否为终结符*/
if(x==v1[j])
flag=1;
break;
if(flag==1)/*如果是终结符*/
if(x=='
)
finish=1;
/*结束标记*/
acc!
\n"
/*接受*/
getchar();
}/*if*/
if(x==ch)
print();
print1();
%c匹配\n"
ch);
ch=B[++b];
/*下一个输入字符*/
flag=0;
/*恢复标记*/
else/*出错处理*/
%c出错\n"
/*输出出错终结符*/
}/*else*/
else/*非终结符处理*/
if(x==v2[j])
m=j;
/*行号*/
if(ch==v1[j])
n=j;
/*列号*/
cha=C[m][n];
if!
)/*判断是否为空*/
%c->
;
/*输出产生式*/
[j]);
for(j=;
j>
=0;
j--)/*产生式逆序入栈*/
A[++top]=[j];
if(A[top]=='
)/*为空则不进栈*/
top--;
x);
/*输出出错非终结符*/
}while(finish==0);
}/*main*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语法分析 实验 报告