安徽工业大学编译原理实验报告(3)

2019-04-21 10:11

{ /*将该非终结符的FIRST集合除去ε并入到当前 非终结符的FIRST集合中*/ for(k=0;k

if(!fchange) { for(i=0;i

{ if(l[i].flag) { l[i].first[l[i].s]='@'; l[i].s++; l[i].first[l[i].s]='\\0'; } printf(\ %s\\n\ } printf(\ break; } } }

//求产生式右部的First集合 void seekFirstRight() {

struct Right{ char a[MAX]; char first[MAX]; int s; }r[MAX]; int i,j,k,t;

int cnt=0,len,len1,flag=0; for(i=0;i

for(i=0;i

{

len=strlen(r[i].a); for(j=0;j'Z')) { r[i].first[r[i].s]=r[i].a[j]; r[i].s++; r[i].first[r[i].s]='\\0'; break; } else { for(k=0;k

r[i].first[r[i].s]='\\0'; } continue; } else break; } } }

for(i=0;i

printf(\}

//求每个非终极符的Follow集合 void seekFollow() {

int i,j,k,t,t1,t2,t3,c=0; int flag=0,len;

int fchange;//判断一次循环是否有改动的地方 char a[MAX][MAX],ch[MAX];

for(i=0;i='A')&&(css[i][j]<='Z')) { break; } } if(j!=len) { strcpy(a[c],css[i]); c++; } }

l[0].follow[l[0].l]='#'; l[0].l++;

l[0].follow[l[0].l]='\\0';

while(1)

{

fchange=0; for(i=0;i='A')&&(a[i][j]<='Z')) { //判断该非终结符的前一位是否为非终结符,是的话, //将其First集合去ε后并到其前一位非终结符的Follow集合中 if((a[i][j-1]>='A')&&(a[i][j-1]<='Z')) { for(k=0;k


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

下一篇:《甲午中日战争》教学设计与课后反思

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

马上注册会员

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