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)