- GrGen.NET
-
GrGen.NET Paradigmen: deklarativ,Multiparadigma Erscheinungsjahr: 2003 Entwickler: [Sebastian Hack] und [Rubino Geiss] Aktuelle Version: 3.0 (2011-07-29) Typisierung: statisch Betriebssystem: Windows, Linux Lizenz: LGPL v3 http://www.info.uni-karlsruhe.de/software/grgen GrGen.NET (Graph Rewrite GENerator, .NET-Version) ist ein Graphersetzungssystem, das aus deklarativen Graphersetzungsregeln effizienten C#-Code (bzw. .NET-Assemblies) generiert. Graphen und Graphersetzungsregeln werden durch intuitive Fachsprachen (DSL) mit einer auf dem SPO-Ansatz beruhenden Semantik (DPO ist ebenfalls verfügbar) spezifiziert. Sie können über Graphersetzungssequenzen genutzt werden, einer einfachen, aber für viele Graphersetzungsaufgaben hinreichenden Steuerungssprache, oder über eine Programmierschnittstelle durch jede .NET-Sprache. GrGen ist dafür vorgesehen, den algorithmischen Kern von Anwendungen zu generieren, die graphartige Daten (Programmgraphen, soziale Netze, chemische Strukturen, ...) verarbeiten. Zum Rapid Prototyping und Debugging enthält das Programmpaket eine interaktive Kommandozeile und einen (VCG-)Graphvisualisierer; es kann unter Windows und Linux (Mono benötigt) ausgeführt werden und ist als Open Source unter der LGPL v3 verfügbar.
Beispielspezifikation
Es folgt ein Auszug aus der Graphmodell- und Ersetzungsregelspezifikation der GrGen.NET-Lösung für die AntWorld-Aufgabe, die auf der Grabats 08 gestellt wurde.
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); }
Weblinks
- Hauptseite des GrGen.NET-Projektes
- GrGen.NET User Manual (engl.) (PDF-Datei; 1,64 MB)
- Kurze Einführung in GrGen.NET (engl.) (PDF-Datei; 174 kB)
- Wissenschaftliche Veröffentlichungen zu GrGen
Kategorien:- Graphersetzung
- Deklarative Programmiersprache
- Freies Programmierwerkzeug
Wikimedia Foundation.