-
Notifications
You must be signed in to change notification settings - Fork 1
3. Get Started: Escrevendo e convertendo um AFN para AFD (Hello World)
Com a estrutura básica já é possível obter a conversão equivalente do seu AFN. Caso a entrada seja um AFD, o algoritmo irá retornar o mesmo autômato da entrada, uma vez que não precisa de conversão. Segue um modelo possível de AFN, apenas com as propriedades obrigatórias, cujas descrições podem ser encontradas na página sobre a estrutura geral do algoritmo.
Traduzindo um Autômato Finito Não Determinístico (AFN) para um Autômato Finito Determinístico (AFD) através da estrutura intena do AutomataTranslator
Ao baixar o repositório, você conta com alguns exemplos na pasta models/
, tanto em formato JSON, como o que vamos fazer aqui, quanto arquivos em formato JFLAP.
Nesse artigo, você irá aprender a obter um AFD equivalente do autômato abaixo (localizado em models/json/eg01.json
) partir do AutomataTranslator.
{
"structure": {
"type": "fa",
"automaton": {
"state": [
{
"@id": 0,
"@name": "q0",
"initial": true,
"final": false
},
{
"@id": 1,
"@name": "q1",
"initial": false,
"final": true
}
],
"transition": [
{
"from": 0,
"read": "0",
"to": 0
},
{
"from": 0,
"read": "0",
"to": 1
},
{
"from": 0,
"read": "1",
"to": 1
},
{
"from": 1,
"read": "0",
"to": 0
}
]
}
}
}
Abra o AutomataTranslator com o comando
$ python app.py
A seguinte interface será executada:
Ao clicar no menu Arquivo, você terá as seguintes opções:
- Abrir
- Salvar
- Importar arquivo JFLAP
- Exportar para formato JFLAP
- Ver tabela de transição
- Sair
Clique no opção Abrir para então navegar até a pasta models/json/
no repositório baixado
Selecione o arquivo eg01.json
e o abra
Ao clicar no botão Converter para iniciar o processo de tradução para AFD equivalente, você verá a seguinte mensagem, caso tudo funcione bem:
No espaço à direita, você pode observar o resultado da conversão no formato JSON:
Para melhor visualização e compreensão da conversão, você pode visualizar a tabela de transições clicando na opção Ver tabela de transição no menu Arquivo
Trabalho desenvolvido para compor a nota parcial da 1ª ARE da disciplina de Computação Teórica/Compiladores, ministrada pelo Profº M.Sc. Camilo Souza.
~ desenvolvido por Allex Lima & Daniel Bispo com ❤️ em Python 2.7.x utilizando PyQt4 e JsonSchema!