此页面描述我如何使用代码生成器中的javac生成代码因为我可以建立一个AST(使用单独的解析器我写的)。 该技术涉及编辑javac的的源代码基本上绕过Java解析器,这样就可以提供他/她自己的AST的代码生成器。 这可以工作,但我希望做一个稍微清洁的方式。 我想包括代码生成的javac在我的项目,所以我可以用它来生成代码库的一部分,而不会带来与它的javac的源代码的其余部分。
有没有办法用javac要做到这一点,还是有可能是一个更好的图书馆吗?
此外,随意改变问题的标题。 我想不出一个更好的,但它是一个小暧昧。 如果你提出一个更好的标题的编辑,我会接受它。
我认为就像是一个Java库,你可能是什么兴趣BCEL (字节代码工程库)
我打得四处回来,当我把在编译器构造一类,基本上,它生成的常量池,将命名为字节码指令转换成一个方法和诸如此类的东西一个很好的包装,那么当你做,你可以加载类在与自定义类加载运行,或写出来,以正常的方式的文件。
随着BCEL,应该是比较容易的从语法树去Java字节代码,虽然有点乏味,但您可能希望只使用BCEL生成原始的字节码,而不在某些情况下,建设树为好。
另一个很酷的框架是ASM ,字节码分析和操作框架。
如果你不想使用框架,截至目前(2014),这是不可能产生使用com.sun.source.tree的任意表示一棵树的字节码。*如说在这里 。