Den Scala Compiler mit eigenen Plugins erweitern

Thomas Darimont

Erfahrenes Mitglied
Hallo,

schaut mal hier:
http://www.scala-lang.org/node/140
Coole Sache! Mich fasziniert vor allen Dingen wie einfach man sowas realisieren kann.

Warum eigene Compiler Plugins? Nun neben verbessertem Fehlerreporting durch statische Codeanalysen, lassen sich unter anderem verschiedene Optimierungen auf mehreren Ebenen( bytecode, erzeugte Artefakte wie Klassen, Interfaces, etc.) durchführen. Weiterhin wäre auch eine Verschlüsselung des bytecodes beim compilieren denkbar, etc...

Leider besitzt der javac in Java nicht so eine einfache modulare Struktur um das ähnlich bequem zu realisieren. Das Annotation Processing Tool (apt) und das Java Compiler API (http://www.tutorials.de/forum/java-technology-news/234797-mustang-javacompiler-api.html) ist hier nur bedingt eine Hilfe (u.a. muss man Annotations verwenden, muss die generierten Artefakte in einem separaten Schritt kompilieren, weiterhin ist das API IMHO ziemlich unhandlich...). Mit dem polyglot Java Compiler Framework gibts aber eine einfache Möglichkeit entsprechende Erweiterungen in einen "eigenen" java Compiler einzubauen. Siehe dazu: http://www.cs.cornell.edu/projects/polyglot/#documentation

Gruß Tom