编译原理实验七中间代码生成器

2023-12-11

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

简介

本资源文件提供了一个编译原理实验七的中间代码生成器的实现。该实验旨在帮助学生加深对中间代码生成的理解,并学会如何编制中间代码生成器。通过本实验,学生将能够将任一源语言(源语言尽量与前期实验中的源语言保持一致)转化成三地址码(或其他中间表示形式),并准备2~3个测试用例来测试程序,并解释生成的中间代码。

实验目的

  1. 加深对中间代码生成的理解。
  2. 学会编制中间代码生成器。

实验任务

用C、JAVA或其他语言编写一门语言的中间代码生成器,所选实现语言应与之前语言保持一致。

实验内容

  1. 实现中间代码生成器,可以将任一源语言转化成三地址码(或其他中间表示形式)。
  2. 准备2~3个测试用例,测试程序并解释生成的中间代码。

源代码下载和说明

源代码可以通过提供的链接下载。运行方法与实验一TINY编译器相同。实验七中间代码生成器直接使用了TINY语言,在2018-2019年秋季学期,湖南大学编译原理课首次将本实验变为必做(之前是选做,但由于难度太大,基本没有学长学姐写),故本实验采用已有的代码。

实验知识点讲解和函数源代码分析

1. 中间代码生成的任务

中间代码生成属于编译器前端结构的最后一部分。首先,编译器前端读入代码,对代码进行词法分析,构建出符号序列,再将符号序列传入语法分析,构造出语法树。接下来的语义分析则是一个静态检查的过程,它判断上下文的各个结点是否符合语法规则,并报错,生成符号表。而接下来的中间代码生成则也是对于语法树进行操作,传入一棵语法树,从根结点,根据该节点的词法属性,分析词法结点之间的逻辑,翻译成合适的中间表示。

2. 实现TINY语言的中间代码生成器

本次实验要求实现一个中间代码生成器,则我们采用的方法是增量编程,在之前所构造好的TINY前期组件基础之上,构建中间代码的生成部分。

运行结果

输入数据和输出结果的示例可以在实验报告中找到。

参考资料

实验报告和详细说明可以参考提供的描述文章。

下载链接

编译原理实验七中间代码生成器分享