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 idiomas generalmente incluirá herramientas para respaldar la definición, reutilización y composición de idiomas específicos de dominio junto con su entorno de desarrollo integrado . Los bancos de trabajo de idiomas fueron introducidos y popularizados por Martin Fowler en 2005.
Los bancos de trabajo de idiomas suelen admitir: [1]
- Especificación de los conceptos del lenguaje o metamodelo
- Especificación de los entornos de edición para el idioma específico del dominio.
- Especificación de la semántica de ejecución, por ejemplo, mediante interpretación y generación de código.
Ejemplos de
- 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 adaptarse a la creación de lenguajes específicos de dominio y lenguajes completamente nuevos con instalaciones 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 la edición por proyección que permite superar los límites de los analizadores de idiomas y crear 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 banco de trabajo de lenguajes y un Entorno de desarrollo integrado (IDE) para dichos lenguajes. [6]
- Kermeta es un banco de trabajo de lenguaje académico de código abierto. [7] El banco de trabajo de 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 otro para la semántica del comportamiento (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 de dominio (DSL). [8]
- Spoofax . [9] es un banco 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 . [10] 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 genera no solo un analizador, sino también un modelo de clase para el árbol de sintaxis abstracta. Además, proporciona un IDE basado en Eclipse totalmente personalizable y con todas las funciones. [11]
Ver también
- Programación orientada al lenguaje
- Compilador-compilador
- Programación intencional
- Categoría: banco de trabajo de idiomas
Referencias
- ^ a b Fowler, Martin. "LanguageWorkbench" . Consultado el 14 de abril de 2015 .
- ^ a b Fowler, Martin (12 de junio de 2005). "Language Workbenches: ¿La aplicación asesina para idiomas específicos de dominio?" . 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). "Idiomas a la manera de la raqueta" (PDF) . 2016 Language Workbench Challenge (65) . Consultado el 9 de junio de 2019 .
- ^ Tobin-Hochstadt, S .; St-Amour, V .; Culpepper, R .; Flatt, M .; Felleisen, M. (2011). "Idiomas como bibliotecas" (PDF) . Diseño e implementación de lenguajes de programación .
- ^ Flatt, Matthew (2012). "Creando lenguajes en la raqueta" . Comunicaciones de la ACM . Consultado el 8 de abril de 2012 .
- ^ "JetBrains MPS: creador de lenguaje específico de dominio" .
- ^ Jézéquel, Jean-Marc; Combemale, Benoit; Barais, Olivier; Monperrus, Martin; Fouquet, François (2013). "Mashup de metalenguajes y su implementación en el banco de trabajo del lenguaje Kermeta" (PDF) . Modelado de software y sistemas . 14 (2): 905–920. arXiv : 1306.0760 . doi : 10.1007 / s10270-013-0354-4 . S2CID 199965 .
- ^ "Melange" .
- ^ "El banco de trabajo de lenguaje Spoofax" .
- ^ Kats, Lennart CL; Visser, Eelco (2010). "El banco de trabajo del lenguaje Spoofax: reglas para la especificación declarativa de lenguajes e IDE". . Actas de la 25a Conferencia Anual ACM SIGPLAN sobre Programación Orientada a Objetos, Sistemas, Lenguajes y Aplicaciones, OOPSLA 2010 . doi : 10.1145 / 1869459.1869497 .
- ^ "Xtext" .
enlaces externos
- Martin Fowler, banco de trabajo de idiomas
- Desafío del banco de trabajo de idiomas