南华大学 实验名称:算符优先分析程序 学 院:计 算 机 学 院 专业班级:本 2 0 1 0 电气信息类 0 3 班 学 号:*********** * 名: *** 指导教师: *** 日期: 2 0 1 2 年 6 月 1 2 日 实验二 算符优先分析程序 一、实验目的 调试并完成一个算符优先分析程序,加深对算符优先分析原理的理解。 二、实验要求 算符优先分析程序的功能: 输入:所给文法的源程序字符串、待匹配字符串。 输出:转化后的文法、每个非终结符的 FIRSTVT 集和 LASTVT 集、算符优先分析表、规约过程。 三、源程序代码: #include "stdio.h" #include "stdlib.h" #include "iostream.h" char data[20][20]; //算符优先关系 char s[100]; //模拟符号栈 s char lable[20]; //文法终极符集 char input[100]; //文法输入符号串 char string[20][10]; //用于输入串的分析 int k; char a; int j; char q; int r; //文法规则个数 int r1; //转化后文法规则个数 char st[10][30]; //用来存储文法规则 char first[10][10]; //文法非终结符FIRSTVT 集 char last[10][10]; //文法非终结符LASTVT 集 int fflag[10]={0}; //标志第 i 个非终结符的 FIRSTVT 集是否已求出 int lflag[10]={0} ; //标志第i 个非终结符的LASTVT 集是否已求出 int deal(); //对输入串的分析 int zhongjie(char c); //判断字符c 是否是终极符 int xiabiao(char c); //求字符c 在算符优先关系表中的下标 void out(int j,int k,char *s); //打印 s 栈 void firstvt(char c); //求非终结符c 的FIRSTVT 集 void lastvt(char c); //求非终结符c 的LASTVT 集 void table(); //创建文法优先关系表 void main() { int i,j,k=0; printf("请输入文法规则数:"); scanf("%d",&r); printf("请输入文法规则:\n"); for(i=0;i'Z') { printf("不是算符文法!\n"); exit(-1); } if(st[i][j]>='A'&&st[i][j]<='Z') { if(st[i][j+1...