1 / 14
文档名称:

语义分析实验报告(实验三)(共14页).doc

格式:doc   大小:104KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

语义分析实验报告(实验三)(共14页).doc

上传人:rsqcpza 2022/4/8 文件大小:104 KB

下载得到文件列表

语义分析实验报告(实验三)(共14页).doc

相关文档

文档介绍

文档介绍:精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
编译原理语义分析实验报告
软工082班
注---专业
while(ch>='0'&&ch<='9')
{sum=sum*10+ch-'0';
ch=prog[p++];
}
p--;
syn=11;
}
else
{ switch(ch)
{ case'<':m=0;token[m++]=ch;
ch=prog[++p];
if(ch=='=')
{ syn=22;
token[m+1]=ch;
}
else
{ syn=20;
ch=prog[--p];}
break;
case'>':m=0;token[m++]=ch;
ch=prog[++p];
if(ch=='=')
{ syn=24;
token[m++]=ch;
}
else
{ syn=23;
ch=prog[--p];
}
break;
case'=':m=0,token[m++]=ch;
ch=prog[++p];
if(ch=='=')
{ syn=25;
token[m++]=ch;
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
}
else
{ syn=18;
ch=prog[--p];
}
break;
case'!':m=0;token[m++]=ch;ch=prog[++p];
if(ch=='=')
{ syn=22;
token[m+1]=ch;}
else
{ syn=-1;}
break;
case'+':syn=13;token[0]=ch;break;
case'-':syn=14;token[0]=ch;break;
case'*':syn=15;token[0]=ch;break;
case'/':syn=16;token[0]=ch;break;
case';':syn=26;token[0]=ch;break;
case'(':syn=27;token[0]=ch;break;
case')':syn=28;token[0]=ch;break;
case'#':syn=0;token[0]=ch;break;
default:syn=-1;
}
}//end of scaner
}
void emit(char *result,char *ag1,char *op,char *ag2) //将三地址代码送到四元式表
{ strcpy(quad[count].result,result);
strcpy(quad[count].ag1,ag1);
strcpy(quad[count].op,op);
strcpy(quad[count].ag2,ag2);
count++;
return;
}
char *newtemp() //返回临时变量t1,t2...
{ char *p;
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
char m[8];
p=(char *)malloc(8);
k++;
itoa(k,m,10); //功能将整数装换为字符串。并将值保存在m中。10是基数 表示将k的值转化为10进制数。
strcpy(p+1,m);
p[0]='t';
return(p);
}
char *factor()
{ char *fplace;
fplace=(char *)malloc(12);
strcpy(fplace," ");
if(syn==10)