visual trucos studio programar lenguaje idioma español como code cambiar visual-studio f# dsl-tools dsl oslo

visual-studio - programar - trucos visual studio code



Desarrollo de lenguaje específico de dominio de texto(DSL) con Microsoft Visual Studio (6)

Hice algunas búsquedas para desarrollar una DSL en Visual Studio. Al principio, descubrí que hay un SDK de visualización y modelado para VS2010. Tiene una herramienta llamada herramienta DSL. Pero parece que solo es para el desarrollo gráfico de DSL.

Luego vi algunas publicaciones que decían "Oslo" es una herramienta para desarrollar DSL textual, que "era" un producto de Microsoft: Microsoft ya no admite la herramienta. http://blogs.msdn.com/b/modelcitizen/archive/2010/09/22/update-on-sql-server-modeling-ctp-repository-modeling-services-quot-quadrant-quot-and-quot- m-quot.aspx

Por lo tanto, me gustaría saber si deseo desarrollar un DSL textual, ¿qué herramienta es la mejor? ¿Qué piensas si implemento un analizador DSL haciendo uso de F # powerpack con FSLex y FSYacc?


Actualmente estoy desarrollando varias DSL basadas en texto externo usando FsLex / FsYacc. Estaba usando un analizador de manos, pero encuentro que el FsLex / FsYacc es mucho más fácil de mantener en la etapa de diseño.

FsLex / FsYacc no son tan sofisticados como ANTLR, pero como la mayoría de los DSL son bastante simples, FsLex / FsYacc son una opción perfecta para Visual Studio. Y mantener las DSL simples es algo bueno, ya que están destinadas a ser restringidas y fáciles de aprender.

Considero que el libro de Martin Fowler es un buen recurso, menos por los ejemplos y detalles que como una enciclopedia de ideas de DSL. Su discusión sobre la usabilidad y otros aspectos del diseño de DSL también vale la pena leer. Como Toumas indicó, no cubre ni F # ni los lenguajes funcionales. El Sr. Fowler escribe que carecía de la experiencia en esos temas para llevar el libro al mercado de manera oportuna.

Tras elogiar a FsLex / FsYacc, todavía deseo que alguien escriba un buen back-end ANTLR para F #. :)

-Neil


Martin Fowler tiene un nuevo libro sobre DSL: s. Lamentablemente, no discutirá mucho sobre las herramientas de Microsoft ni sobre los lenguajes funcionales.

Microsoft ya no admite la herramienta gráfica "Cuadrante", pero MGrammar aún es compatible e integrado al servidor SQL, ¿verdad? MGrammar es el "lenguaje de creación de DSL".

Aún así, diría que los lenguajes funcionales (léase: F #) son el camino a seguir.

Este libro tiene un ejemplo simple de cómo hacer una DSL con F #: http://www.manning.com/petricek/ y también Google encuentra muchas otras buenas referencias sobre este tema.


Soy un fanático de DSL integrados, a la

http://lorgonblog.wordpress.com/2010/04/15/using-vs2010-to-edit-f-source-code-and-a-little-logo-edsl/

http://lorgonblog.wordpress.com/2010/04/16/fun-with-turtle-graphics-in-f/

donde solo utiliza la sintaxis de F # de apalancamiento con algunos buenos nombres de funciones y posiblemente otra inteligencia de sintaxis (listas, flujos de trabajo, ...) para obtener un código que "parece que tal vez es otro idioma", pero en realidad es solo F #.

Pero sí, para las DSL externas, solo necesita una cadena de herramientas de gramática / analizador / etc, y FsLex / FsYacc, o tal vez ANTLR o FParsec son varias opciones. (No tengo suficiente experiencia con ninguno de estos para conocer las ventajas y desventajas entre ellos).


Pruebe MBase , pero solo vale la pena usarlo si su DSL es lo suficientemente complicada como para requerir un compilador eficiente y una gramática PEG. De lo contrario, FsYacc es más que suficiente.


Nuestro kit de herramientas de reingeniería de software DMS está diseñado para manejar DSL arbitrarios (yo soy el arquitecto).

La mayoría de la gente piensa que si tienes un analizador tienes suficiente, y es técnicamente cierto, en el mismo sentido que si tienes transistores puedes construir una computadora.

En mi experiencia, usted quiere mucho más que solo un analizador: necesita formas de construir tablas de símbolos para que su generador sepa cuál es el significado de un identificador particular, significa analizar la especificación, formas de codificar fácilmente su traducción y aplicar optimizaciones a los resultados generados.

DMS proporciona todas estas capacidades para admitir la construcción de DSL. Y en ese sentido, va mucho más allá de F #.


Desde que hice mi publicación anterior, también compré y leí partes del libro de Terence Parr "Language Implementation Patterns". Es excelente, aunque bastante más técnico que el libro de Martin Fowler (con material adicional podría ser un "Dragon Book"). "Para el nuevo milenio"). Los ejemplos están fuertemente basados ​​en Java y ANTLR, pero el texto es lo principal, por lo que el libro es útil independientemente del entorno de desarrollo lingüístico de uno.

Curiosamente, hay poca superposición entre los dos libros. El libro de Martin Fowler hace un buen trabajo cubriendo el diseño y la implementación de DSL básicos, como los utilizados para la especificación y configuración, mientras que el libro de Terence Parr es más técnico y abarca el ámbito que se extiende hasta idiomas y códigos de bytes más sofisticados. máquinas. Recomiendo ambos si puede presupuestarlos, de lo contrario, o bien es una excelente opción dentro de su dominio dado.