哈工大(深圳)《编译原理》实验报告-语义分析与中间代码生成

需积分: 0 0 下载量 53 浏览量 更新于2024-08-05 收藏 276KB PDF 举报
"这份实验报告详细介绍了哈尔滨工业大学(深圳)计算机科学与技术专业学生方澳阳在2020春季学期《编译原理》课程中的实验三——典型语句的语义分析及中间代码生成。实验旨在深化对自顶向下和自底下上语法制导翻译技术的理解,以及巩固对语义分析和中间代码生成的认识。实验使用C++编程语言,IDE为Clion 2020.2,支持Windows 10和Linux平台。实验内容包括设计翻译方案,生成三地址码中间代码,并对给定的程序段进行分析。实验结果显示,对于输入的赋值语句,成功生成了相应的三地址码,并输出了符号表。" 在《编译原理》的实验三中,方澳阳同学主要关注了两个重要的编译器设计方面:语义分析和中间代码生成。语义分析是编译过程的关键步骤,它确保程序的逻辑正确性,而中间代码生成则是将高级语言转换为更底层、易于机器处理的形式。 实验采用了LR1文法进行自底向上的语法分析。自底向上的分析方法从输入的单词串开始,逐步规约到文法的起始符号。在规约过程中,每次遇到一个产生式的规约,都会生成对应的中间代码。这里,`translate()`函数用于将产生式序列转化为三地址码,`clearUselessProducer()`函数用于消除多余的三地址码序列,`notEnd()`函数则用于判断字符串是否为非终结符。 三地址码是一种常用的中间表示形式,它以三个操作数的形式表示一条指令,如赋值操作。在实验中,方澳阳实现了对常见赋值语句的语义分析,例如乘法、加法、减法和除法。当解析到这些操作时,生成相应的三地址码,如`A=2*10`、`f=A+A`等。实验结果展示了输入语句对应的三地址码序列,以及输出的符号表,符号表记录了变量名、值和类型信息。 实验的目的是让学生深入理解编译器如何将高级语言转换为机器可执行的代码。通过实际操作,学生能够更好地掌握自顶向下和自底下上的翻译技术,以及语义分析和中间代码生成的基本原理。这样的实践有助于培养学生的编程能力和对编译原理的理论理解。