优先矩阵转化为优先函数.doc

优先矩阵转化为优先函数.doc

ID:50376203

大小:33.50 KB

页数:4页

时间:2020-03-08

优先矩阵转化为优先函数.doc_第1页
优先矩阵转化为优先函数.doc_第2页
优先矩阵转化为优先函数.doc_第3页
优先矩阵转化为优先函数.doc_第4页
资源描述:

《优先矩阵转化为优先函数.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一种方便地求算符优先函数的方法——迭代法若已知运算符之间的优先关系,可按如下步骤构造优先函数:1、对每个运算符a(包括#在内)令f(a)=g(a)=12、如果a⋗b且f(a)<=g(b)令f(a)=g(b)+13、如果a⋖b且f(a)>=g(b)令g(b)=f(a)+14、如果a≐b而f(a)≠g(b),令min{f(a),g(b)}=max{f(a),g(b)}5、重复2~4,直到过程收敛。如果重复过程中有一个值大于2n,则表明不存在算符优先函数。代码为:#include#include#defineMaxSize100#d

2、efineMaxOp9struct{charch;//运算符intpri;//优先级}lpri[]={{'+',1},{'-',1},{'*',1},{'/',1},{'(',1},{')',1},{'#',1}},rpri[]={{'+',1},{'-',1},{'*',1},{'/',1},{'(',1},{')',1},{'#',1}};intf(charop)//求左运算符op的优先级{inti;for(i=0;i

3、级{inti;for(i=0;i

4、

5、ch==')'

6、

7、ch=='+'

8、

9、ch=='-'

10、

11、ch=='*'

12、

13、ch=='/'

14、

15、ch=='#')return1;elsereturn0;}*/charPrecede(charc1,charc2){inti=0,j=0;staticchararray[49]={'>','>','<','<','<','>','>','>','>','<','<',

16、'<','>','>','>','>','>','>','<','>','>','>','>','>','>','<','>','>','<','<','<','<','<','=','!','>','>','>','>','!','>','>','<','<','<','<','<','!','='};switch(c1)/*i为下面array的横标*/{case'+':i=0;break;case'-':i=1;break;case'*':i=2;break;case'/':i=3;break;case'(':i=4;break;case')':i=5;bre

17、ak;case'#':i=6;break;}switch(c2)/*j为下面array的纵标*/{case'+':j=0;break;case'-':j=1;break;case'*':j=2;break;case'/':j=3;break;case'(':j=4;break;case')':j=5;break;case'#':j=6;break;}return(array[7*i+j]);/*返回运算符*/}voidmain(){inti,j,k=1;while(k!=0){k=0;for(i=0;i<7;i++){for(j=0;j<7;j++){if(Pre

18、cede(lpri[i].ch,rpri[j].ch)=='>'&&f(lpri[i].ch)<=g(rpri[j].ch)){lpri[i].pri=rpri[j].pri+1;k=1;}elseif(Precede(lpri[i].ch,rpri[j].ch)=='<'&&f(lpri[i].ch)>=g(rpri[j].ch)){rpri[j].pri=lpri[i].pri+1;k=1;}}}}printf("");for(i=0;i<7;i++)printf("%3c",lpri[i].ch);printf("");printf("入栈优先函数f:"

19、);for(i=0;i<7;i++)printf("%3d",lpri[i].pri);printf("");printf("比较优先函数g:");for(i=0;i<7;i++)printf("%3d",rpri[i].pri);printf("");}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。