Un grafo de términos es una representación de una expresión en un lenguaje formal como un grafo generalizado cuyos vértices son términos . [ 1 ] Los grafos de términos son una forma de representación más potente que los árboles de expresiones porque pueden representar no solo subexpresiones comunes (es decir, pueden adoptar la estructura de un grafo dirigido acíclico) sino también subexpresiones cíclicas/recursivas (digrafos cíclicos).
Los árboles de sintaxis abstracta no pueden representar subexpresiones compartidas, ya que cada nodo del árbol solo puede tener un padre; esta simplicidad se logra a costa de la eficiencia debido a los cálculos duplicados y redundantes de términos idénticos. Por esta razón, los grafos de términos se utilizan a menudo como lenguaje intermedio en una etapa de compilación posterior a la construcción de árboles de sintaxis abstracta mediante análisis sintáctico.
La frase " reescritura de grafos de términos " se usa a menudo al hablar de métodos de reescritura de grafos para transformar expresiones en lenguajes formales. [ 2 ] Considerados desde el punto de vista de las gramáticas de grafos, los grafos de términos no son grafos regulares, sino hipergrafos donde una palabra n-aria tendrá un subgrafo particular en primer lugar, otro en segundo lugar, y así sucesivamente, una distinción que no existe en los grafos no dirigidos usuales estudiados en la teoría de grafos.
Los grafos de términos son un tema destacado en la investigación de lenguajes de programación, ya que las reglas de reescritura de grafos de términos pueden expresar formalmente la semántica operacional de un compilador . Los grafos de términos también se utilizan como máquinas abstractas capaces de modelar cálculos químicos y biológicos, así como cálculos gráficos como los modelos de concurrencia. Los grafos de términos pueden realizar verificación automatizada y programación lógica, ya que son idóneos para representar enunciados cuantificados en lógica de primer orden. El software de programación simbólica es otra aplicación para los grafos de términos, que son capaces de representar y realizar cálculos con estructuras algebraicas abstractas como grupos, cuerpos y anillos.
La conferencia TERMGRAPH [ 3 ] se centra por completo en la investigación sobre la reescritura de grafos de términos y sus aplicaciones.
Los grafos de términos también se utilizan en la inferencia de tipos, donde la estructura del grafo ayuda a implementar la unificación de tipos. [ 4 ]
Véase también
Referencias
- ↑ Plump D. (Hartmut Ehrig, G. Engels, Grzegorz Rozenberg, eds) (1999). Handbook of Graph Grammars and Computing by Graph Transformation: applications, languages and tools. Vol. 2. World Scientific. pp. 9–13 . ISBN 9789810228842.
{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ Barendregt; van Eekelen; Glauert; Kennaway; Plasmeijer; Dormir (1987). "Reescritura de gráficos de términos". PARLE Arquitecturas y lenguajes paralelos Europa (Apuntes de conferencias sobre informática) . vol. 259. págs. 141–158 . doi : 10.1007/3-540-17945-3_8 . ISBN 978-3-540-17945-0.
- ↑ "TERMGRAPH 2013" .
- ↑ Fritz Henglein (1988). Inferencia de tipos y semiunificación . En Actas de la conferencia ACM de 1988 sobre LISP y programación funcional, págs. 184-197. doi : 10.1145/62678.62701
- Reescritura de grafos
- Sistemas formales
- Expresiones lógicas
- Estructuras de datos de grafos
- Métodos formales esbozos