private void btnTranslate_Click(object sender, EventArgs e) { try { this.Cursor = Cursors.WaitCursor; btnTranslate.Enabled = false; var translator = new AbnfToAntlrTranslator(); bool performDirectTranslation = false; if (chkPerformDirectTranslation.Checked == true) { performDirectTranslation = true; } var input = txtInput.Text; if (input.EndsWith("\r\n")) { // do nothing } else { input = input + "\r\n"; } this.txtOutput.Text = translator.Translate(input, performDirectTranslation); this.txtOutput.ForeColor = this.ForeColor; this.txtOutput.BackColor = this.BackColor; // readonly textbox forecolor only changes when backcolor is set } catch (TranslationException ex) { this.txtOutput.Text = AntlrHelper.GetErrorMessages(ex.ParserRecognitionExceptions) + AntlrHelper.GetErrorMessages(ex.LexerRecognitionExceptions); this.txtOutput.ForeColor = Color.DarkRed; this.txtOutput.BackColor = this.BackColor; // readonly textbox forecolor only changes when backcolor is set } catch (RecognitionException ex) { this.txtOutput.Text = AntlrHelper.GetErrorMessage(ex); this.txtOutput.ForeColor = Color.DarkRed; this.txtOutput.BackColor = this.BackColor; // readonly textbox forecolor only changes when backcolor is set } catch (Exception ex) { this.txtOutput.Text = ex.Message; this.txtOutput.ForeColor = Color.DarkRed; this.txtOutput.BackColor = this.BackColor; // readonly textbox forecolor only changes when backcolor is set } finally { this.Cursor = Cursors.Default; btnTranslate.Enabled = true; lblOutput.Visible = true; txtOutput.Visible = true; } }
internal void UpdateMatchings() { sourceCodeLogger.Clear(); var sourceCodeRep = new MemoryCodeRepository(sourceCodeTextBox.Text); IPatternsRepository patternRepository; if (!string.IsNullOrEmpty(ServiceLocator.PatternViewModel.Value)) { patternRepository = new DslPatternRepository(ServiceLocator.PatternViewModel.Value, ServiceLocator.PatternViewModel.Languages); } else { patternRepository = new MemoryPatternsRepository(); } var workflow = new Workflow(sourceCodeRep, SelectedLanguage, patternRepository, stage: Stage); workflow.IsIncludeIntermediateResult = true; workflow.Logger = sourceCodeLogger; WorkflowResult workflowResult = workflow.Process(); MatchingResultDto[] matchingResults = workflowResult.MatchingResults .ToDto(workflow.SourceCodeRepository) .ToArray(); if (IsDeveloperMode) { AntlrParseTree antlrParseTree = workflowResult.ParseTrees.FirstOrDefault() as AntlrParseTree; if (antlrParseTree != null && antlrParseTree.SyntaxTree != null) { Antlr4.Runtime.Parser antlrParser = (workflow.ParserConverterSets[antlrParseTree.SourceLanguage].Parser as AntlrParser).Parser; string tokensString = AntlrHelper.GetTokensString(antlrParseTree.Tokens, antlrParser.Vocabulary, onlyDefaultChannel: true); string treeString = antlrParseTree.SyntaxTree.ToStringTreeIndented(antlrParser); Tokens = tokensString; ParseTree = treeString; File.WriteAllText(Path.Combine(ServiceLocator.TempDirectory, "Tokens.txt"), Tokens); File.WriteAllText(Path.Combine(ServiceLocator.TempDirectory, "Tree.txt"), ParseTree); } if (Stage >= Stage.Convert && workflowResult.Usts.FirstOrDefault() != null) { UstJson = jsonSerializer.Serialize(workflowResult.Usts.FirstOrDefault().Root); File.WriteAllText(Path.Combine(ServiceLocator.TempDirectory, "UST.json"), UstJson); } } MatchingResultText = "MATCHINGS"; if (matchingResults.Count() > 0) { MatchingResultText += " (" + matchingResults.Count() + ")"; } if (sourceCodeLogger.ErrorCount == 0) { SourceCodeErrorsIsVisible = false; SourceCodeErrorsText = "ERRORS"; } else { SourceCodeErrorsIsVisible = true; SourceCodeErrorsText = $"ERRORS ({sourceCodeLogger.ErrorCount})"; } Dispatcher.UIThread.InvokeAsync(() => { MatchingResults.Clear(); foreach (var matchingResult in matchingResults) { MatchingResults.Add(new MathingResultDtoWrapper(matchingResult)); } this.RaisePropertyChanged(nameof(Tokens)); this.RaisePropertyChanged(nameof(ParseTree)); this.RaisePropertyChanged(nameof(UstJson)); this.RaisePropertyChanged(nameof(MatchingResultText)); this.RaisePropertyChanged(nameof(SourceCodeErrorsIsVisible)); this.RaisePropertyChanged(nameof(SourceCodeErrorsText)); }); }