Domanda

Abbiamo un requisito per creare complessi lunghezza fissa e le stringhe di lunghezza variabile. Queste stringhe potrebbero rappresentare un profilo cliente, un ordine ecc linguaggio di programmazione basato Quali JVM Sei ragazzi suggeriscono?

Idea è per un utente finale di creare le stringhe utilizzando questo DSL. Quindi non vedo per la convalida, il completamento del codice, ecc.

È stato utile?

Soluzione

xtext ( http://www.eclipse.org/Xtext/ ) si ottiene un editor bel gratuitamente se specificando il vostro DSL.

Altri suggerimenti

Utilizzare un Lisp che gira su JVM. Alcune scelte si hanno:

  1. Clojure
  2. JScheme
  3. SISC
  4. ABCL
  5. Bigloo (non viene eseguito sulla JVM, ma ha una buona interoperabilità Java ).

un buon libro gratuito che spiega come usare Lisp per la progettazione di software bottom-up , cioè come crescere Lisp in un linguaggio che è l'ideale per risolvere il problema in questione.

Lingue nella Forth famiglia sono inoltre ideali per la definizione DSL. Ci sono alcuni che gira su JVM:

  1. Niue
  2. Misty Beach Forth

Ci sono due tipi di DSL; esterni ed embedded.

Un DSL esterno è completamente separato dal linguaggio ospite cioè si scrive al di fuori della lingua, ma di solito è usato per generare il codice nella lingua del paese ospitante. Per questo approccio, xtext con XPand sono probabilmente i migliori strumenti come un semplice file di grammatica genera un editor completo basato su Eclipse per la nuova DSL ed è possibile utilizzare i modelli di codice in XPand per generare il codice vero e proprio Java. XTend e XPand sono scritti in Java, ma questo è casuale in quanto potrebbero essere scritti in qualsiasi cosa fino a quando si finisce con il codice Java alla fine del processo. Lo svantaggio di questo approccio è che per qualsiasi problema ragionevolmente complesso la lingua diventerà abbastanza complesso e un sacco di lavoro sarà tenuto nella grammatica e ancora di più nei modelli di generazione del codice. Non è possibile utilizzare tutte le funzionalità del linguaggio ospite come valutazione delle espressioni in modo tutto questo esigenze ricostruire nella vostra DSL se ne avete bisogno. Xtext a breve includerà XBase che è un linguaggio parziale, che includerà le espressioni di dare una mano qui.

L'altro approccio è un DSL integrato dove le caratteristiche del dominio di alto livello sono espressi in lingua del paese ospitante o con costrutti di ordine superiore (come HOF di e monadi) tipici dei linguaggi funzionali o tramite strutture di meta-programmazione come le macro (ad esempio Lisp ). Java ha nessuno di questi in modo da è una cattiva scelta per il lavoro DSL (o la maggior parte di altre forme di programmazione astratta). Primavera Roo offre una struttura di tipo meta-programmazione per Java utilizzando la generazione in modo potrebbe essere un'opzione. In mancanza di ciò, Scala è probabilmente il più Java come JVM linguaggio che è popolare e ha i servizi di cui avete bisogno.

di DSL embedded sono di solito molto più facile di DSL di esterno, perché si ha il pieno sostegno della lingua del paese ospitante quindi il mio consiglio sarebbe quello di provare Scala.

Scala fino in fondo! Scala è particolarmente adatto per DSL interno (pls si riferiscono questo ).

Groovy per questo.

io suggerisco JRuby. Ho fatto un paio ed è sempre stato abbastanza facile da ottenere su ciò che voglio.

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

suona come un problema per il motore di template Apache Velocity. Si tratta di una libreria Java con una sintassi di template o DSL se si vuole.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top