Так что же такое цифра DSL? В Velocity есть язык, который особенно хорош для создания текстового контента. Это предметно-ориентированный язык. Если у вас есть конкретные требования, которые не удовлетворяются шаблонизаторами и их языками, вы можете лучше описать, каковы эти требования.

есть требование создавать сложные строки фиксированной длины и переменной длины. Эти строки могут представлять профиль клиента, заказ и т. Д. Какой язык программирования на основе JVM вы, ребята, предлагаете?

Идея заключается в том, чтобы конечный пользователь создал строки, используя этот DSL. Поэтому я ищу проверки, дополнения кода и т. Д.

 hhafez24 янв. 2011 г., 10:32
как насчет очень быстро? будет очень быстро делать? или только супер быстро? J / K: P
 Aravind R. Yarram24 янв. 2011 г., 05:27
@EnabrenTane - это не должно быть супер быстро
 EnabrenTane24 янв. 2011 г., 05:15
Как быстро это должно быть? Как скоро вам нужно сделать это?
 Jeb14 дек. 2011 г., 18:01
Должен ли он быть в состоянии выполнить Kessel Run менее чем за 12 парсек? Потому что я не знаю об этом ...

Ответы на вопрос(8)

Используйте Лисп который работает на JVM. Некоторые варианты у вас есть:

ClojureJSchemeSISCABCLBigloo (Не работает на JVM, но имеет хорошую совместимость с Java).

Естьхорошая бесплатная книга это объясняет, как использовать Lisp для разработки программного обеспечениявверх дномт.е. какрасти Лисп в язык, который идеально подходит для решения проблемы под рукой.

Языки ввперед Семья также отлично подходит для определения DSL. Есть несколько, которые работают на JVM:

NiueМисти Бич Форт
 raju-bitter26 авг. 2012 г., 16:23
Вот список DSL, созданных с помощью Clojure:stackoverflow.com/a/3968289/410652

Внешний DSL полностью отделен от вашего языка хоста, т.е. вы пишете его вне языка, но обычно используется для генерации кода на языке хоста. Для этого подхода XText с XPand, вероятно, являются лучшими инструментами, поскольку простой файл грамматики генерирует полный редактор на основе Eclipse для нового DSL, и вы можете использовать шаблоны кода в XPand для генерации реального кода Java. XTend и XPand написаны на Java, но это случайно, так как они могут быть написаны на чем угодно, если в конце процесса вы получите код Java. Недостатком этого подхода является то, что для любой достаточно сложной проблемы язык станет довольно сложным, и потребуется много работы по грамматике и даже больше по шаблонам генерации кода. Вы не можете использовать какие-либо функции на главном языке, такие как оценка выражений, поэтому все это необходимо перестроить в DSL, если вам это нужно. XText в ближайшее время будет включать XBase, который является частичным языком, который будет включать выражения, чтобы помочь здесь.

Другой подход - это встроенный DSL, в котором высокоуровневые доменные возможности выражаются на языке хоста либо с помощью конструкций более высокого порядка (таких как HOF и монады), обычно встречающихся в функциональных языках, либо с помощью средств метапрограммирования, таких как макросы (например, Lisp). В Java нет ни одного из них, поэтому это плохой выбор для работы с DSL (или большинством других форм абстрактного программирования). Spring Roo предлагает тип метапрограммирования для Java с использованием генерации, так что может быть вариант. В противном случае Scala, вероятно, является наиболее популярным языком Java, подобным JVM, и обладает необходимыми средствами.

Встроенные DSL обычно намного проще, чем внешние DSL, потому что у вас есть полная поддержка основного языка, поэтому я рекомендую попробовать Scala.

 om-nom-nom09 сент. 2012 г., 14:48
спасибо за подробные плюсы и минусы, а не просто сказатьсделай это на моем любимом языке JVM

та, обратитесьэто).

и всегда было довольно легко получить то, что я хочу.

http://www.artima.com/rubycs/articles/ruby_as_dsl3.html

Решение Вопроса

XText (http://www.eclipse.org/Xtext/) вы получаете хороший редактор бесплатно при указании вашего DSL.

 Gabriel Ščerbák25 янв. 2011 г., 01:26
@Pangea: это может быть потому, что oAW два года больше не поддерживается. Xtext переписан, он достиг 1,0 в последнем выпуске Eclipse (Galileo). Инструмент идеально подходит для данного варианта использования - он предлагает проверки и автозаполнение, наброски, гиперссылки, быстрые исправления, выделение и многое другое. Большинство из этих вещей никогда не будет возможно сделать как внутренний DSL, используя любой из предложенных языков.
 Aravind R. Yarram25 янв. 2011 г., 01:31
@ Габриэль, спасибо за это обновление. Я сейчас посмотрю на это. Благодарим Вас за указание на статьи и примеры DSL, созданных с использованием нового Xtext.
 Henrik02 февр. 2011 г., 15:37
Xtext является зрелым. И это активно поддерживается и улучшается. Если вам нужна профессиональная помощь, я также могу порекомендовать Itemis, компанию «позади» Xtext (я не связан с ними вообще).
 Gabriel Ščerbák25 янв. 2011 г., 02:27
@Pangea несколько хороших примеров можно найти на официальной странице Xtext здесь:eclipse.org/Xtext/community
 Aravind R. Yarram24 янв. 2011 г., 21:55
Мы активно используем наши метамодели и генерацию кода. Из того, что я испытал, редакторы слабы. Они не готовы к работе с клиентами.

Groovy для этого.

 Kaleb Brasee24 янв. 2011 г., 05:24
+1 Groovy для DSLs - хорошая книга.

ека Java с синтаксисом шаблонов или DSL, если хотите.

 Konstantin Komissarchik24 янв. 2011 г., 05:39
Так что же такое цифра DSL? В Velocity есть язык, который особенно хорош для создания текстового контента. Это предметно-ориентированный язык. Если у вас есть конкретные требования, которые не удовлетворяются шаблонизаторами и их языками, вы можете лучше описать, каковы эти требования.
 Aravind R. Yarram24 янв. 2011 г., 05:26
Мне нужен DSL. Шаблонный движок не вариант. Идея заключается в том, чтобы пользователь мог создавать строки, используя этот DSL. Я уже посмотрел на Velocity, StringTemplate и т. Д.

Ваш ответ на вопрос