GrGen.NET es una herramienta de desarrollo de software que ofrece lenguajes de programación ( lenguajes específicos de dominio ) que están optimizados para el procesamiento de datos estructurados de gráficos . El núcleo de los lenguajes consiste en reglas de reescritura de gráficos modulares , que se basan en la coincidencia y reescritura de patrones de gráficos declarativos ; se complementan con muchas de las construcciones que se utilizan en la programación imperativa y orientada a objetos , y se completan con dispositivos de lenguaje conocidos de los lenguajes de consulta de bases de datos .
Paradigma | Multi-paradigma : declarativo , imperativo , orientado a objetos |
---|---|
Desarrollador | Sebastian Hack, Rubino Geiss, Moritz Kroll, Edgar Jakumeit y otros |
Apareció por primera vez | 2003 |
Lanzamiento estable | GrGen.NET 4.5 / 9 de abril de 2017 |
Disciplina de mecanografía | Estático, parcialmente dinámico, fuerte, seguro , nominativo |
SO | Multiplataforma (multiplataforma) |
Licencia | Licencia pública general reducida GNU |
Sitio web | grgen |
Graph Rewrite GENerator compila los lenguajes en ensamblados CLI eficientes (a través de C # -Code en un paso intermedio), que se pueden integrar a través de una API en código escrito en cualquier lenguaje .NET . GrGen se puede ejecutar en Windows y Linux (se necesita Mono ) y es de código abierto disponible en LGPL v3.
Para la creación rápida de prototipos y la depuración, el paquete incluye un shell interactivo y un visor de gráficos (VCG-). Con sus lenguajes y su depuración visual y paso a paso, GrGen permite desarrollar en el nivel natural de abstracción de 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 para ese tipo de tareas mucho más allá de lo que se puede lograr programando en un lenguaje de programación tradicional; debido a muchas optimizaciones de rendimiento implementadas, todavía permite lograr 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 gráficos (en función de su desempeño con respecto a diversas tareas planteadas en diferentes ediciones del Concurso de herramientas de transformación (/ GraBaTs)).
Muestra de especificación
A continuación se muestra un ejemplo que contiene un modelo de gráfico y especificaciones de reglas de la solución GrGen.NET al caso AntWorld presentado en Grabats 08 .
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 { foodCountdown: int = 10;}clase de nodo Ant { hasFood: boolean;}clase de borde GridEdge connect GridNode [1] -> GridNode [1];la clase de borde PathToHill extiende GridEdge;clase de borde AntPosition;
Reescribe las reglas:
regla TakeFood (actual: hormiga){ actual -: AntPosition-> n: GridNode \ AntHill; si {! curAnt.hasFood && n.food> 0; } modificar { eval { curAnt.hasFood = true; n. alimento = n. alimento - 1; } }}regla SearchAlongPheromonas (actual: Ant){ curAnt -oldPos: AntPosition-> old: GridNode <-: PathToHill- nuevo: GridNode; if {new.pheromonas> 9; } modificar { eliminar (oldPos); curAnt -: AntPosition-> new; }}prueba ReachedEndOfWorld (actual: Ant): (GridNode){ actual -: AntPosition-> n: GridNode \ AntHill; negativo { n <-: PathToHill-; } retorno (n);}
enlaces externos
- Página de inicio de la GrGen.NET -project
- Manual de usuario de GrGen.NET
- Breve introducción a GrGen.NET 1.4 (desactualizado)
Papeles de conferencia
- GrGen: una herramienta rápida de reescritura de gráficos basada en SPO / [1] - ICGT 06
- Generación de triángulos de Sierpinski: un estudio de caso para herramientas de transformación de gráficos - AGTIVE 07
- Gráfico Reescritura de hardware dependientes optimizaciones del programa - 07 AGTIVE
- Una primera evaluación experimental de la coincidencia de patrones de gráficos basados en el plan de búsqueda : AGTIVE 07
- Personalización de GrGen.NET para la transformación de modelos - GraMoT 08
- Reglas de reescritura de gráficos con recursividad estructural - ICGT / GCM 08
Ver también
- Transformación / reescritura de gráficos
- Lenguaje específico de dominio (DSL)
- Generación de código fuente