Maquina AFND-E
by Klawztro
HTML
<!-- MAQUINA AFND-E -->
JavaScript
var q0 = {},
q1 = {},
q2 = {},
qf = {};
q0.__constructor__ = 'q0';
q0.a = [q1,q0];
q0.b = [q0];
q1.__constructor__ = 'q1';
q1.a = [q2];
q2.__constructor__ = 'q2';
q2.b = [qf];
qf.__constructor__ = 'qf';
qf.final = true;
//Definindo funções vazias.
q0.E = q1;
q1.E = q2;
// <--------------------------------------------------------------------->
function eclose(state) {
var state_list = [],
exist_in_list = false;
state_list.push(state);
while (typeof state.E !== 'undefined' && exist_in_list === false) {
exist_in_list = hasObject(state_list,state.E,'__constructor__');
if (exist_in_list === false) {
state_list.push(state.E);
state = state.E;
}
}
return state_list;
}
// <--------------------------------------------------------------------->
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 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(word,state_list) {
var letter = word.shift(),
valid_word,
apply_func_list = [],
cont = 0,
e_close_result_list = [],
size = state_list.length;
for (; cont < size; cont++) {
if (typeof state_list[cont][letter] !== 'undefined') {
apply_func_list =...