public ActionResult Copy(GramaticasMoveViewModel viewModel) { int id = viewModel.Gramatica.GramaticaId; Gramatica gramatica = db.Gramaticas.Include(gra => gra.GramaticaCuerpo).Include(g => g.Vocabularios).FirstOrDefault(g => g.GramaticaId == id); var subtemaOrigen = db.SubTemas.Include(s => s.Tema).SingleOrDefault(s => s.SubTemaId == gramatica.SubTemaId); if (gramatica != null) { //copia de gramatica y vocabularios Gramatica gramaticaNuevo = new Gramatica(); gramaticaNuevo = gramatica; gramaticaNuevo.SubTemaId = viewModel.SubTemaCopiarId; //orden int nuevoOrden = db.Gramaticas.Where(g => g.SubTemaId == viewModel.SubTemaCopiarId).Count(); gramaticaNuevo.Orden = nuevoOrden + 1; db.Gramaticas.Add(gramaticaNuevo); db.SaveChanges(); return(RedirectToAction("Index", "Bloques", new { id = gramaticaNuevo.SubTemaId, pestanya = (int)PestanyasBloques.Gramaticas })); } viewModel.InicializarDesplegables(); return(View(viewModel)); }
protected void OnCombobox2Changed(object sender, EventArgs e) { string[] indice = combobox2.ActiveText.Split(' '); Gramatica temp = gramaticas[Int32.Parse(indice[1])]; string texto = ""; foreach (var t in temp.Producoes) { Gramatica.Regular producao = t.Value; string parte = ""; for (int j = 0; j < producao.Proximos.Count; j++) { if (producao.Proximos.Count > 1) { if (j == producao.Proximos.Count - 1) { parte += producao.Proximos[j]; } else { parte += producao.Proximos[j] + "|"; } } else { parte += producao.Proximos[j]; } } //if ((producao.Atual != "" && parte != "") && (producao.Atual != "" || parte != "")) { texto += producao.Atual + "->" + parte + "\r\n"; //} } textview2.Buffer.Text = texto; }
public void coverterAFDGR(int indice) { Automato temp = automatos [indice]; Gramatica GR = new Gramatica(temp); string texto = ""; foreach (var t in GR.Producoes) { Gramatica.Regular producao = t.Value; string parte = ""; for (int j = 0; j < producao.Proximos.Count; j++) { if (producao.Proximos.Count > 1) { if (j == producao.Proximos.Count - 1) { parte += producao.Proximos[j]; } else { parte += producao.Proximos[j] + "|"; } } else { parte += producao.Proximos[j]; } } //if ((producao.Atual != "" && parte != "") && (producao.Atual != "" || parte != "")) { texto += producao.Atual + "->" + parte + "\r\n"; //} } textview2.Buffer.Text = texto; }
// GET: Admin/Gramaticas/Delete/5 public ActionResult Delete(int id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Gramatica gramatica = db.Gramaticas.Find(id); if (gramatica == null) { return(HttpNotFound()); } //Ordenar de nuevo todos los Gramaticas foreach (Gramatica gr in db.Gramaticas.Where(b => b.SubTemaId == gramatica.SubTemaId && b.Orden > gramatica.Orden).ToList()) { gr.Orden = (gr.Orden) - 1; db.Entry(gr).State = EntityState.Modified; } db.SaveChanges(); //Eliminar subtema db.Gramaticas.Remove(gramatica); db.SaveChanges(); return(RedirectToAction("Index", "Bloques", new { id = gramatica.SubTemaId, pestanya = (int)PestanyasBloques.Gramaticas })); }
public ActionResult Move(GramaticasMoveViewModel viewModel) { int id = viewModel.Gramatica.GramaticaId; Gramatica gramatica = db.Gramaticas.Find(id); var subtema = db.SubTemas.Include(s => s.Tema).SingleOrDefault(s => s.SubTemaId == gramatica.SubTemaId); viewModel.SubTema = subtema; viewModel.Gramatica = gramatica; if (gramatica != null) { //Ordenar de nuevo todas los Gramaticas foreach (Gramatica gr in db.Gramaticas.Where(b => b.SubTemaId == gramatica.SubTemaId && b.Orden > gramatica.Orden).ToList()) { gr.Orden = (gr.Orden) - 1; db.Entry(gr).State = EntityState.Modified; } db.SaveChanges(); viewModel.Gramatica.SubTemaId = viewModel.SubTemaCopiarId; viewModel.Gramatica.Orden = db.Gramaticas.Count(grama => grama.SubTemaId == viewModel.SubTemaCopiarId) + 1; db.Entry(viewModel.Gramatica).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index", "Bloques", new { id = viewModel.Gramatica.SubTemaId, pestanya = (int)PestanyasBloques.Gramaticas })); } viewModel.InicializarDesplegables(); return(View(viewModel)); }
private void buttonGenAlfa_Click(object sender, EventArgs e) { //Validando que haya un dato deentrada en el textBoxNombre if (textBoxNombre.Text.Length == 0 || textBoxMatricula.Text.Length == 0 || textBoxApellido.Text.Length == 0) { MessageBox.Show("No se a ingresado nombre, apellido y/o matricula", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { Condiciones cond = new Condiciones(); bool mat = cond.validadorMatricula(textBoxMatricula.Text); if (mat) { Alfabeto alf2 = new Alfabeto(); labelMuestraAlfabeto.Text = "{ " + string.Join(",", alf2.obtenerAlfabeto(textBoxNombre.Text.ToLower() + textBoxApellido.Text.ToLower(), textBoxMatricula.Text)) + " }"; Gramatica gram2 = new Gramatica(); labelj.Text = "j={ " + string.Join(",", gram2.obtenernombre(textBoxNombre.Text.ToLower())) + " }"; labeli.Text = "i={ " + string.Join(",", gram2.obtenerMatricula(textBoxMatricula.Text)) + " }"; labelw.Text = "w={ " + string.Join(",", gram2.obteneriniciales(textBoxApellido.Text.ToLower(), 1)) + " }"; labelwi.Text = "w^I={ " + string.Join(",", gram2.obteneriniciales(textBoxApellido.Text.ToLower(), 2)) + " }"; } else { MessageBox.Show("La matricula debe de tener únicamente números", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } }
private void ActualizarCuerpo(Gramatica gramatica) { gramatica.GramaticaCuerpo.Cuerpo = FileUploadHelper.ActualizarImagenesCuerpo(gramatica.GramaticaCuerpo.Cuerpo, gramatica.GramaticaId, "media/Gramatica/"); db.Entry(gramatica.GramaticaCuerpo).State = EntityState.Modified; db.SaveChanges(); }
public AfisareGramaticaLLVM(Gramatica gramatica) { gramatica1 = gramatica; InterpreteazaGramaticaCMD = new RelayCommand(async() => await InterpreteazaGramatica()); PrintingInformation(); }
public MenuPage(string fileName) { InitializeComponent(); _gramatica = new Gramatica(); _gramatica.GetData(fileName); mainContentFrame.Content = new GreetingPage(); }
private void Gramatica3(object sender, RoutedEventArgs e) { _gramatica = new Gramatica() { NaoTerminais = new List <NT>() { new NT("S") { Producoes = new List <Producao> { new Producao("S", "AB") } }, new NT("A") { Producoes = new List <Producao> { new Producao("A", "a") } }, new NT("B") { Producoes = new List <Producao> { new Producao("B", "b") } } }, Terminais = new List <T>() { new T("a"), new T("b") } }; Setup(); }
private void Gramatica2(object sender, RoutedEventArgs e) { _gramatica = new Gramatica() { NaoTerminais = new List <NT>() { new NT("S") { Producoes = new List <Producao> { new Producao("S", "a"), new Producao("S", "[L]") } }, new NT("L") { Producoes = new List <Producao> { new Producao("L", "L;S"), new Producao("L", "S") } }, }, Terminais = new List <T>() { new T("a"), new T("["), new T("]"), new T(";"), } }; Setup(); }
public static ParseTree AnalisisSemantico(string entrada) { var gramatica = new Gramatica(); var sintactico = new Parser(gramatica); return(sintactico.Parse(entrada)); }
public MainWindow() { InitializeComponent(); _gramatica = new Gramatica(); _producoes = new ObservableCollection <NT>(); itemsControl.ItemsSource = _producoes; }
public ShowTABPage(Gramatica gramatica) { gram = gramatica; InitializeComponent(); gram.TabelaDeAnalizaSintactica(); gram.PopulareTabela(); TAB.ItemsSource = gram.Tab.DefaultView; }
public static ParseTreeNode analizarArbol(string cadena) { Gramatica gramatica = new Gramatica(); LanguageData lenguaje = new LanguageData(gramatica); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(cadena); ParseTreeNode raiz = arbol.Root; return(arbol.Root); }
public TabelaWindow(Gramatica gramatica, List <List <string> > tabelaLSR) { InitializeComponent(); this.gramatica = gramatica; this.gramatica.NumerarProducoes(); this.tabelaLSR = tabelaLSR; PrintarProducoes(); }
public Resultado ejecutar(Contexto ctx, int nivel) { //construir nombre String Nombre = ""; Nombre = Interprete.Ruta + "EXP_" + Interprete.NoEXP + ".png"; Gramatica.getEXP(instruccion.ChildNodes[0], Nombre); Interprete.NoEXP++; return(FabricarResultado.creaOk()); }
private void buttonAceptar_Click(object sender, EventArgs e) { //Validando que haya un dato deentrada en el textBoxNombre if (textBoxNombre.Text.Length == 0 || textBoxMatricula.Text.Length == 0 || textBoxApellido.Text.Length == 0) { MessageBox.Show("No se a ingresado nombre, apellido y/o matricula", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { Condiciones cond = new Condiciones(); bool mat = cond.validadorMatricula(textBoxMatricula.Text); if (mat) { //Creamos la lista que tendra a nuestro alfabeto List <char> alfabeto = new List <char>(); Alfabeto alf2 = new Alfabeto(); alfabeto = alf2.obtenerAlfabeto(textBoxNombre.Text.ToLower() + textBoxApellido.Text.ToLower(), textBoxMatricula.Text); labelMuestraAlfabeto.Text = "{ " + string.Join(",", alf2.obtenerAlfabeto(textBoxNombre.Text.ToLower() + textBoxApellido.Text.ToLower(), textBoxMatricula.Text)) + " }"; Gramatica gram2 = new Gramatica(); labelj.Text = "j={ " + string.Join(",", gram2.obtenernombre(textBoxNombre.Text.ToLower())) + " }"; labeli.Text = "i={ " + string.Join(",", gram2.obtenerMatricula(textBoxMatricula.Text)) + " }"; labelw.Text = "w={ " + string.Join(",", gram2.obteneriniciales(textBoxApellido.Text.ToLower(), 1)) + " }"; labelwi.Text = "w^I={ " + string.Join(",", gram2.obteneriniciales(textBoxApellido.Text.ToLower(), 2)) + " }"; ValidarExpresion vExp = new ValidarExpresion(textBoxNombre.Text.ToLower(), textBoxApellido.Text.ToLower(), textBoxMatricula.Text); //variables booleanas para guardar el estado true false de algunas condiciones bool SoloAlfabeto = cond.EnAlfabeto(textBoxExpresion.Text, alfabeto); bool [] estados = vExp.validar(textBoxExpresion.Text); if (textBoxExpresion.Text.Length != 0) { MessageBox.Show("Esta en alfabeto: " + SoloAlfabeto + "\nInicia con la matricula: " + estados[0] + "\nContiene w: " + estados[1] + "\nContiene I en medio: " + estados[2] + "\nContiene 2 wI por cada w: " + estados[3] + "\nTermina con el nombre repetido 2 veces" + estados[4]); } else { MessageBox.Show("USTED INGRESO NADA", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { MessageBox.Show("La matricula debe de tener únicamente números", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } }
public void CalcularLL1(Gramatica g) { Gramatica = g; Primeros = new Dictionary <char, List <string> >(); Siguientes = new Dictionary <char, List <string> >(); Tabla = new Dictionary <char, Dictionary <string, Produccion> >(); foreach (char nt in Gramatica.NoTerminales) { P(nt.ToString()); S(nt.ToString()); } LlenarTabla(); }
public static bool analizar(string cadena) { Gramatica gramatica = new Gramatica(); LanguageData lenguaje = new LanguageData(gramatica); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(cadena); ParseTreeNode raiz = arbol.Root; if (raiz == null) { return(false); } return(true); }
/// <summary> /// Verificam daca inputul introdus de utilizator este corect, /// iar in caz afirmativ aplicam algoritmul pentru analizorul LL1. /// </summary> /// <returns></returns> private async Task VerifyLLConditions() { try { Gramatica gramatica = Utility.GenereazaGramaticaFromUI(SimbolStart, Neterminale, Terminale, ReguliProductie); AppViewModel.Instance.SetCurrentPage(AppPages.AfisareLL, gramatica); } catch (Exception e) { MessageBox.Show(e.Message, "Eroare intampinata in generarea gramaticii!", MessageBoxButton.OK, MessageBoxImage.Warning); } await Task.Delay(1); }
public ShowGrammarPage(Gramatica gramatica) { InitializeComponent(); simbolstartTB.Text = gramatica.Start; string tmp1 = Helper.Multime(gramatica.Neterminale, " "); neterminaleTB.Text = tmp1; string tmp2 = Helper.Multime(gramatica.Terminale, " "); terminaleTB.Text = tmp2; nrReguliTB.Text = gramatica.NrReguliProductie.ToString(); string tmp3 = Helper.MultimeReguli(gramatica.ReguliProductie, " "); reguliTB.Text = tmp3; }
public void Remove(int vocabularioId, int gramaticaId) { Gramatica gramatica = db.Gramaticas.Include(gr => gr.Vocabularios).FirstOrDefault(gr => gr.GramaticaId == gramaticaId); if (gramatica != null) { Vocabulario vocabulario = db.Vocabularios.Find(vocabularioId); if (vocabulario != null) { gramatica.Vocabularios.Remove(vocabulario); db.Entry(gramatica).State = EntityState.Modified; db.SaveChanges(); } } }
protected void OnButton230Clicked(object sender, EventArgs e) { string[] temp = textview2.Buffer.Text.Split(new [] { '\r', '\n' }); Gramatica gramatica = new Gramatica(); for (int i = 0; i < temp.Length; i++) { Gramatica.Regular regular = new Gramatica.Regular(); string[] temp2 = temp [i].Split(new string[] { "->" }, StringSplitOptions.None); if (temp2 [0] != "") { string a = temp2 [0]; regular.Atual = a[0]; List <string> proximos = new List <string> (); for (int j = 1; j < temp2.Length; j++) { if (!temp2 [j].Contains("|")) { if (!proximos.Contains(temp2 [j])) { if (temp2 [j] != "") { proximos.Add(temp2 [j]); } } } else { string[] temp3 = temp2 [j].Split('|'); for (int k = 0; k < temp3.Length; k++) { if (!proximos.Contains(temp3 [k])) { if (temp3 [k] != "") { proximos.Add(temp3 [k]); } } } } } regular.Proximos = proximos; gramatica.AddProducao(regular); } } gramaticas.Add(gramatica); atualizarListaGramaticas(); }
// Leitura xml gramatica. private Gramatica LerXml() { try { FileStream stream = new FileStream(CaminhoXml, FileMode.Open); XmlSerializer deserealizador = new XmlSerializer(typeof(Gramatica)); Gramatica gramatica = (Gramatica)deserealizador.Deserialize(stream); stream.Close(); return(gramatica); } catch (Exception ex) { MessageBox.Show(ex.Message, "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } }
public ParseTreeNode analyze(String text) { Gramatica myGrammar = new Gramatica(); LanguageData lenguaje = new LanguageData(myGrammar); Parser p = new Parser(lenguaje); ParseTree tree = p.Parse(text); ParseTreeNode root = tree.Root; if (root != null) { generarImagen(root); listaErroresSintacticos1 = new List <Error>(); for (int i = 0; i < tree.ParserMessages.Count(); i++) { String texto = tree.ParserMessages[i].Message; String tipo = texto.Substring(0, 7); if (tipo == "Invalid") { listaErroresSintacticos1.Add(new Error("Lexico", tree.ParserMessages[i].Message + "Linea, " + (Convert.ToInt32(tree.ParserMessages[i].Location.Line) + 1) + "; columna," + (Convert.ToInt32(tree.ParserMessages[i].Location.Column) + 1))); } else { listaErroresSintacticos1.Add(new Error("Sintactico", tree.ParserMessages[i].Message + "Linea, " + (Convert.ToInt32(tree.ParserMessages[i].Location.Line) + 1) + "; columna," + (Convert.ToInt32(tree.ParserMessages[i].Location.Column + 1)))); } //Console.WriteLine(tree.ParserMessages[i].Message + "Linea, " + tree.ParserMessages[0].Location.Line + "; columna," + tree.ParserMessages[0].Location.Column); } } else { listaErroresSintacticos1 = new List <Error>(); for (int i = 0; i < tree.ParserMessages.Count(); i++) { String texto = tree.ParserMessages[i].Message; String tipo = texto.Substring(0, 7); if (tipo == "Invalid") { listaErroresSintacticos1.Add(new Error("Lexico", tree.ParserMessages[i].Message + "Linea, " + (Convert.ToInt32(tree.ParserMessages[i].Location.Line) + 1) + "; columna," + (Convert.ToInt32(tree.ParserMessages[i].Location.Column) + 1))); } else { listaErroresSintacticos1.Add(new Error("Sintactico", tree.ParserMessages[i].Message + "Linea, " + (Convert.ToInt32(tree.ParserMessages[i].Location.Line) + 1) + "; columna," + (Convert.ToInt32(tree.ParserMessages[i].Location.Column + 1)))); } //Console.WriteLine(tree.ParserMessages[i].Message + "Linea, " + tree.ParserMessages[0].Location.Line + "; columna," + tree.ParserMessages[0].Location.Column); } } return(root); }
private void button1_Click(object sender, EventArgs e) { richTextBox2.Text = ""; String inputLanguage = richTextBox1.Text; Regex r = new Regex("\\n"); string[] lines = r.Split(inputLanguage); foreach (string l in lines) { ParseLine(l); } Gramatica gramatica = new Gramatica(); LanguageData lenguaje = new LanguageData(gramatica); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(richTextBox1.Text); ParseTreeNode resultado = arbol.Root; Sintactico.generarImagen(resultado); Sintactico.generarOtraImagen(resultado); if (resultado != null) { label1.Text = "La cadena es correcta"; dataGridView1.Visible = false; } else { label1.Text = "La cadena es incorrecta"; DataTable error = new DataTable(); error.Clear(); error.Columns.Add("No."); error.Columns.Add("Error"); error.Columns.Add("Fila"); error.Columns.Add("Columna"); DataRow fila; for (int i = 0; i < arbol.ParserMessages.Count; i++) { fila = error.NewRow(); fila["No."] = i + 1; fila["Error"] = arbol.ParserMessages[i].Message.ToString(); fila["Fila"] = (arbol.ParserMessages[i].Location.Line + 1).ToString(); fila["Columna"] = (arbol.ParserMessages[i].Location.Column + 1).ToString(); error.Rows.Add(fila); } dataGridView1.DataSource = error; dataGridView1.Visible = true; } }
private List <string> P(string s) { List <string> primeros = new List <string>(); if (Gramatica.EsTerminal(s)) { primeros.Add(s); return(primeros); } char nt = s[0]; if (Primeros.TryGetValue(nt, out List <string> primerosD)) { return(primerosD); } if (Gramatica.Produccciones.Exists(p => p.Cabeza == nt && p.Cuerpo == Produccion.EPSILON)) { primeros.Add(Produccion.EPSILON); } List <Produccion> producciones = Gramatica.Produccciones.Where(p => p.Cabeza == nt && p.Cuerpo != Produccion.EPSILON).ToList(); foreach (Produccion p in producciones) { int n = p.Palabras.Length; foreach (string a in p.Palabras) { List <string> primerosA = P(a); primeros.AddRange(primerosA); if (!primerosA.Contains(Produccion.EPSILON)) { break; } n--; } if (n <= 0) { primeros.Add(Produccion.EPSILON); } } primeros = primeros.Distinct().ToList(); Primeros.TryAdd(nt, primeros); return(primeros); }
private void analizar_Click(object sender, EventArgs e) { try { string text = System.IO.File.ReadAllText(@"entrada.txt"); Gramatica grammar = new Gramatica(); LanguageData lenguaje = new LanguageData(grammar); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(text); ParseTreeNode raiz = arbol.Root; ConstructorAST builder = new ConstructorAST(); if (arbol.ParserMessages.Count == 0) { Graficador j = new Graficador(); j.graficar(arbol.Root); ConstructorAST an = new ConstructorAST(); AST auxArbol = an.Analizar(arbol.Root); if (auxArbol != null) { auxArbol.ejecutar(); } else { MessageBox.Show("No gener bien mi arbol aux en form1"); } } else { for (int i = 0; i < arbol.ParserMessages.Count; i++) { int fila = arbol.ParserMessages.ElementAt(i).Location.Line + 1; MessageBox.Show("USL-Mensaje: " + arbol.ParserMessages.ElementAt(i).Message + " Linea: " + fila + " Columna: " + arbol.ParserMessages.ElementAt(i).Location.Column); } MessageBox.Show("Hay errores lexicos o sintacticos\n El arbol de Irony no se construyo. Cadena invalida!\n"); } } catch (Exception ex) { MessageBox.Show(ex.Message + " " + ex.Source + " " + ex.ToString()); } }
//POST: ModificarOrden public ActionResult ModificarOrden(int id, string posicion) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Gramatica gramatica = db.Gramaticas.Find(id); if (gramatica == null) { return(HttpNotFound()); } actualizarOrdenSubtema(id, 1, posicion); return(RedirectToAction("Index", "Bloques", new { id = gramatica.SubTemaId })); }