GrGen

linguagem de programação

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

Ligações externas

editar

Ver também

editar