public Automata afnSimple(Lista_ER simboloRegex) { Automata automataFN = new Automata(); Estado begin = new Estado(0); Estado aceptacion = new Estado(1); Trancision transition = new Trancision(begin, aceptacion, simboloRegex); begin.Transitions.Add(transition); automataFN.States.Add(begin); automataFN.States.Add(aceptacion); automataFN.Initial = begin; automataFN.Acceptance.Add(aceptacion); automataFN.Lenguage_R = simboloRegex.getEtiqueta() + ""; i++; return(automataFN); }
private Estado Clench(Estado Actual_state, int begin, Lista_ER symbol, int Name) { Estado estado; if (Actual_state == null) { estado = new Estado(Name); estado.inserted.Add(begin); estado.key.Add(begin); Table_States.Add(estado); } else { estado = Actual_state; if (!estado.inserted.Contains(begin)) { estado.inserted.Add(begin); } } for (int i = 0; i < states.Count; i++) { if (states.ElementAt(i).Begin.Identifier == begin) { //Quizas lleve otra condicion if (states.ElementAt(i).Symbol.getDescripcion().Equals(symbol.getDescripcion()) && states.ElementAt(i).Symbol.getEtiqueta().Equals(symbol.getEtiqueta())) { if (!pending_states.Contains(states.ElementAt(i))) { pending_states.Push(states.ElementAt(i)); } } } } while (pending_states.Count > 0) { Clench(estado, pending_states.Pop().End.Identifier, symbol, estado.Identifier); } if (!AFD_pendent.Contains(estado)) { AFD_pendent.Enqueue(estado); } return(estado); }
private Estado Move(Estado state, Lista_ER symbol) { Estado temporary = new Estado(Table_States.Count + 1); for (int i = 0; i < state.inserted.Count; i++) { for (int j = 0; j < states.Count; j++) { if (state.inserted.ElementAt(i) == states.ElementAt(j).Begin.Identifier) { if (states.ElementAt(j).Symbol.getDescripcion().Equals(symbol.getDescripcion()) && states.ElementAt(j).Symbol.getEtiqueta().Equals(symbol.getEtiqueta())) { if (!temporary.inserted.Contains(states.ElementAt(j).End.Identifier)) { temporary.inserted.Add(states.ElementAt(j).End.Identifier); temporary.key.Add(states.ElementAt(j).End.Identifier); } } } } } temporary.key.Sort(); return(temporary); }
public Trancision(Estado begin, Estado end, Lista_ER symbol) { Begin = begin; End = end; Symbol = symbol; }
public void agregar(String etiqueta, String descripcion) { Lista_ER nuevo = new Lista_ER(etiqueta, descripcion); Caracteres.Add(nuevo); }