public static void Dump(string Script, string Output) { Console.WriteLine("Dumping: {0}", Path.GetFileName(Script)); ParserWrapper Parser = new ParserWrapper(Script); File.WriteAllLines(Output, Parser.Import()); }
private static void TakeSubsetFromFile(string inputFile, int size, bool filter = false) { AspectManager AM = new AspectManager(); ParserWrapper pw = _parser._pool.GetParserWrapper(); AM.WorkingAspect = AM.DeserializeAspect(inputFile, pw); System.Console.WriteLine("Reading finished"); List <PointOfInterest> points = AM.WorkingAspect.Items; if (filter) { int AmbigRemoved = 0; int AmbigRemains = 0; int GoodRemoved = 0; int GoodRemains = 0; for (int i = 0; i < points.Count; ++i) { if (points[i]?.Title?.StartsWith("+ ") ?? false) { if (points[i].Title.StartsWith("+ using")) { points.RemoveAt(i); i -= 1; GoodRemoved += 1; } else { GoodRemains += 1; } } else { if (points[i]?.Title?.StartsWith("using") ?? true) { points.RemoveAt(i); i -= 1; AmbigRemoved += 1; } else { AmbigRemains += 1; } } } Console.WriteLine("Removed: " + GoodRemoved + " good, " + AmbigRemoved + " ambiguous results"); Console.WriteLine("Remains: " + GoodRemains + " good, " + AmbigRemains + " ambiguous results"); } if (points.Count > size) { Shuffle(points); points.RemoveRange(size, points.Count - size); } AM.SerializeAspect(inputFile, true); System.Console.WriteLine("Writing finished"); _parser._pool.ReleaseParserWrapper(pw); }
public Parser() { _pool = new ParserWrapperPool(); ParserWrapper pw = _pool.GetParserWrapper(); supportedExtensions = pw.GetParserIDs(); _pool.ReleaseParserWrapper(pw); }
internal PointOfInterest Parse(string FileName) { ParserWrapper pw = _pool.GetParserWrapper(); PointOfInterest TreeRoot = null; try { TreeRoot = pw.ParseFile(FileName); } catch (Exception e) { Console.WriteLine(FileName + " " + e.Message); } _pool.ReleaseParserWrapper(pw); return(TreeRoot); }
public static void Insert(string Script, string Dump) { Console.WriteLine("Importing: {0}", Path.GetFileName(Script)); var Lines = File.ReadAllLines(Dump); ParserWrapper Parser = new ParserWrapper(Script); var Original = Parser.Import(); if (Math.Abs(Lines.Length - Original.Length) > 1) { throw new Exception("Dump Length Missmatch"); } var tmp = new string[Original.Length]; for (int i = 0; i < tmp.Length; i++) { tmp[i] = i >= Lines.Length ? Original[i] : Lines[i]; } Parser.Export(tmp); }
private static void ProcessInputFile(string BaseDir, string inputFile) { AspectManager AM = new AspectManager(); ParserWrapper pw = _parser._pool.GetParserWrapper(); AM.WorkingAspect = AM.DeserializeAspect(inputFile, pw); _parser._pool.ReleaseParserWrapper(pw); int TotalNodes = AM.WorkingAspect.Items.Count; int NotFound = 0; int Errors = 0; int Found = 0; int NotChanged = 0; TreeManager TM = new TreeManager(); PointOfInterest NewAspect = new PointOfInterest(); Semaphore S = new Semaphore(1, 1); int counter = 0; Parallel.For(0, AM.WorkingAspect.Items.Count, (i) => //for (int i = 0; i < AM.WorkingAspect.Items.Count; ++i) { Interlocked.Increment(ref counter); if (counter % 10 == 0) { S.WaitOne(); Console.Write("\rNodes left: " + (AM.WorkingAspect.Items.Count - counter) + " "); S.Release(); } try { PointOfInterest Pt = AM.WorkingAspect.Items[i]; PointOfInterest Root = TM.GetTree(BaseDir + Pt.FileName); string text = TM.GetText(BaseDir + Pt.FileName); TreeSearchResult Search = TreeSearchEngine.FindPointInTree2(Root, Pt, text); if (Search.Count == 0) { Interlocked.Increment(ref NotFound); } else if (Search.Singular) { if (Search.GetNodeSimilarity(0) == 1) { Interlocked.Increment(ref NotChanged); return; //continue; } else { Interlocked.Increment(ref Found); AM.WorkingAspect.Items[i].Title = "+ " + AM.WorkingAspect.Items[i].Title; } } else { if (Search.Count >= 2) { float d1 = 1 - Search.GetNodeSimilarity(0); float d2 = 1 - Search.GetNodeSimilarity(1); //float near = Math.Max(Pt.NearG, Pt.NearL); //float threshold = ((near + 4) / 5 + 1) /2 ; //hardcoded //if (Search.GetNodeSimilarity(0) >= threshold && Search.GetNodeSimilarity(1) < threshold) if (d2 != 0 && d2 >= d1 * 2) { Interlocked.Increment(ref Found); AM.WorkingAspect.Items[i].Title = "+ " + AM.WorkingAspect.Items[i].Title; //return; //continue; } } } S.WaitOne(); NewAspect.Items.Add(AM.WorkingAspect.Items[i]); S.Release(); } catch (Exception e) { S.WaitOne(); Console.WriteLine(e.Message); Errors += 1; S.Release(); } } ); AM.WorkingAspect = NewAspect; int Ambiguous = AM.WorkingAspect.Items.Count - Found; AM.SerializeAspect(inputFile, true); File.WriteAllText(inputFile + ".report.txt", "Total: " + TotalNodes + ", Not changed: " + NotChanged + ", found: " + Found + ", Not found: " + NotFound + ", errors: " + Errors + ", ambiguous: " + Ambiguous); Console.Write("\rNodes left: 0 "); Console.WriteLine(); }