В настоящее время я работаю со специализированным, интерпретируемым языком программирования, реализованным на Java. В качестве очень небольшой части языка я хотел бы добавить возможность совершать вызовы на Java. Прежде чем я погрузился во все мельчайшие размышления, мне было интересно, знает ли кто-нибудь об общей библиотеке для того, чтобы сделать "backend" часть вызова кода Java рефлексивно.
То есть, я разбираю строку (я определяю грамматику) в некоторую структуру данных, которая представляет вызов метода Java (или конструктор или доступ к полю), а затем передает эту структуру данных в эту библиотеку, которая вызывает вызов, и возвращает результат. В частности, я бы хотел, чтобы он уже обрабатывал все крайние случаи, которые я не хочу анализировать:
- Автоматически выбирать правильный метод на основе типов аргументов (например, интеллектуального класса Class.getDeclaredMethod())
- Разделять дескрипторы между массивами и нормальными объектами
- и т.д.
Я потратил немного времени на изучение динамических языков на JVM, но они, как правило, намного сложнее, чем я ищу, или сильно оптимизированы для конкретного языка.
Другой вариант - преобразовать мою грамматику в строку на каком-то динамическом языке и вызвать ее с Rhino или что-то еще, но это немного больше накладных расходов, чем я ищу.
Спасибо!