2009-04-09 67 views
1

假設我在Python或Ruby中編寫了一個編譯器,它將一種語言翻譯成C#AST。Python中的漂亮打印C#

如何從Python或Ruby漂亮地打印此AST以獲得很好的縮進C#代碼?

Thanks, Joel 

回答

1

在python中,pprint模塊可用。

根據數據的結構,它可能不會返回您要查找的結果。

-1

一種方法是打印它然後調用代碼格式化程序。

1

一旦你有一個AST,這應該很容易。當你走你的AST時,你所要做的就是跟蹤你當前的縮進級別 - 你可以用一個全局的。走樹的代碼只需在每次輸入塊時遞增縮進級別,並在退出塊時遞減縮進級別。然後,只要你打印一行代碼,你就這樣稱呼它:

print "\t"*indentlevel + code 

你應該以格式良好的代碼結束。然而,我有點困惑,你問這個問題 - 如果你有將C#解析爲AST的技能,我無法想象你將無法寫出漂亮的打印輸出函數。 :-)