如何在 C 中为 Pascal 子集编译器生成符号 table?
How to generate a symbol table for a Pascal-subset compiler in C?
我正在用 C 编写一个编译器,它将伪 Pascal 指令(它们的语法现在不相关)解释为 asm
输出。我现在所知道的是,我需要:
- a 语法扫描器 将扫描用户输入并识别标记以供解析器处理
- a parser 它将检查这些标记是否符合定义的语法产生式
- 一个符号table
我有点卡在最重要的阶段 - 符号 table。
我不确定这个 table 中应该包含什么。当然,任何变量(标识符)及其地址。我是否应该包含 if
、for
等关键字?任何关于此的指导方针将不胜感激。
目前,我认为最合乎逻辑的方法是定义一个结构:
struct entry{
char* name;
Vartype vartype;
int address;
}
其中 Vartype
是具有可用变量类型(integer
和 real
)的枚举。然后我会制作一个结构数组并在必要时扩展它。我应该如何以及何时修改它?
这是一本很棒的免费书籍:Compiler design in C
我正在用 C 编写一个编译器,它将伪 Pascal 指令(它们的语法现在不相关)解释为 asm
输出。我现在所知道的是,我需要:
- a 语法扫描器 将扫描用户输入并识别标记以供解析器处理
- a parser 它将检查这些标记是否符合定义的语法产生式
- 一个符号table
我有点卡在最重要的阶段 - 符号 table。
我不确定这个 table 中应该包含什么。当然,任何变量(标识符)及其地址。我是否应该包含 if
、for
等关键字?任何关于此的指导方针将不胜感激。
目前,我认为最合乎逻辑的方法是定义一个结构:
struct entry{
char* name;
Vartype vartype;
int address;
}
其中 Vartype
是具有可用变量类型(integer
和 real
)的枚举。然后我会制作一个结构数组并在必要时扩展它。我应该如何以及何时修改它?
这是一本很棒的免费书籍:Compiler design in C