




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学号1406410107成绩涛侑曳第*岑编译原理上机报告名称:逆波兰式的产生及计算学院:信息与控制工程学院专业:计算机科学与技术班级:计算机1401班姓名:.叶达成2016年11月4日一、上机目的通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行 语法检查和结构分析,进一步掌握常用的语法分析方法。1、选择最有代表性的语法分析方法,如LL(1)语法分析程序、算符优先分析程序和LR分析分析程序,并至少完成两个题目。2、选择对各种常见程序语言都用的语法结构,如赋值语句(尤指表达式)作为分析对象,并且 与所选语法分析方法要比较贴切。实验前的准备按实验的目的和要求,编写语
2、法分析程序,同时考虑相应的数据结构。调试调试例子应包括符合语法规则的算术表达式,以及分析程序能够判别的若干错例。输出对于所输入的算术表达式,不论对错,都应有明确的信息告诉外界。(4)扩充有余力的同学,可适当扩大分析对象。譬如: 算术表达式中变量名可以是一般标识符,还可含一般常数、数组元素、函数调用等等。除算术表达式外,还可扩充分析布尔、字符、位等不同类型的各种表达式。加强语法检查,尽量多和确切地指出各种错误。二、基本原理和上机步骤基本原理:将运算对象写在前面,而把运算符号写在后面。用这种表示法表示的表达式也称做后缀式。逆 波兰式的特点在于运算对象顺序不变,运算符号位置反映运算顺序。采用逆波兰式
3、可以很好的表示 简单算术表达式,其优点在于易于计算机处理表达式。上机步骤:(1)构造一个栈,存放运算对象。(2)读入一个用逆波兰式表示的简单算术表达式。(3)自左至右扫描该简单算术表达式并判断该字符,如果该字符是运算对象,则将该字符入栈。 若是运算符,如果此运算符是二目运算符,则将对栈顶部的两个运算对象进行该运算,将运算结果 入栈,并且将执行该运算的两个运算对象从栈顶弹出。如果该字符是一目运算符,则对栈顶部的元 素实施该运算,将该栈顶部的元素弹出,将运算结果入栈。(4)重复上述操作直至扫描完整个简单算术表达式的逆波兰式,确定所有字符都得到正确处理, 我们便可以求出该简单算术表达式的值。三、上机
4、结果程序清单:#include#include#include#include#include#includeusing namespace std;char str50;用于存放原来的表达式int top;栈顶指针char stack50;/定义栈,用于计算逆波兰式char ex50;存放后缀表达式double _stack50;/定义栈,用于计算逆波兰式子int flag50;用于区分+、-号的含义,0表示运算符,1表小正负节/生成逆波兰式void NiBolan()memset(flag,0,sizeof(flag); /flag 初始值设为 0char ch=str0;int i=1,
5、t=0;top=0;while(ch!=#)switch(ch)case (:top+;stacktop=ch;break;case ):while(stacktop!=() ext=stacktop;top-;t+;top-;break;case while(stacktop=A) /设置A运算符优先级为最高 ext=stacktop;top-;t+;top+;stacktop=ch;break;case +:case -:当ch为+、-号是,若前面相邻字符不是)或数字且后面相邻字符是数字时表示正负号 if(isdigit(stri) & !isdigit(stri-2) &stri-2!=
6、)(flagt=1;/标记符号为正负号ext+=ch; ch=stri+; while(ch=0&ch=a&ch=0&ch=a&ch=0&ch=0&ch=0&ch=0&ch=0&ch=0&ch=9) d=d+double(ch-0)/(10.0*k); k=k+1.0; ch=ex+t;top+;_stacktop=d; ch=ext;cout计算结果:_stacktopendl;/printf(计算结果:lfn,_stacktop); int main() printf(请输入中缀表达式:);scanf(%s”,&str);/输入原表达式printf(原表达式为: %sn,str); NiBolan();/生成逆波兰式Calculate。;/计算逆波兰式return 0;屏幕截图:H . F:wo班常设及实和6告编辉原道实验报等第三次实赛依&tDebu gtest. ee=1入签结*量被算52请亳计PF中强果an表达式:28珀:*2#;28&68&+2&E 1?2key to continue四、讨论与分析通过这次的实验,知道了算符优先文法的概念以及这个文法的简单应用。通过对中缀表达式转 化为后缀表达式的实验,我对算符优先级有了更深的理解。并解决了如何构造这些优先级以及如何 运用他们来计算后缀
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业档案管理考题及答案
- 吉林省安图县联考2024年中考数学全真模拟试题含解析
- 造营林工考试题及答案
- 成都市新都区2025届小升初总复习数学精练含解析
- 湖北汽车工业学院《建筑设计(1)》2023-2024学年第二学期期末试卷
- 福建省厦门外国语中学2025年校高三下期摸底考试语文试题试卷含解析
- 开封职业学院《影视摄像》2023-2024学年第二学期期末试卷
- 长春健康职业学院《现代测试技术》2023-2024学年第一学期期末试卷
- 亳州职业技术学院《生物医学图像处理》2023-2024学年第一学期期末试卷
- 友谊县2025年四年级数学第二学期期末复习检测模拟试题含解析
- 室外管网施工方案
- 2025年郑州铁路职业技术学院单招职业技能考试题库附答案
- 《江南水乡》幼儿园小学少儿美术教育绘画课件创意教程教案
- 2025年春花城版(2024)小学音乐一年级下册教学计划
- 二零二五年度房屋租赁合同附带租户隐私保护协议
- 2025年上海市安全员《C证》考试题库及答案
- 信鸽卖买合同范本
- 主动脉内球囊反搏课件
- 2024铸铁用稀土系蠕化剂技术条件
- 《新能源汽车技术》课件-第二章 动力电池
- 拘留所被拘留人员管理教育
评论
0/150
提交评论