programlı javac.exe içindeki soyut sözdizimi ağacı (AST) erişmek mümkün mü? Bir örnek verebilir misiniz?javac.exe AST programatik erişim örneği
cevap
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.
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!
- 1. Amazon Wishlist'e programatik erişim?
- 2. Silverlight'a programatik erişim Sony RZ30N Video Besleme
- 3. AST
- 4. Servlet 3.0'da MultiPartConfig'e programatik erişim
- 5. AST tercüman?
- 6. Erişim örneği, ModelForm'a temiz (kendi) yönteminden geçirildi
- 7. Değişken argümanlarla PHP'de programatik olarak dinamik sınıf örneği oluşturma?
- 8. Python AST işlenmesi
- 9. Lambda fonksiyonunun ast gösterimi
- 10. ANTLR AST ağacı güncelleştirmesi
- 11. Clang kullanarak C++ dizesinden nasıl AST üretirim?
- 12. CAPTURE bağlayıcılı AST nasıl oluşturulur?
- 13. AST'den yükseltme AST :: spirit ayrıştırıcı
- 14. OCaml AST kayıt tipi gösterimi
- 15. HQL beklenmedik AST düğümü: {vector}
- 16. OAuth 2.0 için çalışma (komple proje) örneği gmail'e erişim
- 17. sınıf örneği örneği
- 18. VM örneği
- 19. Yüklemeyi/denetleyiciyi programatik olarak denetleme
- 20. örneği
- 21. YACC çıktısını bir AST (simge ağacı) yapılıyor
- 22. Şimdi Irony'de AST ile nasıl çalışırım?
- 23. Python: Ast düğüm ağacını derinden kopyalayın
- 24. Clang AST nasıl manuel olarak taşınır?
- 25. Swift hatası: AST bağlamından 'My_App' modülünü alamadı
- 26. Clang: AST (soyut sözdizimi ağacı) neye benziyor?
- 27. Bir yazım örneği örneği ve
- 28. , erişim
- 29. Erişim
- 30. Erişim