第一范文网 - 专业文章范例文档资料分享平台

编译原理实验报告 (5)

来源:用户分享 时间:2020-05-04 本文由深山夕照深秋雨 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

}

if (IsLowerThan(stack[j],r)||IsEqualTo(stack[j],r)) { } else

return ERROR; stack[++k]=r;

//printf(\新结点入栈,堆栈指针移进k=%d\\n\

//printf(\为:\

// printf(\栈顶节点为:\

}while (r!=9); return RIGHT;

int IsHigherThan(int a,int b) { }

int IsLowerThan(int a,int b) { }

int IsEqualTo(int a,int b) { }

int Reduce(int a,int b,int c) {

char gl='F'; printf(\); for(;a<=b;a++){

changinttochar(stack[a]);

if(stack[a]==1||(stack[a])==0)gl='E'; if(table[a][b]==0)

return RIGHT; return ERROR; else

if(table[a][b]==-1)

return RIGHT; return ERROR; else

if(table[a][b]==1)

return RIGHT;

return report_error(table[a][b]); return ERROR;

else if(table[a][b]!=-1&&table[a][b]!=0) else

}

}

if(stack[a]==2||(stack[a])==3)gl='T';

printf(\类型为%c,归约为N,\,gl); return 10;

//************************************************语法分析**********

//************************************************语义分析********** char

E( ) /* 识别<算术表达式>*/ {

E1_PLACE=T( ); /* 语法范畴E的一个属性*/ while (SYM='+' || SYM='-') {

ADVANCE; /* 将输入串指针调整至指向下一个输入符号*/ E2_PLACE=T( );

T1=NewTemp( ); /* 分配一个新的临时变量*/

GEN(±, E1_PLACE, E2_PLACE, T1); /* 根据所给实参产生一个四元式*/ E1_PLACE=T1; }

return E1_PLACE; }

T( ) /* 识别<项>*/ {

T1_PLACE=F( );

while (SYM='*' || SYM='/') { ADVANCE; T2_PLACE=F( ); T1=NewTemp( );

GEN(*/, T1_PLACE, T2_PLACE, T1); T1_PLACE=T1; }

return T1_PLACE; }

F( ) /* 识别<因式>*/ {

if (SYM='标识符') { ADVANCE;

return Entry(i.词文); /* 以标识符的词文为名字查、填符号表*/

} else

if ( SYM='(' ) { ADVANCE; PLACE=E( ); if ( SYM=')' ) { ADVANCE; return PLACE; }

else ERROR; }

else ERROR; }

//************************************************语义分析********** main() {

//int j=0; FILE *fp; char ch;

if((fp=fopen(\,\))==NULL) //readonly方式打开文件 { }

printf(\文件内容如下:\\n\); ch=fgetc(fp); while(ch!=EOF) { }

printf(\语法分析如下:\\n\); fseek(fp,0,0); int key; ch=fgetc(fp); coor(ch); while(ch!=EOF) {

if(ch==' '||ch==9||ch==10){

ch=fgetc(fp);

coor(ch);}//'\\t'为水平制表符ASCII码为.\\n占两个字节,前一字节无ASCII码为换行格

//坐标移到文档开始位置

putchar(ch); ch=fgetc(fp);

//EOF文档结束标志

printf(\找不到文件!!!\\n\); return(0);

式,后一字节ASCII码为

else

}

}

{ }

fseek(fp,-1,1); l-=1;

key=parser(fp); if(key==1) { } else { }

//printf(\ch=fgetc(fp); coor(ch);

printf(\出现语法错误!!\\n\\n\);

printf(\成功通过词法分析和语法分析!!\\n\\n\);

//扫描

printf(\); fclose(fp); return(0);

正确输入时结果:

错误输入时结果:

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新综合文库编译原理实验报告 (5)全文阅读和word下载服务。

编译原理实验报告 (5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/995656.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top