编译原理语法分析实验1

编译原理语法分析实验1

ID:8929847

大小:40.50 KB

页数:5页

时间:2018-04-12

编译原理语法分析实验1_第1页
编译原理语法分析实验1_第2页
编译原理语法分析实验1_第3页
编译原理语法分析实验1_第4页
编译原理语法分析实验1_第5页
资源描述:

《编译原理语法分析实验1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《编译原理》课程实验报告课程实验题目:语法分析实验学生所在系部:计算机科学与技术学生所在专业:计算机科学与技术学生所在班级:软件二班学生学号:2009145617_学生姓名:邱玉梅一、实验目的通过本实验,了解递归下降预测分析的原理和过程以及可能存在的回溯问题,探讨解决方法,为预测分析表方法的学习奠定基础。分析递归下降子程序的优缺点。二、实验内容及要求1.针对算术表达式文法:E→TE’E’→+TE’

2、εT→FT’T’→*FT’

3、εF→(E)

4、i为其编写递归下降子程序,判定某个算术表达式是否正确:如j+k*m,j*k+m输入:其输入数据应该为词法分析器输出的记号形

5、式:i+i*i,i*i+i输出:分析结果:算术表达式结构正确或结构错误。三、实验程序设计说明1.实验方案设计各个函数之间的调用关系如下图所示:2.程序源代码源代码如下:#include#include#include#includechara[10];intlookahead=0;voidE1();voidT();voidT1();voidF();voidE(){printf("E->TE'");T();E1();}voidE1(){if(a[lookahead]=='+'){prin

6、tf("E'->+TE'");lookahead++;T();E1();}elseprintf("T'->ε");}voidT(){printf("T->FT'");F();T1();}voidT1(){if(a[lookahead]=='*'){printf("T'->*FT'");lookahead++;F();T1();}elseprintf("T'->ε");}voidF(){if(a[lookahead]=='i'){printf("F->i");lookahead++;}elseif(a[lookahead]=='('){l

7、ookahead++;E();if(a[lookahead]==')'){printf("F->(E)");lookahead++;}else{printf("括号不匹配分析失败!");exit(0);}}else{printf("括号不匹配,分析失败!");exit(0);}}intmain(){while(1){printf("请输入算数表达式(以#键结束):");scanf("%s",a);E();if((a[lookahead]=='#'))printf("句子结构正确");elseprintf("无结束标志,分析失败");}r

8、eturn0;}3.程序的执行结果程序运行结果如下所示:

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

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

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