Лучший язык выражений в песочнице для JVM - PullRequest
3 голосов
/ 26 октября 2010

Мне нужен язык выражений, который работает на JVM и включает поддержку

  • математические выражения, включая приоритет оператора
  • строковые выражения, такие как подстрока и т. Д.
  • поддерживает именованные функции
    • это позволяет мне точно определять, кто и какие функции может выполнять.
  • переменные чтения / записи, которые «не имеют типа» / разрешают преобразование типов контролируемым образом.
  • не допускает произвольные сценарии Java.
    • не должно быть возможности включать конструкции, такие как new Someclass ()
    • не может выполнить произвольный статический или иной метод
  • не допускает никаких OGNL-подобных выражений.
  • Я хочу, чтобы только функции, которые я отображаю, были доступны.
  • поддержка управляющих конструкций, например, если это то, что на данный момент необязательно.
  • должен быть встраиваемым.

Этот предыдущий вопрос stackoverflow похож, но:

  • на самом деле не отвечает «как» или «что», как указано выше,
  • разрешает выражения объектов Java, генерируя исключение из SecurityManager, чтобы остановить выполнение метода, что является неприятным и неправильным.
  • java-объект, такой как выражения, должен быть ошибкой во время разбора.

jexel кажется наиболее близким совпадением, но Лицензия немного ужасна (GPL / Commercial).

1 Ответ

0 голосов
/ 31 августа 2012

Если вы хотите, чтобы только сценарии выводили текст, то Apache Velocity вполне соответствует вашим ограничениям.Он работает в среде, где у него есть доступ только к тем объектам, которые вы ему предоставляете, но он может выполнять такие вещи, как базовая математика.

Лицензия Apache немного более дружелюбна, чем GPL.

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