private void analitic() { string[] p; for (int i = 0; i < elemento.Count(); i++) { analisis anl = new analisis(); p = elemento[i].Split('#'); anl.modificar(Convert.ToInt32(p[1]), p[0], p[2]); analisis.Add(anl); } }
public void ejemplo_3() { int [,] tabla = new int[3, 3] { { 2, 0, 1 }, { 0, -1, 0 }, { 0, -2, 0 } }; Stack <ElementoPila> pila = new Stack <ElementoPila>(); int fila = 0, columna = 0, accion = 0; bool aceptación = false; Lexico lexico = new Lexico("a$"); analisis entrada = new analisis(); entrada.modificar(0, "$", "$"); ElementoPila t = new Terminal(entrada.id, entrada.palabra, 0); ElementoPila aux; pila.Push(t); List <analisis> elemento = lexico.leerCadena(); aux = pila.Peek(); fila = aux.accion; columna = elemento[0].id; accion = tabla[fila, columna]; ElementoPila nt = new NoTerminal(entrada.id, entrada.palabra, accion); mostrar2(pila); Console.WriteLine("entrada: " + elemento[1].palabra); Console.WriteLine("accion: " + nt.accion); pila.Push(nt); if (accion == 2) { aux = pila.Peek(); fila = aux.accion; columna = elemento[1].id; accion = tabla[fila, columna]; pila.Push(new NoTerminal(elemento[1].id, elemento[1].palabra, accion)); mostrar2(pila); Console.WriteLine("entrada: " + elemento[1].palabra); Console.WriteLine("accion: " + accion); } if (accion == -2) { pila.Pop(); aux = pila.Peek(); fila = aux.accion; columna = 2; accion = tabla[fila, columna]; //transicion pila.Push(new Estado(2, "E1", accion)); mostrar2(pila); Console.WriteLine("entrada: " + elemento[1].palabra); Console.WriteLine("accion: " + accion); aux = pila.Peek(); fila = aux.accion; columna = elemento[1].id; accion = tabla[fila, columna]; if (accion == -1) { mostrar2(pila); Console.WriteLine("entrada: " + elemento[1].palabra); Console.WriteLine("accion: " + accion); aceptación = accion == -1; if (aceptación) { Console.WriteLine("aceptacion"); } } } }