我正在開發一個小型的基於對象的編程語言。關於編譯器符號表的簡單問題
雖然我有點迷失在一件簡單的事情上。我已經實現了幾個訪問者,他們收集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