public void generarXMLFail(ArrayList cadena, ExpresionRegular exp, string arch) { XmlDocument doc = new XmlDocument(); XmlElement lista = doc.CreateElement("ListaTokens"); doc.AppendChild(lista); XmlElement token; XmlElement valor; XmlElement fila; XmlElement columna; foreach (CadenaAValidar c in cadena) { if (c.getId().Equals(exp.getId())) { foreach (Token t in c.errores) { token = doc.CreateElement("Token"); lista.AppendChild(token); valor = doc.CreateElement("Valor"); valor.AppendChild(doc.CreateTextNode(t.getLexema())); token.AppendChild(valor); fila = doc.CreateElement("Fila"); fila.AppendChild(doc.CreateTextNode(t.getLinea().ToString())); token.AppendChild(fila); columna = doc.CreateElement("Columna"); columna.AppendChild(doc.CreateTextNode(t.getColumna().ToString())); token.AppendChild(columna); } } } doc.Save("C:\\Users\\Oliveira Raymundo\\Desktop\\ArchivosOLC1PY1\\XML\\" + arch + ".xml"); }
public void EliminarEspacioTodoLugar() { var texto = " 2 0 0 "; var textoModificado = ExpresionRegular.EliminarEspacio(texto); Assert.AreEqual("200", textoModificado); }
public void EliminarComodinTodoLugar() { var texto = "**2**0**0**"; var textoModificado = ExpresionRegular.EliminarComodin(texto); Assert.AreEqual("200", textoModificado); }
public void EliminarComodinInicio() { var texto = "*200"; var textoModificado = ExpresionRegular.EliminarComodin(texto); Assert.AreEqual("200", textoModificado); }
public void ValidaExpresionLogica_Correcta_ProposisionCompuesta_MenorIgual_OR_MayorIgual() { var cadena = "<=20||>=40"; var resultado = ExpresionRegular.ValidarExpresionLogica(cadena); Assert.IsTrue(resultado.Success); }
public void ValidaExpresionLogica_Test() { var cadena = "<=20||>=40"; var resultado = ExpresionRegular.ValidarExpresionLogica(cadena); Assert.IsTrue(resultado.Success); }
public void ValidaExpresionLogica_Correcta_ProposisionCompuesta_Menor_AND_Mayor() { var cadena = "<20&&>40"; var resultado = ExpresionRegular.ValidarExpresionLogica(cadena); Assert.IsTrue(resultado.Success); }
public void ValidaExpresionLogica_Correcta_ProposisionSimple_Diferente() { var cadena = "!=20"; var resultado = ExpresionRegular.ValidarExpresionLogica(cadena); Assert.IsTrue(resultado.Success); }
private void guardarErroresToolStripMenuItem_Click(object sender, EventArgs e) { for (int i = 0; i < ejecutar.expresiones.Count; i++) { ExpresionRegular exp = (ExpresionRegular)ejecutar.expresiones[i]; archivo.generarXMLFail(ejecutar.cadenas, exp, "Errores" + exp.getId()); } }
private void cargarAFDsToolStripMenuItem_Click(object sender, EventArgs e) { ExpresionRegular expresion = (ExpresionRegular)ejecutar.expresiones[0]; Image afd = Image.FromFile("C:\\Users\\Oliveira Raymundo\\Desktop\\ArchivosOLC1PY1\\AFDs\\" + expresion.getId() + ".png"); Image trans = Image.FromFile("C:\\Users\\Oliveira Raymundo\\Desktop\\ArchivosOLC1PY1\\Transiciones\\" + expresion.getId() + ".png"); boxafn.Image = afd; boxtrans.Image = trans; boxafn.SizeMode = PictureBoxSizeMode.StretchImage; boxtrans.SizeMode = PictureBoxSizeMode.StretchImage; nombrepic.Text = expresion.getId(); indice = 0; }
internal ExpresionLogica(string cadena) { Proposiciones = new List <FiltroExpresion>(); cadena = ExpresionRegular.EliminarEspacio(cadena); var match = ExpresionRegular.ValidarExpresionLogica(cadena); EsExpresionLogica = match.Success; if (EsExpresionLogica) { var evaluador = new EvaluadorPreposicion(match); (Proposiciones, OperadorLogico) = evaluador.ValidarCadena(); } }
private void picsig_Click(object sender, EventArgs e) { indice++; if (indice >= ejecutar.expresiones.Count) { indice = 0; } ExpresionRegular exp = (ExpresionRegular)ejecutar.expresiones[indice]; Image afn = Image.FromFile("C:\\Users\\Oliveira Raymundo\\Desktop\\ArchivosOLC1PY1\\AFDs\\" + exp.getId() + ".png"); Image trans = Image.FromFile("C:\\Users\\Oliveira Raymundo\\Desktop\\ArchivosOLC1PY1\\Transiciones\\" + exp.getId() + ".png"); boxafn.Image = afn; boxtrans.Image = trans; boxafn.SizeMode = PictureBoxSizeMode.StretchImage; boxtrans.SizeMode = PictureBoxSizeMode.StretchImage; nombrepic.Text = exp.getId(); }
//------------------Privados que se usan para genera AUTÓMATA---------------------------- private void GenerarExpresionRegular() { var especiales = new List <string>(); especiales.Add("~"); especiales.Add("¬"); especiales.Add("^"); especiales.Add("¨"); foreach (var Token in ManejadorArchivo.Tokens) { var token = ""; if (Token.Key != "TOKENS") { foreach (var item in Token.Value) { if (token.Length - 1 >= 0) { if (token[token.Length - 1] != '(' && token[token.Length - 1] != ')' && token[token.Length - 1] != '|' && item != "\')" && item != "\'|" && item != "\')*") { token += "."; } } if (item.Contains("*")) { var aux = item.Substring(0, item.Length - 1); if (ManejadorArchivo.Sets.ContainsKey(aux)) { if (!DiccionarioSustitucion.ContainsValue(aux)) { DiccionarioSustitucion.Add(especiales[0], aux); especiales.RemoveAt(0); foreach (var item2 in DiccionarioSustitucion) { if (item2.Value == aux) { token += item2.Key + "*"; } } } else { foreach (var item2 in DiccionarioSustitucion) { if (item2.Value == aux) { token += item2.Key + "*"; } } } } else { if (item.Contains('\'')) //si tiene comilla simple no se le agrega concateniacion, { token += item.Trim('\''); } else { token += item; } } } else if (ManejadorArchivo.Sets.ContainsKey(item)) { if (!DiccionarioSustitucion.ContainsValue(item)) { DiccionarioSustitucion.Add(especiales[0], item); especiales.RemoveAt(0); foreach (var item2 in DiccionarioSustitucion) { if (item2.Value == item) { token += item2.Key; } } } else { foreach (var item2 in DiccionarioSustitucion) { if (item2.Value == item) { token += item2.Key; } } } } else if (item.Contains('\'')) //si tiene comilla simple no se le agrega concateniacion, { token += item.Trim('\''); } else { token += item; } } ExpresionRegular += token + "|"; } } ExpresionRegular = ExpresionRegular.TrimEnd('|'); }
private static ExprContrato GeneraPredicadoContrato(ReglaEntradaContrato regla, out List <MensajeConfiguracionRegla> listaMensajes) { listaMensajes = new List <MensajeConfiguracionRegla>(); ExprContrato predicado = ConstructorPredicado.True <Contrato>(); if (regla.IsNull()) { return(predicado); } if (regla.Region.IsNotNullOrEmpty()) { ExprContrato criterio = contrato => regla.Region.Contains(contrato.Region, StringComparison.InvariantCultureIgnoreCase); predicado = predicado.And(criterio); } if (regla.Producto.IsNotNullOrEmpty()) { ExprContrato criterio = contrato => regla.Producto.Contains(contrato.Producto, StringComparison.InvariantCultureIgnoreCase); predicado = predicado.And(criterio); } if (regla.CodigoEstado.IsNotNullOrEmpty()) { ExprContrato criterio = contrato => regla.CodigoEstado.Contains(contrato.CodigoEstado); predicado = predicado.And(criterio); } if (regla.CodigoPlan.IsNotNullOrEmpty()) { var nombrePropiedad = "CodigoPlan"; var filtros = new List <FiltroExpresion>(); foreach (var codigo in regla.CodigoPlan) { var valor = ExpresionRegular.EliminarComodin(codigo); if (valor.IsNullOrEmpty()) { continue; } var filtro = new FiltroExpresion { NombrePropiedad = nombrePropiedad, Valor = valor }; if (codigo.StartsWith("*") && codigo.EndsWith("*")) { filtro.Operador = Operador.Contiene; } else if (codigo.StartsWith("*")) { filtro.Operador = Operador.TerminaCon; } else if (codigo.EndsWith("*")) { filtro.Operador = Operador.IniciaCon; } else if (codigo.Trim().IsNotNullOrEmpty()) { filtro.Operador = Operador.IgualQue; } filtros.Add(filtro); } ExprContrato exprOr = ConstruirArbolExpresionOr <Contrato>(filtros); if (exprOr.IsNull()) { listaMensajes.Add(CrearMensajeConfiguracionRegla.ObtenerMensajeErrorParametro(nombrePropiedad)); return(null); } predicado = predicado.And(exprOr); } if (regla.Version.IsNotNullOrEmpty()) { ExprContrato criterio = contrato => regla.Version.Contains(contrato.Version); predicado = predicado.And(criterio); } if (regla.CoberturaMaxima.IsNotNullOrEmpty()) { var nombrePropiedad = "CoberturaMaxima"; var expresionLogica = new ExpresionLogica(regla.CoberturaMaxima); if (!expresionLogica.EsExpresionLogica) { listaMensajes.Add(CrearMensajeConfiguracionRegla.ObtenerMensajeErrorExpresionLogica(nombrePropiedad, regla.CoberturaMaxima)); return(null); } expresionLogica.Proposiciones.Select(x => { x.NombrePropiedad = nombrePropiedad; return(x); }).ToList(); ExprContrato exprAnd = ConstruirArbolExpresionAnd <Contrato>(expresionLogica.Proposiciones); if (exprAnd.IsNull()) { listaMensajes.Add(CrearMensajeConfiguracionRegla.ObtenerMensajeErrorParametro(nombrePropiedad)); return(null); } predicado = predicado.And(exprAnd); } if (regla.Nivel.IsNotNullOrEmpty()) { ExprContrato criterio = contrato => regla.Nivel.Contains(contrato.Nivel); predicado = predicado.And(criterio); } if (regla.DeducibleTotal.IsNotNullOrEmpty()) { var nombrePropiedad = "DeducibleTotal"; var expresionLogica = new ExpresionLogica(regla.DeducibleTotal); if (!expresionLogica.EsExpresionLogica) { listaMensajes.Add(CrearMensajeConfiguracionRegla.ObtenerMensajeErrorExpresionLogica(nombrePropiedad, regla.DeducibleTotal)); return(null); } expresionLogica.Proposiciones.Select(x => { x.NombrePropiedad = nombrePropiedad; return(x); }).ToList(); ExprContrato exprAnd = ConstruirArbolExpresionAnd <Contrato>(expresionLogica.Proposiciones); if (exprAnd.IsNull()) { listaMensajes.Add(CrearMensajeConfiguracionRegla.ObtenerMensajeErrorParametro(nombrePropiedad)); return(null); } predicado = predicado.And(exprAnd); } if (regla.TieneImpedimento.IsNotNull()) { ExprContrato criterio = contrato => contrato.TieneImpedimento == regla.TieneImpedimento; predicado = predicado.And(criterio); } if (regla.EsMoroso.IsNotNull()) { ExprContrato criterio = contrato => contrato.EsMoroso == regla.EsMoroso; predicado = predicado.And(criterio); } if (regla.NumeroEmpresa.IsNotNullOrEmpty()) { ExprContrato criterio = contrato => regla.NumeroEmpresa.Contains(contrato.NumeroEmpresa); predicado = predicado.And(criterio); } if (regla.CodigoSucursal.IsNotNullOrEmpty()) { ExprContrato criterio = contrato => regla.CodigoSucursal.Contains(contrato.CodigoSucursal); predicado = predicado.And(criterio); } if (regla.NumeroLista.IsNotNullOrEmpty()) { ExprContrato criterio = contrato => regla.NumeroLista.Contains(contrato.NumeroLista); predicado = predicado.And(criterio); } if (regla.EsDeducibleAnual.IsNotNull()) { ExprContrato criterio = contrato => contrato.EsDeducibleAnual == regla.EsDeducibleAnual; predicado = predicado.And(criterio); } if (regla.EsVigente.IsNotNull()) { if (regla.EsVigente.Value) { ExprContrato criterio = contrato => contrato.FechaVigencia > DateTime.Now.Date; predicado = predicado.And(criterio); } else { ExprContrato criterio = contrato => contrato.FechaVigencia <= DateTime.Now.Date; predicado = predicado.And(criterio); } } return(predicado); }