前段时间我正在研究一种处理代码的算法,并且需要一个反射 API。我们对它在多种语言中的实现很感兴趣,但是一种语言的反射 API 不适用于任何其他语言。那么是否有任何类似“通用反射 API”的东西适用于所有语言,或者可能适用于一些主流语言(.NET、Java、Ruby、Python)
如果没有,是否有可能构建这样一个可以处理来自不同语言的类的东西。
您将如何使用一种统一的方式来处理来自多种语言的 OO 代码
前段时间我正在研究一种处理代码的算法,并且需要一个反射 API。我们对它在多种语言中的实现很感兴趣,但是一种语言的反射 API 不适用于任何其他语言。那么是否有任何类似“通用反射 API”的东西适用于所有语言,或者可能适用于一些主流语言(.NET、Java、Ruby、Python)
如果没有,是否有可能构建这样一个可以处理来自不同语言的类的东西。
您将如何使用一种统一的方式来处理来自多种语言的 OO 代码
我不相信有通用的反射 API。任何反射 API 都依赖于编译器为语言构造生成的元数据,并且这些元数据可能因语言而异,即使在多种语言中有一个公共子集也是如此。
反射 API 依赖于为代码生成的元数据,因此您可以为 JVM 上的所有语言或 CLR 上的所有语言提供通用 API……但实际上不可能制作出 Python 的通用 API, Java、VB等...
在 .NET 中有CodeDOM,它提供了一种生成通用语法树的方法,然后将其序列化为(C#、VB .NET 等)代码和/或编译它。当然,这是反射的镜像,但是如果有人编写了一个工具来直接从 IL 生成 AST,那么功能可能会开始重叠。
无论如何,它是我能想到的最接近的东西。
如果你想要一个通用的 API,你需要跳出语言。请参阅我们的DMS 元工具,用于处理任意语言并回答任意问题,包括您认为是反思的问题。(Op 要求支持各种语言:DMS 具有针对 C#、VB.net、Java 和 Python 的完整解析器。Ruby 尚未在列表中;我们正在努力)。