Example #1
0
        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));
            }
        }