2008-09-28 25 views
2

有段時間,我正在研究處理代碼的算法,並且需要一個反射API。我們對多種語言的實現感興趣,但語言的反射API不適用於任何其他語言。那麼是否有任何東西可以適用於所有語言,或者可能適用於少數主流語言(.NET,Java,Ruby,Python)通用反射API?

如果沒有任何東西,是否可以構建這樣的東西可以處理來自不同語言的類。

你怎麼會去多種語言的

+0

我不明白你想要什麼。 API一直是針對單一語言的。你想用它做什麼?你可以添加一個樣本。 – Horcrux7 2008-09-28 09:36:03

回答

1

我不相信有萬能反射API不必過程面向對象的代碼以統一的方式。任何Reflection API都依賴於編譯器爲語言結構生成的元數據,並且這些元數據可能因語言而異,儘管跨多種語言存在一個公共子集。

1

在.NET中有CodeDOM,它提供了一種生成通用語法樹,然後將其序列化爲(C#,VB .NET等)代碼和/或編譯它的方法。當然,這是Reflection的鏡像,但如果有人寫過一個工具直接從IL生成AST,功能可能會重疊。

無論如何,它是我能想到的最接近的事物。

1

的反射API取決於爲代碼生成的元數據,這樣你就可以擁有所有的語言在JVM上,或者所有的語言在CLR通用API ...但它不會真的有可能使一個Python,Java和VB等...

0

如果你想要一個通用的API,你需要走出語言。請參閱我們的DMS meta-tool以處理任意語言,並回答任意問題,包括您認爲是反思的問題。 (Op要求支持各種語言:DMS有C#,VB.net,Java和Python的完整解析器,Ruby尚未列入清單;我們正在研究它)。