编译基础学习知识原理实验报告3.doc

举报
资源描述
-! 编译原理实验报告 ————表达式语法分析表达式语法分析 -! 表达式语法分析实验报告 一、实验题目 设计一个简单的表达式语法分析器 (采用递归下降方法设计实现) 二、实验目的 1、 了解形式语言基础及其文法运算; 2、 熟悉语法分析原理及 4 种常用的语法分析方法; 其中: 四种算法为 (1)设计算术表达式的递归下降子程序分析算法 (2)设计算术表达式的 LL(1) 分析算法 (3)设计算术表达式的简单优先分析算法 (4)设计算术表达式的 SLR(1) 分析算法 3、选择上述一种方法并设计一个表达式的语法分析器。 (本实验设计的是递归下降的表达式语法分析器) 三、实验内容 1.设计递归下降语法分析器算法; 2.编写代码并上机调试运行通过; 3、写出试验体会及心得。 -! 四、实验要求 1、给出算术表达式文法 2、进行适当的文法变换 3、选择一种语法分析的方法,并说明其原理 4、根据原理给出相应的算法设计,说明主要的数据结构并画出算法流 程图 5、编写代码并上机调试运行通过 6、写出程序运行结果 7、写出相应的文档以及代码注释 8、输入——表达式; 输出——表达式语法是否正确。 五、递归下降的表达式语法分析器设计概要 1.算术表达式文法.算术表达式文法 G(E): E  E +T | T T  T* F | F F  i | (E) 2 2.文法变换:.文法变换: G’(E): E->TE E->+TE|ε T->FT T->*FT|ε F->(E)|I -! 3. 递归下降子程序框图:递归下降子程序框图: 六、实验设计源程序 -! #include char inputstream[50]; //存储输入句子存储输入句子 int temp=0; //数组下标数组下标 int right; //判断输出信息判断输出信息 void e(); void e1(); void t(); void t1(); void f(); void main() { right=1; cout<<"请输入您要分析的字符串以请输入您要分析的字符串以#结束结束(^为空字符为空字符)::"<>inputstream; e(); if((inputstream[temp]==#) else cout<<"分析失败分析失败"<:m=0; token[m++]=ch; ch=prog[p++]; if(ch===) {syn=24; token[m++]=ch; } else {syn=23; p--; break; } break; case:: m=0; token[m++]=ch; ch=prog[p++]; if(ch===) {syn=18; token[m++]=ch; } else -! {syn=17; p--; } break; case+:syn=13;token[0]=ch;break; case-:syn=14;token[0]=ch;break; case*:syn=15;token[0]=ch;break; case/:syn=16;token[0]=ch;break; case=:syn=25;token[0]=ch;break; case;:syn=26;token[0]=ch;break; case(:syn=27;token[0]=ch;break; case):syn=28;token[0]=ch;break; case#:syn=0;token[0]=ch;break; default:syn=-1; } return syn; } 八、运行结果 1 1、输入错误时的情况:、输入错误时的情况: 2 2、输入正确时的情况:、输入正确时的情况: -! 九、实验体会 通过此次实验,让我了解到如何设计、编写并调试语义分析部分的相关 程序,并加深对语义分析原理的理解;熟悉了构造语义分析程序的手工方式 的相关原理,使用某种高级语言直接编写此法分析程序。 另外,通过本次实验,也让我重新熟悉了 C 语言的相关内容,加深了 对 C 语言知识的深化和用途的理解。通过这次语义分析的实验, 我对高级语 言的学习有了更深的认识 ,了解得更透彻。我了解了高级语言转化为目标 代码或汇编指令的过程,。对今后的学习将起很大的作用,对以后的编程有很 大的帮助. 本次实验虽然只是完成了一个简单的程序,并且程序的主要框架 课本上有给出,但在组织程序结构和深入了确上学到了很多,加深对编译原 理的理解,掌握编译程序的实现方法和技术。巩固了前面所学的知识。
展开阅读全文
相关搜索
温馨提示:
taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

当前位置:首页 > 教育专区 > 教案示例


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

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