课程设计词法分析器.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
 课程设计词法分析器

衡阳师范学院 《编译原理》课程设计 题 目: 词法分析器 班 级: 计算机科学系0901班 学 号0919010909190130 作者姓名:侯阳琳 李彩凤 芦光霞 张进 指导教师: 符军 2012 年 6 月 08 日 目录 1.需求分析 1 1.1问题描述 1 1.2基本要求 1 2.概要设计 1 2.1待分析的简单语言词法 1 2.2主要函数 2 2.2流程图: 3 3.详细设计 4 4.调试与分析 8 4.1解析源文件 8 4.2调试与分析 9 4.3运行结果 10 5.用户手册 11 5.1运行环境 11 5.2执行文件 11 6.参考文献 12 7.心得体会 12 8.小组成员任务分配及工作进度安排 12 1.需求分析 1.1问题描述 本次课程设计旨在是设计并实现一个具体的词法分析程序,加深对词法分析的原理的理解。该词法分析程序能输入源程序并输出单词符号。在扫描源程序字符串时,一旦识别出关键字、分隔符、标识符、无符号常数中之一,即以单词形式(各类单词均采用相同的结构,即二元式编码形式)输出。每次调用词法分析程序,它均能自动继续扫描下去,形成下一个单词,直至整个源程序全部扫描完毕,并形成相应的单词串形式的源程序。要求对给定的程序通过词法分析器够识别一个个单词符号,并以二元式(单词,单词符号)显示除无用的空白字符、回车符、及其它非实质性符号(1)关键字main,void,int,char,printf,scanf,else,if,return (2)运算符:+,-,*,/,= (3)界符:{,},[,],;,,,.,(,),: (4)其他标记 如字符串,表示以字母开头的标识符。 (5)空格、回车、换行符跳过。 3.详细设计 #includestring.h #includestdio.h #includestdlib.h #includectype.h char //定义关键字 *Key[10]={main,void,int,char,printf,scanf,else,if,return}; char Word[20],ch; // 存储识别出的单词流 int IsAlpha(char c) //判断是否为字母 { if(((c=z)(c=a))||((c=Z)(c=A))) return 1; else return 0; } int IsNum(char c) //判断是否为数字 { if(c=0c=9) return 1; else return 0; } int IsKey(char *Word) //识别关键字函数 { int m,i; for(i=0;i9;i++) { if((m=strcmp(Word,Key[i]))==0) { if(i==0) return 2; return 1; } } return 0; } void scanner(FILE *fp) //扫描函数 { char Word[20]={\0}; char ch; int i,c; ch=fgetc(fp); //获取字符,指针fp并自动指向下一个字符 if(IsAlpha(ch)) //判断该字符是否是字母 { Word[0]=ch; ch=fgetc(fp); i=1; while(IsNum(ch)||IsAlpha(ch)) //判断该字符是否是字母或数字 { Word[i]=ch; i++; ch=fgetc(fp); } Word[i]=\0; //\0 代表字符结束(空格) fseek(fp,-1,1); //回退一个字符 c=IsKey(Word); //判断是否是关键字 if(c==0) printf(%s\t$普通标识符\n\n,Word);//不是关键字 else if(c==2) printf(%s\t$主函数\n\n,Word); else printf(

文档评论(0)

kji818 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档