• Keine Ergebnisse gefunden

2. Konstruktion einer Grammatik (5 Punkte)

N/A
N/A
Protected

Academic year: 2022

Aktie "2. Konstruktion einer Grammatik (5 Punkte) "

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Institut für Praktische Informatik Übungen zu Übersetzerbau WS 2003/2004

Prof. Dr. H. Mössenböck Übung 1

Zuname Vorname Matr. Nr.

Übungsgruppe Punkte korr.

‰ 1 (Wöß) Do 1015-1145

‰ 2 (Wöß) Do 1200-1330 Letzter Abgabetermin

‰ 3 (Rammerstorfer) Do 1715-1845 Donnerstag, 16.10.2003, 815 Uhr

Grammatiken

1. Grundbegriffe (2+3+3+6 Punkte)

Die Grammatik der Sprache MicroJava finden Sie im VO-Skriptum auf Seite 9, Kapitel 5.2.

a) Geben Sie den Satz mit der minimalen Anzahl von Terminalsymbolen an, den man mit dieser Grammatik erzeugen kann und der mindestens einen Stern ('*', s. NTS Mulop) enthält.

b) Betrachten Sie die Nonterminalsymbole Expr, BlockStat und Statement. Geben Sie für jedes dieser Nonterminalsymbole an, ob es links-, zentral- oder rechtsrekursiv und direkt oder indirekt rekursiv ist.

c) Zeichnen Sie den Syntaxbaum für folgenden Satz:

class Test class Circle { int r; } { Circle create() { return new Circle; } }

Gibt es mehrere Syntaxbäume für diesen Satz?

d) Bestimmen Sie alle terminalen Anfänge und Nachfolger für die Regeln Type, Term, CondTerm und Designator.

2. Konstruktion einer Grammatik (5 Punkte)

Geben Sie eine Grammatik (in EBNF) für die Bezeichner einer fiktiven Programmiersprache gemäß den folgenden Bedingungen an:

Die Bezeichner dürfen aus Buchstaben (Terminalklasse b), Ziffern (Terminalklasse z) und dem Unterstreichungszeichen ("_") bestehen.

Ein Bezeichner muss mit einem Buchstaben beginnen und darf anschließend beliebig viele Buchstaben und Unterstreichungszeichen enthalten, wobei Unterstreichungszeichen immer nur zu zweit (nicht mehr und nicht weniger) in Folge auftreten dürfen. Auch Ziffernfolgen sind erlaubt, allerdings müssen sie von Unterstreichungszeichen umgeben sein oder sie stehen am Schluss des Bezeichners.

Bsp.

gültige Bezeichner: ungültige Bezeichner

b bz b__ b_zzzz b__z __zzz b__z__b zzz__

bb__b__zzz__z__b bz__b

(2)

3. Beseitigung von Linksrekursionen (5 Punkte)

Gegeben sei folgender Auszug aus einer fiktiven Grammatik, der Methodenaufrufe beschreibt:

MethodCall = Designator "." ident "(" [ ParamList ] ")" . ParamList = { Designator "," } Designator.

Designator = ident | MethodCall .

Beseitigen Sie alle Linkrekursivitäten und geben Sie die transformierte Grammatik in EBNF an. ident ist eine Terminalklasse und definiert einen Namen (Buchstabe gefolgt von Ziffern und Buchstaben).

Referenzen

ÄHNLICHE DOKUMENTE

Tanja fährt manchmal in die Stadt, wenn sie dringend ein Geschenk für ihre Mutter kaufen muss.. Jeden Sommer fahren wir alle zusammen nach Spanien, obwohl ich das

Die Grammatik der Sprache MicroJava finden Sie im VO-Skriptum auf Seite 9, Kapitel 5.2. a) Geben Sie den Satz mit der minimalen Anzahl von Terminalsymbolen an, den man mit dieser

CondFact = Expr

a) Geben  Sie  den  Satz  mit  der  minimalen  Anzahl  von  Terminalsymbolen  an,  den  man 

http://ssw.jku.at/Teaching/Lectures/UB/UE/2009/MicroJava.txt. a) Wie lang ist der kürzeste Satz in MicroJava, der mindestens einen Type und ein Statement enthält? Geben Sie

CondFact = Expr

a) Wie lang (in Terminalsymbolen) ist der kürzeste Satz in MicroJava, der mindestens ein FormPars enthält? Geben Sie ein Beispiel für einen Satz dieser Länge an... b) Sind

[r]