是否有Java库从AST生成类文件?

Has*_*san 10 java parsing code-generation javac

这个页面描述了我如何使用javac中的代码生成器来生成代码,因为我可以构建一个AST(使用我编写的单独的解析器).该技术涉及编辑javac的源代码以基本绕过Java解析器,以便可以将他/她自己的AST提供给代码生成器.这可能有用,但我希望以稍微清洁的方式做到这一点.我想在我的项目中包含生成javac的代码作为库的代码,这样我就可以用它来生成代码,而不会带来javac源代码的其余部分.

有没有办法用javac做到这一点,或者是否有更好的库?

此外,随时更改问题的标题.我想不出更好的一个,但它有点含糊不清.如果你建议编辑一个更好的标题,我会接受它.

小智 4

我想你可能感兴趣的是像BCEL(字节码工程库)这样的java库

当我上一门关于编译器构造的课程时,我就玩过它,基本上,它有一个很好的包装器,用于生成常量池,将命名字节码指令插入到方法中等等,然后当你完成后,你可以加载该类在运行时使用自定义类加载器,或者以正常方式将其写入文件。

使用 BCEL,从语法树到 java 字节码应该相对容易,尽管有点乏味,但在某些情况下您可能只想使用 BCEL 生成原始字节码而不构建树。