private void concatenacion(Estados estadoInicial, Estados estadoFinal) { Transiciones tr1 = new Transiciones("ε", estadoInicial, estadoFinal); transiciones.Add(tr1); pilaFinal.Push(finalSal); finalSal = null; }
private void ExpresionToAutomata() //private void regExpToAFN() { for (int i = 0; i < expresionRegularPostFijo.Length; i++) { if (simbolos.Contains(expresionRegularPostFijo.ElementAt(i))) { Transiciones tr1 = new Transiciones(Char.ToString(expresionRegularPostFijo.ElementAt(i))); transiciones.Add(tr1); Estados estadoInicio = tr1.getEstadoInicial(); Estados estadoFinal = tr1.getEstadoFinal(); pilaInicial.Push(estadoInicio); pilaFinal.Push(estadoFinal); } else if (Char.ToString(expresionRegularPostFijo.ElementAt(i)).Equals("|")) { Estados inicioLow = pilaInicial.Pop(); Estados finalLow = pilaFinal.Pop(); Estados inicioUpp = pilaInicial.Pop(); Estados finalUpp = pilaFinal.Pop(); or(inicioUpp, finalUpp, inicioLow, finalLow); } else if (Char.ToString(expresionRegularPostFijo.ElementAt(i)).Equals("*")) { Estados estadoInicio = pilaInicial.Pop(); Estados estadoFinal = pilaFinal.Pop(); asterisco(estadoInicio, estadoFinal); } else if (Char.ToString(expresionRegularPostFijo.ElementAt(i)).Equals(".")) { finalSal = pilaFinal.Pop(); Estados estadoFinal = pilaFinal.Pop(); Estados estadoInicio = pilaInicial.Pop(); concatenacion(estadoFinal, estadoInicio); } if (i == expresionRegularPostFijo.Length - 1) { estadosFinales.Add(pilaFinal.Pop()); if (simbolos.Contains('ε')) //epsilon { simbolos.Remove('ε'); //symbolList.remove(symbolList.indexOf('ε')); } } } }
private void asterisco(Estados estadoInicial, Estados estadoFinal) { Estados in_ = new Estados(contadorEstados); Estados out_ = new Estados(contadorEstados); Transiciones tr1 = new Transiciones("ε", estadoFinal, estadoInicial); Transiciones tr2 = new Transiciones("ε", in_, out_); Transiciones tr3 = new Transiciones("ε", in_, estadoInicial); Transiciones tr4 = new Transiciones("ε", estadoFinal, out_); transiciones.Add(tr1); transiciones.Add(tr2); transiciones.Add(tr3); transiciones.Add(tr4); pilaInicial.Push(in_); pilaFinal.Push(out_); }
private void or(Estados inicioUpp, Estados finaUpp, Estados inicioLow, Estados finalLow) { Estados in_ = new Estados(contadorEstados); Estados out_ = new Estados(contadorEstados); Transiciones tr1 = new Transiciones("ε", in_, inicioUpp); Transiciones tr2 = new Transiciones("ε", in_, inicioLow); Transiciones tr3 = new Transiciones("ε", finaUpp, out_); Transiciones tr4 = new Transiciones("ε", finalLow, out_); transiciones.Add(tr1); transiciones.Add(tr2); transiciones.Add(tr3); transiciones.Add(tr4); pilaInicial.Push(in_); pilaFinal.Push(out_); }
private void btnTransiciones_Click(object sender, EventArgs e) { Transiciones transiciones = new Transiciones(txaExpresiones.Text); }