

GrGen.NET es una herramienta de desarrollo de software que ofrece lenguajes de programación ( lenguajes específicos de dominio ) optimizados para el procesamiento de datos estructurados en grafos . El núcleo de estos lenguajes consiste en reglas modulares de reescritura de grafos , basadas en la coincidencia y reescritura declarativa de patrones de grafos; se complementan con muchas de las construcciones utilizadas en la programación imperativa y orientada a objetos , y se completan con mecanismos lingüísticos propios de los lenguajes de consulta de bases de datos .
El generador de reescritura de grafos compila los lenguajes en ensamblados CLI eficientes (mediante código C# en un paso intermedio), que pueden integrarse a través de una API en código escrito en cualquier lenguaje .NET . GrGen se puede ejecutar en Windows y Linux ( se requiere Mono ) y es de código abierto, disponible bajo la licencia LGPL v3.
Para la creación rápida de prototipos y la depuración, el paquete incluye una consola interactiva y un visor de gráficos (VCG). Gracias a sus lenguajes y su depuración visual y paso a paso, GrGen permite desarrollar en el nivel de abstracción natural de las representaciones basadas en gráficos, como las empleadas en ingeniería , transformación de modelos , lingüística computacional o construcción de compiladores (como representación intermedia ).
GrGen aumenta la productividad en este tipo de tareas mucho más allá de lo que se puede lograr programando en un lenguaje de programación tradicional (también gracias a su mapeador ORM integrado); gracias a las numerosas optimizaciones de rendimiento implementadas, permite obtener soluciones de alto rendimiento. Sus autores afirman que el sistema ofrece la mayor velocidad combinada de desarrollo y ejecución disponible para el procesamiento algorítmico de representaciones basadas en grafos (según su desempeño en diversas tareas planteadas en diferentes ediciones del concurso Transformation Tool Contest (/GraBaTs)).
Ejemplo de especificación
A continuación se muestra un ejemplo que contiene un modelo gráfico y especificaciones de reglas de la solución GrGen.NET para el caso AntWorld. Archivado el 10 de agosto de 2011 en Wayback Machine. Publicado en Grabats 08. Enlace obsoleto archivado el 29 de noviembre de 2012 en archive.today .
Modelo gráfico:
clase de nodo GridNode { comida:int; feromonas:int; } La clase de nodo GridCornerNode extiende GridNode; la clase de nodo AntHill extiende GridNode { Cuenta atrás para comida: int = 10; } clase de nodo Hormiga { tieneComida:booleano; } clase de borde GridEdge conecta GridNode[1] -> GridNode[1]; clase de borde PathToHill extiende GridEdge; clase de borde AntPosition;Reglas de reescritura:
regla TakeFood(curAnt:Hormiga) { curAnt -:AntPosition-> n:GridNode\AntHill; si { !curAnt.hasFood && n.food > 0; } modificar { evaluar { curAnt.hasFood = verdadero; n.alimento = n.alimento - 1; } } } regla BuscarA lo largo de las feromonas(actual:Hormiga) { curAnt -oldPos:AntPosition-> old:GridNode <-:PathToHill- new:GridNode; si { nuevas.feromonas > 9; } modificar { eliminar(oldPos); curAnt -:AntPosition-> nuevo; } } prueba ReachedEndOfWorld(curAnt:Ant) : (GridNode) { curAnt -:AntPosition-> n:GridNode\AntHill; negativo { n <-:CaminoALaColina-; } devolver (n); }Enlaces externos
- Página principal del proyecto GrGen.NET
- Manual de usuario de GrGen.NET
- Breve introducción a GrGen.NET 1.4 (obsoleto)
Artículos de conferencias
- GrGen: Una herramienta rápida de reescritura de grafos basada en SPO /- ICGT 06
- Generación de triángulos de Sierpinski: un estudio de caso para herramientas de transformación de grafos - AGTIVE 07
- Reescritura de grafos para optimizaciones de programas dependientes del hardware - AGTIVE 07
- Primera evaluación experimental de la coincidencia de patrones gráficos basada en planes de búsqueda - AGTIVE 07
- Personalización de GrGen.NET para la transformación de modelos. Archivado el 10/06/2011 en Wayback Machine - GraMoT 08
- Reglas de reescritura de grafos con recursión estructural - ICGT/GCM 08
Véase también
- Lenguajes de programación específicos de dominio
- Reescritura de grafos