Java 如何使用ASM库将二进制指令映射回语句或表达式?
我试图将java字节码解析为一个中间数据结构,以供以后使用。我偶然发现了ASM。它强大而稳定。然而,我很难将二进制指令翻译回正常的java表达式和语句。谁能给我指个方向吗 交易数据结构可能如下所示:Java 如何使用ASM库将二进制指令映射回语句或表达式?,java,parsing,bytecode,java-bytecode-asm,Java,Parsing,Bytecode,Java Bytecode Asm,我试图将java字节码解析为一个中间数据结构,以供以后使用。我偶然发现了ASM。它强大而稳定。然而,我很难将二进制指令翻译回正常的java表达式和语句。谁能给我指个方向吗 交易数据结构可能如下所示: ClassInfo - FieldInfo - MethodInfo -- ForLoopStatement -- WhileStatement --- AssignmentExpression --- FunctionCallExpression ... 基本上,它只不过是java语言的抽象 谢
ClassInfo
- FieldInfo
- MethodInfo
-- ForLoopStatement
-- WhileStatement
--- AssignmentExpression
--- FunctionCallExpression
...
基本上,它只不过是java语言的抽象
谢谢。为什么不继续使用Java字节码呢?如果您需要一种人类可读的形式,只需将其反汇编即可?至少您的问题没有明确说明为什么Java字节码本身不能作为用于存储的中间数据结构
正式的JavaSDK发行版有一个名为的工具,可以将字节码转换回Java源代码。同一作业的另一个选项是在db4o中,我们使用具有讽刺意味的调用从方法体检索完全构造的AST。它对我们来说已经足够好了,但它不是基于ASM的。因为中间数据结构将与一些只处理高级语言结构的软件交互。如果没有简单的解决办法,我想我将不得不自己实施。谢谢你。但是这个图书馆会不会太旧了?这本书是1999年完成的。温斯顿,你可以使用db4o中的那本,它是维护和更新的: