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

    2022年编译原理实验——语法分析器报告 .pdf

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

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

    2022年编译原理实验——语法分析器报告 .pdf

    组员学号姓名实验名称对各算术表达式进行语法分析实验室实验目的或要求实验目的:1、掌握语法分析器生成工具的使用和了解编译器的设计;2、了解自上而下语法分析器的构造过程;3、能够构造 LR 分析表,编写由该分析表驱动的语法分析器程序;4、借助语法制导翻译,可在语法分析的同时,完成对语义的翻译;5、借助语法分析,设计一个表达式的判断分析器,即从键盘上输入算术表达式,分析器将显示该表达式的正确与否。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 实验原理(算法流程)实验算法流程图如下所示:开始输入表达式表达式保存到数ch第一个元素为)+ -*/YChi= (i+YNChi=NULLNChi是 09i+YChi是 09Chi=+ -*/)N多了+ -*/)Y其他错误NYChi=* /Ni+YChi=+ -*/NY多了+ -*/Chi=+ -NNChi=)Y少了)N错误首部多了) + -*/结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 程序界面(效果图)实验结果界面:只选择几个典型的例子进行分析,可进行任意表达式输入。1)未进行语法分析时的界面;2)输入正确的表达式 (1+2)*(6-3)+1 进行语法分析时的界面结果;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 程序界面(效果图)3)输入错误的表达式1*2+(2+3 并进行语法分析时的界面结果;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 程序界面(效果图)4)输入错误的表达式1+(+5+6)并进行语法分析时的界面结果;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 程序代码 #include stdafx.h #include grammer.h #include mfc_ 语法分析器 .h #include mfc_ 语法分析器Dlg.h int flag; int i,j; int length; CString string; int grammer(CString str) i=0; flag=0; char chMAX; length=str.GetLength(); strcpy(ch,str); if(length!=0) F(ch); if(flag=0) MessageBox(NULL, 输入表达式符合文法, 正确 ,MB_OK|MB_ICONINFORMATION); /str=ch; /return flag; else MessageBox(NULL, 表达式为空 ,提示 ,MB_OK|MB_ICONWARNING); /MessageBox(NULL, 表达式为空 ,提示 ,MB_OK|MB_ICONERROR); return -1; return flag; void F(char ch) if(ch0=+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 12 页 - - - - - - - - - 程序代码flag=0; MessageBox(NULL, 输入表达式不符合文法0,错误 ,MB_OK|MB_ICONERROR); MessageBox(NULL, 开始处多了 +, 提示 ,MB_OK|MB_ICONINFORMATION); flag=1; else if(ch0=-) flag=0; MessageBox(NULL, 输入表达式不符合文法0, 错误 ,MB_OK|MB_ICONERROR); MessageBox(NULL, 开始处多了 -, 提示 ,MB_OK|MB_ICONINFORMATION); flag=1; else if(ch0=*) flag=0; MessageBox(NULL, 输入表达式不符合文法0, 错误 ,MB_OK|MB_ICONERROR); MessageBox(NULL, 开始处多了 *, 提示,MB_OK|MB_ICONINFORMATION); flag=1; else if(ch0=/) flag=0; MessageBox(NULL, 输入表达式不符合文法0, 错误 ,MB_OK|MB_ICONERROR); MessageBox(NULL, 开始处多了 /, 提示 ,MB_OK|MB_ICONINFORMATION); flag=1; else if(ch0=) flag=0; MessageBox(NULL, 输入表达式不符合文法0, 错误 ,MB_OK|MB_ICONERROR); MessageBox(NULL, 开始处多了 ), 提示 ,MB_OK|MB_ICONINFORMATION); flag=1; /* 上述为对第一个字符的特殊处理*/ else if(chi!=NULL) if(chi=() i+; F(ch); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 12 页 - - - - - - - - - 程序代码if(chi!=) if(flag=0) MessageBox(NULL,输入表达式不符合文法1,错误,MB_OK|MB_ICONERROR); MessageBox(NULL, 少了 ), 提示 ,MB_OK|MB_ICONINFORMATION); flag=1; else i+; if(chi!=NULL) T(ch); else if(chi=0) while(chi=0) i+; if(chi!=NULL) T(ch); else if(flag=0) if(chi!=NULL&chi!=) MessageBox(NULL, 输入表达式不符合文法2.1, 错误 ,MB_OK|MB_ICONERROR); if(chi= ) MessageBox(NULL,含有空格,提示,MB_OK|MB_ICONINFORMATION); else if(chi=+) MessageBox(NULL,多了+号,提示,MB_OK|MB_ICONINFORMATION); else if(chi=-) MessageBox(NULL,多了-号,提示,MB_OK|MB_ICONINFORMATION); else if(chi=*) MessageBox(NULL,多了*号,提示,MB_OK|MB_ICONINFORMATION); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 12 页 - - - - - - - - - 程序代码else if(chi=/) MessageBox(NULL,多了/号,提示,MB_OK|MB_ICONINFORMATION); else if(chi=NULL) MessageBox(NULL, 输入表达式不符合文法2.2, 错误 ,MB_OK|MB_ICONERROR); if(chi-1= ) MessageBox(NULL,含有空格,提示,MB_OK|MB_ICONINFORMATION); else if(chi-1=+) MessageBox(NULL,多 了 最 后 的+ 号 ,提 示,MB_OK|MB_ICONINFORMATION); else if(chi-1=-) MessageBox(NULL,多 了 最 后 的- 号 ,提示,MB_OK|MB_ICONINFORMATION); else if(chi-1=*) MessageBox(NULL,多 了 最 后 的* 号 ,提 示,MB_OK|MB_ICONINFORMATION); else if(chi-1=/) MessageBox(NULL,多了 最 后的/ 号 ,提示,MB_OK|MB_ICONINFORMATION); else if(chi!=NULL&chi=) MessageBox(NULL, 输入表达式不符合文法2.3, 错误 ,MB_OK|MB_ICONERROR); if(chi-1= ) MessageBox(NULL,含有空格,提示,MB_OK|MB_ICONINFORMATION); else if(chi-1=() MessageBox(NULL,含有一对空 括号,提示,MB_OK|MB_ICONINFORMATION); else if(chi-1=+) MessageBox(NULL,多 了 最 后 的+ 号 ,提 示,MB_OK|MB_ICONINFORMATION); else if(chi-1=-) MessageBox(NULL,多 了 最 后 的- 号 ,提示,MB_OK|MB_ICONINFORMATION); else if(chi-1=*) MessageBox(NULL,多 了 最 后 的* 号 ,提 示,MB_OK|MB_ICONINFORMATION); else if(chi-1=/) MessageBox(NULL,多了 最 后的/ 号 ,提示,MB_OK|MB_ICONINFORMATION); flag=1; void T(char ch) if(chi=*|chi=/) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 12 页 - - - - - - - - - 程序代码 i+; if(chi!=NULL&chi!=+&chi!=-&chi!=*&chi!=/) F(ch); else if(flag=0) MessageBox(NULL, 输入表达式不符合文法3,错误 ,MB_OK|MB_ICONERROR); if(chi= ) MessageBox(NULL, 含有空格 , 提示,MB_OK|MB_ICONINFORMATION); else if(chi=+) MessageBox(NULL,多了+号,提示,MB_OK|MB_ICONINFORMATION); else if(chi=-) MessageBox(NULL,多了-号,提示,MB_OK|MB_ICONINFORMATION); else if(chi=*) MessageBox(NULL,多了*号,提示,MB_OK|MB_ICONINFORMATION); else if(chi=/) MessageBox(NULL,多了/号,提示,MB_OK|MB_ICONINFORMATION); flag=1; else E(ch); void E(char ch) if(chi=+|chi=-) i+; if(chi!=NULL&chi!=+&chi!=-&chi!=*&chi!=/) F(ch); else if(flag=0) if(chi!=NULL) MessageBox(NULL, 输入表达式不符合文法4.1, 错误 ,MB_OK|MB_ICONERROR); if(chi= ) MessageBox(NULL,含有空格,提示,MB_OK|MB_ICONINFORMATION); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 12 页 - - - - - - - - - 程序代码else if(chi=+) MessageBox(NULL,多了+号,提示,MB_OK|MB_ICONINFORMATION); else if(chi=-) MessageBox(NULL,多了-号,提示,MB_OK|MB_ICONINFORMATION); else if(chi=*) MessageBox(NULL,多了*号,提示,MB_OK|MB_ICONINFORMATION); else if(chi=/) MessageBox(NULL,多了/号,提示,MB_OK|MB_ICONINFORMATION); else if(chi=NULL) MessageBox(NULL, 输入表达式不符合文法4.2, 错误 ,MB_OK|MB_ICONERROR); if(chi-1= ) MessageBox(NULL,含有空格,提示,MB_OK|MB_ICONINFORMATION); else if(chi-1=+) MessageBox(NULL,多 了 最 后 的+ 号 ,提 示,MB_OK|MB_ICONINFORMATION); else if(chi-1=-) MessageBox(NULL,多 了 最 后 的- 号 ,提示,MB_OK|MB_ICONINFORMATION); else if(chi-1=*) MessageBox(NULL,多 了 最 后 的* 号 ,提 示,MB_OK|MB_ICONINFORMATION); else if(chi-1=/) MessageBox(NULL,多了 最 后的/ 号 ,提示,MB_OK|MB_ICONINFORMATION); flag=1; else if(chi!=) if(flag=0) MessageBox(NULL, 输入表达式不符合文法5, 错误 ,MB_OK|MB_ICONERROR); if(chi=(&chi+2=) MessageBox(NULL,含 有 一 对 多 余 的 括 号 , 提 示,MB_OK|MB_ICONINFORMATION); else MessageBox(NULL, 其他类型的错误, 提示 ,MB_OK|MB_ICONINFORMATION); flag=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 12 页 - - - - - - - - - 实验结果分析及心得体会实验结果分析:本次实验借助语法分析,设计一个表达式的判断分析器,从键盘上输入算术表达式,分析器对该表达式的正确与否进行分析。若是正确的算术表达式,则符合文法,输出正确;若是错误的算术表达式,则表达式不符合文法,输出其错误之处并显示异常。该程序执行过程无误,输出结果正常。但由于我们的疏忽,该程序未能完全满足实验要求,并不能够构造其LR 分析表,并不是由该分析表驱动的语法分析器程序,这是本次实验的一个缺陷。心得体会:通过本次实验让我们了解到了如何进行设计,编制并调试语法分析程序,掌握语法分析器生成工具的使用和了解编译器的设计。也加深对语法分析原理的理解,熟悉了构造语法分析程序的相关原理和使用高级语言直接编写此次语法分析程序的方法。在此次实验中,我们也了解到了进行实验必须具备的严谨性和准确性,也懂得了团结合作的重要,这为我们将来的编写程序提供了宝贵经验。成绩评定教师签名:年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 12 页 - - - - - - - - -

    注意事项

    本文(2022年编译原理实验——语法分析器报告 .pdf)为本站会员(Q****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




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

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

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

    收起
    展开