欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    编译原理算符优先分析C++源代码(共6页).doc

    • 资源ID:14052830       资源大小:65.50KB        全文页数:6页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    编译原理算符优先分析C++源代码(共6页).doc

    精选优质文档-倾情为你奉上算符优先分析器源代码:#include<iostream>#include<iomanip>#define MAX 100using namespace std;struct Stack /符号栈char dataMAX;int top;char Terminal6='','(',')','a','+','#' /终结符集合char Table66= /算符优先关系表'>', '<', '>', '<', '>', '>','<', '<', '=', '<', '<', '!','>', '>', '>', '!', '>', '>','>', '>', '>', '!', '>', '>','<', '<', '>', '<', '>', '!','<', '<', '!', '<', '!', '='/判断是否为终结符,是返回其所在位置i,否则返回-1int Is_Vt(char ch,char Terminal6)int i;for(i=0;i<6;i+)if(ch=Terminali) /输入符为终结符return i; return -1;/读入输入串,返回其长度int Getchar(int length,char StringMAX)int i;cout<<"*输入字符串的长度length="cin>>length;cout<<endl<<"*该输入串为:"for(i=0;i<length;i+)cin>>Stringi; return length;void PrintStack(Stack &st, int top) /输出栈中的内容for(int i=0;i<=top;i+) cout<<st.datai << " "cout << "tt"int main()Stack st; int length=0,Len,k;char StringMAX,ch;Len=Getchar(length,String); /获得输入串int j=0;ch=Stringj; /指向第一个输入符st.top=0;st.datast.top='#' /将#入栈cout<<endl<<"*分析过程*"<<endl;cout<<"符号栈"<<setw(15)<<"当前符号"<<setw(15)<<"剩余输入串"<<setw(20)<<"移进或归约"<<endl; /输出格式while(st.top!=1 | ch!='#')if(Is_Vt(ch,Terminal)!=-1) /输入符为终结符k=Is_Vt(ch,Terminal); /获取分析表Table的第二个下标int m,t; /t指向终结符在栈中的位置if(Is_Vt(st.datast.top,Terminal)!=-1) /栈顶为终结符m=Is_Vt(st.datast.top,Terminal);/获取分析表Table的第一个下标t=st.top;else /栈顶为非终结符,看top-1m=Is_Vt(st.datast.top-1,Terminal);/获取分析表Table的第一个下标t=st.top-1;if(Tablemk='<' | Tablemk='=') /栈顶符号的优先级小于等于输入符号,压栈PrintStack(st,st.top); /输出栈中内容cout<<ch<<setw(10); /输出当前符号for(int p=j+1;p<=Len;p+) /输出剩余输入串cout<<Stringp;cout<<"ttt"<<"移进"<<endl; /输出下一步进行的操作st.top+;st.datast.top=ch; /输入符移进栈中j+;ch=Stringj; /指向下一输入符else if(Tablemk='!') /两终结符的优先关系不确定cout<<endl<<"*分析出错!*"<<endl;return 0;else /栈顶符号的优先级大于输入符,归约int q; /表示分析表Table的行if(Is_Vt(st.datat-1,Terminal)!=-1) /终结符相邻符号也是终结符q=Is_Vt(st.datat-1,Terminal);/获得分析表Table的行t=t-1; /获得分析表Table的列else /t-1位置是一个非终结符q=Is_Vt(st.datat-2,Terminal);t=t-2;while(Tableqm!='<')m=q;if(Is_Vt(st.datat-1,Terminal)!=-1) /终结符相邻符号也是终结符q=Is_Vt(st.datat-1,Terminal);/获得分析表Table的行t=t-1; /获得分析表Table的列else /t-1位置是一个非终结符q=Is_Vt(st.datat-2,Terminal);t=t-2;PrintStack(st,st.top);cout<<ch<<setw(10);for(int p=j+1;p<=Len;p+)cout<<Stringp;cout<<"ttt"<<"归约"<<endl;st.top=t+1;st.datast.top='N'elsecout<<endl<<"*该输入串不是文法的句子!*"<<endl;return 0;PrintStack(st,st.top);cout<<ch<<setw(10);for(int p=j+1;p<=Len;p+)cout<<Stringp;cout<<"ttt"<<"接受"<<endl;cout<<endl<<"*分析成功:该输入串是文法的句子!*"<<endl;return 0;运行结果:专心-专注-专业

    注意事项

    本文(编译原理算符优先分析C++源代码(共6页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开