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