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}"); } }
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); } }