5

C# を XML に変換し、C# に逆シリアル化するオプションを探しています。これに対する既存のソリューションを知っている人はいますか? Roslyn SyntaxTree は Xml シリアル化できないと仮定します。また、構文ツリーの xml-serializer を作成することは、非常に大きな作業になると思います。しかし、多分そうではありませんか?

なぜこれが必要なのですか?xml-model から xsl 経由で syntaxtree-xml に、そして c# (または多分 vb) にコードを生成したいと考えています。

XSL から直接 C# を生成したくありません (実行できますが、理想的ではないと思います)。XML モデルから XAML と HTML も生成するので、XSL が必要です。

T4 テンプレートについては知っていますが、現在、さまざまな理由から他のオプションを検討しています。

4

1 に答える 1

3

Roslyn はオープン コンパイラです。独自のコードを簡単に挿入して AST を調べ、それを XML 形式でダンプできると思います。それがオープンであることを考えると、おそらく独自の拡張機能を実装して、ダンプされた XML を読み取り、Roslyn AST を構築することができます (これは後でかなり印刷できると思います)。それは大変な作業のようです。

定型的なソリューションについては、C# AST in XMLを参照してください。そのソリューションにも、同様の read-XML-to-make-AST が必要です。

ツリーに XML を使用したくない場合があります。そのようなファイルは一般に巨大です。オブジェクト指向プログラミング言語の AST (抽象構文ツリー) はどのように見えるかを参照してください。.

AST を解析して構築するツールのコンテキスト内で操作し、それらの AST で直接操作を行い、結果をプリティプリントする方がよいでしょう。私たちの DMS システムには、既に組み込まれている C# を含む多くの言語の解析 (前の 2 つの例で示した) とプリティプリンティングの両方があり、構築した AST からコードを検査/変更/生成するための多くの便利な API があります。(XSL は、皆さんが思っているよりも AST の分析にはあまり役に立ちません。プログラムに意味を与える「コンテキスト」[たとえば、周囲のスコープや宣言] を理解していません)。

于 2013-02-08T10:51:12.757 に答える