• 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 2007/2008 

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

Zuname      Vorname      Matr.‐Nr.    

Übungsgruppe    Punkte      korr.    

‰  1  (Löberbauer)  Do 1015‐1145  

‰  2  (Löberbauer)  Do 1345‐1515   Letzter Abgabetermin 

‰  3  (Wimmer)  Do 1015‐1145  Mittwoch, 10.10.2007, 2015 Uhr   

Grammatiken 

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

Die Grammatik der Sprache MicroJava finden Sie im VO‐Skriptum im Kapitel 4.2 auf Seite 7. 

a) Geben Sie den Satz mit der minimalen Anzahl von Terminalsymbolen an, den man mit  dieser Grammatik erzeugen kann und der mindestens einen Block enthält. Aus wie vielen  Terminalsymbolen besteht er? 

b) Betrachten Sie die Nonterminalsymbole Statement, Term und VarDecl. 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 Tester final int OPT = 42; { int test(int x) { return OPT - x; } } Gibt es mehrere Syntaxbäume für diesen Satz? 

d) Bestimmen Sie alle terminalen Anfänge und Nachfolger für die Regeln VarDecl, Statement,  Term und Addop. 

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 Dezimal‐, eine Hexadezimal‐ oder Binärzahl. 

• Hexadezimal‐ und Binärzahlen beginnen mit ʺ#ʺ. Binärzahlen enden mit einem ʺbʺ. 

• Dezimalzahlen enthalten Tausender‐Punkte, d.h. wenn eine Dezimalzahl aus mehr als drei  Ziffern besteht, muss nach jeder dritten Ziffer (gerechnet von rechts) ein Punkt (ʺ.ʺ) stehen. 

• Die Terminalklassen b, d und sind gegeben, deckt die Ziffern und ab, deckt die  Ziffern zwischen 2 und 9 und h die Ziffern A bis F. 

Beispiele für gültige Zahlen:  123, 1.456, #1101b, #AF, #23, #1A, #23B9  Beispiele für ungültige Zahlen: 1234, 567.8, #5476b, #2b, #b, # 

(2)

 

3. Beseitigung von Linksrekursionen  (5 Punkte) 

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

Assignment = Designator "=" Expression.

Designator = ident | Designator "." ident.

Expression = (Expression "+" number) | number.

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

Version 6 1 Mit Hilfe der zehn arabische Ziffern kann man alle natürlichen

[r]

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

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

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

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

Dabei haben die Zif- fern in Abh¨ angigkeit von ihrer Stellung in der Zahl eine unterschiedliche Bedeutung, z.B.. Einer, Zehner, Hunderter,