计算机编译原理实验二.doc

上传人:豆**** 文档编号:28559450 上传时间:2022-07-28 格式:DOC 页数:9 大小:41.50KB
返回 下载 相关 举报
计算机编译原理实验二.doc_第1页
第1页 / 共9页
计算机编译原理实验二.doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《计算机编译原理实验二.doc》由会员分享,可在线阅读,更多相关《计算机编译原理实验二.doc(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精品文档,仅供学习与交流,如有侵权请联系网站删除华中师范大学CENTRAL CHINA NORMAL UNIVERSITY题 目: 语法分析 院 系:计算机科学与技术系 班 级: 0701 姓 名: 王辉 学 号: 2007210514 指导老师: 王明安 一.实验题目语法分析二实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。三.实验内容 用C语言编制递归下降分析程,并对简单语言进行语法分析。四.实验步骤 1.设计语法分析程序的算法。 2.画流程图。 3.编写程序。 4.测试并调试程序。 5写实验报告。五.实验设计思想是否begin?调用scaner

2、调用语句串分析函数是否end?Syn=0&kk=0?调用scaner是是否是否否调用statement函数是否;?调用scaner调用statement函数出错处理是否是出错处理打印分析成功语句串分析示意图递归下降分析程序示意图是否标识符?调用scaner是否:=?调用scaner调用expression函数出错处理否否是是调用term函数是否+, -?调用scaner调用term函数出错处理否是expression表达式分析函数示意图statement语句分析函数示意图六实现代码#include #include#include char str5010;char word610=begin

3、,if,then,while,do,end;char pro80,token10;int syn,num,kk;void scaner();void lrparser();void yuxu();void statement();void expression();void term();void factor();void readfile();void readbroad();void main()char ch;int Tag=1;while(Tag)num = 0; printf(1键盘读取 2文件读取:);scanf(%c, &ch);if(ch = 1)readbroad();if

4、(ch=2)readfile();printf(n是否继续输入1:);scanf(%d, &Tag);getchar();void readfile()/从文件中读取FILE *fp;char ch;int i=0;fp = fopen(date.txt,rt);if(fp = NULL)printf(the memory is not enough);exit(0);while(!feof(fp)memset(pro,NULL,80);num=0;dofscanf(fp,%c,&ch);pronum+ = ch;while(ch!=n) & (!feof(fp);printf(n%d.文件中

5、的符号为:%s,+i, pro);num=0;kk = 0;scaner();lrparser();fclose(fp);void readbroad()/从键盘中读取FILE *fp;char ch;memset(pro, NULL, 80);ch = getchar();printf(input the string:);doch = getchar();pronum+ = ch;while(ch != #);fp = fopen(date.txt,a+);if(fp = NULL)printf(the memory is not enough);exit(0);num = 0;doch

6、= pronum+;fprintf(fp,%c,ch);while(ch!=#);fprintf(fp, n);fclose(fp);num = 0;kk=0;scaner();lrparser();void lrparser()if(syn = 1)scaner();yuxu();if(syn = 6)scaner();if(syn = 0 & (kk = 0)printf(success!);elseprintf(语句串错误!);kk =1;elseif(kk !=1)printf(lack end);kk = 1;elseprintf(lack begin!);return;void y

7、uxu()statement();while(syn = 26)scaner();statement();return;void statement()if(syn = 10)scaner();if(syn = 18)scaner();expression();elseprintf(赋值错误);kk = 1;elseprintf(语句错误!);kk =1;void expression()term();while(syn = 13 | syn = 14)scaner();term();return;void term()factor();while(syn = 15 | syn = 16)sc

8、aner();factor();return;void factor()if(syn = 10 | syn = 11)scaner();else if(syn = 27)scaner();expression();if(syn = 28)scaner();elseprintf(错误); kk=1;elseprintf(表达式错误1);kk = 1;return; void scaner()int i = 0;char ch;for(i = 0; i 10; i+)tokeni = NULL;ch = pronum+;while(ch = )ch = pronum+;i = 0;if( a=ch

9、 & ch=z)while(a=ch & ch=z | 0=ch & ch=9)tokeni+ = ch;ch = pronum+;tokeni+ = 0;num-;syn = 10;for(i = 0; i 10; i+)if(strcmp(token, wordi)= 0)syn = i+1;break; else if(0=ch & ch=9)while(0=ch & ch=9)tokeni+ = ch;ch = pronum+;tokeni = 0;num-;syn= 11; else switch(ch)case )tokeni+ = ch;syn = 21; else if(ch

10、= =) tokeni+ = ch; syn = 22; else syn = 20; num-; syn=20; break;case : i = 0; tokeni+ = ch; ch = pronum+; if(ch = =)tokeni+ = ch;syn= 24; elsenum-;syn=23; break;case : tokeni+ = ch; ch = pronum+; if(ch = =)tokeni+ = ch;syn=18; elsenum-;syn=17; break;case +: tokeni+ = ch; syn=13; break;case ;: tokeni

11、+ = ch; syn=26; break;case -: tokeni+ = ch; syn=14; break;case *: tokeni+ = ch; syn= 15; break;case /: tokeni+ = ch; syn=16; break;case (: tokeni+ = ch; syn=27; break;case ): tokeni+ = ch; syn=28; break;case #: tokeni+ = ch; syn=0; break;default: syn= -1; break;程序运行结果:七.小结八.参考文献编译原理教材后面的程序模板【精品文档】第 9 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com