private void parseButton_Click(object sender, RoutedEventArgs e) { logsRichTextBox.Document.Blocks.Clear(); try { ParserByTombs.SetNewInstance(); // parsed - FOR AST AND CFG parsed = ParserByTombs.Instance.Parse(StringFromRichTextBox(procedureRichTextBox)); // formatted - ONLY FOR "MAIN WINDOW" var formatted = ParserByTombs.Instance.GetParsedFormattedSourceCode(); linesRichTextBox.Document.Blocks.Clear(); linesRichTextBox.Document.Blocks.Add(new Paragraph(new Run(formatted.lineNumbers))); procedureRichTextBox.Document.Blocks.Clear(); procedureRichTextBox.Document.Blocks.Add(new Paragraph(new Run(formatted.parsedSourceCode))); //procedureRichTextBox.ScrollToVerticalOffset(0); linesRichTextBox.ScrollToVerticalOffset(procedureRichTextBox.VerticalOffset); addLog("Source Code Parser: Ok"); } catch (Exception ex) { addLog("Source Code Parser: " + ex.GetType().Name + ": " + ex); good = false; return; } try { pkb = ParserByTombs.Instance.pkb; QueryEvaluator.GetInstance().pkb = pkb; QueryProjector.GetInstance().Pkb = pkb; addLog("PKB Create: Ok"); } catch (Exception ex) { addLog("PKB Create: " + ex.GetType().Name + ": " + ex); good = false; return; } good = true; }
private void evaluateQueryButton_Click(object sender, RoutedEventArgs e) { if (!good) { return; } resultRichTextBox.Document.Blocks.Clear(); try { try { List <QueryProcessingSusbsytem.Condition> conditionsList = QueryPreProcessor.GetInstance().conditionsList; QueryEvaluator.GetInstance().Evaluate(conditionsList); } catch (NoResultsException ex) { addLog("Q Evaluator: " + ex.GetType().Name + ": " + ex.Message); good = false; } finally { //tutaj QueryProjector wkracza do gry - interpretuje instancję klasy Result QueryResult queryResult = QueryResult.GetInstance(); QueryProjector queryProjector = QueryProjector.GetInstance(); resultRichTextBox.Document.Blocks.Add(new Paragraph(new Run(queryProjector.PrintResult()))); addLog("Q Evaluator: Result: ok, check Result window"); } } catch (Exception ex) { addLog("FATAL ERROR: " + ex.GetType().Name + ": " + ex); } good = true; }
static void Main(string[] args) { string SourceCode = ""; PkbAPI pkb; if (args.Length == 0) { Console.WriteLine("No parameter with path to file"); Console.WriteLine("Program exit."); return; } string path = args[0]; try { SourceCode = File.ReadAllText(path); Console.WriteLine("File ok: " + path); SourceCode = ParserByTombs.Instance.Parse(SourceCode); Console.WriteLine("Source Parsed ok"); pkb = ParserByTombs.Instance.pkb; QueryEvaluator.GetInstance().pkb = pkb; QueryProjector.GetInstance().Pkb = pkb; Console.WriteLine("PKB ok"); AstManager.GetInstance().GenerateStructures(SourceCode, pkb); Console.WriteLine("AST ok"); CfgManager.GetInstance().GenerateStructure(SourceCode, pkb); Console.WriteLine("CFG ok"); } catch (Exception ex) { Console.WriteLine("Before"); Console.WriteLine(ex.GetType().Name + ": " + ex); } Console.WriteLine("Ready"); int i = 0; while (true) { string answer = ""; string query = Console.ReadLine(); query += " " + Console.ReadLine(); try { query = QueryPreProcessor.GetInstance().Parse(query); } catch (Exception ex) { Console.WriteLine("#" + ex.GetType().Name + ": " + ex.Message); continue; } try { List <Condition> conditionsList = QueryPreProcessor.GetInstance().conditionsList; QueryEvaluator.GetInstance().Evaluate(conditionsList); } catch (Exception ex) { } finally { try { QueryResult queryResult = QueryResult.GetInstance(); QueryProjector queryProjector = QueryProjector.GetInstance(); answer = queryProjector.PrintResult(); } catch (Exception ex) { answer = "none"; } } Console.WriteLine(answer); } Console.WriteLine("Program exit."); return; }