本实验报告详细探讨了编译原理课程中语义分析阶段的关键概念和实践操作。通过一系列具体的实验任务,深入理解并实现了类型检查、作用域解析等核心技术,并结合实例进行了错误检测与处理,旨在提升对程序语言结构及其约束的理解能力。
实验目的:通过上机实习加深对语法制导翻译原理的理解,并掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。
实验要求:采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。
算法思想:
1. 设置语义过程。
(1)emit(char *result, char *ag1, char *op, char *ag2) 该函数的功能是生成一个三地址代码送到四元式表中。 四元式的结构如下:
```c
struct {
char result[8];
char ag1[8];
char op[8];
char ag2[8];
}quad[20];
```
(2)char *newtemp() 该函数返回一个新的临时变量名,临时变量的命名顺序为T1, T2, …
```c
char *newtemp(void) { /* 函数定义略 */ }
```