2016-07-07 53 views
1

「...所有節點都有一個src註釋以指向物理源位置,所有聲明都可能對其邏輯位置標識符具有decl註釋... 「 是摘自該論文的一行:M3:Rascal中代碼分析的通用模型。M3模型中的@src和@decl註釋的替代實現

但是,當爲相對簡單的語言創建新的M3模型時,所有源代碼元素都有自己的命名模式,並且所有類型的元素都在AST中明確定義,因此無需解析其類型seperately。那麼它會被認爲是「好的」來放棄物理源代碼位置,將邏輯源代碼位置放置在@src註釋中,因爲對於所有節點,可以創建邏輯源代碼,而不是使用@decl註釋?這會被認爲是M3模型的一個不好的實現,還是會很好,因爲簡單的語言可以簡化M3模型的實現?

因爲否則所有節點都會得到帶有物理源代碼位置的@src,以及帶有邏輯源代碼位置的@decl,從而在一個邏輯源代碼位置就足夠的情況下混淆AST。

回答

1

這是一個很好的問題。我認爲如果您不註冊@src註釋,我知道的當前IDE工具集或其他工具不會中斷。所以從這個意義上說沒有什麼不好的事情發生

如果在M3 declarations表中沒有源位置,那麼會出現什麼問題。所以如果你可以在沒有AST註釋的情況下製作這張表格,那麼你就可以。

不久,M3模型將轉向使用關鍵字字段,然後我們甚至可以引入一個默認實現,如果不存在srcdecl,則默認實現。

那麼,爲什麼不試試你的建議,看看它失敗的地方?如果我們以後需要@src,那麼將其添加回來並不難!

+0

所以它不是像我不使用src註釋,我使用它,我只是把邏輯源代碼的位置,而不是物理。我不使用的註釋是decl註釋,因爲那樣會變得過時。 由於仍然使用src註釋,M3聲明表保持正常工作。到目前爲止,似乎沒有任何失敗。所以我應該沒問題。 – Nicasso

+0

嗯..好,讓我們來了解一下。 Eclipse在這個設計決策中如何使用大綱功能?它是否仍然按預期工作? – jurgenv