- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
等价文法的压缩存储实验报告
西北师范大学计算机科学与工程学院学生实验报告
学号:201371020127 2015 年 10 月 1 日
学院计算机科学与技术学院专业软件工程班级2013级软件一班姓名王尚课程名称编译原理课程类型专业 学时数实验名称压缩文法的等价变化实验目的:
1. 了解有关文法的实用限制。?
2. 实现用计算机判断多余规则。
实验要求:??
除了可查看压缩了的文法,还可查看删除了哪些规则??输入:任意的上下文无关文法
输出:等价的压缩了的文法
实验内容:
#includestdio.h
#includestring.h
#includestdlib.h
#define rulesLength 20
#define length0 20
int count,vnNum=2,vtNum=1;
int length[rulesLength];
char vn[length0],vt[length0];
int rule[rulesLength][rulesLength]={0},rulesign[rulesLength]={0},vnsign[rulesLength]={0};
char rules[][6]=
{
000,
ZE+T,
EE,
ES+F,
ET,
FF,
FFP,
FP,
PG,
GG,
GGG,
GF,
TT*i,
Ti,
QE,
QE+F,
QT,
QS,
Si
};
void retrieval();
void input();
void output1();
void output2();
void tag1();
void tag2();
void copyNewArray();
int main()
{
input();
retrieval();
tag1();
tag2();
output1();
copyNewArray();
retrieval();
tag1();
tag2();
output2();
printf(\n结束!\n);
return 0;
}
void input()
{
count=18;
length[1]=4;length[2]=2;length[3]=4;length[4]=2;
length[5]=2;length[6]=3;length[7]=2;length[8]=2;
length[9]=2;length[10]=3;length[11]=2;length[12]=4;
length[13]=2;length[14]=2;length[15]=4;length[16]=2;
length[17]=2;length[18]=2;
}
void copyNewArray()
{
int newcount=1;
char newRules[rulesLength][rulesLength];
vnNum=2,vtNum=1;
for(int c=1;c=count;c++)
{
if(rulesign[c]==2)
{
for(int j=0;jlength[c];j++)
{
newRules[newcount][j]=rules[c][j];
}
newcount++;
}
}
count=newcount-1;
for(int c1=1;c1=count;c1++)
{
for(int j=0;jlength[c1];j++)
{
rules[c1][j]=newRules[c1][j];
}
}
//将标记数组置为0
for(int c2=1;c2=rulesLength;c2++)
{
for(int j=0;jrulesLength;j++)
{
rule[c2][j]=0;
}
vnsign[c2]=0;
}
for(int p2=1;p2=count;p2++)
{
rulesign[p2]=0;
}
文档评论(0)