编译原理递归下降预测分析.doc

编译原理递归下降预测分析.doc

ID:56101181

大小:44.50 KB

页数:5页

时间:2020-03-16

编译原理递归下降预测分析.doc_第1页
编译原理递归下降预测分析.doc_第2页
编译原理递归下降预测分析.doc_第3页
编译原理递归下降预测分析.doc_第4页
编译原理递归下降预测分析.doc_第5页
资源描述:

《编译原理递归下降预测分析.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《编译原理》课程实验报告课程实验题目:作者所在系部:计算机科学与工程系作者所在专业:计算机科学与技术作者所在班级:作者学号:作者姓名:指导教师姓名:4一、实验目的通过本实验,了解递归下降预测分析的原理和过程以及可能存在的回溯问题,探讨解决方法,为预测分析表方法的学习奠定基础。分析递归下降子程序的优缺点。二、实验内容及要求1.给定文法:S→(T)

2、a+S

3、aT→T,S

4、S改写文法,使其可以使用递归下降子程序方法进行分析,编写递归下降子程序,判断句子:(((a+a+a),a+a),a)是否符合该文法。输入:(((a+a+a),a+a),a)

5、输出:结构正确或结构错误2.编写程序调试运行;考虑如果将你的程序改为识别其他的文法,你的递归下降子程序可否通用,考虑递归下降子程序方法的优缺点。三、实验程序设计说明1.实验方案设计1.match;函数:从文件中依次读字符2.S函数:判断表达式是否满足S→(T)

6、aS1。3.S1函数:判断表达式是否满足S1→(a+)S1

7、e4.T函数:判断表达式是否满足T→ST15.T1函数:判断表达式是否满足T1→,ST1

8、e6.error函数:输出错误信息到屏幕2.程序源代码#include#include

9、voidmatch(chart);voidS();voidS1();voidT();voidT1();voiderror();charlookahead;chara[100];inti=0;intj=0;intx=0;voidmatch(chart){if(lookahead==t)4lookahead=a[++j];elseerror();}voidS(){if(lookahead=='('){match('(');T();if(lookahead==')')match(')');elseerror();}elseif(lookahe

10、ad=='a'){match('a');S1();}elseerror();}voidS1(){if(lookahead=='+'){match('+');S();}}voidT(){S();T1();}voidT1(){if(lookahead==','){match(',');S();T1();}}voiderror()4{x=-1;}voidmain(){cout<<"请输入一个表达式(((a+a+a),a+a),a)(以@结束):";charc;cin>>c;chars;cin>>s;while(s!='@'){a[i]=s;i

11、++;cin>>s;}lookahead=*a;S();if(x==-1)cout<<"不匹配"<

12、位置。针对程序的健壮性问题,通过和同学讨论补充了error函数,用于判断表达式是否错误并输出错误信息到屏幕。4五、体会、意见或建议通过此次实验,更加深入的了解递归下降预测分析的原理和过程以及可能存在的回溯问题。掌握了解决方法,为预测分析表方法的学习奠定了基础,明白了递归下降子程序的优缺点。在实验过程中,出现了一些问题,在得同学以及老师的帮助下完成了此次实验内容。本实验基本达到了老师的要求,实现了递归下降子程序的编写的基本功能。4

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。