GrGen
Origem: Wikipédia, a enciclopédia livre.
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]
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);
}