• Keine Ergebnisse gefunden

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

N/A
N/A
Protected

Academic year: 2022

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

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Institut für Systemsoftware Übungen zu Übersetzerbau WS 2013/2014 Prof. Dr. H. Mössenböck, DI L. Stadler, DI P. Lengauer Übung 1 Letzter Abgabetermin: Mittwoch, 9.10.2013, 1800 Uhr

Grammatiken (24 Punkte)

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

Die Grammatik der Sprache MicroJava finden Sie auf der Übungshomepage:

http://ssw.jku.at/Teaching/Lectures/UB/UE/2013/MicroJava.txt.

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

b) Sind die Nonterminalsymbole Term, Statement und Mulop rekursiv? Wenn ja, wie (links, rechts, zentral, direkt, indirekt)?

c) Wie sieht der Syntaxbaum für folgenden Satz aus?

program DeepThought final int a=21; { int getAnswer() { return a * 2; } } Gibt es mehrere Syntaxbäume für diesen Satz?

d) Welche terminalen Anfänge und Nachfolger haben die Regeln Statement, Condition und FormPars?

2. Konstruktion einer Grammatik (5 Punkte)

Wie könnte man die folgenden Bedingungen mit einer EBNF-Grammatik beschreiben?

Geben Sie eine Grammatik an.

• Eine Zahl ist entweder eine Binär-, eine Hexadezimal-Zahl oder eine Zeitangabe.

• Binärzahlen beginnen mit "0b".

• Hexadezimalzahlen beginnen mit "0x".

• Zeitangaben haben entweder das Format Minuten:Sekunden oder das Format Stunden:Minuten:Sekunden. Der erste Teil (also Minuten bzw. Stunden) darf ein oder zwei Stellen haben, alle anderen müssen zwei Stellen haben. Minuten und Sekunden müssen zwischen 00 und 59 liegen.

• Die Terminalklassen d (digit) und h (hex digit) sind gegeben, d deckt die Ziffern zwischen 0 und 9, und h die Ziffern A bis F ab. Außerdem können Sie die Terminalklasse sd (small digit), die Ziffern zwischen 0 und 5 enthält, und die Terminalklasse td (tiny digit), die die Ziffern 0 und 1 enthält, verwenden.

Beispiele für gültige Zahlen: 0b0, 0x123, 1:35, 0xAF, 0b01, 0x0A, 0x23B9, 04:17, 1:00:00, 99:00:53

Beispiele für ungültige Zahlen: 123, 0b012, 1.5, A, 0b, 0x, b, 0xG, 0x12F.3, :01:17, 13:1, 1:00:99

(2)

3. Beseitigung von Linksrekursionen (5 Punkte)

Wo befinden sich in der folgenden Grammatik Linksrekursionen? Wie könnte man die Linksrekursionen entfernen? Geben Sie eine umgeformte EBNF Grammatik ohne Linksrekursionen an.

VarDecl

=

Type ident [ "=" Expression ] | VarDecl "," ident [ "=" Expression ] .

Type

=

"int" | "double"

.

Expression

=

Expression ( "*" | "/" ) number | number

.

ident und number sind Terminalklassen, die einen Namen (Buchstabe gefolgt von Ziffern und Buchstaben) bzw. eine Zahl (bestehend aus Ziffern) definieren.

Abgabe und Hinweise

Die Abgabe der Übungen muss elektronisch erfolgen. Geben Sie folgende Dateien ab:

• Elektronisch in das Repository: PDF-Datei mit der Lösung.

• svn://ssw.jku.at/2013W/UB/k<MatrNr>/branches/UE1

Referenzen

ÄHNLICHE DOKUMENTE

[r]

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

• Nur dann, wenn die Punkte für eine Aufgabe nicht differenziert vorgegeben sind, ist ihre Aufschlüsselung auf die einzelnen Lö- sungsschritte Ihnen überlassen.. • Stoßen Sie

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

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

Januar 2019, 11:00 Uhr, in die gekennzeichneten Briefk¨ asten hinter Raum PK 4.3. Sie ben¨ otigen mindestens 50% der Hausaufgabenpunkte f¨ ur