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); } } }
public EjecutarSBS() { Archivos = new List <EjecutarSBS>(); DefineNumber = Constante.DefaultDefineNumber; DefineRuta = Constante.DefaultDefineRuta; Incluye = new List <Simbolo>(); Global = null; Errores = new TabError(); }
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); }