public List <string> ValidacionesTokens(string cadena) { SpecialCharacters specialCharacters = new SpecialCharacters(); newstring += cadena; string respuesta = string.Empty; string nombre = string.Empty; string Content = string.Empty; bool terminar = false; if (!newstring.Contains("TOKEN") && !newstring.Contains(siguiente)) { if (newstring.Contains("ACTIONS")) { siguiente = "'"; } else { terminar = true; } } else if (newstring.Contains("TOKEN") && !newstring.Contains(siguiente)) { if (!newstring.Contains("=")) { terminar = true; } else if (newstring.Contains("ACTIONS")) { siguiente = "'"; } } while (!terminar && newstring.Length > 0) { switch (siguiente) { case "=": if (numero != "") { if (!TokenDic.Keys.Contains(numero)) { TokenDic.Add(numero, tokens.GetRange(0, tokens.Count)); } else { error.Add("El numero de token " + numero + " ya existe, por lo cual no puede ser creado"); terminar = true; } tokens.Clear(); } nombre = ValidarCaracteresTokens(specialCharacters.SpecialOnTokens, newstring, "="); if (nombre.ToUpper() == "TOKEN") { siguiente = "="; newstring = newstring.Length > 0 ? newstring.Substring(nombre.Length, newstring.Length - nombre.Length) : ""; numero = newstring.Length > 0 ? ValidarCaracteresTokens(specialCharacters.SpecialOnTokens, newstring, "=") : ""; newstring = newstring.Length > 0 ? newstring.Substring(numero.Length + 1, newstring.Length - numero.Length - 1) : ""; } siguiente = "'"; break; case "'": respuesta = ValidarCaracteresTokens(specialCharacters.SpecialOnTokens, newstring, "'"); if (newstring.Substring(0, 1) == "'") { newstring = newstring.Length > 0 ? newstring.Substring(1, newstring.Length - 1) : ""; respuesta = ValidarCaracteresTokens(specialCharacters.SpecialOnTokens, newstring, "'"); newstring = newstring.Length > 0 ? newstring.Substring(respuesta.Length + 1, newstring.Length - (respuesta.Length + 1)) : ""; siguiente = "'"; } else if (newstring.Substring(0, 1) == "(") { newstring = newstring.Length > 0 ? newstring.Substring(1, newstring.Length - 1) : ""; respuesta = ValidarCaracteresTokens(specialCharacters.SpecialOnTokens, newstring, ")"); newstring = newstring.Length > 0 ? newstring.Substring(respuesta.Length, newstring.Length - (respuesta.Length)) : ""; siguiente = "'"; } else if (sets.Contains(respuesta)) { newstring = newstring.Length > 0 ? newstring.Substring(respuesta.Length, newstring.Length - respuesta.Length) : ""; } else if (respuesta.ToUpper() == "TOKEN") { if (!TokenDic.Keys.Contains(numero)) { TokenDic.Add(numero, tokens.GetRange(0, tokens.Count)); tokens.Clear(); numero = ""; siguiente = "="; } else { error.Add("El numero de token " + numero + " ya existe, por lo cual no puede ser creado"); terminar = true; } } else if (respuesta.ToUpper() == "ACTIONS") { if (!TokenDic.Keys.Contains(numero)) { TokenDic.Add(numero, tokens.GetRange(0, tokens.Count)); } else { error.Add("El numero de token " + numero + " ya existe, por lo cual no puede ser creado"); terminar = true; } tokens.Clear(); numero = ""; terminar = true; ValidarActions(); } else if (respuesta == "error") { terminar = true; } else { newstring = newstring.Length > 0 ? newstring.Substring(respuesta.Length, newstring.Length - respuesta.Length) : ""; } break; } } return(sets); }
public List <string> ValidacionesSets(string cadena) { SpecialCharacters specialCharacters = new SpecialCharacters(); string nuevacadena = string.Empty; nuevacadena += cadena; string respuesta = string.Empty; string nombre = string.Empty; string content = string.Empty; bool terminar = false; if (cadena == "=") { sets.Add(temporal); temporal = ""; terminar = true; Content = ""; siguiente = "'"; } while (!terminar) { switch (siguiente) { case "=": nombre = ValidarCaracteres(specialCharacters.SpecialOnSets, nuevacadena, "="); if (nombre == "TOKENS") { terminar = true; tok = true; siguiente = "="; nuevacadena = nuevacadena.Length > 0 ? nuevacadena.Substring(nombre.Length, nuevacadena.Length - nombre.Length) : ""; } else { if (sets.Count > 0) { SetsDic.Add(sets.Last(), Content); Content = ""; } sets.Add(nombre); nuevacadena = nuevacadena.Length > 0 ? nuevacadena.Substring(nombre.Length + 1, nuevacadena.Length - nombre.Length - 1) : ""; siguiente = "'"; } break; case "'": respuesta = ValidarCaracteres(specialCharacters.SpecialOnSets, nuevacadena, "'"); if (respuesta == "TOKENS") { siguiente = "="; terminar = true; tok = true; if (abre) { nuevacadena = nuevacadena.Length > 0 ? nuevacadena.Substring(nombre.Length, nuevacadena.Length - nombre.Length) : ""; } else { error.Add("Error en linea: " + linenum); } } else if (respuesta == "CHR") { nuevacadena = nuevacadena.Length > 0 ? nuevacadena.Substring(respuesta.Length, nuevacadena.Length - respuesta.Length) : ""; respuesta = ValidarCaracteres(specialCharacters.SpecialOnSets, nuevacadena, "("); nuevacadena = nuevacadena.Length > 0 ? nuevacadena.Substring(1, nuevacadena.Length - 1) : ""; respuesta = ValidarCaracteres(specialCharacters.SpecialOnSets, nuevacadena, ")"); nuevacadena = nuevacadena.Length > 0 ? nuevacadena.Substring(respuesta.Length + 1, nuevacadena.Length - (respuesta.Length + 1)) : ""; Content += "CHR(" + respuesta + ")"; respuesta = "CHR"; siguiente = "."; } else if (respuesta != "error") { if (abre) { Content += "'"; respuesta = nuevacadena.Length > 0 ? ValidarCaracteres(specialCharacters.SpecialOnSets, nuevacadena.Substring(1, nuevacadena.Length - 1), "'") : ""; if (respuesta.Length == 0) { error.Add("Error en linea: " + linenum + " no se encontro la ' la cual fue abierta pero no cerrada, ambas comillas deben de encontrarse en la misma linea"); terminar = true; } else { Content += respuesta + "'"; } } else { error.Add("Error en linea: " + linenum + "se encontro la ' la cual nunca fue abierta"); terminar = true; } } else { terminar = true; } nuevacadena = nuevacadena.Length > 0 && respuesta != "error" && respuesta != "CHR"? nuevacadena.Substring(respuesta.Length + 2, nuevacadena.Length - respuesta.Length - 2) : (nuevacadena = respuesta == "CHR" ? nuevacadena: ""); if (nuevacadena.Length == 0) { terminar = true; } siguiente = "."; break; case ".": respuesta = ValidarCaracteres(specialCharacters.SpecialOnSets, nuevacadena, "."); if (respuesta == "TOKENS") { siguiente = "="; SetsDic.Add(sets.Last(), Content); Content = ""; terminar = true; tok = true; nuevacadena = nuevacadena.Length > 0 ? nuevacadena.Substring(nombre.Length, nuevacadena.Length - nombre.Length) : ""; } else if (respuesta == "error") { terminar = true; } else { if (respuesta == "=") { siguiente = "="; } else if (respuesta == "") { terminar = true; } else if (respuesta != "error" && respuesta != "=") { Content += respuesta; nuevacadena = nuevacadena.Length > 0 ? nuevacadena.Substring(respuesta.Length, nuevacadena.Length - respuesta.Length) : ""; siguiente = "'"; } } if (nuevacadena.Length == 0) { terminar = true; } break; } } return(sets); }