a. zündorf, se group reverse engineering k2 1 reverse engineering: ziele heute compileransatz, die...

5
Reverse Engineering K2 1 A. Zündorf, SE Group Reverse Engineering: Ziele Heute Compileransatz, die Zweite Findet UMLClass getName() Vorkommen Completion anbieten

Upload: gertrud-schluckebier

Post on 05-Apr-2015

103 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: A. Zündorf, SE Group Reverse Engineering K2 1 Reverse Engineering: Ziele Heute Compileransatz, die Zweite Findet UMLClass getName() Vorkommen Completion

Reverse Engineering K2 1

A. Zündorf, SE GroupReverse Engineering: Ziele Heute

• Compileransatz, die Zweite

Findet UMLClass getName() Vorkommen

Completion anbieten

Page 2: A. Zündorf, SE Group Reverse Engineering K2 1 Reverse Engineering: Ziele Heute Compileransatz, die Zweite Findet UMLClass getName() Vorkommen Completion

Reverse Engineering K2 2

A. Zündorf, SE GroupErweiterte Symboltabelle

Page 3: A. Zündorf, SE Group Reverse Engineering K2 1 Reverse Engineering: Ziele Heute Compileransatz, die Zweite Findet UMLClass getName() Vorkommen Completion

Reverse Engineering K2 3

A. Zündorf, SE GroupAnalyse der Methodenrümpfe

• genaue Syntaktische Struktur wird nicht benötigt(if, while, for, ... können gleich behandelt / ignoriert werden

• Klammerung parsen ist wichtig

• Sondersymbole ignorieren

• methodBody ::= bracketExpr

• bracketExpr ::= ( "(" | "[" | "{" ) (token * ( nameExpr | bracketExpr ))*

( ")" | "]" | "}" )

• nameExpr ::= name [ bracketExpr ] [ . nameExpr ]

Page 4: A. Zündorf, SE Group Reverse Engineering K2 1 Reverse Engineering: Ziele Heute Compileransatz, die Zweite Findet UMLClass getName() Vorkommen Completion

Reverse Engineering K2 4

A. Zündorf, SE GroupTipps zur Aufgabenstellung

• gebt als erstes zu jedem nameExpr das Element aus der Symboltabelle ausDann einfach nur noch getName der Klasse UMLClass ausgeben

• Eventuell zwei Compilerläufe: – erster Lauf baut Symboltabelle

– zweiter Lauf analysiert die nameExpr's

• Methodensignaturen ignorieren (getName hat keine Parameter)

• Lokale Variablen einfach wie Attribute in die Symboltabelle eintragen(eventuell Parameter auch)(eventuell merken und am Ende der Methode wieder löschen)

Page 5: A. Zündorf, SE Group Reverse Engineering K2 1 Reverse Engineering: Ziele Heute Compileransatz, die Zweite Findet UMLClass getName() Vorkommen Completion

Reverse Engineering K2 5

A. Zündorf, SE GroupTipps zur Completion

• Methode proposeCompletions• ließt Attribut toBeCompleted • schreibt Vorschläge in possibleCompletions

CompletionSnipIt.txt von der Web Seite holen• Testen mit FWT GUI