语法分析器计科1101.doc

语法分析器计科1101.doc

ID:57645305

大小:2.03 MB

页数:21页

时间:2020-08-30

语法分析器计科1101.doc_第1页
语法分析器计科1101.doc_第2页
语法分析器计科1101.doc_第3页
语法分析器计科1101.doc_第4页
语法分析器计科1101.doc_第5页
资源描述:

《语法分析器计科1101.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、西安邮电大学(计算机学院)课内实验报告实验名称:语法分析器专业名称:计算机科学与技术班级:计科1101学生姓名:朱子安学号(8位):04111013指导教师:王曙燕实验日期:2014年月日一、实验目的利用算符优先分析法通过设计、编制、调试一个表达式文法的语法分析程序,加深对算符优先分析法原理的理解。通过定义数组和结构体作为具有一定意义或关系的表或栈,存放FIRSTVT、LASTVT、算符优先关系表的元素。构造出FIRSTVT表和LASTVT表以及算符优先关系表。可以根据构造的优先关系表对输入的任意符号串进行

2、分析,判断是否为本文法的句子。结果显示到DOS界面上。二、实验工具MicrosoftVisualC++6.0三、实验内容使用算符优先分析算法分析所输入的文法:例如:(1)输入文法为:E→E+T

3、TT→T*F

4、FP→(E)

5、i程序输出所有非终结符的FIRSTVT和LASTVT集,构造出算符优先分析表。(2)输入符号串1、.如果输入符号串为文法句子,显示分析步骤,包括分析栈中的内容、当前符号、以及移近或规约动作;2、如果输入符号串不是文法句子,则指示错误,不符合文法。四.算法描述及其步骤一、算符优先分析算法流程

6、图如下:二、主流程图如下:输入文法规则数输入文法规则算符优先文法?调用FIRSTVT(charc)和LASTVT(charc)函数N/nY/y转化后的文法:输出非终结符FIRSTVTLASTVT集调用创建文法优先关系表函数table()输出算符优先分析表输入符号串调用deal()函数对输入串进行分析调用print(intj,intk,char*s)函数符合所输入文法?Y/y输出符号串分析过程结束开始N/n提示错误五:调试情况及其运行结果调试过程中出现的错误如下:一、头文件中出现的错误:在table()函数中

7、漏写以下语句,for(i=0;i"后的转化文法,用于最后的规约)二、主函数中出现的错误:(1)一开始主函数中变量名没有与头文件函数中的变量名没有统一,造成错误。统一变量名后错误消失。(2)开始时写的主函数中没有调用table()函数

8、,没有创建出相应的优先关系表。编写过程中函数多而杂,容易漏写函数,应该写出大体流程,按流程调用函数一般不会出错。实验结果截图如下:(1)无错误输入的运行结果截图:(2)有错误输入的运行结果截图:1)2)3)六.设计技巧以及体会本次上机实验是语法分析器,相对来来说不是很容易的,它的要求比较高,要将编译原理中所学的很多知识联系起来,并且要有比较良好的编程能力。一开始看到题目时没什么头绪,理不清思路,不知道怎样把算符优先分析法应用到语法分析中。对算符优先分析法的算法也不是很熟悉,也不知道怎样写入程序中解决实际问题

9、。通过看书以及上网查阅相关资料,首先要根据文法计算每个非终结符的FIRSTVT和LASTVT集,再构造表达式文法的优先关系表。根据表来判断所输入的文法输入符号串是否符合文法。按照这个想法,开始有了大概的规划,然后照着这个想法去做,终于做好了。构造算符优先关系表,算符优先关系表是一个二维数组,用来存放任意两个终结符之间的优先关系。首先构造表头,通过扫描所有产生式将终结符不重复的存放在一个一维数组中并置为优先关系表的行和列,并将优先关系表其他内容全部初始化为空。接着遍历所有产生式,找出任意两个终结符之间存在的关

10、系(可以没有关系),并判断任意两终结符是否至多存在一种优先关系,如发现优先关系表不为空,则证明该文法不是算符优先文法,否则,将相应的关系填入到相应的行列对应的单元中。本次实验我们是两个同学一起完成的,主函数由同学完成,而头文件中的函数由同学完成。吸取上次实验的教训,我们学会了更好的合作,一开始就一起探究讨论,并统一变量名,提高了编程效率,避免了很多不必要的错误。通过本次课程设计,不仅加强了我们对编译原理的认识,掌握了很多知识,更加让我们明白了动手能力和团队合作的重要性。在未来学习的道路上,应该继续发扬这种精

11、神,将实践和合作进行到底!源代码:头文件源程序如下:#include"stdio.h"#include"stdlib.h"charStRule[10][30];//存储文法规则charanalysis[20][10];//用于输入串的分析charrelation[20][20];//算符优先关系charsymbol[100];//模拟符号栈symbolcharEO[20];//文法终结符集charinput[10

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。