COMPORT – Compilador Portugol - Nilo Menezes
COMPORT – Compilador Portugol - Nilo Menezes
COMPORT – Compilador Portugol - Nilo Menezes
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Figura 3 - Exemplo de autômato finito<br />
ComPort <strong>–</strong> <strong>Compilador</strong> <strong>Portugol</strong><br />
Supondo aabab como entrada, iniciaríamos no estado q0, lendo o “a”<br />
mais à esquerda. Pela função programa da Tabela 1, teríamos trocado de estado<br />
para q1 e leríamos o segundo “a”, permanecendo em q1. Ao lermos o “b”,<br />
trocaríamos de estado para qf, onde permaneceremos, enquanto “a” ou “b” forem<br />
lidos até o fim da fita. Como chegamos a um estado final no fim da fita, este<br />
autômato diz que a seqüência é válida.<br />
Em autômatos finitos não-determinísticos temos a mesma definição<br />
formal, exceto em relação a função programa que pode gerar um conjunto de<br />
estados para um símbolo de entrada.<br />
Ao executar um autômato finito não-determinístico e obtermos um<br />
conjunto de estados como resultado da função programa, “cria-se” uma linha de<br />
execução independente para cada elemento do conjunto. Como se tivéssemos uma<br />
nova máquina para cada elemento, com recursos e destinos próprios.<br />
Todo autômato finito não determinístico pode ser transformado em<br />
autômato finito determinístico, como é provado em MENEZES (2001).<br />
Segundo AHO (1995), tanto os autômatos finitos determinísticos<br />
quanto os não-determinísticos são capazes de reconhecer precisamente expressões<br />
regulares. Conseqüentemente, ambos podem validar exatamente o que estas<br />
expressões podem denotar. Entretanto, existe uma barganha tempo-espaço:<br />
enquanto os autômatos finitos determinísticos podem levar a reconhecedores mais<br />
rápidos que os não determinísticos, um autômato finito determinístico pode ser muito<br />
maior que um não determinístico equivalente.<br />
23