Details  

[C++] Tokenzerlegung für C++-Quellprogramme einschließlich Makros

Ein Tokenizer zerlegt ein Quellprogramm in seine syntaktischen Bestandteile, also reservierte Wörter, Bezeichner, Operatoren und andere Bestandteile wie zum Beispiel öffnende und schließende Klammern für Blöcke (siehe https://de.wikipedia.org/wiki/Tokenizer).

Solche Tokenizer sind auch zur Zerlegung von C++-Quellprogrammen verfügbar. Diese arbeiten allerdings auf dem vom C++-Präprozessor verarbeiteten Quellcode. Zur Messung von Quellcode-Redundanz wird jedoch ein Tokenizer benötigt, welcher den Quellcode einschließlich Makros in Tokens zerlegen kann – dabei sollen Makros auf keinen Fall substituiert werden! Dazu zwei Beispiele: „#define PI 3.14“ soll die Tokens "#define", "PI" und "3.14" und „#define SQUARE(x) ((x)*(x))“ soll die Tokens "#define", "SQUARE", "(", "x", ")", "(", "(", "x", ")", "*", "(", "x", ")" und ")" ergeben.

Ziel der Abschlussarbeit ist es, einen lauffähigen Tokenizer zu entwickeln, der automatisiert die Zerlegung von C++-Quellprogrammen mit Makros zuverlässig durchführen kann. Zur Bearbeitung werden weitere Hinweise gegeben, die jedoch durch eigene Recherchen und Untersuchungen ergänzt werden müssen.

Dieses Thema kann sowohl als Bachelor- wie auch als Masterarbeit vergeben werden, wobei der Umfang der Aufgabenstellung entsprechend angepasst wird.

Sofern Sie sich für dieses Thema interessieren oder weitere Informationen wünschen, senden Sie bitte eine entsprechende Email an eisenecker(at)wifa.uni-leipzig.de.