0

在编译器类中,我们为一种简化版本的 C 语言制作了一个解析器。解析器所做的只是根据输入创建一个符号表,如果语法不正确,则退出并显示错误消息。现在我们需要获取一个用这种语言编写的输入文件,并将其转换为 mips 代码(实际上是 linux 的 mips 的 spim 代码。)为什么需要符号表?没有符号表可以吗?

4

1 回答 1

2

符号表将告诉编译器的任何进一步传递,是否任何给定名称是(例如)类型名称、函数名称、变量名称等等。您如何在不知道的情况下将 C 转换为汇编代码(或任何其他实质性操作?!例如,考虑一下X * Y;——这是将 X 乘以 Y,还是将 Y 声明为指向 X 的指针?您需要知道 X 是否命名了一个类型,以消除歧义——除了符号表还能告诉您什么?

于 2009-12-17T06:23:15.730 回答