Quantcast
Channel: Fabian Deitelhoff » 01810 –Übersetzerbau
Viewing all articles
Browse latest Browse all 5

Übersetzerbau: Zweite Kurseinheit abgeschlossen

$
0
0

FernUni-LogoZumindest fast, müsste ich in der Überschrift eigentlich noch ergänzen. Die Bearbeitung der aktuellen Kurseinheit verlief etwas zäher als gedacht. Das Interesse ist vorhanden und sobald ich mich wieder etwas eingelesen und eingearbeitet habe, ist auch der Spaß am Thema wieder da. Und doch ist da ein latenter Zeitmangel, der es mir im Moment nicht einfach macht.

Daher wird es Zeit für eine kleine Anpassung meiner Strategie, was die Bearbeitung des Kurses 01810 – Übersetzerbau angeht.

Aktuelle Inhalte

Aber zunächst soll es in diesem Beitrag um die Inhalte gehen. Wie schon im Beitrag zum ersten Teil der zweiten Kurseinheit vermutet, wurde es theoretischer. Das liegt an den zwei Verfahren, die in der zweiten Kurseinheit besprochen werden. Gemeint sind die Top-Down-Analyse und die Bottom-Up-Analyse. Sie bieten verschiedene Vorgehensweisen, die Folge von Token, die durch die lexikalische Analyse erzeugt werden, in einen Syntaxbaum zu verwandeln. Grob gesagt müssen dazu die Token durchlaufen und mit Mustern verglichen werden. Einmal, um beispielsweise Schlüsselwörter zu finden. Aber auch, um korrekte Abfolgen von Token identifizieren zu können.

Dazu sind Grammatiken wichtig, die ebenfalls in der ersten Kurseinheit eingeführt werden. Neben ein paar Definitionen und Notationen, gibt es auch schon den ersten eindringlichen Hinweis für den Leser:

Bei der Definition von Grammatiken für Programmiersprachen müssen Mehrdeutigkeiten vermieden werden.

Klingt logisch, ist aber nicht immer einfach zu erreichen. Danach wird die Top-Down-Analyse genauer erklärt. Dabei stehen zwei Probleme im Fokus, die bei der Analyse mit dem Top-Down-Verfahren auftreten können:

1. Grammatiken mit Linksrekursionen verhindern durch Endlosschleifen eine Verarbeitung mittels Top-Down-Analyse.

2. Bei der Top-Down-Analyse besteht die Gefahr, während der Verarbeitung in eine Sackgasse zu laufen.

Punkt eins ist ein absoluter Showstopper. Eine Endlosschleife im Compiler braucht niemand. Dafür sorgen wir Entwickler schon häufig genug :) . Sackgassen sind zwar unschön und nicht effizient, weil durch Backtracking ein Teil der Verarbeitung rückgängig gemacht und ein andere Weg bei der Verfolgung der Grammatik eingeschlagen werden muss, sie sind allerdings nicht ganz so schlimm. Trotzdem wäre es natürlich schön, wenn nur ein Durchlauf durch die Folge der Token notwendig ist, um den Eingabestrom zu verarbeiten.

Dazu können LL(k)-Grammatiken verwendet werden, die auch kontextfrei sind, es aber erlauben, k-Zeichen nach vorne zu schauen. So werden die Möglichkeiten eingeschränkt, die in einer Grammatik getroffen werden können und müssen. Das macht das Backtracking unnötig. Auch die Umwandlung von Links- in rechtsrekursive Grammatiken wird erklärt, um das erst genannte Problem zu vermeiden. Trotzdem werden LL(k)-Grammatiken als das Mittel der Wahl vorgestellt.

Die Bottom-Up-Analyse folgt dann in der dritten Kurseinheit.

Strategieänderungen

An dieser Stelle bin ich stehen geblieben. Die zweite Kurseinheit ist nicht ganz abgeschlossen. Etwas über zehn Seiten fehlen noch. Das ist allerdings auch nicht ganz so schlimm. Für den ersten Überblick reicht mir das Wissen bisher und ich werde mich auf die dritte Kurseinheit stürzen. Für eine Prüfung ist das natürlich nicht ausreichend. Dafür muss ich noch einiges mehr machen.

Allerdings kommt auch hier meine Strategieänderung zum Tragen. Die betrifft vor allem die Einsendeaufgaben, die ich nicht im Rhythmus von zwei Wochen bearbeiten möchte. Das habe ich in der Vergangenheit zeitlich eh nicht geschafft. Mir liegt aktuell viel mehr daran, den Stoff so gut es geht durchzuarbeiten und damit nicht stark ins Hintertreffen zu geraten.

Die Einsendeaufgaben sind insbesondere für eine Prüfung wichtig, denn dort geht es um ein tiefes Verständnis des Stoffes. Da ich aber noch nicht genau weiß, ob ich an einer Prüfung zu Übersetzerbau teilnehmen werde, verschiebe ich diesen Aufwand lieber auf einen Zeitpunkt, an dem es zeitlich klappt. Das reduziert den Druck und nimmt mir trotzdem keine Möglichkeiten.

Ich würde das Gelernte gerade viel lieber in die Tat umsetzen. Und zwar an einem eigenen, kleinen Projekt. Ideen dazu habe ich noch nicht wirklich. Zumindest nichts konkretes. Mal schauen, ob das dann wiederum zeitlich klappt.

Fazit

Der Theorieanteil wurde kräftig erhöht. Allerdings noch alles im Rahmen. Spaß macht es weiterhin, die Zeit ist aber auch weiterhin knapp. Ich hoffe am Ball bleiben und vor allem ein kleines Projekt damit umsetzen zu können.


Viewing all articles
Browse latest Browse all 5

Latest Images

Trending Articles





Latest Images