GrGen.NET

GrGen.NET ist ein Softwareentwicklungswerkzeug, das Programmiersprachen (Fachsprachen (DSL)) anbietet, die auf die Verarbeitung von graphartigen Daten hin optimiert wurden. In ihrem Kern bestehen die Sprachen aus modularen Graphersetzungregeln, die auf deklarativer Graphmustersuche- und Ersetzung aufbauen; sie werden durch viele Konstrukte, die in der imperativen und objekt-orientierten Programmierung geläufig sind ergänzt, und mit aus Datenbankenabfragesprachen bekannten Sprachmitteln vervollständigt.

GrGen.NET
Paradigmen: Multiparadigma: deklarativ, imperativ, objekt-orientiert
Erscheinungsjahr: 2003
Entwickler: Sebastian Hack, Rubino Geiss, Moritz Kroll, Edgar Jakumeit, u. v. a.
Aktuelle Version: 4.5  (9. April 2017)
Typisierung: statisch, teilweise dynamisch, stark, nominativ
Betriebssystem: Windows, Linux
Lizenz: LGPL v3
http://grgen.net/
Debugging der Sequenz zum Erzeugen einer Koch-Schneeflocke (links die Regeln, unten die GrShell mit hervorgehobener aktueller Regel, rechts yComp mit hervorgehobener Passung im Arbeitsgraph)
Ausführung des Ersetzungsschrittes

Der Graph Rewrite GENerator übersetzt die Sprachen in effiziente .NET-Assemblies (über C#-Code als Zwischenschritt), die über eine Programmierschnittstelle in den Code einer beliebigen .NET-Sprache integriert werden können. GrGen kann unter Windows und Linux (Mono benötigt) ausgeführt werden und ist als Open Source unter der LGPL v3 verfügbar.

Zum Rapid Prototyping und Debugging enthält das Programmpaket eine interaktive Kommandozeile und einen (VCG-)Graphvisualisierer. Mit seinen Sprachen und seinem graphischen und schrittweisen Debugging erlaubt GrGen die Entwicklung auf dem natürlichen Abstraktionsniveau von graphbasierten Darstellungen. Selbige finden zum Beispiel im Ingenieurwesen, der Modelltransformation, der Computerlinguistik, oder dem Compilerbau (als Intermediate Representation) Verwendung.

GrGen erhöht die Produktivität für diese Art von Aufgaben deutlich über das hinaus, was mit der Programmierung in einer gewöhnlichen Programmiersprache erreicht werden kann; aufgrund der vielen implementierten Optimierungen erlaubt es dennoch schnelle Lösungen zu erreichen. Seine Entwickler bewerben das System mit der Aussage, dass es die höchste kombinierte Entwicklungs- und Ausführungsgeschwindigkeit bietet, die für das algorithmische Verarbeiten von Graphen verfügbar ist (basierend auf ihrem Abschneiden bezüglich diverser Aufgaben, die in unterschiedlichen Ausgaben des Transformation Tool Contests (/GraBaTs) gestellt wurden).

Beispielspezifikation

Es f​olgt ein Auszug a​us der Graphmodell- u​nd Ersetzungsregelspezifikation d​er GrGen.NET-Lösung für d​ie @1@2Vorlage:Toter Link/www.fots.ua.ac.be(Seite n​icht mehr abrufbar, Suche i​n Webarchiven: AntWorld-Aufgabe (PDF; 105 kB)) , d​ie auf d​er Grabats 08 gestellt wurde.[1]

Graphmodell:

 node class GridNode {
     food:int;
     pheromones:int;
 }
 node class GridCornerNode extends GridNode;
 node class AntHill extends GridNode {
     foodCountdown:int = 10;
 }
 node class Ant {
     hasFood:boolean;
 }

 edge class GridEdge connect GridNode[1] -> GridNode[1];
 edge class PathToHill extends GridEdge;
 edge class AntPosition;

Ersetzungsregeln:

 rule TakeFood(curAnt:Ant)
 {
     curAnt -:AntPosition-> n:GridNode\AntHill;
     if { !curAnt.hasFood && n.food > 0; }

     modify {
         eval {
             curAnt.hasFood = true;
             n.food = n.food - 1;
         }
     }
 }

 rule SearchAlongPheromones(curAnt:Ant)
 {
     curAnt -oldPos:AntPosition-> old:GridNode <-:PathToHill- new:GridNode;
     if{ new.pheromones > 9; }

     modify {
         delete(oldPos);
         curAnt -:AntPosition-> new;
     }
 }

 test ReachedEndOfWorld(curAnt:Ant) : (GridNode)
 {
     curAnt -:AntPosition-> n:GridNode\AntHill;
     negative {
         n <-:PathToHill-;
     }
     return (n);
 }

Einzelnachweise

  1. Grabats 08 (Memento vom 23. Juli 2012 im Internet Archive)
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.