JSFiddle - React, Tailwind, and code Playground
by Klawztro
JavaScript
function AfndToAfd() {
this.state_ident = '__constructor__';
this.final_signal = '_final';
this.init_signal = '_initial';
this.state_base_name = 'q';
};
/**
Algoritmo para converção:
Recebe estado inicial.
Gera os testes para este estado (Estado x funcao_1 , estado x funcao_2, etc
Enquanto houverem testes:
Executa teste, e verifica o estado resultante.
O conjunto de estados resultante não existe na máquina? Sim:
Cria um novo estado.
Adiciona estado na lista de estados.
Armazene seu índice.
Cria testes para este novo estado.
Adiciona testes na lista de testes.
Não:
Identifique o indice do estado
Define resultado do teste como sendo o índice.
Fim Enquanto.
Estrutura do estado:
{
state_ident : String,
estado : [ ] //Lista de estados que ele representa.
}
*/
AfndToAfd.prototype.convert = function(lista_letras,estado_inicial) {
var nova_maquina = [],
state_name_counter = 0,
ident = this.state_ident,
final_signal = this.final_signal,//'final',
init_signal = this.init_signal,// 'initial',
addTests = this.addTests,
getStateIndex = this.getStateIndex,
stateGenerate = this.stateGenerate,
state_base_name = this.state_base_name,
test_list = [];
nova_maquina[0] = { estado : [estado_inicial], nome : state_base_name + state_name_counter };
nova_maquina[0][init_signal] = true;
test_list = addTests(test_list,nova_maquina[0].estado,lista_letras);
state_name_counter++;
for (var cont = 0; cont < test_list.length; cont++) {
var test = test_list[cont],
result_state_index = 0,
index_estado_testado = 0,
estado = test.estado,
letra =...