Ventajas / desventajas de las diferentes herramientas de lenguaje de banco de trabajo, tales como xtext y MPS?

StackOverflow https://stackoverflow.com/questions/4380275

Pregunta

¿Alguien tiene experiencia de trabajo con herramientas de lenguaje de banco de trabajo, tales como xtext, Spoofax, y MPS JetBrains'? Estoy mirando para probar uno y estoy teniendo un tiempo difícil encontrar una buena comparación de las diferentes herramientas. ¿Cuáles son los pros y los contras de cada uno?

Busco a una SL de construcción que generan código Python, así que estoy especialmente interesado en escuchar a las personas que han utilizado una de estas herramientas con el pitón (los tres parecen bastante Java enfocado ... ¿Por qué? ). Los DLS son principalmente para mi propio uso, por lo que me importa menos acerca de la construcción de un IDE muy bonita que yo acerca de que sea de KISS para definir la sintaxis y escribir el generador de código. La capacidad de escribir-cheque / do análisis estático del DLS estaría muy bien también.

Estoy un poco asustado de conseguir lejos por un camino, golpear una pared, y darse cuenta de que toda mi código está en un formato que no puede ser portado a cualquier otra cosa - que es un riesgo con estas herramientas? MPS, en particular, parece un poco de miedo ya que según entiendo que realmente no genera sintaxis basados ??en texto, sino más bien construir editores especializados para AST.

¿Fue útil?

Solución

Markus Voelter hace un muy buen trabajo comparando los tres en los podcasts se-radio y software ArchitekTOUR. La idea básica es que xtext es el más utilizado, por lo tanto, más estable y documentada, y se basa en la popular plataforma y la modelización de ecosistemas Eclipse - EMF que la rodea. Por otro lado, es analizador basado en antlr y utiliza internamente, lo que significa que el tipo de gramáticas que puede definir es limitado y las lenguas no se pueden combinar fácilmente. Spoofax es un producto académico con menos adopción de esos tres. También es analizador basado en, pero utiliza su propio generador de análisis interno que permite combinaciones de idiomas. JetBrains MPS es proyección basada, lo que da mucha libertad a diseñador del lenguaje y permite combinaciones de idiomas. * T también tiene soporte sólido. Inconveniente podría ser la curva de aprendizaje. Ninguna de estas herramientas es estrictamente Java enfocado como idioma de destino para los generadores de código. Xtext utiliza plantillas Xpand, que son texto plano. No se sabe muy bien cómo la generación de código en Spoofax funciona. MPS tiene su idioma base, que se dice que es subconjunto de Java, pero hay diferentes alternativas. Yo personalmente uso xtext debido a su simplicidad y madurez, pero esos fuertes limitaciones dadas por su diseño hacen que no es una opción muy preparada para el futuro.

Otros consejos

he elegido xtext en el mismo caso hace dos semanas, pero no sabe nada de Spoofax. Mi primera impresión - xtext es muy simple y productiva. He hecho mi primer Realife (pero muy simple) proyecto en 30 minutos, he generado un gráfico de puntos graphviz y html informe. No me gusta MPS porque prefiero archivos de origen y de destino de texto sin formato.

Existen otros sistemas para hacer este tipo de cosas. Si su objetivo es la construcción de herramientas, que no necesariamente tiene que mirar a un IDE con una herramienta integrada; a veces se puede encontrar mejores herramientas que se han centrado en la utilidad en lugar de la integración IDE

Tenga en cuenta ninguna de las herramientas de transformación de programas puros:

  • TXL (práctico, solo paradigma)
  • Stratego (Spoofax antes de que se trasplanta en Eclipse)
  • Rascal (investigación, muy bien diseñado de muchas maneras)
  • DMS Software Reingeniería Toolkit (pasa a ser la mina; comercial; utilizado para hacer DSL Heavy Duty / análisis langauge convencional y transformación, incluido en C ++)

Todos éstos proporcionan buenos mecanismos para la definición de dispositivo o de su transformación.

Lo que realmente importa es la maquinaria de apoyo para la realización de la "vida después del análisis".

Tal vez hoy en día el mejor lugar para comparar los diferentes bancos de trabajo de lenguaje es http://www.languageworkbenches.net/ y hay http://www.languageworkbenches.net/past-editions/ muestra como un conjunto Bancos de trabajo de la Lengua aplicar el mismo tipo de tarea:. una conexión DSL de un dominio determinado

Tome un vistazo al libro de Markus Völter. Se hace una comparación muy completa de estas 3 tecnologías. http://dslbook.org

xtext se mantiene muy bien, pero esto no quiere decir que sea un problema-menos. Conseguir tipo de sistema, el alcance y la generación de correr no es tan fácil como lo anuncian.

Spoofax es scannerless, (simplificando composición gramática). No es que bien documentado, pero parece completa.

MPS es proyeccional. Un profesional para la composición de la lengua y en contra para la edición. Soporta múltiples editores de un AST y pronto incluso apoyar un editor de diagramas agradable. documentación idioma base no es tan bueno. Sistema de tipos, la determinación del alcance, verificación está muy bien manejada. Modelo de transformación de modelos son realizados por el solucionador. Mis colegas que lo usan se quejan de modelo para los lenguajes de texto. (Mi opinión M2M no era tan intuitivo tampoco.)

Hace años Microsoft tenían el proyecto de Oslo. MGrammar y especialmente Cuadrante fueron muy prometedores. Era posible representar su modelo en la tabla, la forma, el texto o ver diagrama. Pero de repente se han cancelado el proyecto (y tal vez se dispararon las personas que trabajan en ella)

He experimentó durante un par de días con xtext y mientras las miradas herramienta prometedora finalmente me pusieron por la estrecha integración con el Eclipse los ecosistemas y el dolor uno tiene que pasar por sólo para resolver lo que se debe dar sin problemas fuera de la caja: una carrera sin cabeza del generador de código que ha implementado. Ver aquí para algunas de las minucias uno tiene que ir a través (y ni siquiera es debidamente documentado en el xtext sitio web, sino más bien en un blog, es decir, su un parche ad-hoc que muy bien podría romper en la próxima versión).

volverán a revisar en medio año para ver si ha habido alguna mejora en este frente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top