求编译程序

来源:百度知道 编辑:UC知道 时间:2024/05/15 10:06:22
已知文法
S->E
E->CTG(F)
F->GA[N],F
F->GI,F
F->GA[N]
F->GI
G->L
G->LG
L->a-z(字母a到z)
N->D
N->DN
D->0-9(数字0-9)
求一种分析方法和程序 能进行文法分析
满意有追分

自上而下语法分析器

部分代码,不知道是不是你要的

#include"stdio.h"
#include"string.h"
#include"iostream.h"
#include"ctype.h"
#include"fstream.h"

class Syntax_analysis
{
public:
char stotax[30][20]; //存放文法规则
char soudocu[1000]; //用于存放打开的文件内容
int sto_tax; //存放产生式总数
char firstchars[30]; //某个串的first集(可能有重复)
int first_num; //first集长度
char followchars[1000]; //存放某个非终结符的follow集(如果有(间接)右递归,可能有较大重复)
int follow_num; //follow集长度
int follownumkey; //用于判断右递归或间接右递归
char followkey;
char selectchars[30][30]; //存放每条产生式的select集
char colec0[30]; //存入所有能推导出0的非终结符
int colec0num; //能推导出0的非终结符个数
char capital; //第一个未被使用的大写字母
char preanatab[130][130][20]; //存放预测分析表,分别为非终结符(将字母转化为数字)、终结符(将字母转化为数字)、产生式