Prof. Dr. R. Laue                                                                                                                                  WS0203
                                Informatik III
                                Übungsblatt 5
                                Abgabe: 21.11. vor der Vorlesung bzw bis 21.11. 8.00 Uhr per email

URL:         /axel/informatik3_ws0203_blatt5.html
Dieses  Übungsblatt ist in Zweiergruppen zu  bearbeiten.
 

Aufgabe 13 (10 + 3 Programmier Punkte)
Nun soll unser Taschenrechner mittels lex/yacc implementiert werden. Dazu gebe man per email den yacc source, den lex source (10 Punkte) und die Dokumentation (3 Punkte) ab. Beim Programm soll  z.B. folgendes funktionieren:
<eingabe>      5.3;
<ausgabe>     5.3
<eingabe>       3+4.0*2^2*7;
<ausgabe>      115.0
<eingabe>  
(3+4*2)^2*7;
<ausgabe>   847

wer einen Eindruck von der  Funktionsweise gewinnen will, kann das linux Programm bc studieren.

Aufgabe 14 (6 Punkte)
Man konstruiere zu folgendem Automaten A eine Grammatik G mit L(A) = L(G). A habe das Eingabealphabet
{a,b,c,d,e,f} und die Zustandmenge {1,2,3,4,5}, Startzustand sei 1 und die Finalmenge sei {4}, die Übergangsfunktion sei gegeben durch


a b c d e f
1 5 5 5 2 5 5
2 2 5 4 5 3 5
3 5 4 5 5 5 1
4 5 5 4 5 5 5
5 5 5 5 5 5 5

Aufgabe 15 (5+3 Punkte)
a) Sei
                                   G=({X} , {[,],x,#,^}, R, X)

mit
                    R={ X --> [X#X], X --> [X^X],  X-->[X] , X --> x}

eine Grammatik. Wieviel Ableitungen gibt es für

                                           [[[ x^x ]] #  [x#x]]?
Begründung.
b) Wir erweitern die Regelmenge R aus Teil a um die beiden Regeln:

                 X] --> [X          und        [X --> X]

Wieviel Ableitungen gibt es jetzt für das obige Wort? Begründung.


Ergänzung: Eine Ableitung ist ein Weg vom Startsymbol zum Wort, wobei bei jedem Schritt genau eine Regel der Grammatik angewendet wird. So hat das Wort aa in der Grammatik S->AA; A->a genau zwei Ableitungen.