1

我想建立自己的编译器的小C语言: 我已经让我的语法,使用ANTLR建立一个AST(抽象语法树),并实现我的符号表(以下GRosemberg code编译器:填充符号表的最佳方法是什么?

我必须填写我的符号表与我的符号,但是我真的不知道该怎么..

  • 我必须到y AST运行,并根据所令牌,我觉得我把一个新的符号在我的符号表或创建一个新的范围...?
  • 我是否必须在语法中使用语义功能,我听说过树Walker ......?

我对这一步有点失落,有没有人有一个例子,或者可以告诉我该怎么做?

回答

2

对于ANTLR 3 & 2您可以轻松地在解析器操作中执行此操作。当您跨越范围边界并在适当时添加条目时,您必须推送和弹出范围。您可以在http://www.antlr3.org/grammar/cgram/grammars/StdCParser.g的真正C语言分析器中看到如何执行此操作。如果您愿意,也可以在树分析器中进行。

在ANTLR 4中,您将改为编写一个执行push/pop操作并添加条目的侦听器。如果语法支持的类型定义像C一样,则需要在语法操作中处理它,因为符号表会影响解析。微小的C应该不需要那样做。

相关问题