Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        4年前关闭。
                                                                                            
                
        
我正在用C语言编写一个编译器,该编译器会将伪Pascal指令(它们的语法现在是不相关的)解释为asm输出。我现在所知道的是,我需要:


语法扫描程序,它将扫描用户输入并识别令牌以供解析器处理
解析器,它将检查这些标记是否适合定义的语法产生式
符号表


我有点停留在最重要的阶段-符号表上。
我不确定该表应包括什么。当然,任何变量(标识符)及其地址。我是否应该包含诸如iffor等的关键字?任何对此的指导方针将不胜感激。

就目前而言,我认为最合乎逻辑的方法是定义一个结构:

struct entry{
    char* name;
    Vartype vartype;
    int address;
}


其中Vartype是具有可用变量类型(integerreal)的枚举。然后,我将制作一系列结构并在必要时对其进行扩展。我应该如何以及何时修改它?

最佳答案

这是一本很棒的免费书:Compiler design in C

09-27 13:26