计算机科学与工程学院 课程设计报告 题目全称:常用边缘算法的实现 学生学号: 2506203010 姓名:王 嘉 指导老师: 职称: 指导老师评语: 签字: 课程设计成绩: 设计过程表现 设计报告质量 总分 编译器中间代码生成的研究与实现 作者: 王嘉 学号:2506203010 指导老师:吴洪 摘要: 在编译器的翻译流水线中,中间代码生成是处于核心地位的关键步骤
它的实现基于语法分析器的框架,并为目标机器代码的实现提供依据
虽然在理论上没有中间代码生成器的编译器也可以工作,但这将会带来编译器的高复杂度,低稳定性和难移植性
现代编译理论不仅要求中间代码的生成,还要求基于中间代码的优化
本文研究并实现了一个轻量级类 C 语言的中间代码生成器,并就中间代码生成的原理进行了细致的阐述
关键字:中间代码生成、语法制导翻译、翻译模式、语法树、三地址码 一、 目的及意义 在编译器的分析综合模型中,前端将源程序翻译成一种中间表示,后端根据这个中间表示生成目标代码
目标语言的细节要尽可能限制在后端
尽管源程序可以直接翻译成目标语言,但使用与机器无关的中间形式具有以下优点: 1
重置目标比较容易:不同机器上的编译器可以在已有前端的基础上附近一个适合这 台新机器的后端来生成
可以在中间表示上应用与机器无关的代码优化器
本文介绍如何使用语法制导方法,基于一种轻量级的类C 语言FineC 的词法分析器和语法分析器,一遍地将源程序翻译成中间形式的编程语言结构,如声明、赋值及控制流语句
为简单起见,我们假定源程序已经经过一遍扫描,生成了相应的词法记号流和符号表、词素表结构
基于FineC 语法标准的语法分析器框架也已经能够正常工作
我们的任务就是补充这个框架,使其在语法分析的过程中生成相应的中间代码,并将必要的变量和函数声明存放在一个符号表链中
二、 目标语言词法和语法标准: 这里定义一个