言語をC#ASTに変換するコンパイラをPythonまたはRubyで作成したとします。
PythonまたはRubyからこのASTをきれいに印刷して、適切にインデントされたC#コードを取得するにはどうすればよいですか?
Thanks, Joel
言語をC#ASTに変換するコンパイラをPythonまたはRubyで作成したとします。
PythonまたはRubyからこのASTをきれいに印刷して、適切にインデントされたC#コードを取得するにはどうすればよいですか?
Thanks, Joel
Python ではpprintモジュールが利用可能です。
データの構造によっては、探している結果が返されない場合があります。
AST があれば、これは非常に簡単です。AST をウォークするときは、現在のインデント レベルを追跡するだけで済みます。これにはグローバルを使用できます。ツリーをたどるコードは、ブロックに入るたびにインデント レベルを増やし、ブロックを出るたびに減らすだけです。次に、コード行を印刷するたびに、次のように呼び出します。
print "\t"*indentlevel + code
きれいにフォーマットされたコードになるはずです。しかし、あなたがこの質問をしていることに少し混乱しています。C# を解析して AST にするスキルがあれば、きれいに印刷する出力関数を作成できないとは思えません。:-)
1 つの方法は、それを印刷してからコード フォーマッタを呼び出すことです。