2016-05-17 4 views
1

Ich schreibe eine SyntaxRewriter, so habe ich eine SyntaxNode kommt in meine Besuchsmethode (eigentlich eine IdentifierNameSyntax).Wie bekomme ich Document oder Compilation von SyntaxNode oder SyntaxTree?

Was ich tun muss, ist herauszufinden, welches Symbol die Kennung darstellt, die ich mit einem SemanticModel tun kann.

Wie ich es verstehe kann ich eine SemanticModel entweder von Document oder Compilation bekommen.

Also, idealerweise möchte ich aus dem Syntax-Knoten zu Document oder Compilation navigieren.

Ist das möglich?

+2

Können Sie das 'SemanticModel' an den Konstruktor Ihres' SyntaxRewriter' übergeben? – svick

+0

Ja, das mache ich gerade. Ich fragte mich nur, ob es einen saubereren Weg gab. Ich weiß jetzt, dass SyntaxTrees nicht immer übergeordnete Dokumente/Kompilationen haben kann, aber trotzdem: Wenn sie es tun, wäre es schön, in der Lage zu sein, dorthin zu navigieren. – Schneider

+0

Antwort auf diese verwandte Frage kann auch für andere: http://stackoverflow.com/questions/37339130/how-to-getsemanticmodel-for-any-syntax-tree-in-referenced-projects-of-project-co/37352848 – Schneider

Antwort

2

Nein, da es kein garantiertes einzelnes Dokument oder eine einzige Zusammenstellung für einen Baum in beiden Richtungen gibt. Es könnte sein, und es könnte auch mehrere; Wenn Sie den Editor eingeben, erstellen wir neue Kompilationen und verwenden, wenn möglich, Syntaxbäume. Somit kann der Baum an mehreren Orten gleichzeitig sein.