Hallo,
ich möchte ein Programm schreiben, das einen C++-Quellcode nimmt und in einer neuen Datei speichert, dabei aber nicht die alte Formatierung übernimmt, sondern den Quelltext anhand von vozugebenden Regeln formatiert. Das Programm macht also im Wesentlichen das, was die Format-Funktion (Ctrl+Shift+F) von eclipse mit dem Code macht, soll dann aber zusätzlich Styleinformationen hinzufügen, sodass ich formatierte Quelltexte erhalte, die z.B. der tex- oder der HTML-Spezifikation entsprechen (um ein benutzerdefiniertes Syntax-Highligting bekommen).
Der erste Schritt wäre sicher, den Ursprungs-Quellcode zu parsen. Dafür habe ich schon verschiedene Ansätze ausprobiert. Ich habe überlegt, was besser wäre, die gesamte Quellcode-Datei zeilenweise einzulesen mit split() zu zerlegen und jedem Ausdruck die Information, um welche Art Ausdruck es sich handelt mitzugeben und abzuspeichern, oder ob es sinnvoll wäre, Zeichen für Zeichen zu untersuchen und nach Ausdrücken zu suchen, die meinen Kriterien entsprechen.
Im zweiten Schritt würde ich dann die gesammelten und gespeicherten Informationen auswerten und entsprechend "formatiert" (also inklusive Style-Informationen) abspeichern.
Wie würdet ihr an diese Aufgabe (vor allem im ersten Schritt) rangehen? Welche Klassen des SDK würdet ihr ggf. nutzen? Ich würde gerne (mit eurer Hilfe) erst eine ungefähre Richtung festlegen, bevor ich weitermache.
Zwei Fragen, die sich für mich ergeben haben, sind:
1. Sollte ich die Datei zeichenweise, zeilenweise oder als Ganzes verarbeiten?
2. Sollte ich, um den Quelltext in seine Bestandteile zu zerlegen, ein mehrstufiges oder ein flaches Verfahren verwenden?
Für die, die noch nicht genau wissen, was ich meine, hier ein Beispiel:
Aus folgendem Code:
... macht mein Programm das:
Dies in einem Browser angezeigt, bekommt man in etwa:
Wie man an diesem Beispiel sieht, ist die Formatierung des Codes nach der Bearbeitung durch mein Programm verändert.
Ich freue mich über jeden Gedanken/Vorschlag/Idee.
ich möchte ein Programm schreiben, das einen C++-Quellcode nimmt und in einer neuen Datei speichert, dabei aber nicht die alte Formatierung übernimmt, sondern den Quelltext anhand von vozugebenden Regeln formatiert. Das Programm macht also im Wesentlichen das, was die Format-Funktion (Ctrl+Shift+F) von eclipse mit dem Code macht, soll dann aber zusätzlich Styleinformationen hinzufügen, sodass ich formatierte Quelltexte erhalte, die z.B. der tex- oder der HTML-Spezifikation entsprechen (um ein benutzerdefiniertes Syntax-Highligting bekommen).
Der erste Schritt wäre sicher, den Ursprungs-Quellcode zu parsen. Dafür habe ich schon verschiedene Ansätze ausprobiert. Ich habe überlegt, was besser wäre, die gesamte Quellcode-Datei zeilenweise einzulesen mit split() zu zerlegen und jedem Ausdruck die Information, um welche Art Ausdruck es sich handelt mitzugeben und abzuspeichern, oder ob es sinnvoll wäre, Zeichen für Zeichen zu untersuchen und nach Ausdrücken zu suchen, die meinen Kriterien entsprechen.
Im zweiten Schritt würde ich dann die gesammelten und gespeicherten Informationen auswerten und entsprechend "formatiert" (also inklusive Style-Informationen) abspeichern.
Wie würdet ihr an diese Aufgabe (vor allem im ersten Schritt) rangehen? Welche Klassen des SDK würdet ihr ggf. nutzen? Ich würde gerne (mit eurer Hilfe) erst eine ungefähre Richtung festlegen, bevor ich weitermache.
Zwei Fragen, die sich für mich ergeben haben, sind:
1. Sollte ich die Datei zeichenweise, zeilenweise oder als Ganzes verarbeiten?
2. Sollte ich, um den Quelltext in seine Bestandteile zu zerlegen, ein mehrstufiges oder ein flaches Verfahren verwenden?
Für die, die noch nicht genau wissen, was ich meine, hier ein Beispiel:
Aus folgendem Code:
C:
//---------------------------------------------------
// Game2.cpp :
// Kollisionskontrolle, Treppen und Gravitation
//---------------------------------------------------
#include "Game2.h"
//---------------------------------------------------
// Spiel initialisieren/"aufbauen"
void TGame::CreateGame (HWND GHandle)
{
geRect WorldScreen; // Anzeigefläche
}
... macht mein Programm das:
Code:
<span class="preprocessor">#include "Game2.h"</span>
<span class="comment">// Spiel initialisieren/"aufbauen"</span>
<span class="keyword">void </span><span class="">TGame</span><span class="">::</span><span class="method">CreateGame</span><span class="operator">(</span><span class="">HWND </span><span class="">GHandle</span><span class="operator">) </span><span class="operator">{</span>
<tab indent=4><span class="type">geRect</span> <span class="class">WorldScreen</span><span class="operator">; </span><span class="comment">// Anzeigefläche</span>
<span class="operator">}</span>
Dies in einem Browser angezeigt, bekommt man in etwa:
C:
#include "Game2.h"
// Spiel initialisieren/"aufbauen"
void TGame::CreateGame(HWND GHandle) {
geRect WorldScreen; // Anzeigefläche
}
Wie man an diesem Beispiel sieht, ist die Formatierung des Codes nach der Bearbeitung durch mein Programm verändert.
Ich freue mich über jeden Gedanken/Vorschlag/Idee.