GrGen
Aspeto
GrGen.NET (Graph Rewrite GENerator, .NET version, na sigla em inglês) é uma ferramenta de reescrita de grafos que gera eficientes códigos em C# (ou em .NET assembly) através das especificaçoes das regras de reescrita. GrGen é princpalmente utilizado para geração do núcleo de algoritomos de aplicações para processar estruturas de dados na forma de grafos (programas com grafos, redes sociais, estruturas químicas, …).
Amostra de especificação[editar | editar código-fonte]
Um exemplo contendo alguns modelos de grafos e regras de especificação pela solução do GrGen-NET para o Desafio do Mundo das Formigas proposto na Grabats 08.
Grafo modelo:
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;
Regras de reescrita:
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); }