Bild mit Unilogo
home uni uni kontakt kontakt
unilogo Universität Stuttgart
Institut für Kommunikationsnetze und Rechnersysteme (IKR)

Themenbeschreibung

Druckansicht
 

Master-Arbeit Nr. 1080    (Zu vergeben)   [pdf]

Entwurf und Implementierung eines VS-Codium Langugage-Server-Plugins für eine Variante der Programmiersprache Go


Methoden

Themengebiete

Programmierung
Softwareentwurf

Compilerbau
VS-Codium Plugins


Beschreibung

Hintergrund

Am Institut wird derzeit eine experimentelle Variante der Programmiersprache Go entwickelt, die auf den Namen GoSUB hört. Für diese Sprache ist noch kein Code-Editor verfügbar, der Mechanismen von State-of-the-Art Integrated Development Environments (IDEs) bereitstellt.

Die von Microsoft entwickelte IDE VS-Code ist als MIT-lizenzierte Version unter dem Namen VS-Codium erhältlich. Features wie Syntax-Highlighting, "jump-to-definition", "list-all-references" oder auch das Anzeigen von Funktionssignaturen realisiert der Code-Editor über Plugins. Oft binden diese Plugins einen Language Server an, der über eine standardisierte Netzwerkschnittstelle die notwendigen Informationen zur Verfügung stellt. Die Implementierungssprache des Language Servers ist somit frei wählbar.

Aufgabenstellung

Im Rahmen dieser Arbeit soll ein Language-Server-Plugin für VS-Codium entworfen und in GoSUB implementiert werden. Dazu soll in einem ersten Schritt die Kommunikation zwischen dem Server und dem Plugin aufgebaut werden. Anschließend muss das bestehende Compiler-Frontend erweitert werden, um Anfragen des Code-Editors verarbeiten zu können: Zum Beispiel muss der Language Server für die "jump-to-definition"-Funktion den an einer Stelle befindlichen Bezeichner ausgehend von seiner Quelltextposition ausfindig machen und dessen Definitionsstelle zurückgeben.

Auf dieser Grundlage lassen sich nun ausgewählte IDE-Features implementieren.

Erworbene Kenntnisse und Fähigkeiten

Sie erlangen ein tiefes Verständnis für die Funktionsweise von Programmiersprachen, Compilern und Language Servern. Außerdem vertiefen Sie Ihre Programmierkenntnisse an einem großen Softwareprojekt.


Voraussetzungen

 

Programmierkenntnisse


Kontakt

Dipl.-Ing. Matthias Meyer, Raum 1.334 (ETI II), Telefon 685-67975, [E-Mail]

M.Sc. Tobias Schwientek, Raum 1.365 (ETI II), Telefon 685-69008, [E-Mail]