Este artículo necesita citas adicionales para su verificación . ( septiembre de 2011 ) |
Un macroprocesador de propósito general o preprocesador de propósito general es un macroprocesador que no está vinculado ni integrado con un lenguaje o pieza de software en particular.
Un procesador de macros es un programa que copia un flujo de texto de un lugar a otro, realizando un conjunto sistemático de reemplazos a medida que lo hace. Los procesadores de macros suelen estar integrados en otros programas, como ensambladores y compiladores. A veces son programas independientes que se pueden utilizar para procesar cualquier tipo de texto.
Los macroprocesadores se han utilizado para la expansión del lenguaje (definiendo nuevas construcciones del lenguaje que se pueden expresar en términos de componentes del lenguaje existentes), para reemplazos sistemáticos de texto que requieren toma de decisiones y para reformatear texto (por ejemplo, extracción condicional de material de un archivo HTML ).
Nombre | Año | Descripción |
---|---|---|
GPM | Década de 1960 | Uno de los primeros procesadores de macros fue GPM (elMacrogenerador de propósito general ).[1]Este fue desarrollado en la Universidad de Cambridge, Reino Unido, a mediados de la década de 1960, bajo la dirección deChristopher Strachey. |
ML/yo | Década de 1960 | Un procesador de macros de propósito general particularmente importante fue (y sigue siendo) ML/I ( Macro Language One ). Fue desarrollado como parte de la investigación de doctorado por un posgraduado de Cambridge, Peter J. Brown. ML/I opera sobre un flujo de caracteres y no requiere un formato especial para su entrada ni caracteres especiales para introducir macros. |
ETAPA 2 | Década de 1960 | Un contemporáneo de ML/I fue STAGE2, [2] parte del Sistema de Programación Móvil de William Waite . [3] Este también es un macroprocesador de propósito general, pero procesa la entrada una línea a la vez, haciendo coincidir cada línea con patrones específicos; es notable porque es independiente del conjunto de caracteres, y solo requiere que los dígitos 0-9 sean contiguos y en ese orden (una condición que no se cumple en algunos de los códigos de caracteres BCD y de 6 bits de la época). |
M6 | Década de 1960 | Primer procesador de macros desarrollado en AT&T Bell Laboratories por Douglas McIlroy , Robert Morris y Andrew Hall. Recibió influencias de GPM y TRAC . Implementado en FORTRAN IV , [4] fue portado a la versión 2 de Unix . |
SNOBOL | Década de 1960 | SNOBOL es un lenguaje de procesamiento de cadenas capaz de realizar la mayor parte del preprocesamiento que puede realizar un procesador de macros. |
XPOP | XPOP fue otro intento de crear un lenguaje de procesamiento de macros general realizado por Mark Halpern en IBM en la década de 1960. | |
TTM | 1968 | TTM es un lenguaje recursivo e interpretativo diseñado principalmente para la manipulación de cadenas, edición de texto, definición y expansión de macros y otras aplicaciones generalmente clasificadas como programación de sistemas. Fue desarrollado en 1968 por Steven Caine y E. Kent Gordon en el Instituto Tecnológico de California . Se deriva, principalmente, de GAP [5] y GPM. [1] |
BPF | Década de 1970 | Otro intento fue el GMP (General Macro Processor) desarrollado a mediados de los años 70 por M Boule en el departamento DLB/GC de la empresa CII siguiendo las ideas de RJ Chevance. Probado en asociación con la Universidad de Bordeaux I, la primera versión ejecutaba el sistema SIRIS8/IRIS80. Fue adaptado a los sistemas mini6 y fue el componente principal involucrado en la generación de sistemas para esta familia de computadoras. El procesador GMP utilizaba gramáticas C2-Chomsky para definir la sintaxis de las macros y utilizaba un lenguaje imperativo para ejecutar los cálculos y proceder a la expansión de las macros. |
M4 | 1977 | m4 fue diseñado para Unix por Brian Kernighan y Dennis Ritchie . |
ELENA | Software: práctica y experiencia , vol. 14, págs. 519–531, junio de 1984 | |
gema | 1995 | gema es un procesador de macros contextual basado en la comparación de patrones, escrito por David N. Gray. Reemplaza/mejora el concepto de expresiones regulares por contextos. Los contextos corresponden aproximadamente a conjuntos de patrones con nombre. Como consecuencia, las macros en gema se parecen mucho a una descripción EBNF . [6] |
PPP | 1996 | gpp es otro procesador de macros general escrito por Denis Auroux. Se parece a un preprocesador de C, pero tiene una semántica más general y permite una sintaxis personalizada (por ejemplo, se pueden definir scripts de tipo TeX , XHTML y Prolog ). [7] |
M5 | 1999 | m5 es un macroprocesador de propósito general escrito por William A. Ward, Jr. A diferencia de muchos macroprocesadores, m5 no interpreta directamente su entrada. En su lugar, utiliza un enfoque de dos pasadas en el que la primera pasada traduce la entrada a un programa awk y la segunda pasada ejecuta el programa awk para producir la salida final. |
Expansor de Py | 2011 | Pyexpander es un procesador de macros de propósito general basado en el lenguaje de programación Python . Además de la sustitución simple de macros, permite la evaluación de expresiones arbitrarias de Python y la ejecución de código Python, lo que hace que Pyexpander sea un procesador Turing completo . [8] |
Ensamblador de texto | 2014 | Text Assembler es un procesador de texto/macro de propósito general basado en el lenguaje de programación JavaScript . Además de la simple sustitución de macros, permite evaluar expresiones arbitrarias de JavaScript y ejecutar código JavaScript. También puede cargar modelos de datos JSON para tareas de procesamiento de texto basadas en datos más complejas. [9] |
PÁGINAS | 2016 | PP es un preprocesador de texto diseñado para Pandoc (y más generalmente para Markdown y reStructuredText). PP implementa: macros, programación literaria, GraphViz , diagramas PlantUML y ditaa, Bash, Cmd , PowerShell , scripts de Python y Haskell . [10] |
minimac | minimac es un procesador de macros minimalista de propósito general. Funciona como un filtro de flujo de caracteres, expandiendo recursivamente las macros a medida que las encuentra. Es inusual para un procesador de macros, ya que utiliza una pila de argumentos explícita y las funciones de usuario se definen por concatenación (similar al lenguaje Forth ). [11] | |
macro aa | 2017 | aa_macro es un lenguaje de procesamiento de texto basado en secuencias de caracteres de código abierto escrito en Python. El texto se procesa de izquierda a derecha y de adentro hacia afuera. Una selección de funciones integradas predefinidas proporciona mecanismos de procesamiento fundamentales que se pueden utilizar directamente o como elementos de estilos definidos por el usuario. El lenguaje es extensible por el usuario y está disponible wtfm, un contenedor de preparación de documentos basado en la web de código abierto para el lenguaje. [12] [13] |
Stage2 fue creado por el profesor William Waite en la Universidad de Colorado a finales de los años sesenta como un componente importante de su sistema de programación móvil, MPS. Stage2 utiliza un algoritmo de coincidencia de patrones para hacer coincidir las líneas de entrada de texto con un conjunto de plantillas. Cada plantilla es la primera línea de una macro y cuando se reconoce una coincidencia, el cuerpo del código de esa macro se procesa para producir texto de salida, mensajes de error o crear una línea construida que se envía para una mayor coincidencia de plantillas. Por lo tanto, el proceso es completamente recursivo y bastante potente en sus capacidades para la transformación de texto. De hecho, se puede utilizar para implementar un compilador de lenguaje de programación.