资源简介
C语言实现的LL1文法判别,及first、follow、select集合计算,编译原理实验要求,自己实现的,可能会有不完善的地方,欢迎讨论~~~
代码片段和文件信息
#include
#include
#define MAXLINE 50
//输入的表达式
typedef struct node
{
char left;
char right[20];
char firsts[20];
char select[20];
int rflag;//表达式右边的符号串能否推出空的标记
}Production;
Production p[MAXLINE];
int pLength=0;
//非终结符
typedef struct nodee
{
char value;
int flag;//-1不能推出空 1能推出空
char first[20];
char follow[20];
}NTC;
NTC n[MAXLINE];
int nLength=0;
int nflag[MAXLINE];//非终结符能否推出空的临时数组对表达式而言
int isUpper(char c)
{
if(c>=‘A‘&&c<=‘Z‘)
return 1;
return 0;
}
int isLower(char c)
{
if(c>=‘a‘&&c<=‘z‘)
return 1;
return 0;
}
void input()
{
char ktemp1temp2;
int i=0;
while((k=getchar())!=‘#‘){
p[i].left=k;
scanf(“%c%c“&temp1&temp2);
scanf(“%s“p[i].right);
i++;
getchar();
}
pLength=i;
}
/
评论
共有 条评论