• Keine Ergebnisse gefunden

Testaufgaben zu PE

N/A
N/A
Protected

Academic year: 2021

Aktie "Testaufgaben zu PE"

Copied!
6
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Testaufgaben zu PE − Lösungen

1. Aufgabe: Endliche Automaten

a) Geben Sie einen Endlichen Automaten an, der alle 0,1-Folgen akzeptiert, die mindestens die Länge 1 haben und unter je drei aufeinanderfolgenden Zeichen mindestens eine 1 enthalten. (Zustandsgraph, Start-/Endzustände)

b) Geben Sie eine reguläre Grammatik an, welche die in a) beschriebene Sprache erzeugt.

Begründen Sie kurz, daß Ihre Grammatik dies leistet.

zu a: Zustandsdiagramm

Zustand B ⇔ Es war zuletzt eine 1 da.

Zustand C ⇔ Es war zuletzt eine 0 da und unmittelbar davor eine 1.

Zustand D ⇔ Es war zuletzt zwei Nullen da.

Zustand E ⇔ Fehlerzustand

Startzustand = A, Endzustände = B, C, D

zu b: Grammatik:

{ }

{ }

X 0 | 1

X 1X | 0A | 1| 0 A 1X | 0B | 1| 0 B 1X | 1

| A | B

=

=

= →

 

 

 

 

 

4

4

N T

P

Begründung, daß die Grammatik die in a) beschriebene Sprache erzeugt:

− Die Grammatik erzeugt Folgen von Nullen und Einsen

− Eine 1 kann vom aktuellen Nonterminal aus jederzeit als nächstes Zeichen entstehen

− Eine 0 kann immer entstehen, wenn gerade eine 1 erzeugt wurde, weil dann X das Non- termianl ist.

− Die einzige Möglichkeit zwei Nullen zu erzeugen ist X → ....0A → 00B

− Danach muß erst wieder eine 1 erzeugt werden mit B → ....

(2)

2. Aufgabe: Speicherverwaltung

Gegeben ist der folgende Ausschnitt aus einem PL/0-Programm:

var a, b, c; ....

procedure P1;

var a, b; c; ...

begin { P1 } ... end; { P1 } procedure P2;

var a, u, v; ...

procedure P3;

var a, x, y; ...

procedure P4;

var a, b; ...

begin { P4 } ... end; { P4}

begin { P3 } ... end; { P3 } begin { P2 } ... end; { P2 } begin { HP } ... end. { HP }

Skizzieren Sie den Aufbau der Symboltabelle einschließlich der dort eingetragenen Variablen zum Zeitpunkt der Übersetzung des Rumpfes der Prozedur P4 und schildern Sie, wie der Compiler zu diesem Zeitpunkt den Symboltabelleneintrag der Variablen c sucht.

Lösung:

Name Typ Level Offset/Addr 0

1 a varobj 0 3

2 b varobj 0 4

3 c varobj 0 5

4 P1 procobj 0

5 P2 procobj 0

6 a varobj 1 3

7 u varobj 1 4

8 v varobj 1 5

9 P3 procobj 1

10 a varobj 2 3

11 x varobj 2 4

12 y varobj 2 5

13 P4 procobj 2

14 a varobj 3 3

15 b varobj 3 4

Die Variable c wird zum Zeitpunkt der Übersetzung des Rumpfes der Prozedur P4 vom unte- re Ende der Symboltabelle her gesucht und auf Position 3 gefunden.

HP P1

P2 P3

P4

(3)

Zur Laufzeit kann die folgende Aufruf-Reihenfolge der Prozeduren vorkommen:

HP → P1 → P2 → P3 → P3 → P4 → P2

Die Datenbereiche der Prozeduren Pi sind i∗150 Bytes lang (I=1,2,3,4). Der Datenbereich des Hauptprogramms ist 200 Bytes lang und beginnt auf Adresse 1000. Die Datenbereiche werden in der Aufrufreihenfolge im Laufzeitkeller angelegt. Damit beginnt z.B. der Datenbe- reich von P1 an der Adresse 1200.

‰ Tragen Sie die Anfangsadressen der Datenräume in die unten stehende Skizze ein, entsprechend der obigen Aufrufreihenfolge. tragen Sie außerdem die Adreßwerte der Static Link-Kette (1.Feld im Datenraum) und der Dynamic Link-Kette (2. Feld im Daten- raum) ein.

SL:

DL

SL:

DL

SL:

DL

SL:

DL

SL:

DL

SL:

DL

1000

1200

‰ Eine Variable V1 werde aus dem Aufruf von P4 heraus mit der Adresse (2,50) = (leveldistanz,offset) angesprochen.

Eine Variable V2 wird von der letzten Aktivierung von P2 aus mit (0,10) angesprochen.

Berechnen Sie die absoluten Adressen der Variablen:

Adresse (V1) = 1400

Adresse (V2) = 3160

1350

DSA(HP)

DSA(P1)

DSA(P2)

DSA(P3)

DSA(P3)

DSA(P4)

DSA(P2)

1000 1000

1000 1200

1350 1350

1350 1650

2100 2100

1000 2550

1650

2100

2550

3150

(4)

‰ Die folgende Skizze stellt die Display-Vektoren der Datenräume in der selben Situation wie oben dar. tragen Sie die Adreßwerte der Zeiger ein.

0 1 2 3 P1 1000 1200

P2 1000 1350

P3 1000 1350 1650

P3 1000 1350 2100

P4 1000 1350 2100 2550

P2 1000 3150

(5)

3. Aufgabe LR-Analyse

Gegeben ist die folgende, bereits um ein nur einmalig auftretendes Axiom X erweiterte Grammatik :

G = 〈N,T,P,X〉 mit:

N = { X, A, V } T = { a | b }

 X → V  P =  V → A A   A → a A | b 

a) Die erste LR(0)-Information hat die Form  X → . V  I0 =  V → . A A   A → . a A   A → . b 

Vervollständigen Sie die kanonische Kollektion der LR(0)-Informationen.

Es genügt dazu, die folgenden LR(0)-Informationen zu berechnen:

I1 = GOTO(I0,V), I2 = GOTO(I0,A), I3 = GOTO(I0,a), I4 = GOTO(I0,b), I5 = GOTO(I2,A), I6 = GOTO(I3,A)

b) Geben Sie die Aktions- und GOTO-Tabelle für den zugehörigen SLR(1)-Parser an.

Lösung:

1. Follow-Mengen der Nonterminals bestimmen:

FOLLOW(X) = { $ } FOLLOW(A) = { a, b, $ } FOLLOW(V) = { $ }

2. Kanonische Kollektion bestimmen:

Gegeben ist:

 X → . V  I0 =  V → . A A   A → . a A   A → . b 

Die weiteren LR(0)-Infos bestimmt man ausgehend von I0 wie folgt:

I1 = GOTO( I0 , V) = HÜLLE[ X → V. ] = [ X → V. ]

 V → A . A  I2 = GOTO( I0 , A) = HÜLLE[ V → A.A ] =  A → . a A   A → . b 

 A → a . A  I3 = GOTO( I0 , a) = HÜLLE[ A → a.A ] =  A → . a A   A → . b 

(6)

I4 = GOTO( I0 , b) = HÜLLE[ A → b. ] = [ A → b. ]

I5 = GOTO( I2 , A) = HÜLLE[ V → AA. ] = [ V → AA. ]

I6 = GOTO( I3 , A) = HÜLLE[ A → aA. ] = [ A → aA. ]

Weitere erlaubte Übergänge, die aber keine neuen Zustände liefern, sind auch noch:

GOTO( I2 , a) = HÜLLE[ A → a.A ] = I3

GOTO( I2 , b) = HÜLLE[ A → b. ] = I4

GOTO( I3 , a) = HÜLLE[ A → a.A ] = I3 GOTO( I3 , b) = HÜLLE[ A → b. ] = I4

Das Zustandsdiagramm des zugehörigen LR(0)-Automaten ist damit:

Aktionstabelle Sprungtabelle a b $ X A V

I0 I3 I4 I0 I2 I1

I1 accept I1

I2 I3 I4 I2 I5

I3 I3 I4 I3 I6

I4 A→b A→b A→b I4

I5 V→AA I5

I6 A→aA A→aA A→aA I6

Referenzen

ÄHNLICHE DOKUMENTE

7 Jahre n beschränkte Geschäftsfähigkeit (man kann selbst Rechtsgeschäfte vornehmen, aber der gesetzliche Vertreter muss allen Rechtsgeschäften zustimmen – beispielsweise

In den ersten Maitagen des vergangenen Jahres sind Vertreter unseres Ministeri- ums (mittlerweile zuständig für Wissenschaft, Forschung UND Kunst) nach Graz ge- kommen, um für die

Wenn sich Pha- sen im Produkt gelöst haben, beispielsweise bei Make-up, Creme oder Lipgloss, ist dies meist eine typische Alterser- scheinung.. Bevor alles wie- der in

Anwendung von Fluorchinolonen oder  Cephalosporinen 3. + 4. Generation

Man zeichnet alle Kanten ein, die benötigt werden, damit sich die von dem Automaten akzeptierte Sprache nicht ändert, wenn man die ε -Kante wegläÿt:.. Hierzu überlegt man sich,

Zu jedem endlichen nichtdeterministischen Automaten gibt es einen endlichen deterministischen Automaten, der dieselbe Sprache akzeptiert.. Bemerkung: Jeder Automat mit ε -Übergängen

Bei Eingabe von schlauer soll der FST beispielsweise Adj + Komp (für Komparativ) ausgeben, bei Eingabe von feinsten etwa Adj + Sup (für Superlativ). 2) Erstellen Sie einen

• Satz: Jeder nichtdeterministische endliche Automat kann in einen äqui-valenten deterministischen endlichen Automaten transformiert werden... Copyright 2004 Bernd Brügge