• 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 Systemsoftware Übungen zu Übersetzerbau WS 2005/2006

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

Zuname Vorname Matr.-Nr.

Übungsgruppe Punkte korr.

‰ 1 (Kotzmann) Do 1015-1145

‰ 2 (Kotzmann) Do 1345-1515 Letzter Abgabetermin

‰ 3 (Wimmer) Do 1015-1145 Mittwoch, 12.10.2005, 2015 Uhr

Grammatiken

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

Die Grammatik der Sprache MicroJava finden Sie im VO‐Skriptum im Kapitel 5.2 auf Seite 8. 

a) Geben Sie den Satz mit der minimalen Anzahl von Terminalsymbolen an, den man mit  dieser Grammatik erzeugen kann und der mindestens das Terminalsymbol ʺbreakʺ enthält. 

Aus wie vielen Terminalsymbolen besteht er? 

b) Betrachten Sie die Nonterminalsymbole Factor, MethodDecl und Statement. Geben Sie für  jedes dieser Nonterminalsymbole an, ob es links‐, zentral‐ oder rechtsrekursiv ist, und ob  es 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,  Term und Relop. 

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 müssen mit ʺ0xʺ beginnen und bestehen aus Ziffern (Terminalklasse z)  oder Buchstaben von ʺAʺ bis ʺFʺ (Terminalklasse b). 

Beispiele für gültige Zahlen:  0, 123, 45.678, 0x8, 0x6B53  Beispiele für ungültige Zahlen: 1234, 567.8, 8B, 0x12.345, 0x6G53 

(2)

 

3. Beseitigung von Linksrekursionen (5 Punkte)

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

ArrayAccess = Array "[" Index "]".

Index = { number "," } number.

Array = ident | ArrayAccess.

Beseitigen Sie alle Linksrekursionen und geben Sie die transformierte Grammatik in EBNF an. 

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

 

Referenzen

ÄHNLICHE DOKUMENTE

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

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

der selbe Zustand ist dann auch Initialzustand im

wir können uns vorstellen, dass das Orakel die Antworten auf Anfragen bei Bedarf erzeugt und konsistent beantwortet.. Damit können Random Oracle durch

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 Klasse verfügen über eine Instanzvariable vom Typ double in der das Guthaben der jeweiligen Person gespeichert wird.. Im Konstruktor der Klasse wird ein initiales Guthaben