private void SourceTextBox_TextChanged(object sender, EventArgs e) { if (sourceTextBox.Text != string.Empty) { Clipboard.SetText(sourceTextBox.Text); } if (modeStripDropDownButton.Text == @"PAIR") { var module = new Module { Name = "Module", Value = null, FileName = "" }; var parser = new Parser(new InputStream(sourceTextBox.Text), new PairFactory(), module); //var parser = new Parser(new InputStream(((RichTextBox) sender).Text)); var errorListener = new ErrorListener(); parser.ErrorListeners.Add(errorListener); try { var printer = new DomPrinter(); printer.Visit(parser.ParseModule("")); domTextBox.Text = printer.Text; errorsTextBox.Text = string.Join(Environment.NewLine, errorListener.Errors.ToArray()); } catch (Exception exception) { errorsTextBox.Text = exception.ToString(); } } else { var outputName = modeStripDropDownButton.Text == @"XML" ? "main.s4x" : "main.s4j"; var compilerParameters = CreateCompilerParameters(outputName); var compiler = new SyntactikCompiler(compilerParameters); var context = compiler.Run(); if (context.InMemoryOutputObjects.Count >= 1) { var sb = new StringBuilder(); foreach (var item in context.InMemoryOutputObjects) { sb.Append(item.Key).AppendLine(":").AppendLine(item.Value.ToString()); } domTextBox.Text = sb.ToString(); } else { domTextBox.Text = ""; } errorsTextBox.Text = SerializeErrors(context.Errors); } }
private void DoCompileDocumentsToMemory(Module module, CompilerContext context) { try { SyntactikDepthFirstVisitor visitor; if (module.TargetFormat == Module.TargetFormats.Xml) { visitor = new XmlGenerator(XmlMemoryWriterDelegate, XmlFileReaderDelegate, context, _generateComments); } else { visitor = new JsonGenerator(JsonFileWriterDelegate, context); } visitor.Visit(module); } catch (Exception ex) { _context.Errors.Add(CompilerErrorFactory.FatalError(ex)); } }