编辑: 人间点评 2016-03-13
编译原理课程设计 课程设计内容扩展PL/0语言的实现(含编译器和解释器) ? 编译器:把源程序翻译成中间语言程序 ? 解释器:中间语言的解释器对PL/0语言进行扩展(该扩展已基本完成)对中间语言进行扩展(由同学自己设计)把PL/0语言的编译器和解释器升级成扩展PL/0语言的编译器和解释器 编译原理课程设计 PL/0语言介绍Pascal语言的一个子集,一个小巧的高级语言只有整数类型程序结构? 有相当完全的可嵌套的分程序(block)结构? 分程序中可以有常量定义、变量声明和无参过程声明,过程体又是分程序语句:赋值语句、条件语句、循环语句、过程调用语句、复合语句和空语句 编译原理课程设计 PL/0语言的扩展增加像C语言那样的形式为/? …… ?/的注释增加带else子句的条件语句和exit语句增加输入输出语句增加带参数的过程增加布尔类型、实数类型、数组类型增加函数类型分离解释器和编译器为两个独立的程序 必须严格按照"课程实践项目"规定的扩展PL/0的语法和语义 编译原理课程设计 PL/0编译器简介一遍扫描的编译器,有两个功能? 把源程序翻译成中间代码? 解释执行中间代码递归下降的预测分析方法,采用紧急方式的错误恢复中间语言是一种栈机器代码,其指令有三个域? 操作码 f ? 层次差 l? 多用途a:地址偏移、指令地址或常数等 编译原理课程设计 运行时存储空间的组织和管理用一维数组s 实现栈式存储分配每个活动记录中有静态链、动态链、返回地址和局部变量把活动记录栈的栈顶作为计算栈 局部数据 b t 静态链 静态链 动态链 动态链 返回地址 返回地址 局部数据 计算栈 栈增长方向 编译原理课程设计 运行时存储空间的组织和管理指令有三个域? 操作码 f ? 层次差 l? 多用途a: 地址偏移、指令地址或常数等向计算栈中压数据指令lit:将常数装入栈顶的指令lod:将变量的值装入栈顶的指令 局部数据 b t 静态链 静态链 动态链 动态链 返回地址 返回地址 局部数据 计算栈 栈增长方向 编译原理课程设计 运行时存储空间的组织和管理指令有三个域? 操作码 f ? 层次差 l? 多用途a: 地址偏移、指令地址或常数等取计算栈中数据进行计算的指令opr:一组算术和关系运算的指令 局部数据 b t 静态链 静态链 动态链 动态链 返回地址 返回地址 局部数据 计算栈 栈增长方向 编译原理课程设计 时间安排4月中旬开始,5月中旬结束5月10日发布一些测试程序5月15日24点以前通过网络提交课程设计,提交方式另行通知提交内容如下,做成一个压缩文件,压缩文件以学号命名,无须分目录? 编译器和解释器的源程序? 编译器和解释器的可执行程序? 介绍自己特色的ppt文件(限5页以内)评测安排在5月21, 22, 28, 29日四天 编译原理课程设计 程序的测试环境测试环境:Windows XP平台不提供任何C或C++的编译工具,没有动态链接库每个同学测10个程序,同组用同样的测试程序 编译原理课程设计 课程设计成绩评定――评分方式和过程 约12个学生一组(5月16日公布分组名单)评委:教师、助教、同组所有同学(大家参与,公开评分)教师主导测试过程、学生自己动手按要求操作,操作过程和结果显示在投影幕布上老师提问,同组同学也可以提问,当众回答问题主要围绕完成的设计和编程,以及测试中暴露出的设计或编程错误 编译原理课程设计 课程设计成绩评定――评分依据编译器和解释器的正确性所设计的中间代码的合理性错误定位与恢复能力编程的规范性操作的熟练程度回答问题时所表现出的对本课程设计所涉及的编译知识的掌握程度对自己设计和编码的编译器和解释器的熟悉程度提问的数量和质量 编译原理课程设计 课程设计成绩评定――成绩确定每个评委给该组同学排名次,同学评委的排名要包括自己(评分表必须署名)由助教根据所有有效排名表,给出最终的排名由老师根据本组的情况,确定本组的最高分和最低分,依据排名,按等间隔确定每个同学的分数被老师、助教和过半数同学认为所提交程序不是自己课程设计成果时,则0分未按时交也是0分成绩评定方法若有考虑不周之处,解释权在老师
下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题