算术表达式到四元式翻译的编译程序设计.doc_第1页
算术表达式到四元式翻译的编译程序设计.doc_第2页
算术表达式到四元式翻译的编译程序设计.doc_第3页
算术表达式到四元式翻译的编译程序设计.doc_第4页
算术表达式到四元式翻译的编译程序设计.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编译原理实验报告算术表达式到四元式翻译的编译程序设计班级学号 姓 名 成 绩 指导教师 沈阳理工大学应用技术学院2012 年 7 月实验一 1实验时间: 2012-07-072实验地点: 6#5063实验题目: 算术表达式到四元式翻译的编译程序设计4实验目的: 掌握将算术表达式翻译成四元式的方法及过程5实验内容:设计一个语法制导翻译器,将算术表达式翻译成四元式。要求:先确定一个定义算术表达式的文法,为其设计一个语法分析程序,为每条产生式配备一个语义子程序,按照一遍扫描的语法制导翻译方法,实现翻译程序。对用户输入的任意一个正确的算术表达式,程序将其转换成三.四元式输出(可按一定格式输出到指定文件中)。6实验预习: 四元式是一种更接近目标代码的中间代码形式。由于这种形式的中间代码便于优化处理,因此,在目前许多编译程序中得到了广泛的应用。具体的形式为:(op,arg1,arg2,result) 。例如,语句 a=b+(c-d)*e+f/g*(h-i+j/(k+l*m-n) 的四元式表示如下: (1) (-,c,d,t1)(2) (*,t1,e,t2) (3) (+,b,t2,t3) (4) (/,f,g,t4) (5) (+,t3,t4,t5)(6)(-,h,i,t6)(7)(*,l,m,t7)(8)(+,k,t4,t7)(9)(-,t7,n,t8)(10)(/,j,t8,t9)(11)(+,t6,t9,t10)(12)(=,t10,-,a)1).检查输入的元素; 2).如果是一个操作数,则进栈; 3).如果是操作符,则 i). 如果符号栈不为空或者此操作符的优先级大于符号栈栈顶的优先级,则将此运算符压栈; ii).如果符号栈不为空或者此操作符的优先级小于符号栈栈顶的优先级,栈顶操作符出栈并进行相应的操作; 4).假定输入完毕,栈中剩余的所有操作符出栈并进行相应操作。 7 总体设计描述 按照顺序将任意一个正确的算术表达式拆分成操作符和操作数部分并入栈,而后比较优先级按照优先级高低出栈,执行操作:将算术表达式转换成四元式输出。本程序共有两个函数,一个将算术表达式翻译成四元式的函数 int translate(string s),是本程序的主要函数;另一个是主函数,负责调用翻译函数和输入输出处理。8运行步骤与结果 输入为一个标准的算术表达式,输出为四元式,按行区分,如输入:a=b*(c-d+f*(g+h-i/j+k) 输出为:9 程序清单#include string.h#include stdio.hchar w;int j=1;struct TOKEN char t; int i; ;struct TOKEN word, sem10; int i_sem;struct QT char w; struct TOKEN word1; struct TOKEN word2; struct TOKEN temp; ;char exp50; int i=0;struct QT qt30; int q=0;int D();int E();int T();int F();void next();void newt();void quat(char);int main() clrscr(); printf(please input your expression: ); scanf( %s,exp); next(); D(); if (w=0) printf(n); for (i=0;i=a & w=0 & w=9) word.t=w; word.i=0 ; sem+i_sem=word;else printf(err); return 0; next(); return 1;void next() w=expi; i+;void newt() word.t=t; word.i=j+;void quat(char ww) newt(); qtq.w=ww; qtq.word1=semi_sem-1; qtq.word2=semi_sem; qtq.temp=word; i_sem-; i_sem-; sem+i_sem=word; q+;10 实验总结: 编译原理中有许多知识点是需要熟练掌握的。倘若只看书,不做大量的练习,对知识点的掌握也会显得十分肤浅。在学习文法时,对文法的组成,用法都较为明了,而在真正做题时却感到十分吃力。而在之后的词法分析和语法分析中,我感到在看基本原理时十分困难,通常要长时间钻研才能够有所了解,而一旦掌握了基本原理,做题时就感到十分顺畅了。例如,在刚接触到LR(0)文法时,我用了大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论