Compiler construction 编译器:填充符号表的最佳方法是什么?

Compiler construction 编译器:填充符号表的最佳方法是什么?,compiler-construction,antlr,abstract-syntax-tree,symbol-table,Compiler Construction,Antlr,Abstract Syntax Tree,Symbol Table,我想为tiny C语言构建自己的编译器: 我已经编写了语法,使用ANTLR构建了AST(抽象语法树),并实现了我的符号表(下面是GRosemberg) 我必须用我的符号填充我的符号表,但我真的不知道如何 我是否必须运行y AST并根据找到的令牌在符号表中放置新符号或创建新范围 我必须在语法中使用语义功能吗,我听说过树行者 对于这一步,我有点不知所措,是否有人有一个例子,或者可以告诉我如何做,请?对于ANTLR 3&2,您可以在解析器操作中轻松完成。当您跨越范围边界并在适当的地方添加条目时,您

我想为tiny C语言构建自己的编译器: 我已经编写了语法,使用ANTLR构建了AST(抽象语法树),并实现了我的符号表(下面是GRosemberg)

我必须用我的符号填充我的符号表,但我真的不知道如何

  • 我是否必须运行y AST并根据找到的令牌在符号表中放置新符号或创建新范围
  • 我必须在语法中使用语义功能吗,我听说过树行者

对于这一步,我有点不知所措,是否有人有一个例子,或者可以告诉我如何做,请?

对于ANTLR 3&2,您可以在解析器操作中轻松完成。当您跨越范围边界并在适当的地方添加条目时,您必须推送和弹出范围。您可以在中看到如何在真正的C解析器中实现这一点。如果您愿意,也可以在树解析器中执行此操作

在Antlr4中,您将编写一个执行push/pop并添加条目的侦听器。如果您的语法支持typedef,比如C,那么您需要在语法操作中处理它,因为符号表会影响解析。不过Tiny C不需要这么做