欢迎来到天天文库
浏览记录
ID:45798926
大小:209.07 KB
页数:14页
时间:2019-11-17
《学生用编译原理实验指导书》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一无符号数的有穷口动机的实现(一)实验冃的无符号数的冇穷自动机的实现目的是使学生掌握文法的形式描述,穷白动机的概念。将文法转换成有穷占动机的方法,理解出错处理程序思想,如何用状态矩阵实现一个穷白动机的机内表示。(二)实验內容1.无符号数的BNF描述(0)〈无符号数〉Td<余附无符号数>丨.<十进制数〉
2、e〈指数部分〉(1)〈余留无符号数〉Td<余留无符号数>丨.〈十进制数>
3、e<指数部分>
4、£(2)〈十进制小数〉9d<余留十进制小数〉(3)〈余留十进制小数〉e〈指数部分>丨d〈余留十进制小数〉丨e(4)〈指数部分〉9d〈余留整指数>
5、+〈整指数>丨-〈整指数〉(5)〈整指数
6、〉弓d〈余留整指数〉(6)〈余留整指数〉弓d<余留整指数>丨£2.将G[〈无符号数>]文法转换成有穷自动机。3.构造状态矩阵;将有穷自动机的状SIS2……Sn及输入的字ala2……am构成一个n*m的矩阵。4.用状态矩阵设计出一个词法分析程序。5.扌「I描无符号数,根据文法给出无符号数出错的位置。(三)实验要求1•学生课前耍认真阅读实验指导,理解实验内容与相关理论知识的关系,并完成预习报告2.川C语言或其它高级语言编写程序3.写出实验报告实验二语法制导把表达式翻译成逆波兰式(一)实验目的进一步掌握语法制导翻译的概念,理解中间语言,设计出错处理程序方法,掌握把表达式翻译成中间语言
7、的算法。(二)实验内容1.从左到右扌「I描屮缀表达式,经语法分析找出小缀表达式出现的错误并给出错误的具体位置和类型。一个运算符栈存放暂时不能出现的运算符,逆波兰区存放逆波兰表达式。1.测试所编程序,给出止确和错误的结果。(三)实验要求1.学生课前要认真阅读实验指导,理解实验内容与相关理论知识的关系,并完成预习报告2.用C语言或其它高级语言编写程序3.写出实验报告实践一无符号数的有穷自动机的实现一、目的通过上机实习,熟悉词法分析程序所用的工具自动机,进一步理解自动机理论。掌握文法转换成自动机的技术及有穷白动机实现的方法。二、题目无符号数的有穷自动机的实现三、要求及提示1、无符号数
8、的BNF描述如下:0.<无符号数〉Td〈余留无符号数〉丨•<十进制数〉
9、e〈指数部分〉1.<余留无符号数〉弓d〈余留无符号数>丨・〈十进制数>丨e〈指数部分〉
10、£2.<十进制小数〉Td<余留十进制小数〉3.〈余爾十进制小数〉e〈指数部分>丨d<余留十进制小数>丨e4.〈指数部分〉刁d〈余留整指数>丨+〈整指数>丨-〈整指数〉5.〈整指数〉Td〈余留整指数〉6.〈余留整指数〉弓d〈余留整指数>
11、£2、将G[<无符号数〉]文法转换成冇穷自动机。3、构造状态矩阵;将有穷口动机的状SjS2……Sn及输入的字aia2……a,„构成一个n*m的矩阵。1、状态矩阵设计出一个词法分析程序识别无
12、符号数。2、扌「I描无符号数,根据文法给出无符号数出错的位置。3、工具:C语言或其它高级语言4、实践时间:8学时四、实践报告1、写出无符号数词法分析的思、想。2、画出算法流程图。3、写出调试程序出现的问题及解决的方法。4、打印实践报告及程序清单。5、报告给出测试的结果。五、参考范例1)无符号数的文法描述如下:0.〈无符号数〉今d<余留无符号数>丨・〈十进制数>
13、e〈指数部分〉1.〈余留无符号数〉Td<余留无符号数>丨・<十进制数>丨e<指数部分>
14、£2.〈十进制小数〉弓d〈余留十进制小数〉3.<余留十进制小数〉e〈指数部分>丨d〈余昭-
15、•进制小数>丨£4.<指数部分〉Td〈余
16、留整指数>丨+〈整指数>丨-〈幣指数〉5.〈整指数〉9d〈余留整指数〉6.〈余留整指数〉Td〈余留整指数>丨£2)无符号数的有穷自动机实现的思想用0-一一-表不无符号数;用—一-表示余留无符号数;用2-—一表示十进制小数;用3—-一表示余留十进制小数;用4一—-表示指数部分;用5——―-表示整指数;用6——表示余留整指数。输入无符号数序列,从左到右扫描,遇到号结束扫描。设一个字符数组,接收输入的无符号数,对输入的无符号数逐一进行分析,用一个中间变量接收当前字符。当前字符值发生错误时,输出错误信息;当前字符值正确时,分析下一个字符,反复判断,直至分析完毕。3)无符号数的有穷口动机
17、(Z表示结束符)无符号数冇穷自动机
18、+1图1所示。4)无符号数冇穷自动机的状态转换炬阵无符号数有穷白动机的状态转换矩阵由表1所示。de■+—e0142①1142①①Z23①①①①334①5①Z46①①①5①56①①①66①①①Z5)算法流程图V结束6)程序清单#include〈stdio.h>main(){charwfh[50];/*定义数纟H.人小为50用于存放要判断的无符号数*/inti,zf;/*定义变量*/charchi,ch2;printf(Z/PleaseInputNumber:
此文档下载收益归作者所有