a. zündorf, se group reverse engineering k2 1 reverse engineering: ziele heute compileransatz, die...
TRANSCRIPT
Reverse Engineering K2 1
A. Zündorf, SE GroupReverse Engineering: Ziele Heute
• Compileransatz, die Zweite
Findet UMLClass getName() Vorkommen
Completion anbieten
Reverse Engineering K2 2
A. Zündorf, SE GroupErweiterte Symboltabelle
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 ]
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)
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