资源简介

从new.txt文件中读入写好的由正规表达式(a|b)*(aa|bb)(a|b)*所转化的正规文法(右线性),自动构造项目集族,生成LR分析表,并对输入的字符串通过LR分析表进行分析,输出分析过程,指出错误

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include “ll1analysis.h“
#include “Main.h“
struct cstack fhz;
char row[4] = {‘S‘‘A‘‘B‘‘F‘};
char col[3] = {‘a‘‘b‘‘#‘};
char ll_wenfa[9][20]={“S->aA““S->bB““A->aF““A->bB““B->aA““B->bF““F->aF““F->bF““F->“};
int ana_table[4][3]={
{01-1}
{23-1}
{45-1}
{678}
};

void print_ll_stack()
{
int i=0;
for(i=0;i {
printf(“%c“fhz.data[i]);
}
printf(“\t“);
}
void init_stack()
{
fhz.top=0;
}
bool pop_c_stack()
{
if(fhz.top<0) return false;
else
{
fhz.top--;
return true;
}
}
bool push_c_stack(char c)
{
if(fhz.top>=50)
return false;
else
{
fhz.data[fhz.top]=c;
fhz.top++;
return true;
}
}
char get_stack_top()
{
return fhz.data[fhz.top-1];
}
void print_ll_table()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<3;j++)
{
if(ana_table[i][j]>=0)
printf(“%s\t“ll_wenfa[ana_table[i][j]]);
else
printf(“error\t“);
}
printf(“\n“);
}
}

void ll1()
{
char str[50];
char st;
int int_sint_tint_wwlength;
init_stack();
print_ll_table();
printf(“输入一个字符串:“);
scanf(“%s“str);
getchar();
int str_count = (int)strlen(str);
str[str_count]=‘#‘;
str_count++;
str[str_count]=‘\0‘;
push_c_stack(‘#‘);
push_c_stack(‘S‘);
for(int i=0;i {
print_ll_stack();
printf(“%s\t“&str[i]);

t=str[i];
s=get_stack_top();
pop_c_stack();
if(s==‘#‘&&t==‘#‘)
{
printf(“succeed“);
}
else
{
if(s>=‘A‘&&s<=‘Z‘)
{
for(int_s=0;int_s<4;int_s++)
{
if(s==row[int_s])
break;
}
for(int_t=0;int_t<3;int_t++)
{
if(t==col[int_t])
break;
}
if(ana_table[int_s][int_t]>=0)
{
int_w = ana_table[int_s][int_t];
printf(“%s“ll_wenfa[int_w]);
wlength = (int)strlen(ll_wenfa[int_w]);
wlength--;
for(;ll_wenfa[int_w][wlength]!=‘>‘;wlength--)
{
push_c_stack(ll_wenfa[int_w][wlength]);

}
i--;


}
else
{
printf(“error\t“);

}
}
else
{
if(s==t)
{
printf(“\t\n“);

continue;
}
else
{
printf(“error\t“);
push_c_stack(s);
}

}

}
printf(“\n“);

}
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-10 20:49  byylks\
     目录           0  2018-11-06 10:00  byylks\.vs\
     目录           0  2018-11-06 10:00  byylks\.vs\byylks\
     目录           0  2018-11-06 10:01  byylks\.vs\byylks\v15\
     文件        5120  2018-11-06 10:01  byylks\.vs\byylks\v15\.suo
     文件     1839104  2018-11-06 10:01  byylks\.vs\byylks\v15\Browse.VC.db
     目录           0  2018-11-06 10:00  byylks\.vs\byylks\v15\ipch\
     目录           0  2018-11-06 10:00  byylks\.vs\byylks\v15\ipch\AutoPCH\
     目录           0  2018-11-06 10:01  byylks\.vs\byylks\v15\ipch\AutoPCH\6688b59fc27e555\
     文件     2818048  2018-11-06 10:01  byylks\.vs\byylks\v15\ipch\AutoPCH\6688b59fc27e555\MAIN.ipch
     目录           0  2018-11-06 10:00  byylks\Backup\
     文件        4727  2018-11-07 20:56  byylks\byylks.dsp
     文件         535  2018-11-07 15:16  byylks\byylks.dsw
     文件       66560  2018-11-10 20:49  byylks\byylks.ncb
     文件       51712  2018-11-10 20:49  byylks\byylks.opt
     文件        1407  2018-11-10 20:49  byylks\byylks.plg
     文件        6454  2018-11-06 10:00  byylks\byylks.vcxproj
     文件        1309  2018-11-06 10:00  byylks\byylks.vcxproj.filters
     文件         165  2018-11-06 10:00  byylks\byylks.vcxproj.user
     目录           0  2018-11-10 20:49  byylks\Debug\
     文件      225329  2018-11-10 20:49  byylks\Debug\byylks.exe
     文件      296568  2018-11-10 20:49  byylks\Debug\byylks.ilk
     文件         344  2018-11-06 10:00  byylks\Debug\byylks.log
     文件     3572840  2018-11-10 20:49  byylks\Debug\byylks.pch
     文件      582656  2018-11-10 20:49  byylks\Debug\byylks.pdb
     文件       17900  2018-11-07 21:56  byylks\Debug\ll1analysis.obj
     文件       48230  2018-11-10 20:49  byylks\Debug\LRanalysis.obj
     文件       15082  2018-11-10 20:49  byylks\Debug\Main.obj
     文件       20730  2018-11-09 14:16  byylks\Debug\syfbyyl.obj
     文件      156672  2018-11-10 20:49  byylks\Debug\vc60.idb
     文件       86016  2018-11-10 20:49  byylks\Debug\vc60.pdb
............此处省略12个文件信息

评论

共有 条评论