2010-11-06 36 views
0

我正在嘗試爲PLT計劃(球拍)中的作業分配創建一個簡單的語言解釋器。爲了跟蹤變量綁定,我似乎無法創建和更新跟蹤分配的變量及其值的環境。在MIT Scheme Reference中,我發現有關環境是第一類對象的信息,但使用列出的命令(例如環境約束?)在PLT方案中不起作用。PLT計劃 - 跟蹤環境變量綁定

什麼是實現這一目標的方案,而無需使用最好的辦法讓或任何勢在必行樣()功能?

回答

2

如果你只是在Scheme中創建一個解釋器,你可能想創建自己的環境數據結構,可能是一個關聯列表:((var1 val1) (var2 val2) (var3 val3))等等。將環境作爲列表傳遞並更新是比較簡單的,而不是處理任何特定Scheme的環境實現。

+0

我今天早些時候完成了這個問題,這是我想出的解決方案。 – XBigTK13X 2010-11-07 00:01:21

0

在文檔中查找namespace functionality左右的任何內容。

+0

我很欣賞這個鏈接,因爲它將來無疑會對我有所幫助。但是,對命名空間相關過程的任何調用也會導致PLT方案出錯,引用未定義的標識符:[過程名稱]' – XBigTK13X 2010-11-06 20:09:42

+1

顯然,創建自己的解釋器與使用Racket命名空間完全不同!你會想要使用任何適合工作的數據結構,比如上面提到的alist或散列表,或者任何其他解決方案。當你想做反射工作時,你會使用命名空間 - 比如在Racket上定義一種基於*的新語言(這恰好是一種使得這一點非常簡單的語言)。 – 2010-11-07 00:27:36