编译原理综实验指导书.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理综实验指导书

编译原理综合实验指导书 序言 《编译原理综合实验》作为《编译原理》课程的延伸,其目的是让同学动手设计和实现一个简单语言的编译器和解释器。通过上机实践,来设计这个相对完整的编译器设计,一方面可以使学生增加对编译程序的整体认识和了解——巩固《编译原理》课程所学知识,另一方面,通过上机练习,学生也可以学到很多程序调试技巧和设计大型程序一般的原则,如模块接口的协调,数据结构的合理选择等等。 一、上机实践要求 综合实验的成绩占总成绩的30%; 本次实验的所有代码都需要自行编码实现,不能2016-6-20; 本次综合实验须经授课教师当面验收考核后才予评分,否则以缺交处理; 实验结束后提交:源代码和实验报告。 实验报告的格式参见“实验报告模板”。 注:实验报告中不要贴代码。 二、实验内容: (一) 词法分析程序的设计与实现:20分 要求:设计一个词法分析程序,每调用一次就从源程序文件中顺序识别出一个单词符号。 单词种类与识别规则 标识符:首字符为字母或’#’,其后由字母、数字或’#’组成; 整 数:由一个或多个数字组成、带正负号的数字串,首位数字不能为0; 小 数:[+|-] 正整数1 ·正整数2 [+|-]:表示可选的+或- 注意:正整数1不能为空,正整数2可以为空,例如:23. 字符串:由一对双引号括起来的文本 注意:字符串不需要支持多行,即假定任意一串字符串都不能超过一行; 字符串不需要支持转义符。 保留字:class、if、then、else、call、while、do、string、integer、float、 单目运算符:+ - * / = 双目运算符:= = == ⑧ 布尔运算符: || ⑨ 界符: ( ) { } , ;程序— [类] 类— class id { [属性|方法] } 属性— 变量定义语句 方法— 数据类型 id ( 参数列表 ) 语句块 参数列表— 数据类型 id [,数据类型 id] | ε 语句块— { [语句] } 语句— 分支语句 | 赋值语句| 循环语句| 函数调用语句 | 变量定义语句 | 语句块 |ε 变量定义语句— 数据类型 id [ , id ] ; 数据类型— integer | float | string | class id 赋值语句— id= 表达式函数调用语句— call id ( 传递参数 ) ; 传递参数— id [ , id ] | ε 分支语句— if 布尔表达式语句if 布尔表达式语句 else 语句循环语句— while布尔表达式语句表达式— 项 +|- 项项— 因子*|/ 因子 ]因子— id | con || ( 表达式) 14. 布尔表达式— 关系表达式 | || 布尔表达式关系表达式— 表达式 关系 表达式关系— | = | | = || 说明: (1) id是标识符;con是整数常量;deci是小数常量; (2) 用左右尖括号括起来的是非终结符; (3) 红色方括号[ ]相当于正则表达式中的()*,表示其中内容重复0次或N多次; (4) 文法中用蓝色标注的都是终结符(即单词); (5) 文法中与||不存在优先级,两者优先级别一样,按左结合处理。 1、 基原理: 递归下降法是语法分析中最易懂的一种方法。它的主要原理是,对每个非终极符按其产生式结构构造相应语法分析子程序,其中终极符产生匹配命令,而非终极符则产生过程调用命令。因为文法递归相应子程序也递归,所以称这种方法为递归子程序下降法或递归下降法。其中子程序的结构与产生式结构几乎是一致的。 注意:每次进入子程序之前都预先读入下一个要分析的单词(而且是由调用程序完成的,切忌在进入子程序后才读入下一个单词,虽然这样语法效果是相当的,但运行时会出错的)。 因为使用了递归下降方法,所以程序结构和层次清晰明了,易于手工实现,且时空效率较高。实际的语法分析工作,从调用总程序的分析子程序开始,根据产生式进行递归调用各个分析子程序。 (三) 类型检查程序的设计与实现:20分 要求: (1)检查变量的定义和使用是否正确:变量是否重复定义、变量是否未定义就使用; (2)过程的名称是否重复定义; (3)过程的实参与形

文档评论(0)

135****6041 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档