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 | 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);
}

Ligações externas[editar | editar código-fonte]

Ver também[editar | editar código-fonte]