コード例 #1
0
        public static void analizar(String cadena)
        {
            Gramatica     gramatica = new Gramatica();
            LanguageData  lenguaje  = new LanguageData(gramatica);
            Parser        parser    = new Parser(lenguaje);
            ParseTree     arbol     = parser.Parse(cadena);
            ParseTreeNode raiz      = arbol.Root;
            Errores       errores   = new Errores();

            switch (verificarErroresLexSin(arbol, raiz, errores))
            {
            case 1:
                errores.generarReporteErrores(1);
                MessageBox.Show("Se encontraron errores lexicos o sintacticos y no se pudo recuperar. No generamos C3D", "Errores", MessageBoxButtons.OK, MessageBoxIcon.Error);
                break;

            case 2:
                //generarImagen(raiz);    //graficamos AST
                errores.generarReporteErrores(1);
                MessageBox.Show("Se encontraron errores lexicos o sintacticos pero nos recuperamos de ellos. No generamos C3D", "Errores", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                break;

            case 3:
                //generarImagen(raiz);    //graficamos AST
                MessageBox.Show("Cadena analizada correctamente. A generar C3D!", "PascalC3D", MessageBoxButtons.OK, MessageBoxIcon.Information);
                generarC3D(arbol, errores);
                errores.generarReporteErrores(1);
                if (!errores.esVacio())
                {
                    MessageBox.Show("Se encontraron errores semanticos durante la generacion del C3D", "PascalC3D", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                break;
            }
        }