private void BotónEmpezar_Click(object sender, System.EventArgs e) { _programa = _constructor.Construir(Código.Text); if (!_programa.Declaración.Correcto) { Código.Select(_programa.Declaración.Error.InicioDeInstrucción, _programa.Declaración.Error.LongitudDeInstrucción); Código.ScrollToCaret(); Código.SelectionBackColor = Color.Red; Estado.Text = _programa.Declaración.Error.Mensaje; return; } var siguienteInstrucción = _programa.SiguienteInstrucción; if (siguienteInstrucción != null) { Estado.Text = "En depurando"; btnSiguiente.Enabled = true; _visualizador = new VisualizadorDeContextoDePrograma(_programa); VisualizadorDeContextoDeEjecución.SelectedObject = _visualizador; Código.Select(siguienteInstrucción.Inicio, siguienteInstrucción.Longitud); Código.ScrollToCaret(); Código.SelectionBackColor = Color.Yellow; } }
static void Main(string[] args) { if (args.Length > 0 && File.Exists(args[0])) { Console.OutputEncoding = System.Text.Encoding.UTF8; Constructor constructor = new Constructor(new LenguajeBase()); var código = File.ReadAllText(args[0]); ContextoDePrograma programa = constructor.Construir(código); if (programa.Declaración.Correcto) { while (programa.SiguienteInstrucción != null) { programa.EjecutarSiguienteInstrucción(); } } else { int línea = código.Take(programa.Declaración.Error.InicioDeInstrucción).Count(c => c == '\n') + 1; string instrucciónErronea = programa.Declaración.Error.Instrucción, mensaje = programa.Declaración.Error.Mensaje; Console.WriteLine($"Error en línea {línea}: {instrucciónErronea} => {mensaje}"); } } }