PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Parsen/Schreiben von Java-Source-Code


Gast
2010-01-22, 08:27:23
Hallo zusammen,

ich möchte gerne in einem Programm Java source code parsen, erzeugen und bearbeiten.

Kann mir jemand sagen, ob es hierfür eine gute Library gibt?

Bei meiner Suche habe ich javassist (http://www.csg.is.titech.ac.jp/~chiba/javassist/) gefunden, und dies kommt der Sache auch schon ziemlich nah. Leider arbeitet diese auf Java byte code, nicht auf source code.

Prinzipiell ließe sich eine Sprache wie Java (bzw. eigentlich alle mit C-Syntax) gut als Baumstruktur bearbeiten, oder? Meines Wissens ist das in Lisp möglich, ich konnte aber zu Java hier nichts finden.

Frucht-Tiger
2010-01-22, 10:16:56
Was willst du den machen? Schon mal mit Reflection (http://en.wikipedia.org/wiki/Reflection_%28computer_science%29#Java) beschäftigt?

Gast
2010-01-22, 10:31:44
Was willst du den machen? Schon mal mit Reflection (http://en.wikipedia.org/wiki/Reflection_%28computer_science%29#Java) beschäftigt?

Ich möchte Java Source Code erzeugen, parsen und bearbeiten. Reflection zielt meines Wissens eher darauf, zur Laufzeit den Byte Code zu analysieren und zu bearbeiten.

Gast
2010-01-22, 11:23:45
Ich denke, Abstract Syntax Tree (http://www.eclipse.org/articles/article.php?file=Article-JavaCodeManipulation_AST/index.html) wäre in etwa das.

Frucht-Tiger
2010-01-22, 12:12:39
Ich möchte Java Source Code erzeugen, parsen und bearbeiten. Reflection zielt meines Wissens eher darauf, zur Laufzeit den Byte Code zu analysieren und zu bearbeiten.
Sry, dachte du wolltest vielleicht nur irgendwas ergänzen/manipulieren und brichst dir evt. ein Bein ab wenns auch viel einfacher geht.

Wenn du neben dem Abstract Syntax Tree noch was anderes anschauen willst, google mal nach Java und "generative programming", da findest du auch noch eine Menge zu dem Thema.

Abnaxos
2010-01-22, 12:23:34
Da wirst du wohl einen Parser schreiben müssen. ANTLR bietet sich dafür an, weil es weit verbreitet ist und es recht einfach sein dürfte, eine fertige Syntax für Java zu finden. Zudem bietet ANTLR mit Stringtemplate auch eine Library, um Code anhand einer Syntax zu erzeugen (diesen Weg habe ich nie probiert, aber ANTLR verwendet Stringtemplate selber, um den generierten Parser-Code zu schreiben).

Für einfache Fälle könnte javax.annotation.processing bzw. javax.lang.model.* hilfreich sein, das ist aber sehr eingeschränkt.

Ach ja, IDEA ist ja inzwischen OpenSource -- das PSI (Program Structure Interface) ist extrem mächtig und vermutlich exakt das, was du suchst. Es dürfte aber nicht leicht sein, das mal so schnell aus dem Code der ganzen IDE heraus zu ziehen.

robobimbo
2010-01-22, 22:04:59
coco/r ist was für dich, da gibt auch gleich eine komplette java grammatik mit

http://www.ssw.uni-linz.ac.at/coco/