c_c++语法分析器.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c_c语法分析器

编译原理实验报告语法分析班级:2011211315学号:2011211542姓名:刘轩目 录1.实验题目和要求………………………………………………………………………………………………………………………………………..12.递归调用预测分析实现 自顶向下分析(方法1)…………………………………………………………..21. 消除左递归…………………………………………………………………………………………………………………………………………………………….22. 画状态转移图…………………………………………………………………………………………………………………………………………………………33. 编程实现递归调用自顶向下分析………………………………………………………………………………………………………………………….33.LR实现 自底向上分析(方法三)………………………………………………………………………………………………….61. 构造识别所有活前缀的DFA………………………………………………………………………………………………………………………………….62. 构造LR分析表……………………………………………………………………………………………………………………………………………………….73. 编程实现算法4.3,实现自底向上LR分析…………………………………………………………………………………………………………..84. 运行结果截图……………………………………………………………………………………………………………………………………………………….111.实验题目和要求题目:语法分析程序的设计与实现。实验内容:编写语法分析程序,实现对算术表达式的语法分析。要求所分析算术表达式由如下的文法产生。实验要求:在对输入表达式进行分析的过程中,输出所采用的产生式。方法2:编写LL(1)语法分析程序,要求如下。编程实现算法4.2,为给定文法自动构造预测分析表(手动构造)。编程实现算法4.1,构造LL(1)预测分析程序。方法3:编写语法分析程序实现自底向上的分析,要求如下。构造识别所有活前缀的DFA(手动构造)。构造LR分析表(手动构造)。编程实现算法4.3,构造LR分析程序LL(1)实现 自顶向下预测分析(方法二)(1)消除文法左递归。文法改写为:(2)画出状态图得 化简得(3)FIRST集和FOLLOW集如下:FIRST(E)={id,(,num}FOLLOW(E)={},$}FIRST(E’)={+,-,ε}FOLLOW(E’)={},$}FIRST(T)={id,(,num}FOLLOW(T)={},+,-,$}FIRST(T’)={ *,/,ε}FOLLOW(T’)={},+,-,$}FIRST(F)={id,(,num}FOLLOW(F)={},+,-,*,/,$}(4)LL(1)分析表构造如图:(5)C++程序代码解析:预置字符串类型预测分析表:(””表示空白对应错误处理的跳过操作,”em”表示ε正常跳过,”s”表示synch对应错误处理的弹栈操作)string analyze_chart[6][10]={NULL, +,-,*,/,id,(,),num,$, E, ,,,,TE, TE, s,TE,s, E, +TE,-TE,,,,,em, ,em, T, s,s,,,FT, FT, s,FT,s, T, em, em, *FT,/FT,,,em, ,em, F, s,s,s,s,id,(E), s,num,s};int searchl(string target)返回对应分析表中的行号int searchr(char target)返回对应分析表中的列号预测分析程序主体,输入参数target为待分析的记号流指针,用字符指针存储,length为字符串长度void syntax_analyzing(const char * target,int length)内部参数:int ptr=0,line,row;其中ptr为记号流指针,line为预测分析表查找行号,row为预测分析表查找列号string temp;此处temp为暂存变量,存储栈顶弹出的元素stackstd::string a_stack;字符串类型栈(6)程序运行效果截图正确记号流: 错误记号流:LR实现 自底向上分析(方法三)构造识别所有活前缀的DFA构造扩展文法FIRST和FOLLOW集如下ETFFIRSTId, (, numid, (, numid, (, numFOLLOW$, ), +, -$, ), +, -, *, /$, ), +, -, *, /构造LR分析表。 1 4 7 2 5 8 3

文档评论(0)

yaobanwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档