示例#1
0
        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;
            }
        }
示例#2
0
        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}");
                }
            }
        }