(完整word版)编译原理-逆波兰式的产生及计算(word文档良心出品).pdf
-
资源ID:55058432
资源大小:161.51KB
全文页数:8页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
(完整word版)编译原理-逆波兰式的产生及计算(word文档良心出品).pdf
编译原理上机报告名称:逆波兰式的产生及计算学院:信息与控制工程学院专业:计算机科学与技术班级:计算机 1401 班姓名:叶达成2016 年 11月 4 日学号1406410107 成绩一、上机目的通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析方法。1、选择最有代表性的语法分析方法,如LL(1)语法分析程序、算符优先分析程序和LR 分析分析程序,并至少完成两个题目。2、选择对各种常见程序语言都用的语法结构,如赋值语句(尤指表达式)作为分析对象,并且与所选语法分析方法要比较贴切。实验前的准备按实验的目的和要求,编写语法分析程序,同时考虑相应的数据结构。调试调试例子应包括符合语法规则的算术表达式,以及分析程序能够判别的若干错例。输出对于所输入的算术表达式,不论对错,都应有明确的信息告诉外界。扩充有余力的同学,可适当扩大分析对象。譬如:算术表达式中变量名可以是一般标识符,还可含一般常数、数组元素、函数调用等等。除算术表达式外,还可扩充分析布尔、字符、位等不同类型的各种表达式。加强语法检查,尽量多和确切地指出各种错误。二、基本原理和上机步骤基本原理:将运算对象写在前面,而把运算符号写在后面。用这种表示法表示的表达式也称做后缀式。逆波兰式的特点在于运算对象顺序不变,运算符号位置反映运算顺序。采用逆波兰式可以很好的表示简单算术表达式,其优点在于易于计算机处理表达式。上机步骤:(1)构造一个栈,存放运算对象。(2)读入一个用逆波兰式表示的简单算术表达式。(3)自左至右扫描该简单算术表达式并判断该字符,如果该字符是运算对象,则将该字符入栈。若是运算符,如果此运算符是二目运算符,则将对栈顶部的两个运算对象进行该运算,将运算结果入栈,并且将执行该运算的两个运算对象从栈顶弹出。如果该字符是一目运算符,则对栈顶部的元素实施该运算,将该栈顶部的元素弹出,将运算结果入栈。(4)重复上述操作直至扫描完整个简单算术表达式的逆波兰式,确定所有字符都得到正确处理,我们便可以求出该简单算术表达式的值。三、上机结果程序清单:#include#include#include#include#include#include using namespace std;文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7char str50;/用于存放原来的表达式int top;/栈顶指针char stack50;/定义栈,用于计算逆波兰式char ex50;/存放后缀表达式double _stack50;/定义栈,用于计算逆波兰式子int flag50;/用于区分+、-号的含义,0 表示运算符,1 表示正负号/生成逆波兰式void NiBolan()memset(flag,0,sizeof(flag);/flag 初始值设为0 char ch=str0;int i=1,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=)/设置 运算符优先级为最高 ext=stacktop;top-;t+;top+;stacktop=ch;break;case+:case-:文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7/当 ch 为+、-号是,若前面相邻字符不是)或数字且后面相邻字符是数字时表示正负号if(isdigit(stri)&!isdigit(stri-2)&stri-2!=)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;文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7屏幕截图:四、讨论与分析通过这次的实验,知道了算符优先文法的概念以及这个文法的简单应用。通过对中缀表达式转化为后缀表达式的实验,我对算符优先级有了更深的理解。并解决了如何构造这些优先级以及如何运用他们来计算后缀表达式,同时计算出表达式的结果。算符优先文法是一种自下而上的分析法,其文法的特点是文法的产生式中不含两个相邻的非终结符。一般的表达式就属于这种文法。文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7文档编码:CS10L6N10E10B4 HW5H3N4G9P2 ZY3E4Q4O1T7