- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                编译原理课程设计-算符优先分析法研究--附源程序文档
                    目    录
1  课程设计的目的和要求	2
1.1  课程设计的目的	2
1.2  课程设计的要求	2
2  系统描述	2
2.1  自底向上分析方法的描述:	2
2.2  算符优先文法的描述:	2
3)输入符号串,进行移进-规约分析。	3
3  概要设计	3
3.1  设计思路	3
3.2  系统功能结构	4
3.3  技术路线或实现方法	5
3.4  开发环境	5
4  详细设计	5
4.1  模块划分	5
4.2	主要算法的流程图	7
4.3  数据分析与定义	8
4.4  系统界面设计	8
5  测试方法和测试结果	9
5.1  测试用例1	9
5.2  测试用例2	10
5.3	测试用例3	11
5.4  测试用例4	12
6  结论和展望	13
结论	13
展望	13
学习编译技术课程的体会和对本门课程的评价	13
7  参考文献	13
8  源代码	14
1  课程设计的目的和要求
1.1  课程设计的目的
本次设计的时间为1周,目的是通过使用高级语言实现部分算法加强对编译技术和理论的理解。设计的题目要求具有一定的规模,应涵盖本课程内容和实际应用相关的主要技术。
1.2  课程设计的要求
1、文法使用产生式来定义;
2、用大写字母和小写字母分别表示非终结符和终结符;产生式使用-;
3、文法中的空字符串统一使用@表示;
4、分别给出每一个非终结符的FIRSTVT集和LASTVT集;
5、画出算符优先关系表
6、判定给定的文法是否是算符优先文法;
7、给定符号串判定是否是文法中的句子,分析过程用分析表格的方式打印出来。
2  系统描述
本次实验使用windows vista操作系统下visual C++6.0平台,使用C语言,利用读文件方式将待分析的文法读入到程序中,通过定义数组和结构体作为具有一定意义或关系的表或栈,存放FIRSTVT、LASTVT、算符优先关系表的元素。
系统能够对由文件读入的文法进行分析,构造出FIRSTVT表和LASTVT表以及算符优先关系表。可以根据构造的优先关系表对输入的任意符号串进行分析,判断是否为本文法的句子,若是则打印规约过程。结果显示到DOS界面上。
2.1  自底向上分析方法的描述:
对输入的符号串自左向右进行扫描,并将输入符逐个移入栈中,边移入边分析,一旦栈顶符号串形成某个句型的句柄时(该句柄对应某个产生式的右部),就用该产生式的左部非终结符代替相应右部的文法符号串,这一过程称为规约。重复这一过程,直到栈中只剩下文法的开始符则分析成功。
2.2  算符优先文法的描述:
只规定算符之间的优先关系,也就是说只考虑终结符之间的优先关系。由于算富有先分析不考虑非终结符之间的优先关系,在规约过程中只要找到最左素短语就可以规约。
如给定一个文法G[S]:
S-#E#
E-E+T
E-T
T-T*F
T-F
F-P/F
F-P
P-(E)
P-i
利用算符优先文法分析过程处理如下:
1)计算给定文法中任意两个终结符对(a,b)之间的优先关系,首先计算两个集合
FIRSTVT(B)={b|B-b…或B-Cb…}
LASTVT(B)={a|B-…a或B-…aC}
表2-1	FIRSTVT集和LASTVT集
   	S	E 	T 	F 	P 		 FIRSTVT	#	+*/i( 	*/i( 	/i( 	i( 		 LASTVT	 #	+*/i) 	*/i) 	/i) 	i) 		2)计算三种优先关系,求出算符优先关系表:
表2-2算符优先关系表
	+	*	/	i	(	)	#		+	﹒﹥	﹤﹒	﹤﹒	﹤﹒	﹤﹒	﹒﹥	﹒﹥		*	﹒﹥	﹒﹥	﹤﹒	﹤﹒	﹤﹒	﹒﹥	﹒﹥		/	﹒﹥	﹒﹥	﹤﹒	﹤﹒	﹤﹒	﹒﹥	﹒﹥		I	﹒﹥	﹒﹥	﹒﹥			﹒﹥	﹒﹥		(	﹤﹒	﹤﹒	﹤﹒	﹤﹒	﹤﹒	﹦﹒			)	﹒﹥	﹒﹥	﹒﹥			﹒﹥	﹒﹥		#	﹤﹒	﹤﹒	﹤﹒	﹤﹒	﹤﹒		﹦﹒		3)输入符号串,进行移进-规约分析。
3  概要设计
3.1  设计思路
1)首先在源程序相同的目录下创建一个txt文档,并在文档中输入待分析的文法。然后定义一个输入流文件,调用这个流文件中的open函数打开该txt文件,再定义一个二维数组通过循环接收读入的产生式。
2)接着开始构造FIRSTVT、LASTVT、算符优先关系表。在构造表的时候首先定义了两个重要的结构体。一个结构体作为存放具有一定关系的一对非终结符和终结符,另一个结构体作为存放上述元素的栈,包括栈顶指针、栈底指针、栈的长度。既然定义了栈,就存在对栈的初始化、栈是否为空的判断、入栈、出栈操作,利用循环和指针的操作来定义这些函数,以完成元素的进栈和弹出。
定义了这两个结构体,就可以用来构造FIRSTVT、LASTVT、算符优先关系表。在构造FIRSTVT表
                您可能关注的文档
- 2009克莱斯勒经销商大会策划方案文档.doc
 - 2009年2010年2011年2012年2013年全国执业兽医资格考试试卷真题及答案解析2014执业医师考试题库历年真题答案文档.pdf
 - 2010哈电大本科管理方法与艺术小抄文档.doc
 - 2010年一年级上学期口算题文档.doc
 - 2010年元旦晚会会场布置元旦晚会策划方案文档.doc
 - 2007沧源县县域村庄整治实施方案文档.ppt
 - 2010年医院感染管理控制实施方案文档.doc
 - 2010年广东佛山三旧项目拓展经验交流文档.doc
 - 2010年度领导班子及成员执行党风廉政建设责任制的情况报告文档.doc
 - 2010年软考程序员考试历年真题重点题总结及答案文档.docx
 
最近下载
- EHS体系程序文件-信息沟通、协商和决议管理程序.docx VIP
 - 高中政治课堂教学应用时事政治策略探究.doc VIP
 - (GBT7588 1—2020)电梯制造与安装安全规范.pdf VIP
 - 设施农业智能化与现代农业装备产业发展趋势报告.docx
 - “十四五”公路养护发展规划.docx VIP
 - 健康评估(第二版)全套教学课件.pptx
 - 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
 - 2024年贵州省六盘水市中考语文试卷真题(含答案逐题解析).docx
 - CQI-27铸造系统评估表 第二版(2023).xls VIP
 - 银行大堂服务实训(第2版) 课件 项目4 营业中引导营销服务.pdf VIP
 
原创力文档
                        

文档评论(0)