Prof. Dr. R. Laue
Dr. A. Kohnert                                                                                                                                             SS 2005
Compilerbau und formale Sprachen
                                Übungsblatt 9
                              

URL:         /axel/compiler_ss05_blatt9.html

 Dieses Blatt wird am 15.6.2005 besprochen.




Aufgabe 22 if-then-else
 
Erstellen Sie zur Grammatik (token = {i,a,e}) (startsymbol = S)

S -> iSeS
S-> iS
S-> a

eine SLR Parsertafel. Interpretieren Sie die auftretenden shift/reduce Konflikte und erläuteren Sie was die möglichen Lösungen bedeuten. Parsen Sie die Beispieleingabe iiaea.

Aufgabe  23 Programmiersprachen sind nicht kontextfrei

Zeigen Sie, dass folgende Sprache (die Wörter der Sprache sind  gültige C Programme sofern es keine Restriktion für die Länge von Variablennamen gibt) nicht kontext frei ist:

L={ main() { int xn; xn=xn; } : n>0 }



Aufgabe 24 Variablen implementieren
 
In Aufgabe 18 wurde  für den Taschenrechner ein lex/yacc Programm geschrieben. Nun soll die Syntax erweitert werden, damit Variablen funktionieren:
<eingabe>      a=5;
<ausgabe>     5
<eingabe>       a*2;
<ausgabe>      10
<eingabe>       b=0.5;
<ausgabe>      syntax error

Die Arbeit soll zwischen lex und yacc geteilt werden. lex soll das Token Variable liefern. Für diese erste Version soll es nur Integer Variablen geben und nur Variablen mit Namen 'a'-'z'. Dies wird später erweitert.   (abgabe von a24.l und a24.y per email bis 15.6.05. 12.00 Uhr an a24ss05 at btm2x3.mat.uni-bayreuth.de)