public async Task <string> Compilar() { await Task.Yield(); this.ResultadosCompilacion.Clear(); //try //{ //Fase 1 Analisis Lexico Analizador analizador = new AnalizadorLexico(this.Document, this.ResultadosCompilacion); analizador.Analizar(); if (analizador.EsValido) { //Fase 2 Analisis Sintactico analizador = new AnalizadorSintactico((AnalizadorLexico)analizador, this.Document, this.ResultadosCompilacion); analizador.Analizar(); if (analizador.EsValido) { // //Fase 4 Sintetizador analizador = new Sintesis((AnalizadorSintactico)analizador, this.Document, this.ResultadosCompilacion); analizador.Analizar(); if (analizador.EsValido) { CodigoMaquina maquina = new CodigoMaquina((Sintesis)analizador); maquina.Generar(); this.CodigoMaquina = maquina.Codigo; this.Compilado = true; this.CodeSegment = maquina.CodeSegment; return("Compilación exitosa"); } } } this.Compilado = false; return("Se encontrarón errores previos a la compilación\n"); }
public CodigoMaquina(Sintesis sintetizado) { this.Codigo = new StringBuilder(); this.CodeSegment = sintetizado.CodeSegment; }
private void btngrabarSintesis_Click(object sender, RoutedEventArgs e) { if (txtSintesis.Text == "" && txtRuraArchivo.Text == "") { MessageBox.Show("Los Campos no deben estar Vacios"); } else { Table<Sintesis> sinte = miBD.GetTable<Sintesis>(); Sintesis tbSintesis = new Sintesis(); tbSintesis.idSintesis = 0; tbSintesis.comisionado = lblComiSinte.Content.ToString(); tbSintesis.nomArchivo = fileName; tbSintesis.ruta = RutaSintesis; tbSintesis.sintesis1 = txtSintesis.Text; tbSintesis.idOficiosComi = idOfiComi; sinte.InsertOnSubmit(tbSintesis); sinte.Context.SubmitChanges(); MessageBox.Show("Seguardo Correctamente"); lblComiSinte.Content = "--"; txtRuraArchivo.Text = ""; txtSintesis.Text = ""; sintesisVentana.IsOpen = false; } }