2008-10-13 20 views

cevap

14

Evet, ancak Java 6'dan beri mümkündür. Peter von der Ahé, this interview'daki iki JSR hakkında konuşur. JSR 199:

JSR 199 Derleyici API'sı üç şeyden oluşur: Birincisi temel olarak bir derleyiciyi API yoluyla çağırmanızı sağlar. İkincisi, API derleyicinin dosyaları nasıl bulduğunu ve yazdığını özelleştirmenizi sağlar. Ben dosyaları beri birlikte derleyici fırsatlar dosya sisteminde mutlaka değil, soyut anlamda dosyalarıdır. JSR 199 dosya soyutlama Bir veritabanında dosya olması ve örneğin belleğe doğrudan çıktıyı oluşturmasına olanak sağlar. Son olarak, JSR 199 API kolayca örneğin hata iletileri dönüştürmek, böylece bir IDE editörü satırlara, planlı bir şekilde derleyici tanılama toplamanıza olanak tanır. JSR 269

açıklama işleme API'sidir.

This article, Compiler Tree API erişimiyle ilgili mükemmel bir genel bilgi verir. bölüm "Accessing the Abstract Syntax Tree: The Compiler Tree API" Sorunuza için uygundur görünüyor.

Yaptığınıza bağlı olarak, ayrıca Derleyici Ağacına takılan bağımsız bir geri yükleme motoru olan Jackpot Rule Language'a da bakmak isteyebilirsiniz.

6

Bunu, -cp tools.jar ile derleyin ve çalıştırın (burada tools.jar'unuzun konumunu belirtmeniz gerekir). Kendini read the javadoc gerekecek böylece

import com.sun.source.util.Trees; 
import javax.tools.JavaCompiler; 
import javax.tools.StandardJavaFileManager; 
import javax.tools.ToolProvider; 

public class JCTreeTest { 
    private static final JavaCompiler javac 
      = ToolProvider.getSystemJavaCompiler(); 

    public static void main(String[] args) { 
     final StandardJavaFileManager jfm 
       = javac.getStandardFileManager(null, null, null); 
     final JavaCompiler.CompilationTask task 
       = javac.getTask(null, jfm, null, null, null, 
        jfm.getJavaFileObjects(args)); 
     final Trees trees = Trees.instance(task); 
     // Do stuff with "trees" 
    } 
} 

Bu derler ve ben ağaçları ile oynamadım ama benim için çalışır, kendimi şeyler. :-) İyi şanslar!