AFND-E TO AFND/AFD
Converte uma máquina AFND-E para uma máquina AFND ou AFD.
by Klawztro
JavaScript
var q0 = {},
q1 = {},
q2 = {},
qf = {};
q0.__constructor__ = 'q0';
q0.a = [q1,q0];
q0.b = [q0];
q1.__constructor__ = 'q1';
q1.a = [q2];
//q1.b = [q1];
q2.__constructor__ = 'q2';
q2.b = [qf];
qf.__constructor__ = 'qf';
qf.final = true;
//Definindo funções vazias.
q0.E = q1;
q1.E = q2;
// <--------------------------------------------------------------------->
function hasObject(collection,obj,identifier) {
var size = collection.length,
cont = 0;
for(; cont < size; cont++) {
if (collection[cont][identifier] === obj[identifier]) {
return true;
}
}
return false;
}
function collectionHasProperty(collection,property) {
var size = collection.length,
cont = 0;
for (; cont < size; cont++) {
if (collection[cont].hasOwnProperty(property)) {
return true;
}
}
return false;
}
function hasProperty(obj,property) {
if (obj.hasOwnProperty(property)) {
return true;
}
return false;
}
// <--------------------------------------------------------------------->
function arrayUnique(_array,identifier) {
var new_array = [],
cont = 0,
exist_in_array = false,
size = _array.length;
for (; cont < size; cont++) {
exist_in_array = hasObject(new_array,_array[cont],identifier);
if (exist_in_array === false) {
new_array.push(_array[cont]);
}
}
return new_array;
}
// <--------------------------------------------------------------------->
function iterate(lista_letras,estado_inicial) {
var nova_maquina = [],
state_name_counter = 0,
final_state_name_counter = 0,
test_list = [];
nova_maquina[0] = { estado : estado_inicial, nome : 'q' + state_name_counter };
test_list = addTests(test_list,nova_maquina[0].estado,lista_letras);
state_name_counter++;
for (var cont = 0; cont < test_list.length; cont++) {
...