编译原理词法分析程序_第1页
编译原理词法分析程序_第2页
编译原理词法分析程序_第3页
编译原理词法分析程序_第4页
编译原理词法分析程序_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编译原理课程设计课程设计题目: 词法分析器 作者所在学院: 作者所在专业: 作者所在班级: 作 者 学 号: 作 者 姓 名 : 指导教师姓名: 完 成 时 间 : 2009 年 6 月 18 日1.课程设计任务书课题名称 编译原理课程设计 完成时间 2010.7.14指导教师 杨焱 职称 讲师 学生姓名 李旭昆 班级 207721总体设计要求总体设计要求:每个学生按照课程设计要求,在规定的时间内独立完成。题目:编译程序构造涉及内容:编译器的结构,词法分析、语法分析工作内容及时间进度安排第一天:设计动员,布置课程设计任务,查阅资料,制定方案,进行程序方案设计。第一天:编写和调试程序第三天:编写和调试程序,第四天:编写和调试程序,整理,提交调研报告,撰写设计报告。第五天:验收,提交设计报告,评定成绩。课程设计成果1、调研报告一份,课程设计报告书一份2、源程序清单一份3、成果使用说明书一份2.调试 PL/0 编译程序习题第七题正确的程序为: var a,b,c; begin read(a,b); c:=100; if a0 then begin b:=b+1; write(b) end; write(a,b,c); end. 第八题(1) 扩充条件语句的语法图为: EBNF 的语法描述为:条件语句 if条件then 语句 else语句 (2) 扩充 repeat 语句的语法图为: resent 语句 Until 条件1EBNF 的语法描述为:repeat 循环语句 repeat语句 ;语句until 条件3.课程设计目的:结合课堂上学习的理论知识,通过 C+实现词法分析器,更加深入的掌握词法分析;同时也可以更加了解词法分析的原理。4.课程设计内容:词法分析器If 条件 then 语句 else语句模块划分:字母处理程序、数字处理程序、其他处理程序、主程序模块调用关系图:主程序字母处理程序 数字处理程序 其他处理程序模块流程图:否是 判断文件是否为空初始化设置开始结束读取文件字符判断字符类型输出:非法字符字符处理程序输出相应字符是否有结束标志结束西南交通大学本科毕业设计(论文) 第 6 页5.程序源代码:#include #include #include #include #include / #define NULL 0FILE *fp;char ch;char *keyword34=“auto“,“break“,“case“,“char“,“const“,“continue“,“default“,“do“,“double“,“else“,“enum“,“extern“,“float“,“for“,“goto“,“if“,“int“,“long“,“register“, “return“,“short“,“signed“,“sizeof“,“static“,“struct“,“switch“,“typedef“,“printf“,“union“,“unsigned“,“void“,“volatile“,“while“,“main“;char *operatornum6=“+“,“-“,“*“,“/“,“+“,“-“;char *comparison8=“,“=“,“,“=“,“!=“;char *interpunction8=“,“,“;“,“:=“,“.“,“(“,“)“,“,“;char *biaoshifu6=“%“,“$“,“,“/特殊标识符char *zhushifu3=“/“,“/*“,“*/“;/注释符char *luoji3=“/逻辑运算符/bool search(char searchstr,int wordtype)int i;switch (wordtype)case 1:for(i=0;in“,letter); 西南交通大学本科毕业设计(论文) 第 8 页elseprintf(“n“,letter);return(ch);/char numberprocess(char ch)/数字处理程序int i=-1;char num20;while (isdigit(ch)!=0)num+i=ch;ch=fgetc(fp);if(isalpha(ch)!=0)while(isspace(ch)=0)num+i=ch;ch=fgetc(fp);numi+1=0;printf(“错误!非法标识符:%sn“,num);goto u;numi+1=0;printf(“n“,num);u: return(ch);/char otherprocess(char ch)int i=-1;char other20;if (isspace(ch)!=0)ch=fgetc(fp);goto u;西南交通大学本科毕业设计(论文) 第 9 页while (isspace(ch)=0)ch=fgetc(fp);otheri+1=0;if (search(other,2)printf(“n“,other);else if (search(other,3)printf(“n“,other);elseif (search(other,4)printf(“n“,other);elseif (search(other,5)printf(“n“,other);elseif (search(other,6)printf(“n“,other);elseif (search(other,7)printf(“n“,other);else printf(“错误!非法字符:%sn“,other);u: return (ch);/void main ()char str,c;printf(“*词法分析器*n“);if (fp=fopen(“源程序.txt“,“r“)=NULL)printf(“源程序无法打开!n“);elsestr =fgetc(fp);while (str!=EOF) /文件结束标志if (isalpha(str)!=0)str=letterprocess(str);else西南交通大学本科毕业设计(论文) 第 10 页if (isdigit(str)!=0)str=numberprocess(str);elsestr=otherprocess(str);printf(“词法分析结束,谢谢使用!n“);printf(“点任意键退出!n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论