资源描述:
《算符优先分析方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验三:自底向上分析:算符优先分析方法一、实验原理:算符优先分析算法二、实验内容:1、了解语法分析的其中一种自底向上分析算符优先分析;2、学会构造算符优先矩阵;3、上机实现算符优先分析器的工作流程。三、实验要求:要求能对下列文法所产生的符号串进行语法分析:①EàE+T
2、E-T
3、T②TàT*F
4、T/F
5、F③Fà(E)
6、num
7、id对输入的符号在分析完之后,如果正确就报告,有误就停止。四、实验步骤:1、求出该文法所有非终结符的leadvt以及lastvt表;2、根据所求出的表,再构造相应的算符优先矩阵;3、根据参考程序(见课本P137程序4-5),实现算符优先分析器的工作流程。五、程序设
8、计指导:1、本次实验要完成的程序功能为:用程序实现算符优先分析器的工作流程,根据不断地查找指定文法得出的算符优先矩阵,最终判断输入串是否符合该文法的语法要求;1、首先,在本次实验的预习报告中要先完成实验原理部分以及实验步骤中的前面两条;2、程序中用到的关键函数的说明:lIsHigherThan():用来返回两个终结符之间是否有大于关系;lIsLowerThan():用来返回两个终结符之间是否有小于关系;lIsEqualTo():用来返回两个终结符之间是否有等于关系;lReduce():把满足当前应被规约的最左子串条件的字符串进行规约;lparser():根据算符优先分析算法设计的分析
9、函数。六、实验代码://priority.cpp:定义控制台应用程序的入口点。////#include"stdafx.h"#include#include#include#include#defineSUCCESS1#defineERROR0#defineMAXINPUT300#defineMAXSTACK100charstack[MAXSTACK],a[MAXINPUT];structrelations{charrow;//行charcolum;//列charrel;//大小关系}table[70]={{'
10、+','+','>'},//1{'+','-','>'},//2{'+',')','>'},//3{'+','#','>'},//4{'-','+','>'},//5{'-','-','>'},//6{'-',')','>'},//7{'-','#','>'},//8{'*','+','>'},//9{'*','-','>'},//10{'*',')','>'},//11{'*','#','>'},//12{'*','*','>'},//13{'*','/','>'},//14{'/','+','>'},//15{'/','-','>'},//16{'/',')','>'},//17
11、{'/','#','>'},//18{'/','*','>'},//19{'/','/','>'},//20{')','+','>'},//21{')','-','>'},//22{')',')','>'},//23{')','#','>'},//24{')','*','>'},//25{')','/','>'},//26{'n','+','>'},//27{'n','-','>'},//28{'n',')','>'},//29{'n','#','>'},//30{'n','*','>'},//31{'n','/','>'},//32{'i','+','>'},//33{'i','-
12、','>'},//34{'i',')','>'},//35{'i','#','>'},//36{'i','*','>'},//37{'i','/','>'},//38{'+','*','<'},//39{'+','/','<'},//40{'+','(','<'},//41{'+','n','<'},//42{'+','i','<'},//43{'-','*','<'},//44{'-','/','<'},//45{'-','(','<'},//46{'-','n','<'},//47{'-','i','<'},//48{'*','(','<'},//49{'*','n','<'},
13、//50{'*','i','<'},//51{'/','(','<'},//52{'/','n','<'},//53{'/','i','<'},//54{'(','+','<'},//55{'(','-','<'},//56{'(','*','<'},//57{'(','/','<'},//58{'(','(','<'},//59{'(',')','='},//60{'(','n','<'},//61{'(','i','<'},//62{'#','+','