我正在开发一个小型的基于对象的编程语言。关于编译器符号表的简单问题
虽然我有点迷失在一件简单的事情上。我已经实现了几个访问者,他们收集AST的类名,类型和参数,方法头和字段。
我的问题是现在要做什么与我的方法的身体。我应该将本地变量添加到符号表吗?
它可能看起来像在第一个不错的主意,直到一个人认为,如情况:
void myMethod() {
int i;
while (something) {
int y;
}
while (something) {
int y;
}
}
是我刚刚到i
和y
变量添加到符号表,我会得到y
是一个重复的变量。
请记住,我了解符号表范围。我无法理解的是,在方法中是否应该在符号表上随时添加和删除信息,或者如果我在访问方法时将数据永久添加到符号表中(就像我对类+字段+ methodsheader)。
重申问题:访问方法体时,我应该在访问结束时让符号表与访问前一样吗?
谢谢!
如果您仍然感兴趣并且没有一个好的解决方案,您可以将问题提交给全新的[cs.SE](http://cs.stackexchange.com)! – Raphael 2012-03-23 23:21:05