Esempio n. 1
0
        public void BuscarIncluyes()
        {
            String path = Path.GetFullPath(Ruta).Replace(Path.GetFileName(Ruta), "");

            foreach (Simbolo archivo in Incluye)
            {
                String rutanueva = path + archivo.Nombre;
                if (File.Exists(rutanueva))
                {
                    if (!TablaVariables.ExisteArchivo(rutanueva))//si todavia no a sido metido el archivo
                    {
                        TablaVariables.Archivos.Add(rutanueva);
                        GenerarArbol arbol = new GenerarArbol();
                        EjecutarSBS  aux   = arbol.GenerarSimbolo(File.ReadAllText(rutanueva), rutanueva);
                        if (aux != null)
                        {
                            Archivos.Add(aux);
                        }
                    }
                }
                else
                {
                    TabError error = new TabError();
                    error.InsertarFila(Constante.ErroEjecucion, "No existe el archivo: " + archivo.Nombre, Path.GetFileName(Ruta), archivo.Fila.ToString(), archivo.Columna.ToString());
                    TitusNotifiaciones.setDatosErrores(error);
                }
            }
        }
Esempio n. 2
0
        public EjecutarSBS GenerarSimbolo(String texto, String ruta)
        {
            SBScriptGrammar Gramatica;
            LanguageData    language;
            Parser          parser;

            Gramatica = new SBScriptGrammar();
            language  = new LanguageData(Gramatica);
            parser    = new Parser(language);

            ParseTree   parseTree = parser.Parse(texto);
            EjecutarSBS ejecutar  = null;

            if (parseTree.Root != null && parseTree.ParserMessages.Count == 0)
            {
                GenerarTablaSimbolo a = new GenerarTablaSimbolo(parseTree, ruta);
                ejecutar = a.Ejecutar;
                ejecutar.Iniciar();
            }
            else
            {
                TitusNotifiaciones.LimpiarDatosErrores();
                TabError tablaerror = new TabError();
                foreach (Irony.LogMessage error in parseTree.ParserMessages)
                {
                    if (error.Message.Contains("Syntax error,"))
                    {
                        tablaerror.InsertarFila("Sintactico", error.Message.Replace("Syntax error", " "), ruta, (error.Location.Line + 1).ToString(), (error.Location.Column + 1).ToString());
                    }
                    else if (error.Message.Contains("Invalid character"))
                    {
                        tablaerror.InsertarFila("Lexico", error.Message.Replace("Invalid character", "Caracter invalido"), ruta, (error.Location.Line + 1).ToString(), (error.Location.Column + 1).ToString());
                    }
                    else
                    {
                        tablaerror.InsertarFila("Sintactico", error.Message.Replace("Unclosed cooment block", "Comentario de bloque sin cerrar"), ruta, (error.Location.Line + 1).ToString(), (error.Location.Column + 1).ToString());
                    }
                }
                TitusNotifiaciones.setDatosErrores(tablaerror);
            }
            return(ejecutar);
        }