• Keine Ergebnisse gefunden

2. Konstruktion einer Grammatik (5 Punkte) 1. Grundbegriffe (2+3+3+6 Punkte) Grammatiken

N/A
N/A
Protected

Academic year: 2022

Aktie "2. Konstruktion einer Grammatik (5 Punkte) 1. Grundbegriffe (2+3+3+6 Punkte) Grammatiken"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Institut für Systemsoftware Übungen zu Übersetzerbau WS 2004/2005

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

Zuname Vorname Matr. Nr.

Übungsgruppe Punkte korr.

q 1 (Kotzmann) Do 1015-1145

q 2 (Wimmer) Do 1200-1330 Letzter Abgabetermin

q 3 (Wöß) Do 1015-1145 Donnerstag, 14.10.2004, 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 das Terminalsymbol "if" enthält.

b) Betrachten Sie die Nonterminalsymbole Expr, Block 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:

program Test int x, y; { int area() { return x * y; } }

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

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

2. Konstruktion einer Grammatik (5 Punkte)

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

Eine Zahl ist entweder eine Dezimalzahl oder eine Hexadezimalzahl.

Dezimalzahlen bestehen aus Ziffern (Terminalklasse z). Wenn eine Dezimalzahl aus mehr als drei Ziffern besteht, muss nach jeder dritten Ziffer (gerechnet von rechts) ein Punkt (".") stehen (Tausender-Punkte).

Hexadezimalzahlen bestehen aus Ziffern (Terminalklasse z) oder Buchstaben von "A" bis "F"

(Terminalklasse b). Sie müssen mit einer Ziffer beginnen und mit einem "H" enden.

Bsp.

gültige Zahlen: ungültige Zahlen

0 1234

123 567.89

45.678 8B

8H 12.345H

6B53H B83H

(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

In besagter axiomatischer Listentheorie definieren Sie eine Funktion map mit der ¨ ublichen Signatur: die Argumente sind eine Funktion vom Typ ’a => b und eine ’a list, das

Zeile: (7+1–4)·6=24 Finde zu möglichst vielen Kombinationen mindestens eine Lösung und

Er stützt sich am Punkt D ab, wodurch auf einer Seite die Radkräfte gleich null sind (LG/(H²s) = 4N/mm²). a.) Zeigen Sie rechnerisch, dass die rechten Räder kräftefrei sind.

bis 23.9.09 - mündliche Prüfungen über den Stoff beider Teilmodule ”Lineare Algebra I, II” durchgeführt. Die Anmeldungs- modalitäten werden gegen Ende des SS 2009

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

ident  und  number  sind  Terminalklassen,  die  einen  Namen  (Buchstabe  gefolgt  von  Ziffern  und 

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

Ihre L¨ osung sollte eine m¨ oglichst kurze worst case Laufzeit (f¨ ur d¨ unne Graphen) haben?. F¨ ur mangelnde Effizienz kann es