Esempio n. 1
0
        public void LlamadasRecursivasTest()
        {
            using (var lexer = new FTCCompiler.Lexer("LlamadasRecursivas.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(false, tree.HasErrors);
                Assert.AreEqual(0, _resultList.Count);
            }
        }
Esempio n. 2
0
        public void IdentificadorDuplicadoDiferenteEntornoTest()
        {
            using (var lexer = new FTCCompiler.Lexer("IdentificadorDuplicadoDiferenteEntorno.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(false, tree.HasErrors);
                Assert.AreEqual(0, _resultList.Count);
            }
        }
Esempio n. 3
0
        public void WhileCondicionFuncionBooleanTest()
        {
            using (var lexer = new FTCCompiler.Lexer("WhileCondicionFuncionBoolean.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(false, tree.HasErrors);
                Assert.AreEqual(0, _resultList.Count);
            }
        }
Esempio n. 4
0
        public void LlamarProcEnEntornoLocalTest()
        {
            using (var lexer = new FTCCompiler.Lexer("LlamarProcEnEntornoLocal.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(false, tree.HasErrors);
                Assert.AreEqual(0, _resultList.Count);
            }
        }
Esempio n. 5
0
        public void AsignacionArrayCorrectaTest()
        {
            using (var lexer = new FTCCompiler.Lexer("AsignacionArrayCorrecta.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(false, tree.HasErrors);
                Assert.AreEqual(0, _resultList.Count);
            }
        }
Esempio n. 6
0
        public void FuncionUsaParametrosTest()
        {
            using (var lexer = new FTCCompiler.Lexer("FuncionUsaParametros.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(false, tree.HasErrors);
                Assert.AreEqual(0, _resultList.Count);
            }
        }
Esempio n. 7
0
        public void DeclaracionParametrosDuplicadosTest()
        {
            using (var lexer = new FTCCompiler.Lexer("DeclaracionParametrosDuplicados.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[5,42] SEM: Ya existe un identificador con el nombre 'N'.", _resultList[0]);
            }
        }
Esempio n. 8
0
        public void ProcedimientoInexistenteTest()
        {
            using (var lexer = new FTCCompiler.Lexer("ProcedimientoInexistente.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[49,9] SEM: No se encontró un procedimiento con nombre 'PROC20'.", _resultList[0]);
            }
        }
Esempio n. 9
0
        public void FuncionInexistenteTest()
        {
            using (var lexer = new FTCCompiler.Lexer("FuncionInexistente.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[22,13] SEM: No se encontró una función con nombre 'FUN10'.", _resultList[0]);
            }
        }
Esempio n. 10
0
        public void FuncionRetornoNoCoincideConTipoDatoRetornoTest()
        {
            using (var lexer = new FTCCompiler.Lexer("FuncionRetornoNoCoincideConTipoDatoRetorno.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[17,1] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[0]);
            }
        }
Esempio n. 11
0
        public void PasajeParametrosTipoArrayTest()
        {
            using (var lexer = new FTCCompiler.Lexer("PasajeParametrosTipoArray.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[13,7] SEM: En la llamada a 'PROC' no se puede pasar un array como parámetro.", _resultList[0]);
            }
        }
Esempio n. 12
0
        public void PasajeParametrosMenosParametrosTest()
        {
            using (var lexer = new FTCCompiler.Lexer("PasajeParametrosMenosParametros.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[13,7] SEM: La cantidad de parametros proporcionados o el tipo de los mismos no coinciden con la definición de 'PROC'.", _resultList[0]);
            }
        }
Esempio n. 13
0
        public void DeclaracionDeArrayFueraDeEntornoGlobalTest()
        {
            using (var lexer = new FTCCompiler.Lexer("DeclaracionDeArrayFueraDeEntornoGlobal.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[4,5] SEM: No se puede declarar un array fuera del entorno global.", _resultList[0]);
            }
        }
Esempio n. 14
0
        public void ExampleTest()
        {
            using (var lexer = new FTCCompiler.Lexer("Example.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); });

                parser.Parse();

                Assert.IsTrue(_resultList[0] == "[16,12] SIN: Se esperaba ':=' y se encontró ''Visualizacion''.");
                Assert.IsTrue(_resultList[1] == "[21,27] SIN: Se esperaba 'integer','boolean' y se encontró 'entero'.");
                Assert.IsTrue(_resultList[2] == "[35,12] SIN: Se esperaba 'end-proc' y se encontró ';'.");
                Assert.AreEqual(_resultList.Count, 3);
            }
        }
Esempio n. 15
0
        public void IdentificadorDuplicadoMismoEntornoTest()
        {
            using (var lexer = new FTCCompiler.Lexer("IdentificadorDuplicadoMismoEntorno.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[3,5] SEM: Ya existe un identificador con el nombre 'A'.", _resultList[0]);
            }
        }
Esempio n. 16
0
        public void AsignacionDistintoTipoDatoAsignableTest()
        {
            using (var lexer = new FTCCompiler.Lexer("AsignacionDistintoTipoDatoAsignable.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[5,9] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[0]);
            }
        }
Esempio n. 17
0
        public void AsignacionIdentificadorInexistenteTest()
        {
            using (var lexer = new FTCCompiler.Lexer("AsignacionIdentificadorInexistente.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[4,2] SEM: No se encontró el identificador 'M'.", _resultList[0]);
            }
        }
Esempio n. 18
0
        public void AsignacionExpresionAConstanteTest()
        {
            using (var lexer = new FTCCompiler.Lexer("AsignacionExpresionAConstante.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[5,2] SEM: No se puede hacer una asignación a una constante", _resultList[0]);
            }
        }
Esempio n. 19
0
        public void WhileCondicionFuncionIntegerTest()
        {
            using (var lexer = new FTCCompiler.Lexer("WhileCondicionFuncionInteger.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("[9,3] SEM: Se esperaba una expresión 'Boolean' y se encontró una del tipo 'Integer'.", _resultList[0]);
            }
        }
Esempio n. 20
0
        public void MainConEntornoLocalTest()
        {
            using (var lexer = new FTCCompiler.Lexer("MainConEntornoLocal.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(1, _resultList.Count);

                Assert.AreEqual("SEM: El procedimiento MAIN no puede tener un entorno local.", _resultList[0]);
            }
        }
Esempio n. 21
0
        public void ShowIdentificadorInexistenteTest()
        {
            using (var lexer = new FTCCompiler.Lexer("ShowIdentificadorInexistente.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(2, _resultList.Count);

                Assert.AreEqual("[13,9] SEM: No se encontró el identificador 'X'.", _resultList[0]);
                Assert.AreEqual("[13,8] SEM: La expresión no puede ser nula.", _resultList[1]);
            }
        }
Esempio n. 22
0
        public void AsignacionIdentificadorFueraDeScopeTest()
        {
            using (var lexer = new FTCCompiler.Lexer("AsignacionIdentificadorFueraDeScope.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(2, _resultList.Count);

                Assert.AreEqual("[8,7] SEM: No se encontró el identificador 'X'.", _resultList[0]);
                Assert.AreEqual("[14,7] SEM: No se encontró el identificador 'B'.", _resultList[1]);
            }
        }
Esempio n. 23
0
        public void WhileCondicionProcedimientoTest()
        {
            using (var lexer = new FTCCompiler.Lexer("WhileCondicionProcedimiento.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(2, _resultList.Count);

                Assert.AreEqual("[10,13] SEM: No se encontró una función con nombre 'PROC'.", _resultList[0]);
                Assert.AreEqual("[10,3] SEM: Se esperaba una expresión 'Boolean' y se encontró una del tipo 'Integer'.", _resultList[1]);
            }
        }
Esempio n. 24
0
        public void PasajeParametrosIdentificadorInexistenteTest()
        {
            using (var lexer = new FTCCompiler.Lexer("PasajeParametrosIdentificadorInexistente.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(2, _resultList.Count);

                Assert.AreEqual("[14,10] SEM: No se encontró el identificador 'K'.", _resultList[0]);
                Assert.AreEqual("[14,8] SEM: La cantidad de parametros proporcionados o el tipo de los mismos no coinciden con la definición de 'PROC1'.", _resultList[1]);
            }
        }
Esempio n. 25
0
        public void ArrayIndiceExpresionNoEnteraTest()
        {
            using (var lexer = new FTCCompiler.Lexer("ArrayIndiceExpresionNoEntera.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(3, _resultList.Count);

                Assert.AreEqual("[10,16] SEM: El indice de un vector debe ser una expresión entera.", _resultList[0]);
                Assert.AreEqual("[11,14] SEM: El indice de un vector debe ser una expresión entera.", _resultList[1]);
                Assert.AreEqual("[12,15] SEM: El indice de un vector debe ser una expresión entera.", _resultList[2]);
            }
        }
Esempio n. 26
0
        public void ExampleSinErroresTest()
        {
            using (var lexer = new FTCCompiler.Lexer("ExampleSinErrores.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                using (var tw = File.CreateText(@"D:\syntaxTree.xml"))
                {
                    tree.Serialize(tw.BaseStream);
                }

                Assert.AreEqual(_resultList.Count, 0);
            }
        }
Esempio n. 27
0
        public void SubroutineTest()
        {
            using (var lexer = new FTCCompiler.Lexer("Subroutine.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); });

                var tree = parser.Parse();

                //using (var tw = File.CreateText(@"C:\Users\Ivan\Documents\Proyectos\FTC Compiler\tree\syntaxTree.xml"))
                //{
                //    tree.Serialize(tw.BaseStream);
                //}

                // Assert.AreEqual(_resultList.Count, 0);
            }
        }
Esempio n. 28
0
        public void AsignacionArrayIncorrectaTest()
        {
            using (var lexer = new FTCCompiler.Lexer("AsignacionArrayIncorrecta.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(3, _resultList.Count);

                Assert.AreEqual("[7,11] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[0]);
                Assert.AreEqual("[8,8] SEM: No se encontró el identificador 'X'.", _resultList[1]);
                Assert.AreEqual("[9,8] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[2]);
            }
        }
Esempio n. 29
0
        public void OperacionMenorNoEnterosEnCondicionTest()
        {
            using (var lexer = new FTCCompiler.Lexer("OperacionMenorNoEnterosEnCondicion.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s));

                var tree = parser.Parse();

                Assert.AreEqual(true, tree.HasErrors);
                Assert.AreEqual(3, _resultList.Count);

                Assert.AreEqual("[11,15] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[0]);
                Assert.AreEqual("[12,19] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[1]);
                Assert.AreEqual("[13,21] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[2]);
            }
        }
Esempio n. 30
0
        public void ShouldFailWithInvalidExpression()
        {
            using (var lexer = new FTCCompiler.Lexer("InvalidExpression1.txt"))
            {
                var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); });

                var tree = parser.Parse();

                using (var tw = File.CreateText(@"C:\Users\Ivan\Documents\Proyectos\FTC Compiler\tree\syntaxTree.xml"))
                {
                    tree.Serialize(tw.BaseStream);
                }

                Assert.IsTrue(_resultList[0] == "[4,13] SIN: Se esperaba ';' y se encontró 'M'.");
                Assert.AreEqual(_resultList.Count, 1);
            }
        }