Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
4年前关闭。
我正在用C语言编写一个编译器,该编译器会将伪Pascal指令(它们的语法现在是不相关的)解释为
语法扫描程序,它将扫描用户输入并识别令牌以供解析器处理
解析器,它将检查这些标记是否适合定义的语法产生式
符号表
我有点停留在最重要的阶段-符号表上。
我不确定该表应包括什么。当然,任何变量(标识符)及其地址。我是否应该包含诸如
就目前而言,我认为最合乎逻辑的方法是定义一个结构:
其中
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
4年前关闭。
我正在用C语言编写一个编译器,该编译器会将伪Pascal指令(它们的语法现在是不相关的)解释为
asm
输出。我现在所知道的是,我需要:语法扫描程序,它将扫描用户输入并识别令牌以供解析器处理
解析器,它将检查这些标记是否适合定义的语法产生式
符号表
我有点停留在最重要的阶段-符号表上。
我不确定该表应包括什么。当然,任何变量(标识符)及其地址。我是否应该包含诸如
if
,for
等的关键字?任何对此的指导方针将不胜感激。就目前而言,我认为最合乎逻辑的方法是定义一个结构:
struct entry{
char* name;
Vartype vartype;
int address;
}
其中
Vartype
是具有可用变量类型(integer
和real
)的枚举。然后,我将制作一系列结构并在必要时对其进行扩展。我应该如何以及何时修改它? 最佳答案
这是一本很棒的免费书:Compiler design in C
09-27 13:26