private void SELECTO(Nodo nd) { try { if (preanalisis.TipoToken.Equals(Token.Tipo.id)) { Token tk = Match(Token.Tipo.id, "Se esperaba un id"); nd.Agregar(new Nodo(tk.Lexema)); } else if (preanalisis.TipoToken.Equals(Token.Tipo.asterisco)) { Token tk = Match(Token.Tipo.asterisco, "Se esperaba un *"); nd.Agregar(new Nodo(tk.Lexema)); } else { Errores("Se esperaba un id o un * y se obtuvo " + preanalisis.Lexema, preanalisis.Fila, preanalisis.Columna); Panic(); } }catch (Exception e) { Console.WriteLine("Error Sintactico " + e.ToString()); return; } }
public DFS() { // Ejemplo: Nodo a = new Nodo("a"); Nodo b = new Nodo("b"); Nodo c = new Nodo("c"); Nodo d = new Nodo("d"); Nodo e = new Nodo("e"); Nodo f = new Nodo("f"); Nodo g = new Nodo("g"); Nodo h = new Nodo("h"); Nodo i = new Nodo("i"); Nodo j = new Nodo("j"); Nodo k = new Nodo("k"); Nodo l = new Nodo("l"); a.Agregar(b); a.Agregar(c); c.Agregar(d); b.Agregar(g); b.Agregar(h); g.Agregar(k); g.Agregar(i); g.Agregar(j); j.Agregar(l); d.Agregar(e); d.Agregar(f); Console.WriteLine("Lo encontro?: " + Algoritmo(a, h)); }
private void VALORES(Nodo nd) { try { if (preanalisis.TipoToken.Equals(Token.Tipo.coma)) { Token tk = Match(Token.Tipo.coma, "Se esperaba una ,"); Nodo ndv = new Nodo("VALOR"); VALOR(ndv); Nodo ndvs = new Nodo("VALORES"); VALORES(ndvs); nd.Agregar(new Nodo(tk.Lexema)); nd.Agregar(ndv); nd.Agregar(ndvs); } else { nd.Agregar(new Nodo("ε")); } }catch (Exception e) { Console.WriteLine("Error Sintactico " + e.ToString()); return; } }
private void ELIMINAR(Nodo nodo) { try { Token tk1 = Match(Token.Tipo.R_de, "Se esperaba la palabra Reservada De"); if (tk1 == null) { return; } Token tk2 = Match(Token.Tipo.id, "Se esperaba un id"); if (tk2 == null) { return; } Nodo nde1 = new Nodo("ELIMINAR1"); ELIMINAR1(nde1); Token tk3 = Match(Token.Tipo.puntoycoma, "Se esperaba un ;"); if (tk3 == null) { return; } nodo.Agregar(new Nodo(tk1.Lexema)); nodo.Agregar(new Nodo(tk2.Lexema)); nodo.Agregar(nde1); nodo.Agregar(new Nodo(tk3.Lexema)); }catch (Exception e) { Console.WriteLine("Error " + e.ToString()); return; } }
private void CAMPOS(Nodo nd) { try { if (preanalisis.TipoToken.Equals(Token.Tipo.coma)) { Token tk1 = Match(Token.Tipo.coma, "Se esperaba una ,"); Token tk2 = Match(Token.Tipo.id, "Se esperaba un id "); nd.Agregar(new Nodo(tk1.Lexema)); nd.Agregar(new Nodo(tk2.Lexema)); Nodo ndt = new Nodo("TIPO"); TIPO(ndt); Nodo ndc = new Nodo("CAMPOS"); CAMPOS(ndc); nd.Agregar(ndt); nd.Agregar(ndc); } else { nd.Agregar(new Nodo("ε")); } }catch (Exception e) { Console.WriteLine("Error sintactico " + e.ToString()); } }
private void SELECCIONAR(Nodo nodo) { try { Nodo nds1 = new Nodo("SELECCIONAR1"); SELECCIONAR1(nds1); Nodo ndst = new Nodo("SELECT"); SELECT(ndst); Token tk1 = Match(Token.Tipo.R_de, "Se esperaba la palabra reservada De"); Token tk2 = Match(Token.Tipo.id, "Se esperaba un id"); Nodo tab = new Nodo("TABLA"); TABLA(tab); Token tk3 = Match(Token.Tipo.donde, "Se esperaba la palabra Reservada Donde"); Nodo ndc = new Nodo("CONDICION"); CONDICION(ndc); Nodo ndcs = new Nodo("CONDICIONES"); CONDICIONES(ndcs); Token tk4 = Match(Token.Tipo.puntoycoma, "Se esperaba un ;"); nodo.Agregar(nds1); nodo.Agregar(ndst); nodo.Agregar(new Nodo(tk1.Lexema)); nodo.Agregar(new Nodo(tk2.Lexema)); nodo.Agregar(tab); nodo.Agregar(new Nodo(tk3.Lexema)); nodo.Agregar(ndc); nodo.Agregar(ndcs); nodo.Agregar(new Nodo(tk4.Lexema)); }catch (Exception e) { Console.WriteLine("Error " + e.ToString()); return; } }
private void TC1(Nodo nd) { if (preanalisis.TipoToken.Equals(Token.Tipo.igual)) { Token tk = Match(Token.Tipo.igual, "Se esperaba un ="); nd.Agregar(new Nodo(tk.Lexema)); } else { nd.Agregar(new Nodo("ε")); } }
private void INSERTAR(Nodo nodo) { try { Token tk1 = Match(Token.Tipo.en, "Se esperaba la palabra Reservada En"); Token tk2 = Match(Token.Tipo.id, "Se esperaba un id "); Token tk3 = Match(Token.Tipo.valores, "Se esperaba la palabra Reservada Valores"); Token tk4 = Match(Token.Tipo.parAbre, "Se esperaba un ("); Nodo ndv = new Nodo("VALOR"); VALOR(ndv); Nodo ndvs = new Nodo("VALORES"); VALORES(ndvs); Token tk5 = Match(Token.Tipo.parCierra, "Se esperaba un )"); Token tk6 = Match(Token.Tipo.puntoycoma, "Se esperaba un ;"); nodo.Agregar(new Nodo(tk1.Lexema)); nodo.Agregar(new Nodo(tk2.Lexema)); nodo.Agregar(new Nodo(tk3.Lexema)); nodo.Agregar(new Nodo(tk4.Lexema)); nodo.Agregar(ndv); nodo.Agregar(ndvs); nodo.Agregar(new Nodo(tk5.Lexema)); nodo.Agregar(new Nodo(tk6.Lexema)); }catch (Exception e) { Console.WriteLine("Error Sintactico" + e.ToString()); return; } }
private void CREARTABLA(Nodo nodo) { try { Token tk1 = Match(Token.Tipo.tabla, "Se esperaba la palabra Reservada Tabla"); Token tk2 = Match(Token.Tipo.id, "Se esperaba un id"); Token tk3 = Match(Token.Tipo.parAbre, "Se esperaba un ("); Token tk4 = Match(Token.Tipo.id, "Se esperaba un id"); Nodo ndt = new Nodo("TIPO"); TIPO(ndt); Nodo ndc = new Nodo("CAMPOS"); CAMPOS(ndc); Token tk5 = Match(Token.Tipo.parCierra, "Se esperaba un )"); Token tk6 = Match(Token.Tipo.puntoycoma, "Se esperaba un ;"); nodo.Agregar(new Nodo(tk1.Lexema)); nodo.Agregar(new Nodo(tk2.Lexema)); nodo.Agregar(new Nodo(tk3.Lexema)); nodo.Agregar(new Nodo(tk4.Lexema)); nodo.Agregar(ndt); nodo.Agregar(ndc); nodo.Agregar(new Nodo(tk5.Lexema)); nodo.Agregar(new Nodo(tk6.Lexema)); }catch (Exception e) { Console.WriteLine("Error Sintactico"); return; } }
private void CONDICION(Nodo nd) { Nodo ndcp = new Nodo("COMP"); COMP(ndcp); Nodo ndtc = new Nodo("TIPOCOMP"); TIPOCOMP(ndtc); Nodo ndcp2 = new Nodo("COMP"); COMP(ndcp2); nd.Agregar(ndcp); nd.Agregar(ndtc); nd.Agregar(ndcp2); }
private void TIPO(Nodo nd) { Token tk = null; switch (preanalisis.TipoToken) { case Token.Tipo.R_entero: tk = Match(Token.Tipo.R_entero, "Se espera la palabra reservada entero"); break; case Token.Tipo.R_flotante: tk = Match(Token.Tipo.R_flotante, "Se espera la palabra reservada flotante"); break; case Token.Tipo.R_cadena: tk = Match(Token.Tipo.R_cadena, "Se espera la palabra reservada cadena"); break; case Token.Tipo.R_fecha: tk = Match(Token.Tipo.R_fecha, "Se espera la palabra reservada fecha"); break; default: Errores("Se espera la palabra reservada entero, flotante, fecha o cadena y se obtuvo " + preanalisis.Lexema, preanalisis.Fila, preanalisis.Columna); Panic(); break; } if (tk != null) { nd.Agregar(new Nodo(tk.Lexema)); } }
private void INICIO(Nodo nodo) { Nodo nodo1 = new Nodo("INSTRUCCIONES"); INSTRUCCIONES(nodo1); nodo.Agregar(nodo1); }
private void COMP1(Nodo nd) { if (preanalisis.TipoToken.Equals(Token.Tipo.punto)) { Token tk2 = Match(Token.Tipo.punto, "Se esperaba un ."); Token tk3 = Match(Token.Tipo.id, "Se esperaba un id"); if (tk3 == null) { return; } nd.Agregar(new Nodo(tk2.Lexema)); nd.Agregar(new Nodo(tk3.Lexema)); } else { nd.Agregar(new Nodo("ε")); } }
//private void INSTRUCIONES1() //{ // if (!preanalisis.TipoToken.Equals(Token.Tipo.dolar)) // { // INSTRUCCIONES(); // } //} private void INSTRUCCION(Nodo nodo) { Nodo nodo1 = null; Token tk = null; switch (preanalisis.TipoToken) { case Token.Tipo.crear: tk = Match(Token.Tipo.crear, "Se esperaba palabra reservada Crear"); nodo1 = new Nodo("CREARTABLA"); CREARTABLA(nodo1); break; case Token.Tipo.insertar: tk = Match(Token.Tipo.insertar, "Se esperaba palabra reservada Insertar"); nodo1 = new Nodo("INSERTAR"); INSERTAR(nodo1); break; case Token.Tipo.seleccionar: tk = Match(Token.Tipo.seleccionar, "Se esperaba la palabra Reservada Seleccionar"); nodo1 = new Nodo("SELECCIONAR"); SELECCIONAR(nodo1); break; case Token.Tipo.eliminar: tk = Match(Token.Tipo.eliminar, "Se esperaba la palabra Reservada Eliminar"); nodo1 = new Nodo("ELIMINAR"); ELIMINAR(nodo1); break; case Token.Tipo.actualizar: tk = Match(Token.Tipo.actualizar, "Se esperaba la palabra Reservada Actualizar"); nodo1 = new Nodo("ACTUALIZAR"); ACTUALIZAR(nodo1); break; } if (tk != null) { nodo.Agregar(new Nodo(tk.Lexema)); nodo.Agregar(nodo1); } }
private void COMP(Nodo nd) { try { if (preanalisis.TipoToken.Equals(Token.Tipo.id)) { Token tk1 = Match(Token.Tipo.id, "Se esperaba un id"); Nodo ndc1 = new Nodo("COMP1"); COMP1(ndc1); nd.Agregar(new Nodo(tk1.Lexema)); nd.Agregar(ndc1); } else { Nodo ndv = new Nodo("VALOR"); VALOR(ndv); nd.Agregar(ndv); } }catch (Exception e) { Console.WriteLine("Error " + e.ToString()); } }
private void INSTRUCCIONES(Nodo nodo) { try { if (!preanalisis.TipoToken.Equals(Token.Tipo.dolar)) { Nodo nodo1 = new Nodo("INSTRUCCION"); INSTRUCCION(nodo1); Nodo nodo2 = new Nodo("INSTRUCCIONES"); INSTRUCCIONES(nodo2); nodo.Agregar(nodo1); nodo.Agregar(nodo2); } else { return; } }catch (Exception e) { Console.WriteLine("Error " + e.ToString()); return; } }
private void ELIMINAR1(Nodo nd) { if (preanalisis.TipoToken.Equals(Token.Tipo.donde)) { Token tk1 = Match(Token.Tipo.donde, "Se esperaba la palabra Reservada Donde"); if (tk1 == null) { return; } Nodo ndc = new Nodo("CONDICION"); CONDICION(ndc); Nodo ndcs = new Nodo("CONDICIONES"); CONDICIONES(ndcs); nd.Agregar(new Nodo(tk1.Lexema)); nd.Agregar(ndc); nd.Agregar(ndcs); } else { //servira para la ejecucion, cuando venga Eliminar tal Tabla1; nd.Agregar(new Nodo("ε")); } }
private void TABLAS(Nodo nd) { try { if (preanalisis.TipoToken.Equals(Token.Tipo.coma)) { Token tk1 = Match(Token.Tipo.coma, "Se esperaba una ,"); Nodo nds1 = new Nodo("SELECCIONAR1"); SELECCIONAR1(nds1); Nodo ndsel = new Nodo("SELECT"); SELECT(ndsel); nd.Agregar(new Nodo(tk1.Lexema)); nd.Agregar(nds1); nd.Agregar(ndsel); } else { nd.Agregar(new Nodo("ε")); } }catch (Exception e) { Console.WriteLine("Error Sintactico" + e.ToString()); } }
private void SELECT(Nodo nd) { try { if (preanalisis.TipoToken.Equals(Token.Tipo.como)) { Token tk = Match(Token.Tipo.como, "Se esperaba la palabra reservada Como"); Token tk1 = Match(Token.Tipo.id, "Se esperaba un id"); Nodo ndtab = new Nodo("TABLAS"); TABLAS(ndtab); nd.Agregar(new Nodo(tk.Lexema)); nd.Agregar(new Nodo(tk1.Lexema)); nd.Agregar(ndtab); } else { nd.Agregar(new Nodo("ε")); } }catch (Exception e) { Console.WriteLine("Error Sintactico " + e.ToString()); return; } }
private void TIPOCOMP(Nodo nd) { try { switch (preanalisis.TipoToken) { case Token.Tipo.mayor: Token tk = Match(Token.Tipo.mayor, "Se esperaba un >"); Nodo tc1 = new Nodo("TC1"); TC1(tc1); nd.Agregar(new Nodo(tk.Lexema)); nd.Agregar(tc1); break; case Token.Tipo.menor: Token tk1 = Match(Token.Tipo.menor, "Se esperaba <"); Nodo nd2 = new Nodo("TC1"); TC1(nd2); nd.Agregar(new Nodo(tk1.Lexema)); nd.Agregar(nd2); break; case Token.Tipo.diferente: Token tok1 = Match(Token.Tipo.diferente, "Se esperaba !"); Token tok2 = Match(Token.Tipo.igual, "Se esperaba un ="); nd.Agregar(new Nodo(tok1.Lexema)); nd.Agregar(new Nodo(tok2.Lexema)); break; case Token.Tipo.igual: Token tigual = Match(Token.Tipo.igual, "Se esperaba un ="); nd.Agregar(new Nodo(tigual.Lexema)); break; default: Errores("Se esperaba un >,<,! o un = y se obtuvo " + preanalisis.Lexema, preanalisis.Fila, preanalisis.Columna); Panic(); break; } }catch (Exception e) { Console.WriteLine("Error " + e.ToString()); } }
private void ACTUALIZA(Nodo nd) { try { if (preanalisis.TipoToken.Equals(Token.Tipo.coma)) { Token tk1 = Match(Token.Tipo.coma, "Se esperaba una ,"); if (tk1 == null) { return; } Token tk2 = Match(Token.Tipo.id, "Se esperaba un id"); if (tk2 == null) { return; } Token tk3 = Match(Token.Tipo.igual, "Se esperaba un ="); if (tk3 == null) { return; } Nodo ndv = new Nodo("VALOR"); Token tkv = VALOR(ndv); if (tkv == null) { return; } Nodo nda = new Nodo("ACTUALIZA"); ACTUALIZA(nda); nd.Agregar(new Nodo(tk1.Lexema)); nd.Agregar(new Nodo(tk2.Lexema)); nd.Agregar(new Nodo(tk3.Lexema)); nd.Agregar(ndv); nd.Agregar(nda); } else { nd.Agregar(new Nodo("ε")); return; } }catch (Exception e) { Console.WriteLine("Error " + e.ToString()); return; } }
private Token VALOR(Nodo nd) { Token tk = null; switch (preanalisis.TipoToken) { case Token.Tipo.entero: tk = Match(Token.Tipo.entero, "Se esperaba un número tipo entero"); break; case Token.Tipo.flotante: tk = Match(Token.Tipo.flotante, "Se esperaba un número tipo flotante"); break; case Token.Tipo.cadena: Token tk1 = Match(Token.Tipo.cadena, "Se esperaba un valor tipo cadena"); String val = tk1.Lexema.Replace("\"", "\\\""); tk1.Lexema = val; tk = tk1; break; case Token.Tipo.fecha: tk = Match(Token.Tipo.fecha, "Se esperaba un valor tipo fecha"); break; default: Errores("Se esperaba un valor tipo entero, flotante, fecha o cadena y se obtuvo " + preanalisis.Lexema, preanalisis.Fila, preanalisis.Columna); Panic(); break; } if (tk != null) { nd.Agregar(new Nodo(tk.Lexema)); return(tk); } return(null); }
private void CONDICIONES(Nodo nd) { try { if (preanalisis.TipoToken.Equals(Token.Tipo.R_Y)) { Token tk = Match(Token.Tipo.R_Y, "Se esperaba la palabra reservada Y"); Nodo ndc = new Nodo("CONDICION"); CONDICION(ndc); Nodo ndcs = new Nodo("CONDICIONES"); CONDICIONES(ndcs); nd.Agregar(new Nodo(tk.Lexema)); nd.Agregar(ndc); nd.Agregar(ndcs); } else if (preanalisis.TipoToken.Equals(Token.Tipo.R_O)) { Token tk = Match(Token.Tipo.R_O, "Se esperaba la palabra reservada O"); Nodo ndc = new Nodo("CONDICION"); CONDICION(ndc); Nodo ndcs = new Nodo("CONDICIONES"); CONDICIONES(ndcs); nd.Agregar(new Nodo(tk.Lexema)); nd.Agregar(ndc); nd.Agregar(ndcs); } else { nd.Agregar(new Nodo("ε")); } } catch (Exception e) { Console.WriteLine("Error " + e.ToString()); return; } }
private void ACTUALIZAR(Nodo nodo) { try { Token tk1 = Match(Token.Tipo.id, "Se esperaba un id"); if (tk1 == null) { return; } Token tk2 = Match(Token.Tipo.establecer, "Se esperaba la palabra Reservada Establecer"); if (tk2 == null) { return; } Token tk21 = Match(Token.Tipo.parAbre, "Se esperaba un ("); if (tk21 == null) { return; } Token tk3 = Match(Token.Tipo.id, "Se esperaba un id"); if (tk3 == null) { return; } Token tk4 = Match(Token.Tipo.igual, "Se espeaba un ="); if (tk4 == null) { return; } Nodo ndv = new Nodo("VALOR"); Token tkv = VALOR(ndv); if (tkv == null) { return; } Nodo nda = new Nodo("ACTUALIZA"); ACTUALIZA(nda); Token tk41 = Match(Token.Tipo.parCierra, "Se esperaba un )"); if (tk41 == null) { return; } Token tk5 = Match(Token.Tipo.donde, "Se esperaba la palabra Reservada Donde"); if (tk5 == null) { return; } Nodo ndc = new Nodo("CONDICION"); CONDICION(ndc); Nodo ndcs = new Nodo("CONDICIONES"); CONDICIONES(ndcs); Token tk6 = Match(Token.Tipo.puntoycoma, "Se esperaba un ;"); if (tk6 == null) { return; } nodo.Agregar(new Nodo(tk1.Lexema)); nodo.Agregar(new Nodo(tk2.Lexema)); nodo.Agregar(new Nodo(tk21.Lexema)); nodo.Agregar(new Nodo(tk3.Lexema)); nodo.Agregar(new Nodo(tk4.Lexema)); nodo.Agregar(ndv); nodo.Agregar(nda); nodo.Agregar(new Nodo(tk41.Lexema)); nodo.Agregar(new Nodo(tk5.Lexema)); nodo.Agregar(ndc); nodo.Agregar(ndcs); nodo.Agregar(new Nodo(tk6.Lexema)); }catch (Exception e) { Console.WriteLine("Error " + e.ToString()); return; } }