好文档 - 专业文书写作范文服务资料分享网站

新-编译原理语法分析实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

{

if(st[i][m+1]=='\\0'||st[i][m+1]=='|') {

if(zhongjie(st[i][m])) {

last[i][n]=st[i][m]; n++; } else {

if(zhongjie(st[i][m-1])) {

last[i][n]=st[i][m-1]; n++; }

if(st[i][m]!=c) {

lastvt(st[i][m]); for(j=0;j

if(st[j][0]==st[i][m]) break; }

for(k=0;k

int t;

for(t=0;t

if(last[i][t]==last[j][k+1]) break; }

if(t==n) {

last[i][n]=last[j][k+1]; n++; } } } } } m++;

}while(st[i][m]!='\\0'); last[i][n]='\\0'; last[i][0]=--n;

10

lflag[i]=1; } }

int deal() //对输入串的分析 {

int i,j; int x,y;

int z; //输入串的长度 k=1;

s[k]='#'; //栈置初值

for(i=0;input[i]!='\\0';i++); //计算输入串的长度 z=i--; i=0;

while((a=input[i])!='\\0') {

if(zhongjie(s[k])) j=k; else j=k-1;

x=xiabiao(s[j]); y=xiabiao(a);

if(data[x][y]=='>') {

out(1,k,s);

printf(\ out(i+1,z,input); printf(\归约\\n\ do {

q=s[j];

if(zhongjie(s[j-1])) j=j-1; else j=j-2;

x=xiabiao(s[j]); y=xiabiao(q);

}while(data[x][y]!='<'); int m,n,N;

for(m=j+1;m<=k;m++) {

for(N=0;N

for(n=1;string[N][n]!='\\0';n++) {

if(!zhongjie(s[m])&&!zhongjie(string[N][n])) {

11

if(zhongjie(s[m+1])&&zhongjie(string[N][n+1]) &&s[m+1]==string[N][n+1]) {

s[j+1]=string[N][0]; break; } }

else

if(zhongjie(s[m]))

if(s[m]==string[N][n]) {

s[j+1]=string[N][0]; break; } } }

k=j+1; if(k==2&&a=='#') {

out(1,k,s); printf(\ out(i+1,z,input); printf(\结束\\n\

printf(\输入串符合文法的定义!\\n\

return 1; } } else

if(data[x][y]=='<'||data[x][y]=='=')

{ out(1,k,s);

printf(\ out(i+1,z,input); printf(\移进\\n\ k++; s[k]=a; i++; } else {

printf(\ return 0; } }

12

输入串符合文法的定义 //移进 // printf(\return 0; }

void out(int j,int k,char *s) {

int n=0; int i;

for(i=j;i<=k;i++) {

printf(\ n++; }

for(;n<15;n++) {

printf(\} }

int xiabiao(char c) {

int i;

for(i=0;lable[i]!='\\0';i++) {

if(c==lable[i]) return i; }

return -1; }

int zhongjie(char c) {

int i;

for(i=0;lable[i]!='\\0';i++) {

if(c==lable[i]) return 1; }

return 0; }

四.程序测试

//求字符c在算符优先关系表中的下标//判断字符c是否是终结符 13

当输入文法首字母不是终结符的情况时,程序提示不是算符文法

图4-1 判断不是算符文法测试

当输入文法分析串没有“#”结束时,分析失败

图4-2 分析失败测试

14

新-编译原理语法分析实验报告

{if(st[i][m+1]=='\\0'||st[i][m+1]=='|'){if(zhongjie(st[i][m])){last[i][n]=st[i][m];n++;}else{if(z
推荐度:
点击下载文档文档为doc格式
7fxjh0eyj54ncj33s2bw8iiwn479cv018dk
领取福利

微信扫码领取福利

微信扫码分享