我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019跑狗图高清彩图 > 元编译程序 >

编译原理实验三:中间代码生成

归档日期:08-15       文本归类:元编译程序      文章编辑:爱尚语录

  编译原理实验三:中间代码生成_工学_高等教育_教育专区。LR(1) 中间代码生成 四元式 三地址码

  编译原理 ——语 ——语义分析 成员: 成员: 杨霞 王日日 方艳丽 030802107 030802139 030802102 福州大学 数学与计算机科学(软件)学院 实验三:语义分析: 实验三:语义分析:生成中间代码 一、实验目的 通过语法制导或翻译模式生成中间代码。 实验内容 二、实验内容 在自底向上语法分析基础上设计语义规则(语法制导翻译) ,将源程序翻译 为四元式输出. 三、实验环境 Windows microsoft visual c++ 6.0 四.实验原理 三地址码的几种常见指令: 1. X=Y OP Z 的赋值指令,其中 OP 是一个双目运算符或逻辑运算符。 2. X= Y 的复制指令。 3. 无条件转移指令 GOTO L 把下一步要执行的带有标号 L 的三地址指令 4. IF X GOTO L 或 IF FALSE X GOTO L 的条件转移指令 5. IF X RELOP Y GOTO L 的条件转移指令。 三地址码 实验环境:windows microsoft visual c++ 语法制导定义: 四元式 2 福州大学 数学与计算机科学(软件)学院 控制流语句的语法制导定义: 实验代码分析: struct midcode//四元式结构; { int label;//存放标号; char op;//存放操作符; char arg1;//存放操作数 1; char arg2;//存放操作数 2; char result;//存放目的操作数(转移标号) }m_midcode[100]; 如何实现语句的跳转:主要利用了语义规则与规约过程的结合; 例如: 3 福州大学 数学与计算机科学(软件)学院 Label 为四元式产生的新标号; Mnew 为四元式中最新的标号;el;/E.true=newlabel m_midcode[tab1+1].result=(char)(m_midcode[tab1+2].label+1);/E.false=newlabel tab2=tab1; for(;tab2t;tab2++) if(m_midcode[tab2].op==g&&(int)m_midcode[tab2].result==0) m_midcode[tab2].result=(char)(mnew-1);//S1.next=s2.next=S.next break ; } 实验结果: 4 福州大学 数学与计算机科学(软件)学院 心得体会: 四元式序列是编译原理最后一个实验, 最后的实验也要建立在之前两个实验的基 础上。但相对于之前的两个实验,语义分析比较简单一点,根据第二个实验语法分析 LR(1) 再通过一些语义规则,大致就可以做出来。在控制流语句跳转过程中,因为考虑到要修改文 法所以我并没有采用回填技术, 因此在填跳转状态需要多次遍历四元式序列。 在本学期编译 原理实践中,花了很多时间写程序,但是收获也是很大的,自身写程序的能力也得到了一定 的锻炼,也对编译原理这门课也有了深刻的体会。实验虽然做的不是很完美,但是我们已经 尽力了,总之,受益匪浅。 5

本文链接:http://rhone-credit.com/yuanbianyichengxu/630.html