#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define DEP 6
char stack[DEP];
int top=-1;
char a,c,p;
int n,x,length;
char token[8]/*={'i','*','i','+','i','#'}*/;
int xuhao[6][7]={{0,0,0,0,0,0,0}, /* 对应于ll(1)分析表的序号表*/
{0,1,0,0,1,0,0},
{0,0,2,0,0,7,7},
{0,3,0,0,3,0,0},
{0,0,6,4,0,6,6},
{0,5,0,0,8,0,0}
};
char *key[]={"error","E->Te","e->+Te","T->Ft", /*ll(1)分析表*/
"t->*Ft","F->i","t->$","e->$","F->(E)"
} ;
char cols[]={'0','i','+','*','(',')','#'}; /*终结符号表*/
char row[]={'0','E','e','T','t','F'}; /*非终结符号表*/
/*c a*/
int compare(char c,char a) /*根据ll(1)表格返回序号!例如 E---i时返回序号1*/
{ int j,k;
j=checkrow(c);
k=checkcols(a);
return xuhao[j][k];
}
int checkrow (char c) /*查找c对应于非终结符表的序号!例如:c=E时,返回1*/
{int i;
for(i=0;i<=6;i++)
if(strcmp(c,row[i])==0)
return (i);
}
int checkcols (char a) /*查找a对应于终结符表的序号!例如:a=i时,返回1*/
{ int i;
for(i=0;i<=7;i++)
if(strcmp(a,cols[i])==0)
return (i);
}
int check (char c) /*检查c 是否是终结符号*/
{int i;
for (i=0;i<7;i++)
if(strcmp(c,cols[i])==0)
return (1);
return (0);
}