Ejemplo n.º 1
0
        public override void Ejecutar(ContextoDePrograma contexto)
        {
            var función           = contexto.Declaración.FuncionesNativas[_nombre];
            var contextoDeFunción = new ContextoDePrograma(función.Clonar());

            if (función != null)
            {
                //Queue<string> cola = new Queue<string>(Parámetros);
                foreach (var parámetro in función.Parámetros)
                {
                    contextoDeFunción.Variables.Add(new Variable
                    {
                        Tipo   = parámetro.Tipo,
                        Nombre = parámetro.Nombre,
                        Valor  = contexto.DesapilarDato() //cola.Dequeue()
                    });
                }
            }

            while (contextoDeFunción.Declaración.Instrucciones.Count > 0)
            {
                var instrucción = contextoDeFunción.Declaración.Instrucciones.Dequeue();
                instrucción.Ejecutar(contextoDeFunción);
            }

            contexto.ValorDeRetorno = contextoDeFunción.ValorDeRetorno;
        }
Ejemplo n.º 2
0
        public override void Ejecutar(ContextoDePrograma contexto)
        {
            var función           = contexto.Declaración.Funciones[_nombre];
            var contextoDeFunción = new ContextoDePrograma(función.Clonar());

            contexto.ApilarContexto(contextoDeFunción);
        }
Ejemplo n.º 3
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;
            }
        }
Ejemplo n.º 4
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}");
                }
            }
        }
Ejemplo n.º 5
0
        public override void Ejecutar(ContextoDePrograma contexto)
        {
            var variable = contexto.Variables.Where(v => v.Nombre == _nombreDeVariable).First();

            if (variable != null)
            {
                contexto.ApilarDato(variable.Valor.ToString());
            }
        }
Ejemplo n.º 6
0
        public override void Ejecutar(ContextoDePrograma contexto)
        {
            string nombreDeFichero = contexto.Variables.Where(v => v.Nombre == _nombreDeVariable).FirstOrDefault().Valor.ToString();

            if (!File.Exists(nombreDeFichero))
            {
                //Lanzo mi propia excepción o como hago?? En contexto un Errores a lo Lezana??
            }
            contexto.ValorDeRetorno = File.ReadAllText(nombreDeFichero);
        }
Ejemplo n.º 7
0
 public override void Ejecutar(ContextoDePrograma contexto)
 {
     //Aqui leo y dejo el resultado en ...
     contexto.ValorDeRetorno = contexto.Consola.Leer();
 }
Ejemplo n.º 8
0
 public override void Ejecutar(ContextoDePrograma contexto)
 {
     contexto.Consola.Escribir(contexto.Variables.Where(v => v.Nombre == _nombreDeVariable).FirstOrDefault().Valor.ToString());
 }
Ejemplo n.º 9
0
 public override void Ejecutar(ContextoDePrograma contexto)
 {
     contexto.ApilarDato(_dato);
 }
Ejemplo n.º 10
0
 public ContextoDeProgramaVisualizable(ContextoDePrograma contexto)
 {
     _contexto = contexto;
 }
Ejemplo n.º 11
0
 public override void Ejecutar(ContextoDePrograma contexto)
 {
     //_variable.Valor = contexto.DesapilarDato();
     contexto.Variables.Add(_variable);
 }
Ejemplo n.º 12
0
        public override void Ejecutar(ContextoDePrograma contexto)
        {
            var valor = contexto.DesapilarDato();

            contexto.Variables.Where(v => v.Nombre == _nombreDeVariable).First().Valor = valor;
        }
Ejemplo n.º 13
0
 public override void Ejecutar(ContextoDePrograma contexto)
 {
     contexto.DesapilarContexto(_valorDeRetorno); //contextoActual??
 }
Ejemplo n.º 14
0
 public abstract void Ejecutar(ContextoDePrograma contexto);
Ejemplo n.º 15
0
 public VisualizadorDeContextoDePrograma(ContextoDePrograma contexto)
 {
     _contexto = contexto;
     _visualizadorDePilaDeLlamadas = new VisualizadorDePilaDeLlamadas();
 }