0
有什麼方法可以複製ParserRule?我需要一個真正的深層拷貝,所以copyFrom()並不能實現這個功能。或者我必須重新解析代碼?如何複製RuleContext
另一種想法如何解決以下也將大加讚賞:
我工作的一個編譯器,轉換舊的遺留代碼,以現代編程語言,在這種情況下,EGL - > Java的。 EGL有一個叫做Standalone Function的概念,它與C宏相似。這意味着函數中的代碼可以引用調用範圍中的符號。因此,定義和解析符號和類型提升都是依賴於上下文的。
在ANTLR3中,我們通過dupTree()解決了這個問題,並簡單地在每個調用範圍內創建了一個副本。
動態類型不是一個選項。
實施例(僞碼)來說明:
Program A
int var = 4;
saf(); # Prints 5
end A;
Program B
String var = "abc";
saf(); # Prints abc1
end B;
function saf()
int j = 1;
print(var + j);
end saf;
我希望副本訪問者或偵聽器是自動生成的:( – Y2i