- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
山东建筑大学计算机科学与技术学院
课程设计说明书
题
目:
对 PL/0 语言及其编译器进行扩充和修改
——实现增加数据类型的功能
课
程:
编译原理课程设计
院
(部):
计算机科学与技术学院
专
业:
计算机科学与技术
班
级:
计科
学生姓名:
学
号:
指导教师:
完成日期:
2014年7月8日
山东建筑大学计算机学院课程设计说明书
目 录
课程设计任务书 II
对 PL/0 语言及其编译器进行扩充和修改——实现增加数据类型的功能 3
一、问题描述 3
二、基本要求 4
三、算法思想 4
四、数据结构 4
五、模块划分 4
六、源程序 5
七、测试数据 15
八、测试情况 17
结 论 18
参考文献 19
课程设计指导教师评语 20
I
山东建筑大学计算机科学与技术学院
课程设计任务书
设计题目
已知技 术参
数和设 计要
求
设 计 内
容 与 步
骤
设计工 作计
划与进 度安
排
设计考核要
求
对 PL/0 语言及其编译器进行扩充和修改——实现增加数据类型的功能
PL/0 程序设计语言是一个较简单的语言,它以赋值语句为基础,构造
概念有顺序、条件和重复(循环)三种。 PL/0 有子程序概念,包括过程定
义(可以嵌套)与调用且有局部变量说明。 PL/0 中唯一的数据类型是整型,
可以用来说明该类型的常量和变量。当然 PL/0 也具有通常的算术运算和关
系运算。
通过读懂源程序,全面掌握编译原理的基本实现过程。对现存的 PL/0
编译程序做一些修改或扩充。
通过读懂源程序,全面掌握编译原理的基本实现过程。
扩充 PL/0 增加识别字符型数据类型和实型数据类型的功能增加的数据类型的定义如下:
D →|integer id |char id |double id
1-4:进行完整的编译程序全过程的理解
5-12:根据源程序,理解整个编译器的编写中涉及到的全局变量及基本函数的意义。
13-20:在读懂全程序的基础上,进行扩充功能,并测试。
21-24:撰写课程设计报告书。
设计考核方法:
课程设计总成绩 =算法实现( 30%) +课程设计说明书( 50%) +平时考勤( 20%)。
设计考核要求:
规范的课程设计说明书
所设计的算法源代码
指导教师(签字) : 教研室主任(签字) :
II
山东建筑大学计算机学院课程设计说明书
对 PL/0 语言及其编译器进行扩充和修改—— 实现增加数据类
型的功能
一、问题描述
PL/0 程序设计语言是一个较简单的语言,它以赋值语句为基础,构造概念有顺序、条
件和重复(循环)三种。 PL/0 有子程序概念,包括过程定义(可以嵌套)与调用且有局部
变量说明。 PL/0 中唯一的数据类型是整型,可以用来说明该类型的常量和变量。当然
PL/0
也具有通常的算术运算和关系运算。
PL/0 语言的 BNF 文法如下所示:
程序
::= 程序体 .
程序体
::= [ 常量说明部分 ][ 变量说明部分 ][ 过程说明部分 ] 语句
常量说明部分
::= CONST 常量定义 {, 常量定义 };
常量定义
::= 标识符 = 无符号整数
无符号整数
::= 数字 { 数字 }
变量说明部分
::= V AR 标识符 {, 标识符 };
标识符
::= 字母 { 字母 |数字 }
过程说明部分
::= 过程首部 程序体 {; 过程说明部分 };
过程首部
::= PROCEDURE 标识符 ;
语句
::= 赋值语句 |条件语句 | 当型循环语句 | 过程调用语句 |复合
语句 |空
赋值语句
::= 标识符 := 表达式
复合语句
::= BEGIN 语句 {; 语句 }END
条件
::= 表达式 关系运算符 表达式 |ODD 表达式
表达式
::= [+|-] 项 { 加法运算符 项 }
项
::= 因子 { 乘法运算符 因子 }
因子
::= 标识符 |无符号整数 |(表达式 )
加法运算符
::= +|-
乘法运算符
::= *|/
关系运算符
::= =|#||=||=
条件语句
::= IF 条件 THEN 语句
过程调用语句
::= CALL
标识符
当型循环语句
::= WHILE 条件 DO 语句
字母
::= a|b|...|X|Y|Z
数字
::= 0|1|2|...|8|9
对现存的 PL/0 编译程序做如下修改或扩充。
( 1) 扩充识别注释功能:
注释由 (* 和 *) 包含,不允许嵌套。
( 2)识别对 else 子句进行处理的功能
条件语句 ::= IF 条件 THEN 语句 [ELSE 语句 ]
3
山东建筑大学计算机学院课程设计说明书
文档评论(0)