Problem
|
Klammerschachtelung (Rekursion) kann nicht mit
regulären Ausdrücken beschrieben werden
|
| |
Lösung
|
mächtigeres Werkzeug für die Syntaxdefinition:
Kontextfreie Grammatiken
|
| |
Terminalsymbole
|
Token, Ausgabe-Alphabet des Scanners
|
| |
|
Scanner und Parser hintereinander schalten
|
| |
technisches Problem
|
|
EOF Marke
|
Parser müssen (wie Scanner auch) nicht nur Zeichen lesen,
sondern auch das Ende der Eingabe erkennen.
|
| |
|
immer Kombination: EOF-Test und Lesen/Testen des nächsten
Zeichens
|
| |
Lösung
|
neues Spezialsymbol für EOF
üblich: $
|
| |
|
Grammatik erweitern
|
|
|
|
erweitern zu
|
|
G = (T ∪ {$}, N ∪ {S'}, P', S')
|
|
mit
|
|
|
| |
|
Keine zusätzlichen Tests auf EOF.
Wenn $ im Eingabestrom auftaucht, ist das Parsen beendet.
|
| |