Мне нужен язык выражений, который работает на JVM и включает поддержку
- математические выражения, включая приоритет оператора
- строковые выражения, такие как подстрока и т. Д.
- поддерживает именованные функции
- это позволяет мне точно определять, кто и какие функции может выполнять.
- переменные чтения / записи, которые «не имеют типа» / разрешают преобразование типов контролируемым образом.
- не допускает произвольные сценарии Java.
- не должно быть возможности включать конструкции, такие как new Someclass ()
- не может выполнить произвольный статический или иной метод
- не допускает никаких OGNL-подобных выражений.
- Я хочу, чтобы только функции, которые я отображаю, были доступны.
- поддержка управляющих конструкций, например, если это то, что на данный момент необязательно.
- должен быть встраиваемым.
Этот предыдущий вопрос stackoverflow похож, но:
- на самом деле не отвечает «как» или «что», как указано выше,
- разрешает выражения объектов Java, генерируя исключение из SecurityManager, чтобы остановить выполнение метода, что является неприятным и неправильным.
- java-объект, такой как выражения, должен быть ошибкой во время разбора.
jexel кажется наиболее близким совпадением, но Лицензия немного ужасна (GPL / Commercial).