Zur Themenübersicht     

Aufgaben Grammatiken und Syntaxdiagramme

Syntaxdiagramme, Grammatiken und erkennende endliche Automaten (EAs)

Beispiel:

Jede Programmiersprache benutzt Variablen. Diese erhalten einen Namen (Bezeichner). Für die Vergabe von Bezeichnernamen gibt es Syntaxregeln. So lauten die Regeln in Pascal:

Diese Regeln kann man in einem Syntaxdiagramm darstellen.

 

Bezeichner:


 

Ziffer:

 

Buchstaben werden analog zu Ziffern in einem Syntaxdiagramm dargestellt.

:Die in einem Kreis stehenden Symbole bezeichnet man als terminale Symbole

Die in einem Rechteck stehenden Symbole heißen nichtterminale Symbole
            Die nichtterminalen Symbole können wie bei Grammatiken noch durch terminale Symbole ersetzt werden.

Syntaxdiagramme können sowohl zur Analyse von Worten (bzw Sätzen) wie auch zum Erzeugen derselben benutzt werden. Syntaxdiagramme dürfen dabei auf beliebigen Wegen in der vorgegebenen Richtung durchlaufen werden. Nichtterminale sind durch das entsprechende Syntaxdiagramm zu ersetzen. Der Vorgang ist beendet, wenn das Ende des ersten Diagramms erreicht wurde.

Aufgaben (Bei allen Aufgaben brauchen nur kleine Buchstaben berücksichtigt werden.)

  1. Erstelle die Regeln für eine Grammatik, die Bezeichner erzeugt.
  2. Erstelle ein Zustandsdiagramm für einen Automaten, der Bezeichner in Pascal erkennt.
  3. Erstelle ein Syntaxdiagramm für die Deklaration einer Real-Variablen ohne Leerzeichen. (Diese werden einfach überlesen);
    Das Eingabealphabet sei : {v| r| b| 1| _| ;| ,| :} statt var einfach: v; statt real einfach r;
    Übersetze dieses Syntaxdiagramm in eine Grammatik und in das Zustandsdiagramm eines EA. Erstelle dann auch ein Modell mit G-Flap.
  4. Verfahre wir in Aufgabe 3 mit der Deklaration einer Integer-Konstanten.
    Bsp: CONST hundert = 100;
    Das Eingabealphabet sei : {c| b| 1| 0| _| ;| =}
  5. Überlege Dir allgemein, wie Syntaxdiagramme in Grammatiken und in erkennende Automaten umgewandelt werden können.
  6. Klammerpaare:
    Eine aus den Symbolen "(" bzw. ")" bestehende Eingabe soll überprüft werden, ob die Klammerung nach algebraischen Regeln korrekt ist. Hierbei dürfen nicht mehr als drei Klammern gleichzeitig geöffnet sein.
  1. Erstelle eine entsprechenden Automaten.
  2. Erstelle eine zugehörige Grammatik.
  3. Erstelle ein zugehöriges Syntaxdiagramm.
  4. Erstelle einen entsprechenden Automaten für maximal fünf gleichzeitig geöffnete Klammern.
  5. Begründe, dass kein EA in der Lage ist, das Problem für beliebig viele Klammern zu lösen.
  6. Erstelle eine Grammatik und ein Syntaxdiagramm für algebraisch korrekte Klammerausdrücke.