MINT üben

Kontextfreie Grammatiken

Rechenausdrücke mit Punkt vor Strich und Programme aus verschachtelten Blöcken — Grammatik, Baum und Keller.

Dein Fortschritt:
0 / 0 Aufgaben
1

Rechenausdrücke für einen Parser

13 BEAFB I–II

Ein Taschenrechner-Programm prüft Rechenausdrücke, bevor es sie auswertet. z steht für eine beliebige Zahl. Die Syntax wird durch die Grammatik G festgelegt:

N = {A}
T = {z, +, *, (, )}
Startsymbol: A
Produktionsregeln:
A → A+A | A*A | (A) | z
  1. Wenden Sie G an: Geben Sie eine Linksableitung von (z+z)*z an. (3 BE)
  2. Zeigen Sie mit zwei Ableitungsbäumen, dass G für z+z*z mehrdeutig ist, und erläutern Sie die Folge für den Wert von 1 + 2 · 3. (4 BE)
  3. Begründen Sie, dass L(G) nicht regulär ist. (3 BE)
  4. Die Entwickler ersetzen G durch A → A+P | P, P → P*F | F, F → (A) | z. Erläutern Sie, warum mit dieser Grammatik * stärker bindet als +. (3 BE)

Hinweise

Hinweis zu Aufgabe a)
Linksableitung: Immer das am weitesten links stehende A ersetzen. Beginnen Sie mit A → A*A.
Hinweis zu Aufgabe b)
Einmal steht + an der Wurzel, einmal *. Welcher Teil wird jeweils zuerst ausgerechnet?
Hinweis zu Aufgabe c)
Denken Sie an Ausdrücke wie ((((z)))) mit beliebig vielen Klammern.
Hinweis zu Aufgabe d)
Leiten Sie z+z*z mit der neuen Grammatik ab. Kann * an der Wurzel stehen, wenn ein + außerhalb von Klammern vorkommt?