Alguns Casos Particulares
Next: Comandos
Up: Especificação do Comportamento
Previous: Repetição
Algumas combinações dos operadores não se comportam bem quando efectuadas com as regras acima descritas.
Vamos de seguida apresentar esses casos e as soluções propostas.
Dado que os operadores de sequência e de paralelismo síncrono necessitam que as marcações finais das duas expressões envolvidas se verifiquem para a expressão global poder terminar, as expressões
exp1
exp2
exp1
exp2
nunca terminariam se a definição da repetição fosse a apresentada na fig. 18.
Mesmo que
e
considerassem a segunda condição da rede como marcação final, como a transição nula retira automaticamente o token quando ele lá é colocado, o problema mantém-se.
A solução é redefinir, nestes casos, o operador de repetição para passar a ser o apresentado na fig. 19, considerando os operadores de sequência e de paralelismo síncrono a segunda condição como a marcação final dessa rede.
Figure 19: Rede para o Operador de Repetição (versão 2)
As expressões dos tipos
g1(v1)+(g2(v2)
g3(v3))
g1(v1)+(g2(v2)
g3(v3))
apresentam também problemas pois a transição nula inicial dos operadores
e
impede que g1(v1) possa ocorrer.
Este problema pode ser solucionado reescrevendo a rede do modo que está apresentado na fig. 20.
Figure 20: Rede para os operadores de Soma e Concorrência
Finalmente existe o caso da expressão
(exp1
exp2)
O problema aqui é que quando uma das expressões do operador
terminar, deverá terminar a expressão global exp1
exp2 para que possa reiniciar-se.
O que acontece, no entanto, é que na outra expressão ainda existem tokens que é então necessário retirar.
A única forma de o conseguir será incluir tantas transições nulas quantas as necessárias de modo a que, quando uma das expressões terminar, todos os tokens da rede da outra sejam removidos.
A determinação dessas transições pode, no entanto, não ser trivial.
Next: Comandos
Up: Especificação do Comportamento
Previous: Repetição
Jose Franscisco Creissac Campos
Wed Jan 31 20:30:35 MET 1996