• Keine Ergebnisse gefunden

Universit¨at Karlsruhe (TH) Lehrstuhl f¨ur Programmierparadigmen

N/A
N/A
Protected

Academic year: 2022

Aktie "Universit¨at Karlsruhe (TH) Lehrstuhl f¨ur Programmierparadigmen"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Universit¨ at Karlsruhe (TH)

Lehrstuhl f¨ ur Programmierparadigmen

Compilerpraktikum SS 2009 http://pp.info.uni-karlsruhe.de/

Dozent: Prof. Dr.-Ing. G. Snelting snelting@ipd.info.uni-karlsruhe.de

Betreuer: Matthias Braun braun@ipd.info.uni-karlsruhe.de

Betreuer: J¨urgen Graf graf@ipd.info.uni-karlsruhe.de

Ubungsblatt 3¨ Ausgabe: 06.05.2009 Besprechung: 13.05.2009

Hinweise:

• Auf der Homepagehttp://pp.info.uni-karlsruhe.de/lehre/SS2009/compprakt/finden Sie nun auch eine weitere Sammlung von Beispielprogrammen f¨ur den Test des abstrakten Syntaxbaumes.

Aufgabe 1:Abstrakter Syntaxbaum 1.1Modellierung

Uberlegen Sie sich aus welchen Elementen der abstrakte Syntaxbaum bestehen sollte und erstellen Sie ein kleines¨ Dokument in dem jedes Element in 2-3 S¨atzen beschrieben wird. Formulieren Sie eine entsprechende abstrakte Algebra, wie sie in der Vorlesung Compiler 1 vorgestellt wurde (siehehttp://pp.info.uni-karlsruhe.

de/lehre/WS200809/compiler/compiler_zusatzfolien_syntax.pdfSeite 6-7).

1.2Planung

Zeigen Sie an folgendem Beispielprogramm, wie Ihr geplanter AST aussehen sollte. Was sind die Unterschiede zum entsprechenden Parsebaum?

1 public class A {

2

3 public int x;

4 public int y;

5

6 public int calc(int x, int y) {

7 int sum;

8

9 if (x > y) {

10 sum = x + y;

11 } else {

12 sum = x * y;

13 }

14

15 return sum;

16 }

17 }

1.3Implementierung

Erweitern Sie ihren Parser aus dem letzten Aufgabenblatt entsprechenden, so dass ein abstrakter Syntaxbaum erzeugt wird.

(2)

Aufgabe 2:Code z¨ahlen

Entwickeln Sie ein Programm, dass ihren abstrakten Syntaxbaum durchl¨auft und f¨ur jede Klasse die Anzahl der enthaltenen Attribute sowie der enthaltenen Methoden ausgibt. F¨ur jede Methode soll zudem die Anzahl der Parameter, der lokalen Variablen, der enthaltenen Statements und der enthaltenen Ausdr¨ucke ausgegeben werden.

Verwenden Sie dabei folgendes Format:

Class <ClassName>: A(<NumAttributes>), M(<NumMethods>)

Method <MethodName>: P(<NumParams>), L(<NumLocalVars>), S(<NumStatements>), E(<NumExpressions>)

Beispiel:

Die entsprechende Ausgabe f¨ur das Programm aus Aufgabe 1 w¨are somit:

Class A: A(2), M(1)

Method calc: P(2), L(1), S(4), E(14)

Lassen Sie sich diese Information f¨ur alle Beispielprogramme ausgeben und vergleichen Sie ihre Ausgaben mit denen der anderen Gruppen.

2

Referenzen

ÄHNLICHE DOKUMENTE

Die lexikalische Analyse ist strenggenommen nur eine Optimierung, die die Eingabe in eine Form bringt die besser f¨ ur die syntaktische Analyse geeignet ist.. Sie f¨ uhrt zu

Zwar ist ASCII heutzutage so gut wie ¨ uberall unterst¨ utzt, viele Sprachen ben¨ otigen aber weitere Zeichen die in ASCII nicht enthalten sind. Typische ASCII-Erweiterungen im

Es wird also anscheinend kein speziellere Datentyp f¨ ur Closures angelegt, der einen Funktionszeiger und einen Zeiger auf die Umgebung

• Nehmen Sie an die Anzahl der Register ist auf 3 beschr¨ ankt, spielt die Auswertungsreihenfolge bei den Ausdr¨ ucken jetzt noch eine Rolle. Aufgabe

Konstruieren Sie unter der Voraussetzung, dass alle nicht konstanten Operanden im Arbeitsspeicher stehen, Syntaxb¨ aume f¨ ur die folgenden Anweisungen:. 1. x = x

Skizzieren Sie Anordnung der Objekte auf dem Heap f¨ ur die Stelle nach dem Aufruf von ’A.create()’ unter der Annahme, dass beim Start der main Methode der Heap v¨ ollig leer

Semantische Analyse: Namensanalyse, Typanalyse, Operatoridentifikation, Konsistenzpr¨ ufung, Sprach- abh¨ angige Sonderaufgaben, Struktur¨ aquivalenz, Definitionstabelle,

Erstelle daf¨ ur zun¨ achst eine Tabelle mit den Gen- und Kill-Mengen der einzelnen Bl¨ ocke und f¨ uhre danach eine