gpt4 book ai didi

compiler-construction - 编译器 : what is the best way to fill the symbol table?

转载 作者:行者123 更新时间:2023-12-04 04:59:04 25 4
gpt4 key购买 nike

我想为微型 C 语言构建自己的编译器:我已经编写了我的语法,使用 ANTLR 构建了一个 AST(抽象语法树),并实现了我的符号表(在 GRosemberg code 之后)

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

  • 我是否必须运行 y AST 并根据我找到的 token 在我的符号表中放置一个新符号或创建一个新范围...?
  • 我是否必须在我的语法中使用语义函数,我听说过 tree Walker...?

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

最佳答案

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

在 ANTLR 4 中,您将改为编写一个执行推送/弹出并添加条目的监听器。如果你的语法支持像 C 这样的 typedef,你需要在语法操作中处理它,因为符号表会影响解析。不过,Tiny C 不需要这样做。

关于compiler-construction - 编译器 : what is the best way to fill the symbol table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16363348/

25 4 0