public void Compile() { if (!File.Exists(_mgenFileName)) { Console.WriteLine("File does not exist: {0}", _mgenFileName); return; } try { MetaGeneratorCompiler compiler = new MetaGeneratorCompiler(_mgenFileName, Path.GetDirectoryName(_mgenFileName)); compiler.Compile(); if (compiler.HasErrors) { DiagnosticFormatter formatter = new DiagnosticFormatter(); foreach (var message in compiler.GetDiagnostics()) { Console.WriteLine(formatter.Format(message)); } } } catch (Exception ex) { Console.WriteLine(ex); } }
public MetaGeneratorGenerator(string inputFilePath, string inputFileContents, string defaultNamespace) : base(inputFilePath, inputFileContents, defaultNamespace) { if (this.InputFileContents != null) { compiler = new MetaGeneratorCompiler(this.InputFileContents, this.InputFileName); compiler.Compile(); } }
private static void CompileGenerator(string fileName, string outputFileName) { string source; using (StreamReader reader = new StreamReader(fileName)) { source = reader.ReadToEnd(); } MetaGeneratorCompiler compiler = new MetaGeneratorCompiler(source, fileName); compiler.Compile(); using (StreamWriter writer = new StreamWriter(outputFileName)) { MetaGeneratorGenerator generator = new MetaGeneratorGenerator(compiler.ParseTree); writer.WriteLine(generator.GeneratedSource); } using (StreamWriter writer = new StreamWriter("messages_gen.txt")) { foreach (var msg in compiler.Diagnostics.GetMessages(true)) { writer.WriteLine(msg); Console.WriteLine(msg); } } }
public override AuthoringScope ParseSource(ParseRequest req) { MetaGeneratorLanguageSource source = (MetaGeneratorLanguageSource)this.GetSource(req.FileName); switch (req.Reason) { case ParseReason.Check: // This is where you perform your syntax highlighting. // Parse entire source as given in req.Text. // Store results in the AuthoringScope object. string fileName = Path.GetFileName(req.FileName); string outputDir = Path.GetDirectoryName(req.FileName); MetaGeneratorCompiler compiler = new MetaGeneratorCompiler(req.Text, fileName); compiler.Compile(); foreach (var msg in compiler.Diagnostics.GetMessages()) { TextSpan span = new TextSpan(); span.iStartLine = msg.TextSpan.StartLine - 1; span.iEndLine = msg.TextSpan.EndLine - 1; span.iStartIndex = msg.TextSpan.StartPosition - 1; span.iEndIndex = msg.TextSpan.EndPosition - 1; Severity severity = Severity.Error; switch (msg.Severity) { case MetaDslx.Core.Severity.Error: severity = Severity.Error; break; case MetaDslx.Core.Severity.Warning: severity = Severity.Warning; break; case MetaDslx.Core.Severity.Info: severity = Severity.Hint; break; } req.Sink.AddError(req.FileName, msg.Message, span, severity); } break; } return new MetaGeneratorLanguageAuthoringScope(); }