全文预览

编译原理课程设计--算术表达式的语法分析及语义分析程序设计

上传者:相惜 |  格式:doc  |  页数:36 |  大小:112KB

文档介绍
}}}}}m++;}while(st[i][m]!='\0');first[i][n]='\0';first[i][0]=--n;fflag[i]=1;同样LASTVT()集也可以按照类似的方式构造。4.4.4求算符优先矩阵构造算符优先关系表。算符优先矩阵在本程序中的作用是最大的,算符优先关系表是一个二维数组,用来存放任意两个终结符之间的优先关系。首先构造表头,通过扫描所有产生式将终结符不重复的存放在一个一维数组中并置为优先关系表的行和列,并将优先关系表其他内容全部初始化为空。接着遍历所有产生式,找出任意两个终结符之间存在的关系(可以没有关系),并判断任意两终结符是否至多存在一种优先关系,如发现优先关系表不为空,则证明该文法不是算符优先文法,否则,将相应的关系填入到相应的行列对应的单元中。部分代码如下:for(i=0;i<x;i++){for(j=1;text[i][j+1]!='\0';j++){if(zhongjie(text[i][j])&&zhongjie(text[i][j+1])){m=xiabiao(text[i][j]);n=xiabiao(text[i][j+1]);data[m][n]='=';}if(text[i][j+2]!='\0'&&zhongjie(text[i][j])&&zhongjie(text[i][j+2])&&!zhongjie(text[i][j+1])){m=xiabiao(text[i][j]);n=xiabiao(text[i][j+2]);data[m][n]='=';}if(zhongjie(text[i][j])&&!zhongjie(text[i][j+1]))//终结符和非终结符相接,用后于关系填表6编译原理课程设计{for(k=0;k<r;k++){if(st[k][0]==text[i][j+1])break;

收藏

分享

举报
下载此文档