/// <summary> /// Parse warrior files in project parameter considering parser options and rules /// </summary> /// <param name="aProject">files, rules, options</param> /// <param name="aConsole">output console, could be null</param> /// <returns>list of errors</returns> public virtual ParseResult Parse(IProject aProject, ISimpleOutput aConsole) { project = aProject; result = new ParseResult(); console = aConsole; project.Warriors.Clear(); int succ = 0; foreach (string file in project.WarriorFiles) { if (project.ParserOptions.StatusLine && console != null) { console.WriteLine("Parsing: " + file); } IWarrior warrior = Parse(file); project.Warriors.Add(warrior); if (warrior != null) { succ++; if (project.ParserOptions.DumpFiles) { StreamWriter sw = new StreamWriter(Path.ChangeExtension(file, project.ParserOptions.DumpExt)); warrior.Dump(new WrappedTextWriter(sw), project.ParserOptions); sw.Close(); } else if (console != null) { warrior.Dump(console, project.ParserOptions); } } else { result.Succesfull = false; } } if (project.ParserOptions.StatusLine && console != null) { console.WriteLine("========== Compiled " + project.WarriorFiles.Count + " warriors, " + (project.WarriorFiles.Count - succ) + " failed =========="); } return(result); }
private static void DumpWarrior(IWarrior w, ParserOptions opt) { StreamWriter sw = new StreamWriter(w.FileName); WrappedTextWriter wr=new WrappedTextWriter(sw); w.Dump(wr, opt); sw.Close(); }