2009-05-21 21 views
8

Estoy trabajando en un proyecto que requiere que defina un DSL. Como crear el DSL correcto es fundamental para mi proyecto, decidí evaluar los marcos existentes que ayudan a definir DSL, analizarlo y generar código (que debe estar en un lenguaje basado en .NET). Los marcos que consideré son:Elección del marco DSL

  1. Idioma Boo que tiene un compilador personalizable y una sintaxis pythonish ideal para definir un DSL.
  2. Windows powershell que admite comandos extensibles.
  3. herramientas DSL Microsoft que admiten modelado visual, pero menos flexible (en mi opinión)
  4. antlr que se ha demostrado herramienta
  5. C# interfaces fluidas. (No tan felices con esto)
  6. marco de Oslo (¿Es maduro para ser utilizado en producción?)

Existen ventajas y desventajas de cada uno de los marcos mencionados anteriormente y no puedo tomar una decisión. ¿Pudo elegir entre los marcos anteriores, cuál elegiría y por qué?

¿Hay algún otro marco tan fundamental que podría haber perdido?

Cualquier ayuda u orientación sería muy apreciada.

+0

+1 - gran pregunta, y una con la que estoy lidiando también. Miré la versión Early Access del libro Building Domain Specific Languages ​​en Boo y me pareció frustrante: las herramientas no parecían maduras. También creo que PowerShell muestra una gran promesa en esta área. Y también recogí el libro sobre ANTLR. ;) – TrueWill

Respuesta

1

En un question of mine que tocó el tema de los DSL, me sugirieron usar una combinación de Irony y DLR. No sé sin embargo que son estables. Irony es un Alpha, y DLR, aunque estable, todavía está en v0.9. Mi objetivo es comenzar a utilizar Irony en una semana o dos, así podré proporcionar algunos comentarios. Sin embargo, el lado positivo es que ambos son de código abierto, por lo que puede corregir los errores usted mismo.

+0

Gracias por la información. La ironía parece muy prometedora. – Prashanth

+0

** Irony está en espera. ** http://irony.codeplex.com/Thread/View.aspx?ThreadId=230812 –

+0

Es una triste noticia. :(Sin embargo, ha estado funcionando muy bien para mí durante más de 1,5 años (incluso en producción), y ni siquiera tengo la última versión. Así que creo que sigue siendo una buena opción, hasta que aparezca algo mejor. –

0

Jetbrains tiene una herramienta visual para ayudar en el desarrollo del lenguaje, olvidó el nombre pero la portada lo tiene en él. Creo que es de origen libre y parcialmente abierto.

+0

http : //www.jetbrains.com/mps/index.html – TrueWill

0

DMS Software Reengineering Toolkit es un conjunto integrado de herramientas para definir lenguajes arbitrarios, incluidos los DSL, la automatización de la construcción de analizadores, analizadores y generadores de códigos para los idiomas definidos.

1

Si usted está planeando implementar un DSL externos, Spoofax (http://strategoxt.org/Spoofax) es un buen banco de trabajo Idioma de hacer esto. Es un Langauge Workbench textual basado en el analizador que aprovecha varias tecnologías de última generación como SDF, Stratego. Además de la implementación de DSL, puede obtener servicios de editor muy completos, como finalización de código, vista de esquema, intellisense, etc.

Viene con una buena implementación de muestra DSL y generación de código en Java. También podría funcionar como un punto de partida para comenzar con las herramientas.

Siguiendo los detalles del tutorial sobre el uso de este banco de trabajo de idioma: http://strategoxt.org/Spoofax/Tour.

Espero que ayude!

Editar -1:

siguiente es un ejemplo de un lenguaje implementado utilizando este Langauge Workbench: http://mobl-lang.org/.