Я работаю над Java-приложением, которое рассуждает на основе базовых терминов языка, тривиально реализованных в виде композитов (все они создаются внутренне, а не анализируются из текста). Теперь мне нужно применить набор правил переписывания для термина «язык», и этот вопрос становится действительно раздражающим, когда я выполняю его вручную. После некоторых исследований я обнаружил, что Tom и, возможно, Stratego / XT могут стать альтернативой для добавления возможностей переписывания терминов в Java. У кого-нибудь есть опыт, чтобы подсказать мне, в чем преимущества и недостатки обоих? Кто-нибудь знает о какой-либо альтернативе? Учитывая размер программного обеспечения, возможность переписывать термины, реализованные в виде структур данных POJO, является обязательным условием (я близок к крайнему сроку и не хочу заменять текущее представление терминов другим, хотя, скорее всего, это произойдет в будущем).