在编译器中实现符号表的替代方法是什么?

时间:2013-11-02 16:45:40

标签: python design-patterns compiler-construction visitor symbol-table

我正在为本学期的一个类编写一个编译器,虽然我有一个符号表的工作实现,但我对它的实现有点不舒服。 由于我在Python中执行该项目,因此我决定采用OO方法,并且我的AST节点都有accept方法来实现访问者模式。我对所有类型的节点都有preVisitpostVisit方法,我使用它们来进入/退出新范围并向表添加新绑定。它有效,但我对我的符号表是“短暂的”并且与这个访客类绑定这一事实感到不安。我通过继承符号表访问者类来实现类型检查,我需要非常小心我对超类的调用,将它们准确地放在正确的位置。这个实现的脆弱性以及编译器的任何阶段需要与访问者类紧密耦合的事实让我感到有些不安。

我想知道人们通常在其他方面实现符号表吗?由于该信息纯粹是静态的,是否可以直接添加到AST节点中?有没有办法创建一个可以创建一次的表,并且可以在正确的上下文中查找符号?另外,纯功能程序员如何解决这个问题呢?

0 个答案:

没有答案