欢迎来到天天文库
浏览记录
ID:38636915
大小:222.00 KB
页数:9页
时间:2019-06-16
《编译技术课程设计B实验指导书》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《编译技术》实验指导书实验一词法分析器设计实验名称:词法分析器设计实验类型:设计性实验学 时:1.5天适用对象:计算机科学与技术专业一、实验目的本实验是为计算机科学与技术专业的学生在学习《编译技术》课程后,为加深对课堂教学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译程序设计的原理和技术设计出词法分析器,了解扫描器的组成结构,不同种类单词的识别方法。能使得学生在设计和调试编译程序的能力方面有所提高,为将来设计、分析编译程序打下良好的基础。二、实验要求设计一个扫描器,该扫描器是一个子程
2、序,其输入是源程序字符串,每调用一次识别并输出一个单词符号。为了避免超前搜索,提高运行效率,简化扫描器的设计,假设该程序设计语言中,基本字(也称关键词)不能作一般标识符用,如果基本字、标识符和常数之间没有确定的运算符或界符作间隔,则用空白作间隔。单词符号及其内部表示如表2-1所示,单词符号中标识符由一个字母后跟多个字母、数字组成,常数由多个十进制数字组成。单词符号的内部表示,即单词的输出形式为二元式:(种别编码,单词的属性值)。表2-1 单词符号及其内部表示单词符号种别编码单词的属性值BEGINIFTHENELSEE
3、ND标识符123456—————在名字表中的地址整型常数+***()789101112十进制整数—————三、实验原理根据设计扫描器的一般设计方法:对给出的单词语法结构,由单词的语法规则出发,画出识别单词的状态转换图,然后再用程序实现的扫描器设计方法。用程序实现识别单词符号的状态转换图就能得到所要求的扫描器,其方法是对应每一个状态结点设计一个程序段,完成在读进可能输入的符号后该状态下所做的工作,再设计一个控制程序,通过判别当前状态和输入字符确定执行哪个状态对应的程序段。由于设计的扫描器是一个子程序,调试时需设计一个主
4、程序(代表语法分析器)调用它,扫描器将来在语法分析器、语义分析器设计中还要被使用。在程序设计中需要解决以下几个问题:1.源程序字符串的输入输入源程序字符串可以用键盘以字符方式先读入到一个输入缓冲区(字符数组),这样也便于字符回退,再由扫描器一个个读入。也可以直接从键盘以字符方式读入,这时应保存当前输入字符,若它是多读进的字符,则作为下一个单词的第一个字符使用。2.标识符和常数的属性值标识符和常数的属性值(自身值)是该单词在名字表或常数表中登记项的相对地址,当识别出一个标识符或常数时,要查名字表或常数表,若表中有其登记
5、项,则把得到的登记项地址作为其属性值;若表中没有其登记项,则建立一个新登记项,该登记项地址作为其属性值。为了在调试时便于验证输出单词的正确性,也可以输出标识符的字符串编码或常数的十进制表示,即表示为:(6,标识符的字符串)或(7,常数的十进制表示)。四、实验所需仪器、设备、材料PC微机、Windows操作系统、C++或java语言。五、实验预习要求、实验条件、方法及步骤为了充分利用上机时间,在进行编译技术上机实验前应做好各种准备工作,具体应包括:(1)复习与上机题目有关的知识,熟悉有关定义、概念和实现算法。(2)设计
6、出程序流程框图和数据结构,编写出完整的源程序,进行静态检查。(3)为所编写的程序构思一个运行、调试环境,例如,以什么方式提供输入数据、显示输出数据,如何调用(或启动)编写的程序。制定出程序调试计划和典型输入代码数据。六、思考题(1)为什么将词法分析器设计为一个子程序?(2)状态转换图与程序框图有什么区别?七、参考书(1)《程序设计语言编译原理》(2)《计算机综合实践指导》实验二算符优先分析程序设计实验名称:算符优先分析程序设计实验类型:设计性实验学 时:1.5天适用对象:计算机科学与技术专业一、实验目的本实验是为计
7、算机科学与技术专业的学生在学习《编译技术》课程后,为加深对课堂教学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译程序设计的原理和技术,设计、编写和调试算符优先分析程序,了解算符优先分析程序的组成结构,掌握实现通用算符优先分析算法的方法。能使得学生在设计和调试编译程序的能力方面有所提高。为将来设计、分析编译程序打下良好的基础。二、实验要求算符优先分析属于自下而上的分析方法,该语法分析程序的输入是终结符号串(即单词符号串,以一个“”结尾),如果输入串是句子则输出“YES”,否则输出“NO”
8、和错误信息。算符优先分析过程与非终结符号无关,当由文法产生了优先关系之后文法也就失去了作用,本题目给出文法的目的是为了便于对语法分析结果进行验证。(1)文法 设算符优先文法为:说明:i为整型常数或者为标识符表示整型变量;使用中↑用**表示。(2)优先关系表 设优先关系表如表2-3所示。表2-3 优先关系表+*↑i()#+*↑i()# 三、实验
此文档下载收益归作者所有