Un banco de trabajo de lenguaje [1] [2] es una herramienta o conjunto de herramientas que permite el desarrollo de software en el paradigma de desarrollo de software de programación orientada al lenguaje [2] . Un banco de trabajo de lenguaje generalmente incluirá herramientas para respaldar la definición, reutilización y composición de lenguajes específicos del dominio junto con su entorno de desarrollo integrado . Los bancos de trabajo de lenguaje fueron introducidos y popularizados por Martin Fowler en 2005.
Los bancos de trabajo de idiomas generalmente admiten: [1]
Ejemplos
- Racket es un banco de trabajo de desarrollo de lenguaje multiplataforma que incluye compilador, compilador JIT, IDE y herramientas de línea de comandos diseñadas para permitir la creación de lenguajes específicos de dominio y lenguajes completamente nuevos con facilidades para agregar nueva notación, restringir construcciones y crear herramientas IDE. [3] [4] [5]
- JetBrains MPS es una herramienta para diseñar lenguajes específicos de dominio. Utiliza edición proyectiva que permite superar los límites de los analizadores de lenguajes y construir editores DSL, como los que tienen tablas y diagramas. Implementa programación orientada al lenguaje. MPS combina un entorno para la definición de lenguajes, un entorno de trabajo de lenguajes y un entorno de desarrollo integrado (IDE) para dichos lenguajes. [6]
- Kermeta es un entorno de trabajo de lenguaje académico de código abierto. El entorno de trabajo Kermeta utiliza tres metalenguajes diferentes: un metalenguaje para la sintaxis abstracta (alineado con Emof ); uno para la semántica estática (alineado con OCL ) y uno para la semántica conductual (llamado el propio lenguaje Kermeta).
- Melange es un banco de trabajo de lenguaje que proporciona un enfoque modular para personalizar, ensamblar e integrar múltiples especificaciones e implementaciones de lenguaje específico del dominio (DSL). [7]
- Spoofax. [8] es un entorno de trabajo de lenguaje de código abierto para generar analizadores, verificadores de tipos, compiladores, intérpretes, así como complementos IDE para Eclipse e IntelliJ . [9] Utiliza SDF y un analizador GLR sin escáner para la sintaxis y formalismos derivados de Stratego/XT para la semántica.
- Xtext es un marco de software de código abierto para desarrollar lenguajes de programación y lenguajes específicos de dominio (DSL). A diferencia de los generadores de analizadores sintácticos estándar, Xtext no solo genera un analizador sintáctico, sino también un modelo de clase para el árbol de sintaxis abstracta. Además, proporciona un IDE basado en Eclipse personalizable y con todas las funciones. [10]
- Meeduse [11] es un marco basado en EMF que permite construir, probar y animar lenguajes específicos de dominio ejecutables (xDSL) utilizando el Método B. La herramienta incorpora ProB y un animador y verificador de modelos del Método B. [12]
Véase también
Referencias
- ^ ab Fowler, Martin. "LanguageWorkbench" . Consultado el 14 de abril de 2015 .
- ^ ab Fowler, Martin (12 de junio de 2005). "Language Workbench: The Killer-App for Domain Specific Languages?" (Bancos de trabajo de lenguaje: ¿la aplicación clave para lenguajes de dominio específico?) . Consultado el 14 de abril de 2015 .
- ^ Feltey, Daniel; Florence, Spencer P.; Knutson, Tim; St-Amour, Vincent; Culpepper, Ryan; Flatt, Matthew; Findler, Robert Bruce; Felleisen, Matthias (2016). "Lenguajes al estilo Racket" (PDF) . Desafío del banco de trabajo de idiomas de 2016 (65) . Consultado el 9 de junio de 2019 .
- ^ Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011). "Lenguajes como bibliotecas" (PDF) . Diseño e implementación de lenguajes de programación .
- ^ Flatt, Matthew (2012). "Creación de lenguajes en Racket". Comunicaciones de la ACM . Consultado el 8 de abril de 2012 .
- ^ "JetBrains MPS: Creador de lenguajes de dominio específico".
- ^ "Mezcla".
- ^ "El banco de trabajo del lenguaje Spoofax".
- ^ Kats, Lennart CL; Visser, Eelco (2010). "El entorno de trabajo del lenguaje Spoofax: reglas para la especificación declarativa de lenguajes e IDE". Actas de la 25.ª Conferencia anual ACM SIGPLAN sobre programación orientada a objetos, sistemas, lenguajes y aplicaciones, OOPSLA 2010. doi : 10.1145/1869459.1869497.
- ^ "Xtexto".
- ^ Idani, Akram; Ledru, Yves; Vega, German (diciembre de 2020). "Alianza de la ingeniería basada en modelos con un enfoque formal basado en pruebas". Innovaciones en sistemas e ingeniería de software (ISSE), NASA Journal . 6 (3): 289–307. doi : 10.1007/s11334-020-00366-3 .
- ^ "Meeduse".
Enlaces externos
- Martin Fowler, Banco de trabajo de idiomas
- Desafío del banco de trabajo de idiomas