예제 #1
0
        /// <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);
        }
예제 #2
0
 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();
 }