private void CalculateButton_Click(object sender, RoutedEventArgs e)
        {
            resultTextBox.IsReadOnly = false;
            errorsTextBox.IsReadOnly = false;
            try
            {
                if (!string.IsNullOrEmpty(expressionTextBox.Text))
                {
                    LexicalAnalyse.Analyser lexicalAnalyser = new LexicalAnalyse.Analyser();
                    if (variablesListView.Items.Count > 1)
                    {
                        for (int i = 0; i < variablesListView.Items.Count - 1; i++)
                        {
                            var ci      = new DataGridCellInfo(variablesListView.Items[i], variablesListView.Columns[0]);
                            var varName = ((Variable)ci.Item).Name;

                            ci = new DataGridCellInfo(variablesListView.Items[i], variablesListView.Columns[1]);
                            var varValue = ((Variable)ci.Item).Value.ToString();

                            IdnTable.Add(varName, Double.Parse(varValue));
                        }
                    }

                    if (lexicalAnalyser.Parse(new string[] { "$ " + expressionTextBox.Text.Trim() + " $" }))
                    {
                        RelationshipsTable.InitTable();
                        OperatorPrecedenceMethod.Analyser syntaxAnalyser = new OperatorPrecedenceMethod.Analyser();
                        syntaxAnalyser.Parse();

                        resultTextBox.Text = syntaxAnalyser.GetPolisResult().ToString();
                        errorsTextBox.Text = syntaxAnalyser.Error;
                    }
                    else
                    {
                        errorsTextBox.Text = "Lexical error!";
                    }
                    resultTextBox.IsReadOnly = true;
                    errorsTextBox.IsReadOnly = true;
                }
                else
                {
                    errorsTextBox.Text       = "Error! Expression can't be null or empty. Please fill expression form.";
                    errorsTextBox.IsReadOnly = true;
                    MessageBox.Show("Error!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"ERROR! {ex.Message}");
            }
        }
Beispiel #2
0
        private void StartButton_Click(object sender, RoutedEventArgs e)
        {
            LexicalAnalyse.Analyser lexicalAnalyser = new LexicalAnalyse.Analyser();
            lexicalAnalyser.Parse(GetTextFromRichTextbox());

            try
            {
                if (AnalyzeType.Equals("pushdownAutomation"))
                {
                    PushdownAutomatonMethod.Analyser analyser = new PushdownAutomatonMethod.Analyser();
                    analyser.Parse();
                }
                else if (AnalyzeType.Equals("recursiveDescent"))
                {
                    RecursiveDescentMethod.Analyser analyser = new RecursiveDescentMethod.Analyser();

                    if (analyser.Parse())
                    {
                        listViewErrors.ItemsSource = null;

                        IPolishGenerator generator = new DeijkstraGenerator();
                        generator.Start();

                        ConsoleWindow consoleWindow = new ConsoleWindow();
                        consoleWindow.Show();

                        Executor polishExecutor = new Executor(generator, consoleWindow);
                        polishExecutor.Execute();
                    }
                    else
                    {
                        listViewErrors.ItemsSource = analyser.GetErrors();
                    }
                }
                else if (AnalyzeType.Equals("operatorPrecedence"))
                {
                    OperatorPrecedenceMethod.Analyser analyser = new OperatorPrecedenceMethod.Analyser();
                    analyser.Parse();
                    MessageBox.Show("Build successfully.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }