lr语法分析器c语言源代码,编译原理上机源代码LR语法分析器

《编译原理上机源代码LR语法分析器》由会员分享,可在线阅读,更多相关《编译原理上机源代码LR语法分析器(17页珍藏版)》请在人人文库网上搜索。

1、输入:3+4*6输出:27(当然中间包括LR(1)语法分析过程程序提供主要为了给大家提供一些方便,你懂得。呵呵如有问题,QQ:来自:大连理工大学软件学院#includeusing namespace std;#include#include#include#includestring AnalyzeChart1611=/LR文法的分析表s5, e1, e1, s4, e2, e1, 1, 2, 3, e1, e1,e3, s6, e1, e3, e2, acc, error, error, error, s7, e1,e6, r2, s8, e6, r2, r2, error, error, 。

2、error, r2, s9,e6, r4, r4, e6, r4, r4, error, error, error, r4, r4,s5, e1, e1, s4, e2, e1, 10, 2, 3, e1, e1,e5, r6, r6, e3, r6, r6, error, error, error, r6, r6,s5, e1, e1, s4, e2, e1, error, 11, 3, e1, e1,s5, e1, e1, s4, e2, e1, error, 12, 3, e1, e1,s5, e1, e1, s4, e2, e1, error, error, 13, e1, e1,s5。

3、, e1, e1, s4, e1, e1, error, error, 14, e1, e1, e3, s6, e1, e3, s15, r3, error, error, error, s9, e1,e6, r1, s8, e6, r1, r1, error, error, error, r1, s9,e6, r7, s8, e6, r7, r7, error, error, error, r7, s9,e6, r3, r3, e6, r3, r3, error, error, error, r3, r3,e6, r8, r8, e6, r8, r8, error, error, error。

4、, r8, r8,e6, r5, r5, e6, r5, r5, error, error, error, r5, r5,;stack digit;queue digit1;queue inputid;char *FinalSymbol6=i,+,*,(,),#/终结符;char *UnfinalSymbol5=E,E,T,T,F/非终结符;stack ufstack;/状态栈void initialize()ufstack.push(0);inputid.push(0);char * keyword6 = for,if,then,else,while,do;int flag1=-1,flag。

5、2=-1;typedef struct signint line;int token;char temp10;int i;void reset(sign & s)s.i = 0;memset(s.temp,$,10);s.token = -1;bool is_key_word(sign & s)int i,r;for(i=0;i=a & s.temp0=A & s.temp0=a & s.tempi=A & s.tempi=0 & s.tempi=0 & c=0 & c=0 & c=0 & c=0 & c=0 & c=0 & c)handle (mark);cout0) z-;while(tr。

6、ue) int state=-1,sflag2=0;char temp1=ufstack.top();int sflag1=inputid.front();/cout=0 & ufstack.top()0)state=state+sta*10;elseufstack.push(t1);coutE+TE-TTT*FT/FF(E)idendl;int st=ufstack.top()-0;ufstack.push(F);char ch=*AnalyzeChartst8.c_str ();if(strcmp(AnalyzeChartst8.c_str (),13)=0)ufstack.push(*A。

7、nalyzeChartst8.c_str ();ufstack.push(*(AnalyzeChartst8.c_str ()+1);else if(strcmp(AnalyzeChartst8.c_str (),14)=0)ufstack.push(*AnalyzeChartst8.c_str ();ufstack.push(*(AnalyzeChartst8.c_str ()+1);elseufstack.push(ch);else if(strcmp(AnalyzeChartstateflag1.c_str (),acc)=0)coutAnalyze complate! endl;inp。

8、utid.pop();break;else if(strcmp(AnalyzeChartstateflag1.c_str (),e2)=0)cout不配对的右括号! endl;inputid.pop();else if(strcmp(AnalyzeChartstateflag1.c_str (),e3)=0)cout缺少运算符 endl;inputid.pop();else if(strcmp(AnalyzeChartstateflag1.c_str (),e1)=0)cout缺少运算对象 endl;/ufstack.push(i);/ufstack.push(5);inputid.pop();else if(strcmp(AnalyzeChartstateflag1.c_str (),e4)=0)cout缺少右括号 endl;ufstack.push();ufstack.push(11);else if(strcmp(AnalyzeChartstateflag1.c_str (),e5)=0)cout算符重复 endl;inputid.pop();else /MX,a=一个产生式 coutStrange error happen !endl;break;h+;cout最终结果是digit.top()endl;return 0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值