编译原理-中间代码优化.docx
文本预览下载声明
编译原理-实验4.中间代码优化实验报告实验目的理解中间代码优化的过程和基本方法,掌握0型四元式、1型四元式和2型四元式的基本块构造。实验要求编制程序,完成局部优化过程中的基本块划分。给定一段代码,判定程序的入口语句,划分基本块,删除无用产生式和冗余节点。补充完整的源程序代码#include list#include string#include vector#include iostream#include stdio.husing namespace std;/********************************************************************//* Deceleration of structures *//********************************************************************/struct Four{string op;// 操作符string arg1;// 第一个操作数string arg2;// 第二个操作数string result;// 结果intstylenum;// 结点类型struct Four *next;// 指向下一条语句的起始位置struct Four *last;// 指向上一条语句的起始位置};structDagNode{ string bsf;// 标识符string var;// 副标识符int flag;// 标记位structDagNode *lchild;// 指向孩子的指针structDagNode *rchild;// 指向右孩子的指针structDagNode *next;// 指向下一个结点};/********************************************************************//* Global variables *//********************************************************************/Four *fhead;DagNode *nhead;std::listDagNode* list_Dag;vectorstring input_source;/********************************************************************//* implementation of functions *//********************************************************************/voiddo_input(){/*第一个测试用例:测试时去掉对应的注释input_source.push_back( ,5, ,T0);input_source.push_back(*,2,T0,T1);*//*第二个测试用例input_source.push_back( ,3.14, ,T0);input_source.push_back(*,2,T0,T1);input_source.push_back(+,R,r,T2);input_source.push_back(+,T1,T2,A);input_source.push_back( ,A, ,B);*//*第三个测试用例input_source.push_back(*,2,T0,T3);input_source.push_back(+,R,r,T4);input_source.push_back(*,T3,T4,T5);input_source.push_back(-,R,r,T6);input_source.push_back(*,T5,T6,B);*//*第四个测试用例input_source.push_back(*,7,4,T1);input_source.push_back(+,5,T1,T2);input_source.push_back( ,T2, ,a);input_source.push_back(+,a,9,T3);*//*第五个测试用例结合实验3的输出结果input_source.push_back(/,3,2,t1);input_source.push_back( ,t1, ,a);input_source.pu
显示全部