Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ASM库将二进制指令映射回语句或表达式?_Java_Parsing_Bytecode_Java Bytecode Asm - Fatal编程技术网

Java 如何使用ASM库将二进制指令映射回语句或表达式?

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语言的抽象 谢

我试图将java字节码解析为一个中间数据结构,以供以后使用。我偶然发现了ASM。它强大而稳定。然而,我很难将二进制指令翻译回正常的java表达式和语句。谁能给我指个方向吗

交易数据结构可能如下所示:

ClassInfo
- FieldInfo
- MethodInfo
-- ForLoopStatement
-- WhileStatement
--- AssignmentExpression
--- FunctionCallExpression
...
基本上,它只不过是java语言的抽象


谢谢。

为什么不继续使用Java字节码呢?如果您需要一种人类可读的形式,只需将其反汇编即可?至少您的问题没有明确说明为什么Java字节码本身不能作为用于存储的中间数据结构


正式的JavaSDK发行版有一个名为的工具,可以将字节码转换回Java源代码。同一作业的另一个选项是在db4o中,我们使用具有讽刺意味的调用从方法体检索完全构造的AST。它对我们来说已经足够好了,但它不是基于ASM的。

因为中间数据结构将与一些只处理高级语言结构的软件交互。如果没有简单的解决办法,我想我将不得不自己实施。谢谢你。但是这个图书馆会不会太旧了?这本书是1999年完成的。温斯顿,你可以使用db4o中的那本,它是维护和更新的: