2009-04-09 5 views
1

Angenommen, ich schrieb einen Compiler in Python oder Ruby, der eine Sprache in eine C# AST übersetzt.Pretty-Drucken C# aus Python

Wie drucke ich diesen AST aus Python oder Ruby, um einen gut eingerückten C# -Code zu bekommen?

Thanks, Joel 

Antwort

1

In Python die pprint-Modul zur Verfügung.

Je nachdem, wie Ihre Daten strukturiert sind, kann das Ergebnis, das Sie suchen, nicht zurückgegeben werden.

-1

Ein Weg wäre, es nur zu drucken und dann einen Code-Formatierer aufzurufen.

1

Sobald Sie eine AST haben, sollte dies sehr einfach sein. Wenn Sie Ihren AST laufen, müssen Sie nur noch verfolgen, wie hoch Ihr aktueller Einzug ist - Sie könnten dafür ein globales verwenden. Der Code, der den Baum durchläuft, muss die Einzugsebene bei jeder Eingabe eines Blocks einfach erhöhen und beim Verlassen eines Blocks dekrementieren. Dann, wenn Sie eine Zeile Code drucken, rufen Sie es wie folgt auf:

print "\t"*indentlevel + code 

Sie sollten mit hübsch formatierten Code enden. Allerdings bin ich ein wenig verwirrt, dass Sie diese Frage stellen - wenn Sie die Fähigkeit haben, C# in einen AST zu analysieren, kann ich mir nicht vorstellen, dass Sie nicht in der Lage sein würden, eine hübsche Druckausgabefunktion zu schreiben. :-)