Parsing com Agentes


Demo

Demonstração:

Manual do utilizador


Algoritmo de Parsing (in english)

Agentes

A ideia geral de fazer o parsing por agente passa pela construção de agentes autónomos, que são libertados nos símbolos que possivelmente fazem blocos e dar-lhes a autonomia necessária para se reorganizarem.  O fluxograma possui os símbolos de decisão (losango) e o símbolo de conexão (circunferência)  que sinalizam o inicio e o fim dos blocos do programa. Os restantes símbolos são símbolos de passagem.

O resultado esperado do algoritmo é um conjunto de agentes que sinalizem onde começam e onde terminam os blocos. A partir do momento em que sabemos onde começam e terminam os ciclos a verificação formal do programa passa pela verificação de cada um dos ciclos.

Os agentes têm dois comportamentos distintos: quando estão em adaptação e quando estão em competição:

Comportamento de adaptação:

Quando os agentes estão em adaptação percorrem o fluxo até encontrem um símbolo de inicio/fim de bloco. Quando a atingem param e geram um ou dois filhos (agentes), conforme o numero de fluxos que saem do símbolo,   que continuam com o comportamento de adaptação.

 O processo começa quando se cria um agente no símbolo "inicio" e termina quando todos os agentes estiverem adaptados.

Comportamento de competição:

De todos os agentes que povoam o fluxograma existem alguns que representam ciclos. Estes agentes são promovidos a ciclos e obrigam os agentes vizinhos (pais e filhos) a reorganizar-se de forma a que também eles possam ser promovidos ou são definitivamente eliminados.

O processo termina quando todos os agentes forem promovidos a ciclos, e isto significa que o fluxograma está correcto, ou não existirem mais promoções a fazer e significa que os símbolos dos agentes não promovidos não estão correctamente definidos no algoritmo.

Ciclo Enquanto

Detecção :  Um agente verifica que é um ciclo enquanto se a figura do pai é a mesma que a sua figura final e esta figura é da classe Decisor.
Reorganização :O agente tem um irmão que seguir pelo caminho do apontador falso. O agente  desliga-se do pai  e faz com que o final do pai seja o final do seu irmão. O irmão não é mais necessário e é destruído.

Inicial Final

Ciclo Faz Enquanto

Detecção :Um agente detecta que é um ciclo Faz enquanto  se o inicio for um conector, se o fim for um decisor e se o filho que nasceu do apontador verdadeiro terminar na figura que é o seu inicio.

Reorganização : O agente tem de eliminar os filho que nasceu do seu decisor pelo ponteiro da verdade e modificar o final do seu pai para o final do filho que nasceu no lado falso e por fim eliminar também este filho.

Inicial Final

Ciclo Repete Até

O ciclo Repete Até  funciona nos mesmos moldes do ciclo Faz Enquanto com a excepção que o ciclo é feito com a condição falsa, e o seu irmão é o que nasceu da condição verdadeira.

 

Selecção de instruções

Detecção :Um agente sabe que é uma estrutura de selecção se tiver um irmão gémeo que tenham o mesmo inicio, o mesmo fim, que o inicio seja um decisor e o fim seja um conector.

Reorganização : para fazer uma estrutura de decisão é necessário eliminar o irmão gémeo, e desviar o final do pai paro o final do filho do agente e eliminar o seu filho.

Inicial Final

Exemplo complexo

Inicial Final

 

 


(C) António Manso / Dezembro 2006