- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译课设报告--pl0编译器的中间代码生成_2精品
课程设计报告
( — 年度第一学期)
名 称: 编译技术课程设计
题 目: PL/0语言编译器的中间代码生成
院 系:
班 级:
学 号:
学生姓名:
指导教师:
设计周数: 一周
成 绩:
日期: 年 月 日
1 课程设计的目的和要求
1.1 课程设计的目的
本次设计的时间为1周,目的是通过使用高级语言实现部分算法加强对编译技术和理论的理解。设计的题目要求具有一定的规模,应涵盖本课程内容和实际应用相关的主要技术,同时使大家将理论与实际应用结合起来,受到软件设计等开发过程的全面训练,从而提高软件开发的能力。
1.2 课程设计的要求
1、要求用递归子程序法/或预测分析法实现对表达式、各种说明语句、控制语句进行语法分析。
2、若语法正确,则用语法制导翻译法进行语义翻译:对说明语句,要求将说明的各符号记录到相应符号表中;对可执行语句,应产生出四元式中间代码并填写到三地址码表中;
3、若语法错误,要求指出出错性质和出错位置(行号)。出错处理应设计成一个出错处理子程序。
2 系统描述
PL/0的编译程序和目标程序的解释执行程序都是用JAVA语言书写的,因此PL/0语言可在配备JAVA语言的任何机器上实现。本
该程序的输入是打开test文件,通过文件输入流读入,输出有生成的中间代码、符号表内容、错误分析三部分内容,分别用java界面控件显示出来。
2.1 PL/0语言的描述
PL/0语言的编译程序是一个编译解释执行系统。PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关。
其编译过程采用一趟扫描方式,以语法分析类为核心,词法分析和代码生成类都作为一个独立的类,当语法分析需要读单词时就调用词法分析程序,而当语法分析正确需要生成相应的目标代码时,则调用代码生成程序。
用表格管理程序建立变量、常量和过程表示符的说明与引用之间的信息联系。
用出错处理程序对词法和语法分析遇到的错误给出在源程序中出错的位置和错位性质。
当源程序编译正确时,PL/0编译程序自动调用解释执行程序,对目标代码进行解释执行,并按用户程序的要求输入数据和输出运行结果。
2.2 PL/0文法的描述
在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法。文法的描述多用BNF(巴克斯范式),而另一个重要的概念:正则表达式,也是文法的另一种形式。
PL/0文法的EBNF表示:
程序::= 分程序.
分程序::= [常量说明部分][变量说明部分][过程说明部分]语句
常量说明部分::= const常量定义{,常量定义};
常量定义::= 标识符=无符号整数
无符号整数::= 数字{数字}
标识符::= 字母{字母|数字}
变量说明部分::= var标识符{, 标识符};
过程说明部分::= 过程首部分程序{;过程说明部分}
过程首部::= procedure标识符;
语句 ::= 赋值语句|条件语句|当循环语句|过程调用语句
|复合语句|读语句|写语句|空
赋值语句::= 标识符 := 表达式
表达式 ::= [+|-]项{加法运算符项}
项::= 因子{乘法运算符因子}
因子::= 标识符|无符号整数| ‘ ( ’ 表达式 ‘ ) ’
乘法运算符::= *|/
条件::= 表达式关系运算符表达式|odd表达式
关系运算符::= =|||=||=
条件语句::= if条件then语句
当循环语句::= while条件do语句
过程调用语句::= call标识符
复合语句::= begin语句{;语句}end
读语句::= read ‘ ( ’标识符{, 标识符} ‘ ) ’
写语句:= write ‘ ( ’表达式{, 表达式} ‘ ) ’
数字::= 0|1|2|3…...8|9
2.3 PL/0语法描述图
图2-3-1 程序语法描述图
图2-3-2 分程序语法描述图
图2-3-3 语句语法描述
图2-3-4 条件语句描述图
图2-3-5 表达式语法描述
图2-3-6 项语法描述
图2-3-7 因子语法描述
3 概要设计
3.1 概要设计(体现系统的设计思路和主要功能)
该编
文档评论(0)