我想为Java的玩具语言编写一个编译器。我想生成可运行的.class文件。我想知道执行此操作的最佳库或工具是什么?我知道我可以学习所有指令的二进制格式并建立自己的常量池等,但这似乎应该已经完成:没必要重新发明轮子,对吗?
在线搜索我发现了两种不同的Java汇编语言Jasmin和Jamaica,但是只有Jasmin看起来有所维护。
是否存在用于将字节码写入流的Java库?这是Apache BCEL吗?
他们的工具是否像Antlr那样是字节码生成的“标准”工具?
PS-玩具语言是Brainf ***,我想要一个我可以拥有一个简单“语法”的地方,因此我可以专注于生成方面,而不是解析部分……这将在下一步进行。
ASM和BCEL基本上做类似的事情。我建议使用ASM,因为它受更多的支持,更小并且是最新的JDK。