public void CompilacionGarGarIncorrectaConTexto()
        {
            Compilador compilador = new Compilador();

            ResultadoCompilacion res = compilador.Compilar(PROGRAMA_ERRONEO);

            Assert.IsFalse(res.CompilacionGarGarCorrecta);
        }
        public void CompilacionGarGarVacia()
        {
            Compilador compilador = new Compilador();

            ResultadoCompilacion res = compilador.Compilar("");

            Assert.IsFalse(res.CompilacionGarGarCorrecta);
        }
        public void CompilacionGarGarCorrectaBasica()
        {
            Compilador compilador = new Compilador(true, "basica");

            ResultadoCompilacion res = compilador.Compilar(PROGRAMA_BASICO);

            Assert.IsTrue(res.CompilacionGarGarCorrecta, ObtenerErrores(res));
            Assert.IsTrue(res.ResultadoCompPascal.CompilacionPascalCorrecta);
        }
        public void CompilacionCorrectaDosSeguidas()
        {
            Compilador compilador = new Compilador(true, "test");

            string resourceName = "UnitTestCompiladorGarGar.Programas.test.gar";
            string programa     = Utilidades.FileManager.LeerArchivoEnteroDeAssembly(Assembly.GetExecutingAssembly(), resourceName);

            ResultadoCompilacion res = compilador.Compilar(programa);

            Assert.IsTrue(res.CompilacionGarGarCorrecta, ObtenerErrores(res));

            Assert.IsTrue(res.ResultadoCompPascal.CompilacionPascalCorrecta);

            ResultadoCompilacion res2 = compilador.Compilar(programa);

            Assert.IsTrue(res2.CompilacionGarGarCorrecta, ObtenerErrores(res));

            Assert.IsTrue(res2.ResultadoCompPascal.CompilacionPascalCorrecta);
        }
        private static UC CriaUC(List <string> codigo)
        {
            var compilado = Compilador.Compilar(codigo);

            UC comp = new UC(new Logger(), compilado.CodigoXBinario);

            foreach (var item in compilado.Codigo)
            {
                comp.Memoria.AddCodigo(item);
            }
            return(comp);
        }
        public void CompilacionErrorLexicoPrimerCaracter()
        {
            Compilador compilador = new Compilador();

            string resourceName = "UnitTestCompiladorGarGar.Programas.testErrorLexico.gar";
            string programa     = Utilidades.FileManager.LeerArchivoEnteroDeAssembly(Assembly.GetExecutingAssembly(), resourceName);

            ResultadoCompilacion res = compilador.Compilar(programa);



            Assert.IsTrue(res.ListaErrores[0].Mensaje.CodigoGlobal == 43);
        }
        private void PruebaSintactica(int errorPretendido, string pruebaBis = "")
        {
            Compilador compilador = new Compilador();

            string resourceName = string.Format("UnitTestCompiladorGarGar.Programas.ErroresSintacticos.error{0}{1}.gar", errorPretendido, pruebaBis);
            string programa     = Utilidades.FileManager.LeerArchivoEnteroDeAssembly(Assembly.GetExecutingAssembly(), resourceName);

            ResultadoCompilacion res = compilador.Compilar(programa);

            Assert.IsFalse(res.CompilacionGarGarCorrecta,
                           string.Format("La compilacion da correcta y esperaba error {0}", errorPretendido));

            Assert.IsTrue(res.ListaErrores[0].Mensaje.CodigoGlobal == errorPretendido,
                          string.Format("Error {0} y esperaba {1}. Error: {2}",
                                        res.ListaErrores[0].Mensaje.CodigoGlobal, errorPretendido, res.ListaErrores[0].Mensaje.Descripcion));
        }
        public void CompilacionMenorTresSegundos()
        {
            Compilador compilador = new Compilador("validacionesSemanticasCorrectas");

            string resourceName = "UnitTestCompiladorGarGar.Programas.validacionesSemanticasCorrectas.gar";
            string programa     = Utilidades.FileManager.LeerArchivoEnteroDeAssembly(Assembly.GetExecutingAssembly(), resourceName);

            ResultadoCompilacion res = compilador.Compilar(programa);


            Assert.IsTrue(res.CompilacionGarGarCorrecta, ObtenerErrores(res));

            Assert.IsTrue(res.ResultadoCompPascal.CompilacionPascalCorrecta);

            Assert.IsTrue(res.TiempoCompilacionTotal < 3);
        }
        private static void ValidaCódigo(List <string> l, List <string> codigo)
        {
            var c         = Compilador.Compilar(codigo);
            var compilado = c.Codigo;

            if (compilado.Count != l.Count)
            {
                throw new Exception();
            }

            for (int i = 0; i < compilado.Count; i++)
            {
                if (compilado[i] != l[i])
                {
                    throw new Exception();
                }
            }
        }
        public IActionResult CreateMachine([FromBody] List <string> code)
        {
            var compilado = Compilador.Compilar(code);

            if (compilado.Erros.Count > 0)
            {
                return(BadRequest(compilado.Erros));
            }

            var newUc     = CriaUC(code, compilado);
            var virtualUc = new MachineData();

            virtualUc.codigo = code;
            virtualUc.Key    = Guid.NewGuid();
            virtualUc.uc     = newUc;
            _data.Add(virtualUc);
            return(Ok(PcToResult(virtualUc)));
        }
Exemple #11
0
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        private static void Main(string[] args)
        {
            try
            {
                //Compilador comp = new Compilador();

                //Application.Run(comp);

                var options = new Options();
                var result  = CommandLine.Parser.Default.ParseArguments <Options>(args);


                if (!result.Errors.Any())
                {
                    if (File.Exists(result.Value.InputFile))
                    {
                        using (StreamReader reader = new StreamReader(result.Value.InputFile))
                        {
                            string textoCompilar = reader.ReadToEnd();

                            //Compilador compilador = new Compilador(false, Globales.ConstantesGlobales.PathEjecucionAplicacion, Globales.ConstantesGlobales.PathEjecucionAplicacion, result.Value.ExeFile);
                            Compilador           compilador = new Compilador(false, Path.GetTempPath(), Path.GetTempPath(), result.Value.ExeFile);
                            ResultadoCompilacion res        = compilador.Compilar(textoCompilar);


                            if (res.CompilacionGarGarCorrecta && res.ResultadoCompPascal != null &&
                                res.ResultadoCompPascal.CompilacionPascalCorrecta)
                            {
                                Console.WriteLine("Compilacion exitosa");
                            }
                            else
                            {
                                Console.WriteLine("Error de compilacion");
                                foreach (var error in res.ListaErrores)
                                {
                                    Console.WriteLine(string.Format("<{0},{1}> {2}", error.Fila, error.Columna, error.Mensaje.Descripcion));
                                }
                            }
                        }
                    }
                }

                //if (args != null)
                //{


                //    if (args.Length > 0)
                //    {
                //        List<string> argumentos = new List<string>(args);
                //    }
                //    else
                //    {
                //        Console.WriteLine("Coloque el parametro -? para ayuda");
                //    }
                //}
                //else
                //{
                //    Console.WriteLine("Coloque el parametro -? para ayuda");
                //}
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error fatal en el compilador.");
                Console.WriteLine(ex.Message);
            }
        }
 private void invocarCompilador(object path)
 {
     Compilador.Compilar(path, checkConsola.Checked);
     EnabledButton(true);
 }