Универсальный API отражений? - PullRequest
       24

Универсальный API отражений?

2 голосов
/ 28 сентября 2008

Некоторое время назад я работал над алгоритмом, который обрабатывал код и требовал API отражений. Мы были заинтересованы в его реализации для нескольких языков, но API отражений для языка не работал бы для любого другого языка. Итак, есть ли что-то вроде «универсального API отражений», который будет работать для всех языков или, может быть, для нескольких основных языков (.NET, Java, Ruby, Python)

Если их нет, возможно ли создать такую ​​вещь, которая сможет обрабатывать классы из разных языков.

Как бы вы использовали единый способ обработки ОО-кода на нескольких языках

Ответы [ 4 ]

1 голос
/ 28 сентября 2008

В .NET есть CodeDOM , который предоставляет способ генерации универсального синтаксического дерева, а затем сериализации его в виде кода (C #, VB .NET и т. Д.) И / или компиляции. Конечно, это зеркальное отражение Reflection, но если кто-нибудь напишет инструмент для генерации AST непосредственно из IL, функциональность может начать перекрываться.

В любом случае это самая близкая вещь, о которой я могу подумать.

1 голос
/ 28 сентября 2008

API отражения зависит от метаданных, сгенерированных для кода, поэтому вы можете иметь универсальный API для всех языков в JVM или всех языков в CLR ... но на самом деле было бы невозможно сделать такой делает Python, Java, VB и т. д. ...

1 голос
/ 28 сентября 2008

Я не верю, что есть универсальный Reflection API. Любой API Reflection зависит от метаданных, которые компилятор генерирует для языковых конструкций, и они могут сильно различаться от языка к языку, даже несмотря на наличие общего подмножества для нескольких языков.

0 голосов
/ 08 сентября 2011

Если вам нужен универсальный API, вам нужно выйти за пределы языка. См. Наш мета-инструмент DMS для обработки произвольных языков и ответов на произвольные вопросы, в том числе те, которые вы считаете рефлексивными. (Оператор попросил поддержки для разных языков: в DMS есть полные парсеры для C #, VB.net, Java и Python. Руби еще нет в списке; мы работаем над этим).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...