2014-03-27 77 views
1

我從我自己的DSL構建Roslyn語法樹。我想使用有關原始文件和數據來源的行的信息來註釋樹,然後在驗證樹時獲取潛在的錯誤。Roslyn和錯誤消息

我將如何註釋語法樹?

+0

那個信息還不在那裏嗎? – leppie

+0

「from my own DSL」 –

回答

1

註釋你的樹?我不認爲你可以直接添加元數據到樹上...如何添加評論呢?

var tree = SyntaxTree.ParseText(@"namespace Foo 
{ 
    public class Bar 
    { 
     public string Biz() 
     { 
      return ""Baz""; 
     } 
    } 
}"); 
var annotatedTree = SyntaxTree.Create(tree.GetRoot() 
    .WithLeadingTrivia(
     Syntax.Comment(String.Format("// source: scratch")), 
     Syntax.Comment(String.Format("// date: {0}", DateTime.Now)) 
    ) 
    .NormalizeWhitespace() 
); 
+0

作爲最後的手段,它可能有效,但如果可能,我寧願直接修改元數據。這仍然是一個痛苦,特別是考慮到我需要在每個連接原始source_的行上附加註釋。 –

+0

比評論更好,我可以使用#line指令... –

+0

啊,我沒有注意到你提到了行號。 '#line'指令肯定會有幫助。 –