11.1 Syntaxanalyse



next up previous contents
Next: 11.1.1 Lexikalische Analyse (Scanner) Up: 11 Die einzelnen Komponenten Previous: 11 Die einzelnen Komponenten

11.1 Syntaxanalyse

 

Bei einem Programmsystem wie JANAP, das zur Definition des zu lösenden Problems eine Eingabesprache erfordert, steht an der ersten Stelle der Verarbeitung die Analyse der Eingabe. Diese Analyse teilt sich in drei, prinzipiell verschiedene, Teile [3]:

Lineare Analyse:
Während der linearen Analyse werden die einzelnen Zeichen der Eingabe von links nach rechts gelesen und zu Terminalsymbolen (``Token''), das sind Zeichenketten mit einer generellen Bedeutung (z.B. Namen, Zahlen, Trenner), zusammengefaßt . Diese Phase wird Lexikalische Analyse oder Scanning genannt.
Hierarchische Analyse:
Während der hierarchischen Analyse werden die Terminalsymbole hierarchisch zu grammatikalischen Gruppen mit einer Bedeutung (z.B. Anweisung) zusammengefaßt. Diese Phase wird Syntax Analyse oder Parsen genannt. In dieser Phase hat alleine die syntaktische Form eine Bedeutung.
Semantische Analyse:
In dieser Phase werden eine Reihe von Kontrollen durchgeführt, um zu verifizieren, daß die einzelnen Syntax-Elemente wirklich sinnvoll zusammenpassen (z.B. die in einer Ausgabeanweisung referenzierten Bauelemente müssen im topologischen Teil auch wirklich definiert worden sein). In dieser Phase werden auch die Informationen gesammelt, die notwendig sind, um dann die Netzwerkgleichungen aufzubauen, die Simulation durchzuführen und die gewünschten Werte auszugeben.

Die lexikalische und syntaktische Analyse werden in diesem Abschnitt behandelt, die Semantikanalyse wird in Abschnitt 11.2 besprochen.

Grundsätzlich gibt es bei der lexikalischen und der syntaktischen Analyse zwei Methoden der Durchführung:

Tabellengesteuert:
Die lexikalische und syntaktische Analyse wird jeweils mit Hilfe eines (deterministischen) Automaten durchgeführt. Mit Hilfe geeigneter Generatoren werden die Tabellen für diese Automaten erstellt. Die Semantikanalyse wird in diesem Fall meistens durch eigene sogenannte Semantik-Routinen durchgeführt.

Ausprogrammiert:
Die zur Analyse notwendigen (deterministischen) Automaten werden voll ausprogrammiert. Es sind daher keine Tabellen mehr erforderlich. Der Automat wird durch bedingte Anweisungen (IF) realisiert. Dadurch ist der Automat an sich nicht mehr erkennbar. Bei dieser Implementierungstechnik ist die Semantikanalyse eng mit der Syntaxanalyse verquickt.

Natürlich gibt es nicht nur diese zwei Methoden in Reinkultur sondern auch je nach Problemstellung verschiedene Mischformen.

Jede dieser Techniken hat ihre Vor- und Nachteile. Die wichtigsten von ihnen in zwangloser Reihenfolge sind:

Die Entscheidung, welche Variante konkret gewählt wird, wird meistens nicht nur von den oben angeführten Unterschieden geprägt sondern hängt von der Verfügbarkeit geeigneter Programm- bzw. Tabellengeneratoren ab.

Für JANAP wurde eine voll tabellengesteuerte Variante ausgewählt. Auch die Behandlung von Syntaxfehlern wird tabellengesteuert durchgeführt. Für die Erstellung der Tabellen werden Tabellengeneratoren, die an der Universität von Wisconsin entwickelt wurden, eingesetzt.





next up previous contents
Next: 11.1.1 Lexikalische Analyse (Scanner) Up: 11 Die einzelnen Komponenten Previous: 11 Die einzelnen Komponenten



Martin Stiftinger
Fri Jun 9 19:49:39 MET DST 1995