2010-10-11 12 views
9

Ich würde gerne einen Code-Beautifier schreiben und ich dachte daran Ruby zu benutzen. Könnte mir jemand einen Platz zeigen, um anzufangen? Ich habe eine Menge Code-Verschönerungen online gesehen, aber ich bin noch nie auf Tutorials gestoßen, wie man einen schreibt. Ist das eine sehr anspruchsvolle Aufgabe für jemanden, der noch nie Projekte wie Compiler, Parser usw. geschrieben hat?Einen Code-Beautifier schreiben

(Gibt es eine anderes Langauge, die geeignet mehr gut für diese Art von Aufgabe sein würde, ohne C/C++?)

+0

Selbst wenn C oder C++ für diese Aufgabe besser geeignet wären, würden Sie sie dennoch ausschließen? –

+0

@Roger: Wahrscheinlich weiß C/C++ nicht sehr gut ist meine Vermutung. – Chris

+0

Roger hat Recht. Ich habe C/C++ seit meinen College-Tagen nicht benutzt. : p –

Antwort

2

Python hat eine interessante Eigenschaft - es macht einen eigenen Parser-Skripten. Dort are examples, die den AST - abstrakten Syntaxbaum verwenden - und das hübsche Drucken machen.

Ich bin mir nicht bewusst, dass Ruby seinen Skripten einen eigenen Parser auf diese Weise zur Verfügung stellt, aber es gibt Parser für Ruby, geschrieben in Ruby here.

+0

neugierig die downvotes ohne kommentare – Will

2

Nun ... Ich denke, die ersten Schritte sind, was Sie für jedes Projekt tun würde.

Schreiben Sie eine Liste der Anforderungen. Beschreiben Sie eine Benutzerschnittstelle zu Ihrem Programm, das Ihnen gefällt und Sie nicht daran hindert, diese Anforderungen zu erfüllen. Jetzt können Sie mehr von einem "Code" Design aufschreiben, und wählen Sie die Sprache, die für Sie am einfachsten wäre, dieses Design zu treffen.

Hier einige Anforderungen aus der Spitze von meinem Kopf:

  • Code verschönernde diese Sprache unterstützt: Ruby, Python, Perl
  • Output-Code-Eingabe identisch verhält
  • Ausgang hat konsequente Verwendung von Tabs/Leerzeichen
  • Der Ausgang verfügt über konsistente Funktion Namenskonvention
  • Ausgang hat konsistente Variablen Namenskonvention
  • Ausgabe hat Klammern und Einzüge passende

Machen Sie so viele, wie Sie wollen, es Ihr Programm ist. ;) Ich habe mich über Perl lustig gemacht, aber ich denke, jede Sprache, die Sie unterstützen, wird mehr Arbeit bringen.

+0

+1. Es geht darum, Ihre Anforderungen zu finden und dann zu sehen, welches Tool diese am besten erfüllt, genau wie für jedes Problem. Z.B. Eine Anforderung von "Ich möchte Ruby lernen" könnte genauso wichtig sein wie andere und die Dinge in diese Richtung lenken. :) –

+0

Können Sie mir sagen, welche Werkzeuge ich benutzen muss? Muss ich Tools wie Lex und Yacc verwenden oder sind diese für etwas anderes gedacht? Ich habe irgendwo gelesen, dass ich den Code in Token einteilen muss oder etwas, nach dem ich damit umgehen kann, aber das ist alles, was ich weiß. Vielen Dank. –

+0

Tokenizing-Linien gehören definitiv zu Ihrem Programm. Schau dir den rubyBeautifier an, mit dem germanlinux verlinkt ist, es ist kein langes Programm. Es verwendete reguläre Ausdrücke, was perfekt dafür ist.Sie sind schwer zu lernen, aber sehr nützlich. Ich kenne Ruby nicht, aber es sieht so aus, als könnten Sie die .split (delimiter) -Funktion auf einer Zeichenkette verwenden, um sie in Token zu zerlegen. Reguläre Ausdrücke sind jedoch wahrscheinlich der richtige Weg. – axus