void parsedSources(ParsePerformanceData[] pfd) { // Output parse time stats if (pfd != null) { foreach (var ppd in pfd) { ErrorLogger.Log("Parsed " + ppd.AmountFiles + " files in " + ppd.BaseDirectory + " in " + Math.Round(ppd.TotalDuration, 2).ToString() + "s (~" + Math.Round(ppd.FileDuration, 3).ToString() + "s per file)", ErrorType.Information, ErrorOrigin.Parser); } } // For debugging purposes dump all parse results (errors etc.) to a log file. try { ParseLog.Write(ASTCache, IDEInterface.ConfigDirectory + "\\" + Version.ToString() + ".GlobalParseLog.log"); } catch (Exception ex) { ErrorLogger.Log(ex, ErrorType.Warning, ErrorOrigin.System); } }
public async void StartParse() { if (StartPage > EndPage) { ParseLog?.Invoke("Error: Начальная страница не может быть больше конечной!"); return; } for (var i = StartPage; i <= EndPage; i++) { if (!Abort) { ParseLog?.Invoke("Warning: Сканирование прервано!"); return; } var html = await GetSourceByPage(i); var htmlDocument = new HtmlDocument(); htmlDocument.LoadHtml(html); Parse(htmlDocument); ParseLog?.Invoke($"OK: Готова страница № {i}"); } ParseLog?.Invoke("OK: Все страницы просканированы!"); }
public void WriteShopProcessingLog(ParseLog logEntry) { var db = GetDb(); db.ParseLogs.Attach(logEntry); db.SaveChanges(); }
// обновление строки прогресса private void UpdateProgress(ParseLog parseLog) { int i = 0; while (true) { ProgressBar.Step = Convert.ToInt32(parseLog.GetProgess() * 100); ProgressBar.PerformStep(); Thread.Sleep(10); if (ProgressBar.Step == Convert.ToInt32(parseLog.GetProgess() * 100)) { i++; } else { i = 0; } if (i == 50) { break; } } ProgressBar.Step = 100; ProgressBar.PerformStep(); }
private StackElement <SYMBOL_ENUM, TREE_NODE> addToStack(Command <SYMBOL_ENUM, TREE_NODE> command, AttachPoint <SYMBOL_ENUM, TREE_NODE> attachPoint, SYMBOL_ENUM symbol, int markWith, string text, Option <object> userObject, bool recovered) { // if stack is empty and we are adding start symbol (meaning full, successful parse) if (attachPoint.Stack == null && symbol.Equals(StartSymbol) && IsEndOfInput) { return(stackMaster.Add(command.IsShift, attachPoint, new StackElement <SYMBOL_ENUM, TREE_NODE>() { Symbol = StartSymbol, MarkedWith = markWith, UserObject = userObject, NodeIndex = actionTable.StartNodeIndex, IsRecovered = recovered, RecorderLink = new CommandRecorder <SYMBOL_ENUM, TREE_NODE>(command, messages) })); } else { int target_id; IEnumerable <NfaCell <SYMBOL_ENUM, TREE_NODE> > recovery_items; // compute where we will go with the symbol in DFA if (actionTable.TryGetTarget(anchoredDfaNode(attachPoint.Stack), symbol, out target_id, out recovery_items)) { StackElement <SYMBOL_ENUM, TREE_NODE> added = stackMaster.Add(command.IsShift, attachPoint, new StackElement <SYMBOL_ENUM, TREE_NODE>() { Symbol = symbol, MarkedWith = markWith, TextInfo = text, UserObject = userObject, Coordinates = Coordinates, NodeIndex = target_id, IsRecovered = recovered, RecorderLink = new CommandRecorder <SYMBOL_ENUM, TREE_NODE>(command, messages) }); added.RecoveryItems = recovery_items; return(added); } else { if (options.Trace) { System.IO.File.WriteAllLines("parser_history.dump", ParseLog.Select(it => it.ToString() + Environment.NewLine)); } throw new Exception("Internal parser error on symbol: " + this.symbolsRep.Get(symbol) + " at node: " + anchoredDfaNode(attachPoint.Stack) + " with stack: " + stackToString(attachPoint.Stack)); } } }
// загрузка логов в базу private void ButtonRun_Click(object sender, EventArgs e) { if (stringConnection != "" && stringConnection != null && directoryFile != "" && directoryFile != null) { State.ForeColor = Color.Black; State.Text = "Please wait"; ParseLog parseLog = new ParseLog(directoryFile, stringConnection); parseLog.ReadLogFile(); this.UpdateProgress(parseLog); State.ForeColor = Color.Green; State.Text = "Complite!"; } else { State.ForeColor = Color.Red; State.Text = "Noncorrect string connection or firectory file!"; } }
private IEnumerable <CommandRecorder <SYMBOL_ENUM, TREE_NODE> > doParse() { bufferedActions = new LinkedList <Tuple <ActionRecoveryEnum, ParseAction <SYMBOL_ENUM, TREE_NODE> > >(); while (true) { stackMaster.LoopOverStacks(); // get all messages and commands stacked so far messages = stackMaster.AttachedMessages.ToList(); OnParsingStep(this, EventArgs.Empty); if (options.Trace) { parseLog.AddLast(new ParseHistory() { Step = parseLog.Count, Stack = stackToString(lastOfStackOrNull), NodeId = lastStoredDfaNodeIndex(), Input = "<<< " + String.Join(" ", stackMaster.Input.Take(historyHorizon).Select(it => it.ToString())) }); } if (IsEndOfInput && stack.Count() == 1 && lastOfStackOrNull.Symbol.Equals(StartSymbol)) { yield return(lastOfStackOrNull.RecorderLink); if (!stackMaster.RemoveStack()) { yield break; } } else if (!process(lastStoredDfaNodeIndex())) { if (options.Trace) { ParseLog.Last().Killed = true; } if (!stackMaster.RemoveStack()) { yield break; } } } }