Ich möchte richtig etwas VB.NET-Code in einer Textdatei enthalten einrücken. Gibt es einen Weg, dies zu tun?
z.B. Fange damit an:
%Vor%beende dies mit:
%Vor%Alles, was ich gesucht habe, hat mich bisher führte zur . NET-Konsole Textwriter, die versteht einrücken / Unindent / Indent
Zusatzkredit: Ich möchte auch den richtigen Abstand und wenn möglich hinzuzufügen:
z Dim i As String="Hello"+"GoodBye"
- & gt; Dim i As String = "Hello" + "GoodBye"
Ich entschied mich für einen eigenen Wurf. Es gibt einige Randfälle, für die dies nicht 100% ig funktioniert, aber es ist ziemlich zuverlässig:
%Vor%Verwendung:
Setzen Sie etwas Code in ein Textfeld ( TextBox1
), und rufen Sie den Indenter wie folgt auf:
Wenn Sie Visual Studio verwenden (ich schaue mir im Moment VS 2010 an; ich weiß nicht, was frühere Versionen getan haben), dann können Sie das Edit- & gt; Advanced- & gt; Format-Dokument und es sollte sich um den Einzug und den Abstand kümmern.
Beachten Sie, dass dies für alle Arten von Dokumenten funktioniert, die Visual Studio versteht. Ich benutze diesen Trick regelmäßig, um XML-Dokumente in etwas Lesbares zu formatieren.
Eine Möglichkeit besteht darin, einen Parser und einen hübschen Drucker zu erstellen. Der Parser liest die Quelle und erstellt einen AST, der die Essenz von die Programmstruktur. Der hübsche Drucker nimmt den Baum, und regeneriert die Ausgabe basierend auf der Struktur; also ist es "einfach" strukturierte Ausgabe erhalten. Als wichtiger Hinweis für jede Ebene von Sprachstruktur (Klassen, Methoden, Blöcke, Schleifen, Bedingungen), Der PrettyPrinter kann den prettyprinted Text einrücken, um zu geben gute Eindruckstruktur.
Parsing und Prettyprinting sind beides ziemlich komplizierte Themen. Anstatt alles hier zu wiederholen, können Sie sehen meine SO Antwort auf, wie zu analysieren, mit der Diskussion darüber, wie man eine AST bauen . Prettyprinting ist nicht so bekannt, aber diese SO Antwort von mir bietet eine ziemlich vollständige Beschreibung wie es geht.
Dann haben Sie die Schwierigkeit, die tatsächliche Grammatik von VB.net zu bestimmen. Das erfordert eine Menge Arbeit, um aus der Referenzdokumentation zu extrahieren ... und es ist nicht ganz richtig, also müssen Sie Ihren Parser gegen eine Menge Code validieren, um sich selbst davon zu überzeugen. Dieser Teil ist leider nur verschwitzt.
Wenn ein Prettyprinter-Programm übergeben wird, kann OP es einfach als Prozess zum Formatieren einer Datei starten.
Wenn Sie das alles machen, dann können Sie VB.net Text formatieren. Unser (eigenständiger) VB.net-Formatierer ("DMSFormat ...") tut dies, um einen schönen Ausdruck zu erreichen.
Gegeben die Datei "vb_example.net":
%Vor%Folgendes:
%Vor%erzeugt:
%Vor%was identisch ist mit dem, was OP in seinem Beispiel wollte.
Sie können den formatierten Programminhalt einfach in eine Datei leiten.
Sie können dem Tool eine Projektdatei geben, die so viele Dateien formatiert, wie Sie angeben in der Projektdatei sofort.
Der Formatierer integriert einen vollständigen VB.net-Parser, und unsere eigenen Schöndruckmaschinen. Es analysiert der Quelltext genau (einschließlich seltsames Zeichen Kodierungen). Da es einen zuverlässigen Parser und einen hübschen Drucker verwendet, wird der Code nicht beschädigt.
Die Evaluierungsversion arbeitet mit Dateien von einigen hundert Zeilen Code. Es könnte genau das sein, was du brauchst.
Ich würde einen Link bereitstellen, aber SO scheint das nicht zu mögen. Sie können dies durch meine Bio finden.
Tags und Links .net code-formatting vb.net indentation codedom