• Keine Ergebnisse gefunden

Klausur zur Vorlesung

N/A
N/A
Protected

Academic year: 2021

Aktie "Klausur zur Vorlesung"

Copied!
8
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Lehrstuhl f¨ur Theoretische Informatik Prof. Dr. Markus Lohrey

Compilerbau Klausur 15.03.2019

Klausur zur Vorlesung

” Compilerbau“

WS 2018/19 / 15. M¨ arz 2019

Vorname:

Nachname:

Matrikelnummer:

Aufgabe Punktzahl Erreicht

1 14

2 10

3 10

4 4

5 4

6 8

Σ 50

(2)

• Hilfsmittel: Ein beidseitig beschriebenes DIN-A4-Blatt.

• Benutzen Sie ein dokumentenechtes Schreibger¨at. Schreiben Sie nicht mit roter Farbe.

• Uberpr¨¨ ufen Sie die Ihnen ausgeh¨andigte Klausur auf Vollst¨andigkeit: 6 Aufgaben auf 6 Seiten.

• Tragen Sie auf jedes Blatt Ihren Namen und Ihre Matrikelnummer in die entsprechenden Felder ein.

• Schreiben Sie ihre L¨osungen in die daf¨ur vorgesehenen Felder. Reicht der Platz in einem Feld nicht aus, so benutzen Sie die R¨uckseite des entsprechenden Blattes und vermerken dies auf der Vorderseite. Reicht der Platz dennoch nicht aus, k¨onnen Sie die Aufsicht nach zus¨atzlichen Bl¨attern fragen.

Zur Erinnerung:

Definition. Sei k ∈ N. Eine Grammatik G = (N,Σ, P, S) heißt LL(k)-Grammatik, wenn f¨ur jede Linksableitung S → wAβ, wobei w ∈ Σ, A ∈ N und β ∈ (Σ∪N) gilt: F¨ur jedes Paar von Produktionen A → α1, A → α2 ∈ P mit α1 6= α2 gilt, dass Firstk1β)∩Firstk2β) =∅.

(3)

Klausur Compilerbau Name:

15.03.2019 Matrikelnummer:

Aufgabe 1. (14 Punkte) Sei r ∈ E{a,b} mit r = ab|ba. Konstruieren Sie den Berry- Sethi-Automaten zu r. Geben Sie f¨ur jeden Teilausdruck die Werte der Funktionen empty, first, last und next an.

L¨osung: Durchnummerieren der Terminalzeichen:

r0 := num(r) = [1, a][2, b]|[3, b][4, a].

empty(r0) = empty([1, a][2, b])∨empty([3, b][4, a])

= (empty([1, a])∧empty([2, b]))∨(empty([3, b])∧empty([4, a]))

= (f ∧t)∨(t∧f) = f empty([2, b]) = empty([3, b]) =f

first(r0) = first([1, a][2, b])∪first([3, b][4, a])

= first([1, a])∪(first([3, b])∪first([4, a]))

= first([1, a])∪first([3, b])∪first([4, a])

={[1, a]} ∪ {[3, b]} ∪ {[4, a]}

={[1, a],[3, b],[4, a]}

first([2, b]) = first([2, b]) ={[2, b]}

last(r0) = last([1, a][2, b])∪last([3, b][4, a])

= (last([1, a])∪last([2, b]))∪last([4, a])

= last([1, a])∪last([2, b])∪last([4, a])

={[1, a]} ∪ {[2, b]} ∪ {[4, a]}

={[1, a],[2, b],[4, a]}

last([3, b]) = last([3, b]) ={[3, b]}

Seite 1 von 6

(4)

L¨osung:

next(r0) =∅

next([1, a][2, b]) = next(r0) =∅

next([1, a]) = first([2, b])∪next([1, a][2, b]) ={[2, b]}

next([2, b]) = next([1, a][2, b]) =∅

next([2, b]) = first([2, b])∪next([2, b]) = {[2, b]}

next([3, b][4, a]) = next(r0) =∅

next([3, b]) = first([4, a]) ={[4, a]}

next([3, b]) = first([3, b])∪next([3, b]) = {[3, b],[4, a]}

next([4, a]) = next([3, b][4, a]) =∅

Damit ergibt sich der folgende NDEA:

q0 1 2

3 4

a

b a

b

b

b

a

(5)

Klausur Compilerbau Name:

15.03.2019 Matrikelnummer:

Aufgabe 2. (10 Punkte) SeiG= ({A, B, C, D},{a}, P, A), wobei P gegeben ist durch A→B |CC

B →BD C →a D→a

Reduzieren Sie die Grammatik, indem Sie den Algorithmus aus der Vorlesung ver- wenden. Geben Sie sowohl die Grammatik nach dem Entfernen nicht erreichbarer, als auch die Grammatik nach dem Entfernen nicht produktiver Nichtterminale an.

L¨osung:

A→B A→CC B→BD C→a D→a W R

1 1 2 0 0 {C →a, D→a} ∅

C→a 1 0 2 0 0 {A→CC, D →a} {C}

D→a 1 0 1 0 0 {A→CC} {C, D}

A→CC 1 0 1 0 0 ∅ {A, C, D}

Grammatik nach dem Entfernen nicht produktiver Nichtterminale:

G0 = ({A, C, D},{a}, P0, A), wobei P0 gegeben ist durch:

A→CC C →a D→a Erreichbarkeitsgraph:

A C D

Grammatik nach dem Entfernen nicht erreichbarer Nichtterminale:

G00 = ({A, C},{a}, P00, A), wobei P00 gegeben ist durch:

A→CC C →a

Seite 3 von 6

(6)

Aufgabe 3. Sei G= (N,{a, b, c}, P, S), wobei N ={S, A, B} und P gegeben ist durch S →BAa

A→ε|cB B →ε|b

(a) (2 Punkte) Geben Sie First1(X) f¨ur alle X ∈N an.

L¨osung:

First1(S) ={a, b, c}

First1(A) ={c, ε}

First1(B) ={b, ε}

(b) (2 Punkte) Geben Sie Follow1(X) f¨ur alle X ∈N an.

L¨osung:

Follow1(S) ={ε}

Follow1(A) ={a}

Follow1(B) ={a, c}

(c) (6 Punkte) Geben Sie die Vorausschautabelle f¨ur stark LL(1) an.

L¨osung:

S →BAa: First1(BAa)1Follow1(S) ={a, b, c}

A→ε: First1(ε)1Follow1(A) ={a}

A →cB: First1(cB)1Follow1(A) = {c}

B →ε: First1(ε)1Follow1(B) ={a, c}

B →b: First1(b)1Follow1(B) = {b}

a b c ε

S S →BAa S →BAa S →BAa

A A→ε A →cB

(7)

Klausur Compilerbau Name:

15.03.2019 Matrikelnummer:

Aufgabe 4. (4 Punkte) SeiG= ({A},{a, b}, P, A), wobei P gegeben ist durch A→Aa|Ab|ε

Geben Sie eine LL(1)-GrammatikG0 an mit L(G0) =L(G).

L¨osung: G0 = ({A},{a, b}, P0, A), wobei P0 gegeben ist durch A→aA|bA|ε

Aufgabe 5. (4 Punkte) Seik ∈N. Geben Sie eine GrammatikGan mitG∈LL(k+ 1), aber G /∈LL(k).

L¨osung: G= ({A},{a}, P, A), wobei P gegeben ist durch A→ak+1 |ak

Seite 5 von 6

(8)

Aufgabe 6. (8 Punkte) SeiG= ({A},{a, b}, P, A), wobei P gegeben ist durch A→Aa |b

(a) Geben Sie Firstk(A) f¨ur k ∈N, k ≥1 an.

L¨osung: Firstk(A) ={bai−1 |1≤i≤k}

(b) Zeigen Sie, dass es kein k ∈N,k ≥1 gibt mit G∈LL(k).

L¨osung: Sei k∈N, k ≥1. Betrachte die LinksableitungA→k Aak. Es gilt Firstk(Aaak) = Firstk(A)k{a} k{ak}={bak−1}

Firstk(bak) = {bak−1}

D.h. Firstk(Aaak)∩Firstk(bak) = {bak−1} 6=∅ und somit istG6∈LL(k).

Referenzen

ÄHNLICHE DOKUMENTE

Auch, wenn für die Krankenhäuser und ihr Personal noch viel mehr getan werden muss: Seit rund einer Woche trifft die Politik insgesamt schnelle und weitreichende

Nun ist die Katze aus dem Sack: Die Bundesregierung plant eine Bankenabgabe „light“ und verwirft dafür die Finanztransaktionssteuer.. Als hätte das Eine mit dem Anderen

a) Für besondere Ernährung wegen einer Erkrankung 16 b) Für Schwerbehinderte Menschen mit.. Merkzeichen G oder aG 17 c) Für behinderte Menschen in

So wird die Selbstwirksamkeit der pflegenden Angehörigen gefördert und zugleich die Erkenntnis, dass die Betreu- ungsanforderungen nicht zuletzt durch geeignete Stra- tegien

im Rahmen von Ermächtigungen am Ärztlichen Bereit- schaftsdienst teilnehmen möchten, sind zum Zwecke der Qualitätssicherung des Ärztlichen Bereitschaftsdienstes zur Teilnahme

Jetzt zeigt eine, in der vergangenen Woche im «Journal of the American Medical Asso- ciation» (JAMA) erschienene, Grossstudie – der Women’s Health Initiative (WHI) Dietary

Die aktuell gültige Definition «Sepsis-3» be- zeichnet nun Sepsis als eine lebensbedrohliche Organdysfunktion infolge einer inadäquaten Wirtsantwort auf eine Infektion und

Ziel der Stufe-3-Leitlinie Hormontherapie in der Peri- und Postmenopause (HT) ist es, Ärz- tinnen und Ärzten sowie Frauen, die eine HT erwägen, bei der Entscheidungsfindung