public Token(TokenSQL token, String lexema, int fila, int columna) { this.token = token; this.lexema = lexema; this.fila = fila; this.columna = columna; }
/// <summary> /// Actualizar un o variso campos /// </summary> /// <param name="nombreCol"></param> /// <param name="op"></param> /// <param name="Valor"></param> /// <param name="ColUpdate"></param> /// <param name="valorUpdate"></param> public void updateDatos(String nombreCol, TokenSQL op, Token valor, List <NodoActualizar> lista) { //Actualiar datos List <int> indexs = new List <int>(); int indexUpdate; int indexCol = getIdColumna(nombreCol); Console.WriteLine("Condición actualizar: [" + indexCol + "] " + nombreCol + " " + op + " " + valor.getLexema()); if (indexCol >= 0) { for (int i = 0; i < registros.Count(); i++) { if (registros[i].condicion(indexCol, op, valor)) { indexs.Add(i); } } //Actualizar Registro foreach (NodoActualizar dato in lista) { indexUpdate = getIdColumna(dato.columna); if (indexUpdate >= 0) { foreach (int i in indexs) { Console.WriteLine("Actualizar registro id: " + i); registros[i].actualizar(indexUpdate, dato.valor); } } } } }
/// <summary> /// Eliminar una tupla por medio de un condición. /// </summary> /// <param name="nombreCol"></param> /// <param name="op"></param> /// <param name="valor"></param> public void deleteTupla(String nombreCol, TokenSQL op, Token valor) { //Eliminar tupla por id List <int> indexs = new List <int>(); int indexCol = getIdColumna(nombreCol); Console.WriteLine("Eliminar: [" + indexCol + "] " + nombreCol + " " + op + " " + valor.getLexema()); if (indexCol >= 0) { for (int i = 0; i < registros.Count(); i++) { if (registros[i].condicion(indexCol, op, valor)) { indexs.Add(i); } } //Eliminar registro int eliminados = 0; foreach (int i in indexs) { Console.WriteLine("Eliminando index: " + i); registros.RemoveAt(i - eliminados); eliminados++; } } }
private Color colorPiker(TokenSQL t) { switch (t) { case TokenSQL.PR_TABLA: return(Color.DarkOrchid); case TokenSQL.PR_INSERTAR: return(Color.DarkOrchid); case TokenSQL.PR_ELIMINAR: return(Color.DarkOrchid); case TokenSQL.PR_ACTUALIZAR: return(Color.DarkOrchid); case TokenSQL.FECHA: return(Color.Peru); case TokenSQL.ENTERO: return(Color.SteelBlue); case TokenSQL.FLOTANTE: return(Color.SteelBlue); case TokenSQL.CADENA: return(Color.Teal); case TokenSQL.COMENTARIO_BLOQUE: return(Color.Gray); case TokenSQL.COMENTARIO_LINEA: return(Color.Gray); case TokenSQL.ID: return(Color.Sienna); case TokenSQL.CL_IGUAL: return(Color.Firebrick); case TokenSQL.CL_DIFERENTE: return(Color.Firebrick); case TokenSQL.CL_MAYOR_IGUAL: return(Color.Firebrick); case TokenSQL.CL_MENOR_IGUAL: return(Color.Firebrick); case TokenSQL.CL_MAYOR: return(Color.Firebrick); case TokenSQL.CL_MENOR: return(Color.Firebrick); default: return(Color.White); } }
/// <summary> /// Evaluea condición /// </summary> /// <param name="indexCol"></param> /// <param name="op"></param> /// <param name="valor"></param> /// <returns>True = condición correcta | False = condición incorrecta</returns> public bool condicion(int indexCol, TokenSQL op, Token valor) { Token dato = datos[indexCol]; if (dato.getToken() == TokenSQL.ENTERO || dato.getToken() == TokenSQL.FLOTANTE) { double x = 0; double y = 0; try { x = Convert.ToDouble(dato.getLexema()); y = Convert.ToDouble(valor.getLexema()); } catch (Exception e) { Console.WriteLine("Error: " + e); } switch (op) { case TokenSQL.CL_IGUAL: // = return(x == y); case TokenSQL.CL_DIFERENTE: //!= return(x != y); case TokenSQL.CL_MAYOR: return(x > y); case TokenSQL.CL_MAYOR_IGUAL: return(x >= y); case TokenSQL.CL_MENOR: return(x < y); case TokenSQL.CL_MENOR_IGUAL: return(x <= y); default: return(false); } } else { String x = dato.getLexema(); String y = valor.getLexema(); switch (op) { case TokenSQL.CL_IGUAL: // = return(x.Equals(y)); case TokenSQL.CL_DIFERENTE: //!= return(!(x.Equals(y))); default: return(false); } } }
public NodoAST(int id, String noTerminal) { this.tipo = TokenSQL.NO_TERMINAL; this.valor = noTerminal; hijos = new List <NodoAST>(); setId(id, noTerminal); }
public NodoAST(Token token) { this.token = token; this.tipo = token.getToken(); this.valor = token.getLexema(); hijos = new List <NodoAST>(); setId(token); }
private void agregarToken(TokenSQL token, String lexema, int fila, int columna) { if (token == TokenSQL.ID) { //Verificar si es una palabra reservada tokens.Add(new Token(validarToken(lexema), lexema, fila, columna)); } else { tokens.Add(new Token(token, lexema, fila, columna)); } Console.WriteLine("TempFila: " + tempFila + ", TempColumna: " + tempColumna); }
private void match(TokenSQL terminal, NodoAST raiz) { /* si preanalisis = terminal * entonces preanalisis = siguiente toekn * sino error sintactico */ Console.WriteLine("Match: " + terminal + " == " + preanalisis.getToken()); if (preanalisis.getToken() == terminal) { raiz.insertarHijo(new NodoAST(preanalisis)); // Insertamos token en el árbol AST preanalisis = getToken(); index++; } else { //Error insertarError("un token[" + terminal.ToString() + "]", preanalisis); panico(); } }
public void setTipo(TokenSQL tipo) { this.tipo = tipo; }
private void ejecutar(int e, TokenSQL tipo, Token token) { switch (e) { case 0: //Estado Raiz break; case 10: //CREAR TABLA ID ( L_CAMPOS ) ; switch (tipo) { case TokenSQL.ID: //Nombre de la tabla Console.WriteLine("Nombre tabla: " + token.getLexema()); tabla = new TablaSQL(token.getLexema()); break; case TokenSQL.CL_FL: //Fin de linea (;) Console.WriteLine("Agregando tabla " + tabla.getNombre() + " a la memoria..."); listaTablas.Add(tabla); break; case TokenSQL.CL_PARENTESIS_1: //Parentesis ( estado = 11; break; default: Console.WriteLine("[" + e + "] Token: " + token.getLexema()); break; } break; case 11: //ID TIPO_DATO switch (tipo) { case TokenSQL.ID: //Nombre de columna Console.WriteLine("Nombre columna: " + token.getLexema()); tabla.addColumna(token.getLexema()); break; case TokenSQL.CL_PARENTESIS_2: //Parentesis ) estado = 10; break; default: Console.WriteLine("[" + e + "] Token: " + token.getLexema()); break; } break; case 20: //INSERTAR EN ID VALORES ( L_VALORES ) ; switch (tipo) { case TokenSQL.ID: //Nombre tabla nombreTabla = token.getLexema(); Console.WriteLine("Insertar en: " + nombreTabla); break; case TokenSQL.CL_PARENTESIS_1: //Parentesis ( tupla = new List <Token>(); estado = 22; break; case TokenSQL.CL_FL: //Fin de linea (;) indexTabla = buscarTabla(nombreTabla); if (encontrado) { listaTablas[indexTabla].addTupla(tupla); } Console.WriteLine("Index de tabla: " + indexTabla); break; default: Console.WriteLine("[" + e + "] Token: " + token.getLexema()); break; } break; case 22: //VALOR COMA switch (tipo) { case TokenSQL.ENTERO: Console.WriteLine("Dato: " + token.getLexema()); tupla.Add(token); break; case TokenSQL.CADENA: Console.WriteLine("Dato: " + token.getLexema()); tupla.Add(token); break; case TokenSQL.FECHA: Console.WriteLine("Dato: " + token.getLexema()); tupla.Add(token); break; case TokenSQL.FLOTANTE: Console.WriteLine("Dato: " + token.getLexema()); tupla.Add(token); break; case TokenSQL.CL_PARENTESIS_2: //Parentesis ) estado = 20; break; default: Console.WriteLine("[" + e + "] Token: " + token.getLexema()); break; } break; case 30: // ELIMINAR DE ID;| ELIMINAR DE ID DONDE ID = VALOR; switch (tipo) { case TokenSQL.ID: //Nombre tabla nombreTabla = token.getLexema(); condicionDonde = false; break; case TokenSQL.PR_DONDE: //PR DONDE estado = 31; condicionDonde = true; break; case TokenSQL.CL_FL: //Fin de linea (;) //Ejecutar acción a eliminar Console.WriteLine("Eliminar de: " + nombreTabla); eliminarEnTabla(); break; default: Console.WriteLine("[" + e + "] Token: " + token.getLexema()); break; } break; case 31: // Condicion DONDE - ELIMINAR: DONDE ID OP VALOR switch (tipo) { case TokenSQL.ID: condicionColumna1 = token.getLexema(); Console.WriteLine("Columna condición: " + condicionColumna1); break; case TokenSQL.CL_IGUAL: // = condicionComparador1 = tipo; break; case TokenSQL.CL_DIFERENTE: // != condicionComparador1 = tipo; break; case TokenSQL.CL_MAYOR: // > condicionComparador1 = tipo; break; case TokenSQL.CL_MAYOR_IGUAL: // >= condicionComparador1 = tipo; break; case TokenSQL.CL_MENOR: // < condicionComparador1 = tipo; break; case TokenSQL.CL_MENOR_IGUAL: // <= condicionComparador1 = tipo; break; case TokenSQL.ENTERO: // entero condicionValor1 = token; estado = 30; break; case TokenSQL.CADENA: // cadena condicionValor1 = token; estado = 30; break; case TokenSQL.FLOTANTE: // flotante condicionValor1 = token; estado = 30; break; case TokenSQL.FECHA: // fecha condicionValor1 = token; estado = 30; break; default: break; } break; case 40: // ACTUALIZAR ID ESTABLCER ( L_ESTABLECER ) DONDE L_LISTA ; switch (tipo) { case TokenSQL.ID: nombreTabla = token.getLexema(); listaUpdate = new List <NodoActualizar>(); condicionDonde = false; break; case TokenSQL.CL_PARENTESIS_1: estado = 41; break; case TokenSQL.PR_DONDE: condicionDonde = true; estado = 42; break; case TokenSQL.CL_FL: actualizarDato(); break; } break; case 41: //L_ESTABLECER = ID = VALOR , ID = VALOR switch (tipo) { case TokenSQL.ID: nombreColumna = token.getLexema(); break; case TokenSQL.CADENA: listaUpdate.Add(new NodoActualizar(nombreColumna, token)); break; case TokenSQL.FECHA: listaUpdate.Add(new NodoActualizar(nombreColumna, token)); break; case TokenSQL.ENTERO: listaUpdate.Add(new NodoActualizar(nombreColumna, token)); break; case TokenSQL.FLOTANTE: listaUpdate.Add(new NodoActualizar(nombreColumna, token)); break; case TokenSQL.CL_PARENTESIS_2: estado = 40; break; } break; case 42: switch (tipo) { case TokenSQL.ID: condicionColumna1 = token.getLexema(); Console.WriteLine("Columna condición: " + condicionColumna1); break; case TokenSQL.CL_IGUAL: // = condicionComparador1 = tipo; break; case TokenSQL.CL_DIFERENTE: // != condicionComparador1 = tipo; break; case TokenSQL.CL_MAYOR: // > condicionComparador1 = tipo; break; case TokenSQL.CL_MAYOR_IGUAL: // >= condicionComparador1 = tipo; break; case TokenSQL.CL_MENOR: // < condicionComparador1 = tipo; break; case TokenSQL.CL_MENOR_IGUAL: // <= condicionComparador1 = tipo; break; case TokenSQL.ENTERO: // entero condicionValor1 = token; estado = 40; break; case TokenSQL.CADENA: // cadena condicionValor1 = token; estado = 40; break; case TokenSQL.FLOTANTE: // flotante condicionValor1 = token; estado = 40; break; case TokenSQL.FECHA: // fecha condicionValor1 = token; estado = 40; break; default: break; } break; case 50: break; default: Console.WriteLine("[" + e + "] Token: " + token.getLexema()); break; } }