1

言語をC#ASTに変換するコンパイラをPythonまたはRubyで作成したとします。

PythonまたはRubyからこのASTをきれいに印刷して、適切にインデントされたC#コードを取得するにはどうすればよいですか?

Thanks, Joel
4

3 に答える 3

1

Python ではpprintモジュールが利用可能です。

データの構造によっては、探している結果が返されない場合があります。

于 2009-04-09T14:14:26.150 に答える
1

AST があれば、これは非常に簡単です。AST をウォークするときは、現在のインデント レベルを追跡するだけで済みます。これにはグローバルを使用できます。ツリーをたどるコードは、ブロックに入るたびにインデント レベルを増やし、ブロックを出るたびに減らすだけです。次に、コード行を印刷するたびに、次のように呼び出します。

print "\t"*indentlevel + code

きれいにフォーマットされたコードになるはずです。しかし、あなたがこの質問をしていることに少し混乱しています。C# を解析して AST にするスキルがあれば、きれいに印刷する出力関数を作成できないとは思えません。:-)

于 2009-04-11T01:50:20.623 に答える
-2

1 つの方法は、それを印刷してからコード フォーマッタを呼び出すことです。

于 2009-04-09T15:17:35.347 に答える