Пример #1
0
        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;
        }
Пример #2
0
        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;
        }
Пример #3
0
        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;
        }