public override object Numerar(ref LinkedList <Nodo> listaNodos, ref int n) { Terminal epsilon = new Terminal(Terminal.Tipo.EPSILON, "ε"); if (Estructura1 is Terminal term) { n1 = new Nodo(n++); n2 = new Nodo(n++); Transicion tra1 = new Transicion(epsilon, n2); n1.Transiciones.AddLast(tra1); n3 = new Nodo(n++); Transicion tra2 = new Transicion(term, n3); n2.Transiciones.AddLast(tra2); Transicion tra3 = new Transicion(epsilon, n2); n3.Transiciones.AddLast(tra3); n4 = new Nodo(n++); Transicion tra4 = new Transicion(epsilon, n4); n3.Transiciones.AddLast(tra4); Transicion tra5 = new Transicion(epsilon, n4); n1.Transiciones.AddLast(tra5); this.SetFirst(n1); this.SetLast(n4); listaNodos.AddLast(n1); listaNodos.AddLast(n2); listaNodos.AddLast(n3); listaNodos.AddLast(n4); } else { n1 = new Nodo(n++); Estructura1.Numerar(ref listaNodos, ref n); n2 = Estructura1.GetFirst(); Transicion tra1 = new Transicion(epsilon, n2); n1.Transiciones.AddLast(tra1); n3 = Estructura1.GetLast(); Transicion tra2 = new Transicion(epsilon, n2); n3.Transiciones.AddLast(tra2); n4 = new Nodo(n++); Transicion tra4 = new Transicion(epsilon, n4); n3.Transiciones.AddLast(tra4); Transicion tra5 = new Transicion(epsilon, n4); n1.Transiciones.AddLast(tra5); this.SetFirst(n1); this.SetLast(n4); } return(null); }
public override object Numerar(ref LinkedList <Nodo> listaNodos, ref int n) { if (Estructura1 is Terminal term1) { //.ab if (Estructura2 is Terminal term2) { n1 = new Nodo(n++); n2 = new Nodo(n++); Transicion tra1 = new Transicion(term1, n2); n1.Transiciones.AddLast(tra1); n3 = new Nodo(n++); Transicion tra2 = new Transicion(term2, n3); n2.Transiciones.AddLast(tra2); this.SetFirst(n1); this.SetLast(n3); listaNodos.AddLast(n1); listaNodos.AddLast(n2); listaNodos.AddLast(n3); } //.a.bc else { n1 = new Nodo(n++); Estructura2.Numerar(ref listaNodos, ref n); n2 = Estructura2.GetFirst(); Transicion tra1 = new Transicion(term1, n2); n1.Transiciones.AddLast(tra1); this.SetFirst(n1); this.SetLast(Estructura2.GetLast()); listaNodos.AddLast(n1); } } else { Estructura1.Numerar(ref listaNodos, ref n); n2 = Estructura1.GetLast(); //..abc if (Estructura2 is Terminal term2) { n3 = new Nodo(n++); Transicion tra = new Transicion(term2, n3); n2.Transiciones.AddLast(tra); this.SetFirst(Estructura1.GetFirst()); this.SetLast(n3); listaNodos.AddLast(n3); } //..ab.cd else { Estructura2.Numerar(ref listaNodos, ref n); Terminal epsilon = new Terminal(Terminal.Tipo.EPSILON, "ε"); n3 = Estructura2.GetFirst(); Transicion tra = new Transicion(epsilon, n3); n2.Transiciones.AddLast(tra); this.SetFirst(Estructura1.GetFirst()); this.SetLast(Estructura2.GetLast()); } } return(null); }