1) LL(1) Konflikte & Rekursionen auflösen, Methoden für Rekursiven Abstieg 1.1) S = AB. A = x | Ax | B | . B = y | z | yy. 1.2) Decl = Type Variable ";" | Decl Type Variable ";". Type = ("int" | "string" | (Type ["*"])) ["[""]"]. Variable = ident | ident "." Variable. 2) Grammatiken erstellen und attributierten 2.1) Grammatik für Gleitkommazahlen (Beispiele: 0, 1, 1.0, .1, 1.0e17, 1E17), gültige Tokens "0" .. "9", "e", "E", ".". Das Satzsymbol soll den Wert der Zahl (double) als Ergebnis liefern. 2.2) Grammatik für römische Zahlen von 1 bis 20, gültige Tokens "I", "V", "X". Das Satzsymbol soll den Wert als Ergebnis (int) liefern. 2.3) Grammatik für Grafische Objekte, Beispiel: FIGURE RECT AT 1,1 SIZE 50,50 CIRCLE AT 5,7 RADIUS 10 SUBFIGURE AT 9,1 RECT AT 0,0 SIZE 1,0 END END Das Satzsymbol soll die kombinierte Fläche aller Objekte liefern. 3) Symboltabelle 3.1) Symboltabelle erstellen für Fib.mj in Zeile 9 3.2) Symboltabelle erstellen fpr Primes.mj in Zeile 16 4) Codeerzeugung 4.1) Operanden für a[3].f + x*2 4.2) Code für Fib.mj 4.3) Code für Primes.mj 5) LALR(1) Tabellen 5.1) LALR(1) Tabelle für folgende Grammatik erzeugen, komprimieren (shift-reduce + Zeilenverschmelzung) und xyx simulieren (auf unkomprimierter Tabelle) S = ABz. A = Ax | x. B = x | y. 5.2) LALR(1) Tabelle für folgende Grammatik erzeugen, komprimieren (shift-reduce + Zeilenverschmelzung) und xxxy simulieren (auf komprimierter Tabelle) S = x A y. A = x {x}.