PL0语言编译器分析实验报告_计算机-C++资料.pdf

上传人:c****2 文档编号:93978921 上传时间:2023-07-20 格式:PDF 页数:9 大小:414.65KB
返回 下载 相关 举报
PL0语言编译器分析实验报告_计算机-C++资料.pdf_第1页
第1页 / 共9页
PL0语言编译器分析实验报告_计算机-C++资料.pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《PL0语言编译器分析实验报告_计算机-C++资料.pdf》由会员分享,可在线阅读,更多相关《PL0语言编译器分析实验报告_计算机-C++资料.pdf(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-.-.可修编.PL/0 语言编译器分析实验报告 一、实验目的 通过阅读与解析一个实际编译器PL/0 语言编译器的源代码,加深对编译阶段包括词法分析、语法分析、语义分析、中间代 码生成等和编译系统软件构造的理解,并到达提高学生学习兴趣的目的。二、实验要求 (1)要求掌握根本的程序设计技巧C 语言和阅读较大规模程序 源代码的能力;(2)理解并掌握编译过程的逻辑阶段及各逻辑阶段的功能;(3)要求能把握整个系统PL/0 语言编译器的体系构造,各功能 模块的功能,各模块之间的接口;(4)要求能总结出实现编译过程各逻辑阶段功能采用的具体算法与技术。三、实验步骤 (1)根据PL/0 语言的语法图,理解PL

2、/0 语言各级语法单位的构造,掌握PL/0语言合法程序的构造;(2)从总体上分析整个系统的体系构造、各功能模块的功能、各模块之间的调用关系、各模块之间的接口;(3)详细分析各子程序和函数的代码构造、程序流程、采用的主要算法及实现的功能;(4)撰写分析报告,主要容包括系统构造框图、模块接口、主要算法、各模块程序流程图等。四、报告容 pl/0 语言是pascal语言的一个子集,我们这里分析的pl/0的编译程序包括了对pl/0语言源程序进展分析处理、编译生成类pcode代码,并在虚拟机上解释运行生成的类pcode代码的功能。pl/0语言编译程序采用以语法分析为核心、一遍扫描的编译方法。词法分析和代码

3、生成作为独立的子程序供语法分析程序调用。语法分析的同时,提供了出错报告和出错恢复的功能。在源程序没有错误编译通过的情况下,调用类pcode-.-.可修编.解释程序解释执行生成的类pcode代码。PL/0 语言文法的 EBNF 表示 EBNF 表示的符号说明。用左右尖括号括起来的中文字表示语法构造成分,或称语法单位,为非终结符。=该符号的左部由右部定义,可读作“定义为。|表示“或,为左部可由多个右部定义。花括号表示其的语法成分可以重复。在不加上下界时可重复 0 到任意次数,有上下界时为可重复次数的限制。PL/0 编译程序过程与函数定义层次构造图 法分析语法分析语义分析中间代码生成等和编译系统软件

4、构造的理解并到达提高学生学习兴趣的目的二实验要求要求掌握根本的程序设计技巧语言和阅读较大规模程序源代码的能力理解并掌握编译过程的逻辑阶段及各逻辑阶段的功逻辑阶段功能采用的具体算法与技术三实验步骤根据语言的语法图理解语言各级语法单位的构造掌握语言合法程序的构造从总体上分析整个系统的体系构造各功能模块的功能各模块之间的调用关系各模块之间的接口详细分析各子程法各模块程序流程图等四报告语言是语言的一个子集我们这里分析的的编译程序包括了对语言源程序进展分析处理编译生成类代码并在虚拟机上解释运行生成的类代码的功能语言编译程序采用以语法分析为核心一遍扫描的编译方法-.-.可修编.PL/0 的解释执行构造 P

5、L/0 编译程序构造 PL/0 语言解释执行程序 PL/0 语言目标程序 输入数据 输出数据 法分析语法分析语义分析中间代码生成等和编译系统软件构造的理解并到达提高学生学习兴趣的目的二实验要求要求掌握根本的程序设计技巧语言和阅读较大规模程序源代码的能力理解并掌握编译过程的逻辑阶段及各逻辑阶段的功逻辑阶段功能采用的具体算法与技术三实验步骤根据语言的语法图理解语言各级语法单位的构造掌握语言合法程序的构造从总体上分析整个系统的体系构造各功能模块的功能各模块之间的调用关系各模块之间的接口详细分析各子程法各模块程序流程图等四报告语言是语言的一个子集我们这里分析的的编译程序包括了对语言源程序进展分析处理编

6、译生成类代码并在虚拟机上解释运行生成的类代码的功能语言编译程序采用以语法分析为核心一遍扫描的编译方法-.-.可修编.编译程序总体流程图 启动置初值调用G E T S Y M 取单词调用B L O C K 过程当前单词是否为源程序结束符.?出错源程序中是否有错误?调用解释过程IN T E R P R E T解释执行目标程序打印错误结束NYYN PL/0 编译程序的语法分析 PL/0 编译程序语法、语义分析是整个编译程序设计与实现的核心局部,要求学员努力学习掌握实现技术和方法。现分别说明语法分析实现的主要思想方法和语义分析的实现。词法分析程序 语法语义分析程代码生成程序 表格管理程序出错处理程序P

7、L/0 源程序 目标程序 法分析语法分析语义分析中间代码生成等和编译系统软件构造的理解并到达提高学生学习兴趣的目的二实验要求要求掌握根本的程序设计技巧语言和阅读较大规模程序源代码的能力理解并掌握编译过程的逻辑阶段及各逻辑阶段的功逻辑阶段功能采用的具体算法与技术三实验步骤根据语言的语法图理解语言各级语法单位的构造掌握语言合法程序的构造从总体上分析整个系统的体系构造各功能模块的功能各模块之间的调用关系各模块之间的接口详细分析各子程法各模块程序流程图等四报告语言是语言的一个子集我们这里分析的的编译程序包括了对语言源程序进展分析处理编译生成类代码并在虚拟机上解释运行生成的类代码的功能语言编译程序采用以

8、语法分析为核心一遍扫描的编译方法-.-.可修编.语法分析的任务是识别由词法分析给出的单词符号序列在构造上是否符合给定的文法规那么。PL/0 语言的文法规那么已在 2.1节中给出。本节将以语法图描述的语法形式为依据,给出语法分析过程的直观思想。PL/0 编译程序的语法分析采用了自顶向下的递归子程序法。可用下面简单的 PL/0 程序为例构造其语法分析树 语法调用关系图 法分析语法分析语义分析中间代码生成等和编译系统软件构造的理解并到达提高学生学习兴趣的目的二实验要求要求掌握根本的程序设计技巧语言和阅读较大规模程序源代码的能力理解并掌握编译过程的逻辑阶段及各逻辑阶段的功逻辑阶段功能采用的具体算法与技

9、术三实验步骤根据语言的语法图理解语言各级语法单位的构造掌握语言合法程序的构造从总体上分析整个系统的体系构造各功能模块的功能各模块之间的调用关系各模块之间的接口详细分析各子程法各模块程序流程图等四报告语言是语言的一个子集我们这里分析的的编译程序包括了对语言源程序进展分析处理编译生成类代码并在虚拟机上解释运行生成的类代码的功能语言编译程序采用以语法分析为核心一遍扫描的编译方法-.-.可修编.PL/0 编译程序语法分析的设计与实现 表达式的递归子程序实现 procedure expr;begin if sym in plus,minus then begin getsym;term;end else

10、 term;while sym in plus,minus do begin getsym;term;end end;因子=标识符|无符号整数|表达式 因子的递归子程序实现 procedure factor;begin if sym ident then begin if sym number then begin if sym=(then begin getsym;expr;if sym=)then getsym else error end else error end else getsym end else getsym end;说明局部的分析与处理 法分析语法分析语义分析中间代码生成

11、等和编译系统软件构造的理解并到达提高学生学习兴趣的目的二实验要求要求掌握根本的程序设计技巧语言和阅读较大规模程序源代码的能力理解并掌握编译过程的逻辑阶段及各逻辑阶段的功逻辑阶段功能采用的具体算法与技术三实验步骤根据语言的语法图理解语言各级语法单位的构造掌握语言合法程序的构造从总体上分析整个系统的体系构造各功能模块的功能各模块之间的调用关系各模块之间的接口详细分析各子程法各模块程序流程图等四报告语言是语言的一个子集我们这里分析的的编译程序包括了对语言源程序进展分析处理编译生成类代码并在虚拟机上解释运行生成的类代码的功能语言编译程序采用以语法分析为核心一遍扫描的编译方法-.-.可修编.对每个过程含

12、主程序说明的对象变量,常量和过程造符号表,登录标识符的属性。标识符的属性:种类,所在层次,值和分配的相对位置。登录信息由 ENTER 过程完成。常量定义语句的处理语法::=const ,;:=:=if sym=constsym then begin getsym;(*获取下一个 token,正常应为用作常量名的标识符*)repeat(*反复进展常量声明*)constdeclaration;(*声明以当前 token 为标识符的常量*)while sym=ma do(*如果遇到了逗号那么反复声明下一常量*)begin getsym;(*获取下一个 token,这里正好应该是标识符*)constd

13、eclaration(*声明以当前 token 为标识符的常量*)end;if sym=semicolon then(*如果常量声明完毕,应遇到分号*)getsym(*获取下一个 token,为下一轮循环做好准备*)else error(5)(*提示 5 号错误*)until sym ident(*如果遇到非标识符,那么常量声明完毕*)end;常量说明处理 procedure constdeclaration;begin if sym=ident then begin getsym;if sym in eql,bees then(*如果是等号或赋值号*)if sym=bees then(*如果

14、是赋值号(常量生明中应该是等号)*)error(1);(*提示 1 号错误*)getsym;(*获取下一个 token,等号或赋值号后应接上数字*)if sym=number then(*如果确实是数字*)begin enter(constant);(*把这个常量登陆到符号表*)getsym(*获取下一个 token,为后面作准备*)end 法分析语法分析语义分析中间代码生成等和编译系统软件构造的理解并到达提高学生学习兴趣的目的二实验要求要求掌握根本的程序设计技巧语言和阅读较大规模程序源代码的能力理解并掌握编译过程的逻辑阶段及各逻辑阶段的功逻辑阶段功能采用的具体算法与技术三实验步骤根据语言的语

15、法图理解语言各级语法单位的构造掌握语言合法程序的构造从总体上分析整个系统的体系构造各功能模块的功能各模块之间的调用关系各模块之间的接口详细分析各子程法各模块程序流程图等四报告语言是语言的一个子集我们这里分析的的编译程序包括了对语言源程序进展分析处理编译生成类代码并在虚拟机上解释运行生成的类代码的功能语言编译程序采用以语法分析为核心一遍扫描的编译方法-.-.可修编.else error(2)(*如果等号后接的不是数字,提示 2 号错误*)else error(3)(*如常量标识符后不是等号或赋值号,提示 3 号错误*)end else error(4)end(*constdeclaration*

16、);变量定义语句的处理语法::=var ,;if sym=varsym then begin getsym;repeat vardeclaration;(*变量说明处理*)while sym=ma do begin getsym;vardeclaration end;if sym=semicolon then getsym else error(5)until symident;end;变量说明处理 procedure ardeclaration;begin if sym=ident then begin enter(variable);getsym end else error(4)end(

17、*vardeclaration*);过程定义语句的处理程序:while sym=procsym do(*循环声明各子过程*)begin getsym;(*获取下一个 token,此处正常应为作为过程名的标识符*)if sym=ident then(*如果 token 确为标识符*)begin 法分析语法分析语义分析中间代码生成等和编译系统软件构造的理解并到达提高学生学习兴趣的目的二实验要求要求掌握根本的程序设计技巧语言和阅读较大规模程序源代码的能力理解并掌握编译过程的逻辑阶段及各逻辑阶段的功逻辑阶段功能采用的具体算法与技术三实验步骤根据语言的语法图理解语言各级语法单位的构造掌握语言合法程序的构

18、造从总体上分析整个系统的体系构造各功能模块的功能各模块之间的调用关系各模块之间的接口详细分析各子程法各模块程序流程图等四报告语言是语言的一个子集我们这里分析的的编译程序包括了对语言源程序进展分析处理编译生成类代码并在虚拟机上解释运行生成的类代码的功能语言编译程序采用以语法分析为核心一遍扫描的编译方法-.-.可修编.enter(procedur);(*把这个过程登录到名字表中*)getsym(*获取下一个 token,正常情况应为分号*)end else error(4);(*否那么提示 4 号错误*)if sym=semicolon then(*如果当前 token 为分号*)getsym(*

19、获取下一个 token,准备进展语法分析的递归调用*)else error(5);(*否那么提示 5 号错误*)法分析语法分析语义分析中间代码生成等和编译系统软件构造的理解并到达提高学生学习兴趣的目的二实验要求要求掌握根本的程序设计技巧语言和阅读较大规模程序源代码的能力理解并掌握编译过程的逻辑阶段及各逻辑阶段的功逻辑阶段功能采用的具体算法与技术三实验步骤根据语言的语法图理解语言各级语法单位的构造掌握语言合法程序的构造从总体上分析整个系统的体系构造各功能模块的功能各模块之间的调用关系各模块之间的接口详细分析各子程法各模块程序流程图等四报告语言是语言的一个子集我们这里分析的的编译程序包括了对语言源程序进展分析处理编译生成类代码并在虚拟机上解释运行生成的类代码的功能语言编译程序采用以语法分析为核心一遍扫描的编译方法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com