• Keine Ergebnisse gefunden

Aufgabe 1 Seien e 1 , e 2 ∈ E {a,b} gegeben durch 1. e 1 = a ∗ | (ba) und

N/A
N/A
Protected

Academic year: 2021

Aktie "Aufgabe 1 Seien e 1 , e 2 ∈ E {a,b} gegeben durch 1. e 1 = a ∗ | (ba) und"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Universit¨ at Siegen

Lehrstuhl Theoretische Informatik Markus Lohrey

Compilerbau I SS 2021

Ubungsblatt 2 ¨

Aufgabe 1 Seien e 1 , e 2 ∈ E {a,b} gegeben durch 1. e 1 = a | (ba) und

2. e 2 = b (a | b) .

Stellen Sie jeweils e 1 und e 2 als Syntaxbaum dar und nummerieren Sie die Bl¨ atter durch. Konstruieren Sie anschließend den ε-NFA.

L¨ osung:

F¨ ur ein Blatt mit Terminalsymbol a und Nummer i schreiben wir [i, a]. Wir fangen außerdem (traditionell) bei 1 an zu z¨ ahlen.

1. e 1 als durchnummerierter Baum:

|

∗ [1, a]

◦ [2, b] [3, a]

Der ε-NFA dazu ist dann:

1

(2)

•([1, a] | ([2, b][3, a]))

•[1, a]

[1, a]

•[1, a]

[1, a]•

•([2, b][3, a]) •[2, b]

[2, b]•

•[3, a]

[3, a]•

([2, b][3, a])•

([1, a] | ([2, b][3, a]))•

ε

ε ε

a ε ε

ε

ε

ε

b

ε

a ε ε

2. e 2 als durchnummerierter Baum:

∗ [1, b]

| [2, a] [3, b]

Der ε-NFA dazu ist dann:

2

(3)

•([1, b] ([2, a] | [3, b]) )

•[1, b]

[1, b]

•[1, b]

[1, b]•

•([2, a] | [3, b])

([2, a] | [3, b])

•([2, a] | [3, b])

•[2, a] •[3, b]

[2, a]• [3, b]•

([2, a] | [3, b])•

([1, b] ([2, a] | [3, b]) )•

ε

ε ε

ε b

ε ε

ε ε

ε ε

ε

ε ε

a b

ε

ε

3

(4)

Aufgabe 2 Sei Σ ein (endliches) Alphabet. In dieser Aufgabe soll das Durch- nummerieren der Terminalzeichen eines regul¨ aren Ausdrucks ¨ uber Σ formal definiert werden. Ein Computer w¨ urde genau mit solchen formalen Definitio- nen arbeiten.

(a) Definieren Sie die Funktion ` : E Σ → N , welche die Terminalzeichen eines regul¨ aren Ausdrucks z¨ ahlt.

L¨ osung:

Wir definieren ` wie folgt:

`(a) = 1 f¨ ur a ∈ Σ ∪ {ε},

`(e 1 | e 2 ) = `(e 1 ) + `(e 2 ),

`(e 1 e 2 ) = `(e 1 ) + `(e 2 ),

`(e ) = `(e).

(b) Mit Σ n = N × Σ bezeichnen wir das (unendliche) Alphabet, das aus durchnummerierten Terminalzeichen besteht. Definieren Sie das Durch- nummerieren num : E Σ → E Σ

n

eines regul¨ aren Ausdrucks. Verwenden Sie hierzu eine Hilfsfunktion num 0 : N → (E Σ → E Σ

n

), welche die Start- nummerierung als Parameter erh¨ alt.

L¨ osung:

Wir definieren num 0 wie folgt:

num 0 (i)(a) = [i, a] f¨ ur a ∈ Σ ∪ {ε},

num 0 (i)(e 1 | e 2 ) = num 0 (i)(e 1 ) | num 0 (i + `(e 1 ))(e 2 ), num 0 (i)(e 1 e 2 ) = num 0 (i)(e 1 ) num 0 (i + `(e 1 ))(e 2 ),

num 0 (i)(e ) = num 0 (i)(e) .

Wir definieren dann num = num 0 (1). Somit w¨ are zum Beispiel num(e) = num 0 (1)(e) f¨ ur einen beliebigen regul¨ aren Ausdruck e ∈ E Σ .

4

Referenzen

ÄHNLICHE DOKUMENTE

Berechnen Sie die ¨ Uberbuchungswahrscheinlichkeit p unter der Annahme, dass die einzelnen Passagiere unabh¨ angig voneinander kommen oder wegbleiben.. Sch¨ atzen Sie den Fehler ab,

In dieser Aufgabe soll das Durch- nummerieren der Terminalzeichen eines regul¨ aren Ausdrucks ¨ uber Σ formal

[r]

F¨ ur ein Blatt mit Terminalsymbol a und Nummer i schreiben wir [i, a].. Wir fangen außerdem (traditionell) bei 1 an zu

Definieren Sie die Funktionen empty, first, last und next aus dem Berry-Sethi-Verfahren f¨ ur

(d) Verwenden Sie die Vorausschautabelle, um eine akzeptierende Konfigu- rationsfolge f¨ ur ha+ai

[r]

Geben Sie einen solchen deterministischen Au- tomaten f¨ ur L an, in dem die Zust¨ ande den ¨ Aquivalenzklassen entspre- chen.