编译原理_实验报告(17)

2021-01-28 20:40

编译原理实验

LL1.CPP :

/*-------------------------*/

#include "LL1.h"

/*----main function--------*/

void main(void)

{

char todo,ch;

Init();

InputVn();

InputVt();

InputP();

getchar();

FirstFollow();

printf("所得first集为:"); ShowCollect(first);

printf("所得follow集为:"); ShowCollect(follow);

CreateAT();

ShowAT();

todo = 'y';

while('y' == todo)

{

printf("\n是否继续进行句型分析?(y / n):");

todo = getchar();

while('y' != todo && 'n' != todo)

{

printf("\n(y / n)? ");

todo = getchar();

}

if('y' == todo)

{

int i;

InitStack();

printf("请输入符号串(以#结束) : "); ch = getchar();

i = 0;

while('#' != ch && i < MaxStLength) {

if(' ' != ch && '\n' != ch)

{

st[i++] = ch;

}

ch = getchar();

}

if('#' == ch && i < MaxStLength)

{

st[i] = ch;

Identify(st);

}

else

printf("输入出错!\n");

}

}

getchar();

}

/*--------function definition-------*/ void Init()

{

int i,j;

vnNum = 0;

vtNum = 0;

PNum = 0;

for(i = 0; i <= MaxVnNum; i++)

Vn[i] = '\0';

for(i = 0; i <= MaxVtNum; i++)

Vt[i] = '\0';

for(i = 0; i < MaxRuleNum; i++)

{

P[i].lCursor = NULL;

P[i].rHead = NULL;

P[i].rLength = 0;

}

PNum = 0;

for(i = 0; i <= MaxPLength; i++)

buffer[i] = '\0';

for(i = 0; i < MaxVnNum; i++)

{

first[i] = NULL;

follow[i] = NULL;

}

for(i = 0; i <= MaxVnNum; i++)

{

for(j = 0; j <= MaxVnNum + 1; j++)

analyseTable[i][j] = -1;

}

}

/*返回Vn在Vn表中的位置+100、Vt在Vt 表中的位置,-1表示未找到*/

int IndexCh(char ch)

{

int n;

n = 0; /*is Vn?*/

while(ch != Vn[n] && '\0' != Vn[n])

n++;

if('\0' != Vn[n])

return 100 + n;

n = 0; /*is Vt?*/

while(ch != Vt[n] && '\0' != Vt[n])

n++;

17


编译原理_实验报告(17).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:肉牛饲养管理技术

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: