预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共93页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

北京邮电大学课程设计报告课程设计Pascal子集编译程学院计算机指导教师杨正球名称序的设计与实现班级班内序号学号学生姓名成绩0740921071222王才丰0740922071223李文星0740923071224李金雨0740924071225刘国莅0740925071226刘光辰教学目的:学习编译程序设计原理与技术,除了学好教材各章节介绍的内容之外,还要完成相应的课实验,以加深理解、进而掌握编译程序的设计原理与实现技术。程实验方法:各个部分均手工实现,具体算法下面介绍,不使用工具。设基本内容:按照Sub_P的语法、并参考Pascal语言的语义,设计并实现Pascal子集语言的编译程序,计给出各阶段的设计资料和实现成果。内实验分工:王才丰:组长(统筹安排),词法分析,符号表,文档书写及最终整理;容李文星:语法分析;李金雨:中间代码生成;刘国莅:语义分析及符号表的类型计算;刘光辰:测试、文档书写。学生课程设计报告(附页)遵照实践教学大纲并根据以下四方面综合评定成绩:1、课程设计目的任务明确,选题符合教学要求,份量及难易程度2、团队分工是否恰当与合理3、综合运用所学知识,提高分析问题、解决问题及实践动手能力的效果4、是否认真、独立完成属于自己的课程设计内容,课程设计报告是否思路清晰、文字通课顺、书写规范程评语:设计成绩评定成绩:指导教师签名:年月日注:评语要体现每个学生的工作情况,可以加页。1.设计的题目、内容和要求(文档作者:王才丰)1.1题目Pascal子集编译程序的设计与实现。1.2内容按照Sub_P的语法、并参考Pascal语言的语义,设计并实现Pascal子集语言的编译程序,给出各阶段的设计资料和实现成果。其中词法分析器能识别给定程序的标识符、数字、关键字和各种运算符,作为语法分析器调用子程序,给语法返回的是一个记号流数组,并建立符号表,供语义分析查找、操作;语法分析器通过调用词法分析器,得到记号流数组,并根据Pascal子集的文法建立分析表,通过返回信息查找分析表,建立一个自顶向下的分析树;语义分析利用编写好的翻译方案生成的预测翻译器,结合语法生成的分析树,确立程序执行过程,最终计算出结果。中间代码部分将语法树转换成中间代码。1.3要求总体要求⑴实现编译程序⑵给出各阶段的设计资料和实现成果词法具体要求能够实现对注释、间隔符号的识别能够进行单独的测试,输入源程序文件,能够将识别的终结符号放到一个文件中打印出来词法分析完成,可以生成符号表,在符号表中需指明每个符号在源程序中出现的行号和列号。在文档中需要标明那个api是词法和语法之间的接口词汇的内部编码行计数将词法分析器作为语法分析器调用的函数词法分析器返回词法的类别编码和属性值语法具体要求方法在文档中明确描述采用何种语法分析方法可以用手工的方法。也可以用YACC方法,但是不建议大家采用。对于采用LL方法要求:有求first、follow集的函数对于每个非终结符有相应的函数相对应有明确的数据结构表示分析表对于LR分析方法说明采用LR分析表的类型;有求first和follow集的函数有明确的数据结构表示分析表有明确的数据结构表示分析栈能够以直观的方式输出分析树改变源程序,分析树将发生变化语义部分和中间代码具体要求(1)用三地址代码或四元式作为中间表示在写程序之前,先设计语义动作,写出翻译模式需要进行类型检查不包含嵌套过程能够进行类型转化能够说明每个语法符号的属性,在文档中将文法符号的属性做成一个表格能够实现函数调用的参数传递机制能够在文档中描述采用何种参数传递机制能够在文档中描述参数传递的语法制导定义语义部分和中间代码具体要求(2)在文档中列出中间代码的种类(最好采用书本上的中间代码)在文档中描述从语法树到中间代码生成的语法制导定义中间代码需要能够覆盖下列功能赋值数组指针函数目标代码部分具体要求如果不采用工具实现,本部分不实现也可以如果采用工具,要求能够执行所生成的目标代码部分能够在文档中对每个中间代码到目标代码的对应关系进行说明说明寄存器分配的策略2.总体设计说明(文档作者:王才丰)2.1需求分析此次课程要实现pascal子集的编译程序,包括词法分析,语法分析,语义分析,中间代码生成,目标代码生成等。课程设计已知Pascal子集的文法、关键字、运算符等。要求给出一个能够实现pascal子集的编译程序,通过读入分析,能编译报错,并生成中间代码。其中错误包括:不可识别标示符,程序定义不符合文法标准,标示符类型定义有误或运算类