算符优先算法c语言,c语言实现算符优先语法分析

《c语言实现算符优先语法分析》由会员分享,可在线阅读,更多相关《c语言实现算符优先语法分析(5页珍藏版)》请在人人文库网上搜索。

1、includechar prog100,zhongjian100,shu500;char ch,zh;int syn,p,q,a,b,c,d; /p指向prog,q指向zhongjianint table88=1,1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,0, 1,1,1,1,0,1,0,1,1,1,1,1,0,1,0,1,-1,-1,-1,-1,-1,0,-1,-1;/存储算符优先关系表,大于为1,小于或等于为-1,其它为0表示出错char zh。

2、an100;/数组栈int z,j;/z为栈顶指针,j为zhongjian数组指针void push(char ch)/入栈zhanz+=ch;void pop()/出栈z-;void putzhan()/打印栈内字符for(int i=0;i=j;m-)shuc+=zhongjianm;for(int i=z-1;i0;i-)shuc+=zhani;zh=ding2();if(zh=i) /当前比较为i,出栈一次pop(); else /当前比较不为i,出栈三次pop(); pop(); pop(); push(E); /归约到E printf(归约n);shuc+= ;shuc+=;shu。

3、c+=-;shuc+= ;elsesyn=-1;break;zh=ding();ch=zhongjianj;void loadch()/读入所有字符串int i=0;printf(请输入要进行算符优先分析的字符串:n);doch=getchar();progi+=ch;while(ch!=#);void scaner()syn=1;ch=progp+;while(ch= |ch=n)ch=progp+;switch(ch)case+:zhongjianq+=+;break;case-:zhongjianq+=-;break;case*:zhongjianq+=*;break;case/:zho。

4、ngjianq+=/;break;case(:zhongjianq+=(;break;case):zhongjianq+=);break;casei:zhongjianq+=i;break;case#:zhongjianq+=#;syn=0;break;default: syn=-1;break;void saomiao()p=0;q=0;doscaner();if(syn=-1)printf(输入符号有误!n);break;while(syn!=0);void main()loadch();saomiao();if(syn=0)chu();analyse();printf(#Et#t结束n);if (syn=0)printf(该字符串可被文法识别n);printf(E);for(int i=c;i=0;i-)printf(%c,shui);printf(n);elseprintf(该字符串不可被文法识别n。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值