TXL es un lenguaje de programación de propósito especial diseñado originalmente por Charles Halpern-Hamu y James Cordy en la Universidad de Toronto en 1985. El acrónimo "TXL" originalmente significaba "Turing eXtender Language" (Lenguaje extensor de Turing), en referencia al propósito original del lenguaje: la especificación y la creación rápida de prototipos de variantes y extensiones del lenguaje de programación de Turing , pero ya no tiene ninguna interpretación significativa.
TXL moderno está diseñado específicamente para crear, manipular y prototipar rápidamente descripciones, herramientas y aplicaciones basadas en lenguaje mediante la transformación de código fuente. Es un lenguaje híbrido funcional / basado en reglas que utiliza programación funcional de primer orden en el nivel superior y reescritura de términos en el nivel inferior. La semántica formal y la implementación de TXL se basan en la reescritura formal de términos , pero las estructuras de términos permanecen ocultas para el usuario debido al estilo de especificación de patrones, similar a un ejemplo.
Cada programa TXL consta de dos componentes: una descripción de las estructuras fuente que se van a transformar, especificada como una gramática libre de contexto (posiblemente ambigua) mediante una forma extendida de Backus-Naur ; y un conjunto de reglas de transformación de árboles, especificadas mediante pares patrón/reemplazo combinados con programación funcional de primer orden. TXL está diseñado para permitir al programador un control explícito sobre la interpretación, aplicación, orden y retroceso de las reglas de análisis y reescritura, lo que permite expresar una amplia gama de técnicas basadas en gramáticas, como el análisis ágil.
El primer componente analiza la expresión de entrada y la convierte en un árbol mediante la coincidencia de patrones . El segundo componente utiliza la reescritura de términos de forma similar a Yacc para producir la salida transformada.
TXL se utiliza con mayor frecuencia en tareas de análisis y reingeniería de software, como la recuperación de diseño , y en la creación rápida de prototipos de nuevos lenguajes y dialectos de programación.
Ejemplos
Ordenación de burbuja
Fuente: [ 1 ]
Especificación de sintaxis % definir programa [número repetido] fin de definir Reglas de transformación % regla principal reemplazar $ [número de repetición] N1 [número] N2 [número] Resto [número repetido] dónde N1 [> N2] por N2 N1 Rest regla final
Factorial
Fuente: [ 2 ]
Especificación de sintaxis % definir programa [número] fin de definir Reglas de transformación % función principal reemplazar [programa] p [número] por p [hecho][hecho0] función final hecho de la función reemplazar [número] n [número] construir nMenosUno [número] n [- 1] dónde n [> 1] construir factMenosUno [número] nMenosUno [hecho] por n [* factMenosUno] función final función fact0 reemplazar [número] 0 por 1 función final
Véase también
Referencias
- ↑ "Copia archivada" . Archivado del original el 21/05/2005 . Recuperado el 19/03/2008 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) - ↑ "Copia archivada" . Archivado del original el 26 de agosto de 2005. Recuperado el 19 de marzo de 2008 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace )
- JR Cordy, CD Halpern y E. Promislow, 1991. TXL: Un sistema de prototipado rápido para dialectos de lenguajes de programación. Computer Languages 16,1 (enero de 1991), 97-107.
- JR Cordy, 2006. El lenguaje de transformación de código fuente TXL. Science of Computer Programming 61,3 (agosto de 2006), 190-210.
Enlaces externos
- Sitio web de TXL
- Lenguajes funcionales
- Lenguajes de transformación
- lenguajes de programación para la reescritura de términos