Esempio n. 1
0
        private void Grammar_BuildButton_Click(object sender, RoutedEventArgs e)
        {
            BuiltGrammarFilename = OpenedGrammarFilename;

            var messages = new List <Message>();

            Parser = BuilderBase.BuildParser(
                ParsingLL.IsChecked ?? false ? GrammarType.LL : GrammarType.LR,
                Grammar_Editor.Text,
                messages
                );

            Grammar_LogList.Text           = String.Join(Environment.NewLine, messages.Where(m => m.Type == MessageType.Trace).Select(m => m.Text));
            Grammar_ErrorsList.ItemsSource = messages.Where(m => m.Type == MessageType.Error || m.Type == MessageType.Warning);

            if (messages.Any(m => m.Type == MessageType.Error))
            {
                Grammar_StatusBarLabel.Content = "Не удалось сгенерировать парсер";
                Grammar_StatusBar.Background   = LightRed;
            }
            else
            {
                if (Grammar_DisablePreprocButton.IsChecked != true)
                {
                    Parser.SetPreprocessor(Preprocessor);
                }

                Grammar_StatusBarLabel.Content = "Парсер успешно сгенерирован";
                Grammar_StatusBar.Background   = Brushes.LightGreen;
            }
        }