- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计说明书
课程名称: 编译原理
实验名称:实现对FOR语句处理的功能
实验性质: 综合性实验
院 (部): 计算机科学与技术学院
班 级:
姓 名:
学 号:
指导教师:
完成日期: 2011/11/03
目录
课程设计任务书 3
结构设计说明 4
一、对pl/0语言的相关描述 4
1 PlO所有子程序 4
2 PL/0语言的语法图 4
3 PL/0语言编译器 5
4 代码执行 6
5 错误诊断处理 8
二、对For语句的相关描述 8
1 增加for语句 8
设计思想 8
设计思路 8
2 扩充代码 9
实验测试程序 11
程序测试结果 11
课程设计实验心得 12
参考文献 12
山东建筑大学计算机科学与技术学院
课程设计任务书
设计题目 对PL/0语言及其编译器进行扩充和修改
——实现对FOR语句进行处理的功能 已知技术参数和设计要求 PL/0程序设计语言是一个较简单的语言,它以赋值语句为基础,构造概念有顺序、条件和重复(循环)三种。PL/0有子程序概念,包括过程定义(可以嵌套)与调用且有局部变量说明。PL/0中唯一的数据类型是整型,可以用来说明该类型的常量和变量。当然PL/0也具有通常的算术运算和关系运算。
通过读懂源程序,全面掌握编译原理的基本实现过程。对现存的PL/0编译程序做修改或扩充。语法参照Pascal或C语言for循环语句中一般为三个表达式,第一个代表初始值,第二个代表范围,第三个代表循环方式 1-4:进行完整的编译程序全过程的理解
5-12:根据源程序,理解整个编译器的编写中涉及到的全局变量及基本函数的意义。
13-20:在读懂全程序的基础上,进行扩充修改,并测试。
21-24:撰写课程设计报告书。 设计考核要求 设计考核方法:
课程设计总成绩=算法实现(30%)+课程设计说明书(50%)+平时考勤(20%)。
设计考核要求:
规范的课程设计说明书
所设计的算法源代码
指导教师(签字): 教研室主任(签字):
结构设计说明:
一、对pl/0语言的相关描述:
1、PlO所有子程序如下:
过程或函数名 简要功能说明 main 初始化编译环境,建立关键字表,调用分程序Block对源文件进行编译,当编译正确时,自动调用解释执行程序,对目标代码进行解释执行。 error 出错处理,打印出错位置和错误性质编号。并在信息栏输出错误信息。 getsym 词法分析,读取一个单词 gen 生成目标代码(类pcode代码),并送入目标程序区。 test 测试当前单词是否是合法 block 分程序分析处理过程。 enter 登录过程说明对象包括变量、常量和过程名的属性信息到符号表。 position 查找标识符在符号表中的位置。 constdeclaration 常量定义处理,收集常量信息并登录到符号表。 vardeclaration 变量定义处理,收集变量信息并登录到符号表。 listcode 列出目标代码清单。 statement 语法分析,语句部分处理。 expression 表达式分析处理。 term 项分析处理过程。 factor 因子分析处理。 condition 条件处理。 interpret 对目标代码进行解析执行。 Base 通过静态链求数据区首地址。 PL/0语言的语法图:
程序
程序体
3.PL/0语言编译器
本书所提供的PL/0语言编译器的基本工作流程如下图所示:
编译器又包括:词法分析,语法分析,语义分析和代码生成,这里不再详述。
代码执行
为了简单起见,我们假设有一个PL/0处理机,它能够解释执行PL/0编译程序所生成的目标代码。这个PL/0处理机有两类存贮、一个指令寄存器和三个地址寄存器组成。程序(目标代码)存贮称为code,由编译程序装入,在目标代码执行过程中保持不变,因此它可被看成是“只读”存贮器。数据存贮S组织成为一个栈,所有的算术运算均对栈顶元和次栈顶元进行(一元运算仅作用于栈顶元),并用结果值代替原来的运算对象。栈顶元的地址(下标)记在栈顶寄存器T中,指令寄存器I包含着当前正在解释执行的指令,程序地址寄存器P指向下一条将取出的指令。
PL/0的每一个过程可能包含着局部变量,因为这些过程可以被递归地调用,故在实际调
您可能关注的文档
最近下载
- 2025年太仓市太訸控股集团有限公司第二批公开招聘19人笔试备考题库及答案解析.docx VIP
- 《食管癌综合治疗新进展》课件.ppt VIP
- 商铺租赁合同电子版下载打印.docx VIP
- 2025年太仓市太訸控股集团有限公司第二批公开招聘19人笔试参考题库附答案解析.docx VIP
- 2025年太仓市太訸控股集团有限公司第二批公开招聘19人备考题库及答案解析.docx VIP
- 《危重患者的抢救》课件.ppt VIP
- 孕产妇心肺复苏要点课件.pptx VIP
- 农村小学中高年级学生阅读兴趣培养策略研究-课题申请评审书.docx VIP
- 工程制图制图基础.ppt VIP
- 简约产品订货合同模板.docx VIP
文档评论(0)