第一范文网 - 专业文章范例文档资料分享平台

编译原理课程设计报告(一个完整的编译器)

来源:用户分享 时间:2025/5/26 13:11:26 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

voidtranslate1();/*生成四元式翻译函数,即主函数*/ voidactionprep();/*四元式预处理,使之更适应生成目标代码*/ 这里需要注意到的是,动作序列的获取,其实是在LL1语法分析的时候已经获取道理相应动作,方法很简单,通过不断确定语法分析栈顶,直接确认其所可能具有的动作序列,并逐个直接导入文件中。 3.5.5运行截图

3.6中间代码优化模块 (负责人:宋世波) 3.6.1 功能 1.划分基本块 2.产生DAG图 3.优化节点

4.输出优化后的四元式到文件中

49

我们在编写程序中,很难做到所书写的程序是最优的,比如定义了后面不曾使用的变量,对同一对象赋了多个不同的变量名,这些虽然不影响程序的正确性,但是在程序进行编译成目标代码的过程中,会无端增加四元式的个数从而生成众多不必要的目标代码,

因此,在生成目标代码前,我们有必要进行这样一个优化的操作来尽可能的缩短最终四元式的个数,为产生更高效的目标代码提供前提保障。 优化方法:

DAG(Directed Acyclic Graph)是指无环有向图;这里用 来对基本块内的四元式序列进行优化。

采用老师上课时所讲的基于DAG的局部优化算法,重组中间代码生成

过程中生成的四元式序列,以达到对表达式的优化。 3.6.2 数据结构

structDAG_node {/*DAG图节点及链节点*/ };

structDAG {/*DAG图*/

char mes[15];/*节点信息*/ tvp it;/*节点类型*/ structDAG_node *synonymous;

int ope;/*节点运算符*/ int level;

structDAG *left;/*左叶子*/ structDAG *right;/*右叶子*/

50

编译原理课程设计报告(一个完整的编译器).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0qp3z8s6p477t6k14pg60zn011oo6h01akg_13.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top