编译原理课程设计报告--词法分析程序.docVIP

编译原理课程设计报告--词法分析程序.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
仲恺农业工程学院 编译原理课程设计 课程设计题目:词法分析程序 姓 名 院 (系) 计算机科学与工程学院 专业年级 计算机科学与技术075班 学 号 200710214513 指导教师 日 期 2009年12月21日--2009年12月25日 目 录 1、需求分析 1 2、概要设计 1 2.1总体设计: 1 2.2模块设计: 1 2.3模块说明: 1 2.4功能设计: 2 2.5界面设计 2 3、 详细设计 2 3.1词法分析程序:完成初始化 2 3.2词法分析初始化程序 4 3.3识别保留字和标识符 4 3.4识别整数和实数 6 3.5处理除号和注释 8 3.6识别字符 9 3.7识别其他单词 9 3.8输出识别出的单词 10 3.9出错处理 12 3.10查填符号表 12 3.11词法分析流程图 14 4、 测试分析 14 4.1被测试的程序为正确的源程序例1: 14 4.2被测试的程序为错误的源程序例2: 15 4.3被测试的程序为错误的源程序例3: 16 4.4被测试的程序为错误的源程序例4: 16 5、用户手册 17 6、课程总结 18 7、参考文献 18 词法分析程序 1、需求分析 该程序从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号的机内表示。将词法分析程序作为单独的一遍,组织源程序的输入。拼出单词并转换成机内表示形式,形成token文件(单词序列)、Symble文件(符号表文件)。删除注释、空格和无用符号(回车换行符等)。发现并定位词法错误从而列表打印错误信息。 2、概要设计 2.1总体设计: 程序是在VC++环境下开发的,有相关的操作说明,还有操作简单的特点。程序的设计思想是基于编译原理的词法分析思想。 2.2模块设计: 模块结构图 图 2-1 程序结构图 2.3模块说明: 本程序分为三个模块: (1)初始化模块:完成初始化(准备读写文件),完成保留字编码表初始化。 (2)识别处理模块:对保留字和标识符、整数和实数、除号和注释、字符、其他单词的识别。 (3)返回处理结果模块:出错处理、单词在符号表中则返回0,否则返回1。 2.4功能设计: 能对源程序进行分析;程序运行开始,提示要求输入要被扫描的源程序的文件名,例如source1.txt,source2.txt等。 能检查并处理某些词法错误。 应给出的错误信息包括:总的出错个数、每个错误的编号、错误所在的行号及简要错误说明。至少处理以下三种词法错误,其他错误暂不考虑,即认为不会出现:非法字符。处理方式是删去该字符(即不写入token文件)。不正确的单词,包括以下几种情况数字开头的数字、字母串,如4f3。实数中出现两个小数点,如3.14.15。实数的小数部分出现字母,如5.26B78。处理方法:截去后面出错部分。 2.5界面设计 系统主界面如下图 图2-2 主界面图 详细设计 3.1词法分析程序:完成初始化,并循环调用子模块完成单词识别。 void Scanner() { int i=0; error_count=0; ScannerInit(); printf( ****************************************\n); printf( *词法分析器\n); printf( ****************************************\n); printf(输入源文件名:); for(;;) { scanf(%c,filename[i]); //读入源程序文件名 if(filename[i]==10) break; i++; } filename[i]=\0; if((SourceFin=fopen(filename,rt))==NULL) { printf(无法打开文件 %s.\n,filename); exit(1); } if((TokenFout=fopen(token.txt,wt+))==NULL) //打开单词表文件 { printf(无法打开文件 token.txt.\n); exit(1); } if((SymbleFout=fopen(symble.txt,wt+))==NULL) //打开符号表文件 { printf(无法打开文件 symble.txt.\n); exit(1); } ch=fgetc(SourceFin); /*读取第一个字符*/ while(ch!=EOF) /*循环处理字符串*/ {

文档评论(0)

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

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

1亿VIP精品文档

相关文档