【问题标题】:Compiler: what is the best way to fill the symbol table?编译器:填充符号表的最佳方法是什么?
【发布时间】:2013-05-03 16:13:32
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: compiler-construction antlr abstract-syntax-tree symbol-table


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-18
      • 1970-01-01
      • 2012-08-30
      • 2010-11-26
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      相关资源
      最近更新 更多