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

2021-01-28 20:40

编译原理实验

while(('#' != ch) && (n < MaxVtNum)) {

if(' ' != ch && '\n' != ch && -1 == IndexCh(ch))

{

Vt[n++] = ch;

vtNum++;

}

ch = getchar();

}

Vt[n] = '#'; /*以“#”标志结束*/

k = n; /*k用于记录n以便改Vt[n]='\0'*/

if('#' != ch)

{

if( '#' != (ch = getchar()))

{

while('#' != (ch = getchar()))

;

printf("\n符号数目超过限制!\n"); inErr = 1;

continue;

}

}

/*正确性确认,正确则,执行下下面,否则重新输入*/

Vt[k] = '\0';

ShowChArray(Vt);

ch = ' ';

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

{

if('\n' != ch)

{

printf("输入正确确认?(y/n):");

}

scanf("%c", &ch);

}

if('n' == ch)

{

printf("录入错误重新输入!\n");

inErr = 1;

}

else

{

inErr = 0;

}

}

}

/*产生式输入*/

void InputP()

{

char ch;

int i = 0, n,num;

printf("请输入文法产生式的个数:");

scanf("%d", &num);

PNum = num;

getchar(); /*消除回车符*/

printf("\n请输入文法的%d个产生式,并以回车分隔每个产生式:", num);

printf("\n");

while(i < num)

{

printf("第%d个:", i);

/*初始化*/

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

buffer[n] = '\0';

/*输入产生式串*/

ch = ' ';

n = 0;

while('\n' != (ch = getchar()) && n < MaxPLength)

{

if(' ' != ch)

buffer[n++] = ch;

}

buffer[n] = '\0';

/* printf("%s", buffer);*/

if(CheckP(buffer))

{

/*填写入产生式结构体*/

pRNode *pt, *qt;

P[i].lCursor = IndexCh(buffer[0]);

pt = (pRNode*)malloc(sizeof(pRNode));

pt->rCursor = IndexCh(buffer[3]);

pt->next = NULL;

P[i].rHead = pt;

n = 4;

while('\0' != buffer[n])

{

qt = (pRNode*)malloc(sizeof(pRNode));

qt->rCursor = IndexCh(buffer[n]);

qt->next = NULL;

pt->next = qt;

pt = qt;

n++;

}

P[i].rLength = n - 3;

i++;

/*调试时使用*/

}

19


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

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

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

马上注册会员

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