资源描述:
《语法分析器计科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