Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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 过程间数据流分析和符号表_Java_Compiler Construction_Dataflow_Symbol Table - Fatal编程技术网

Java 过程间数据流分析和符号表

Java 过程间数据流分析和符号表,java,compiler-construction,dataflow,symbol-table,Java,Compiler Construction,Dataflow,Symbol Table,我有一个过程间控制流图,我想对其执行数据流分析。我将哈希表用于全局(level=0)、文件(level=1)和方法(level=2)等级别,并从level=0开始将它们推到堆栈上 只要程序中只有一个方法,它就可以正常工作。但是如果我有两个方法,并且假设来自method1(M1)的basicblock#2调用了methods(M2),那么我应该如何处理这个新的方法符号表呢?我应该存储以前的符号表并为新方法创建一个新的符号表吗 当调用另一个类的方法或进行嵌套函数调用时,我看到了更复杂的情况。有人能建

我有一个过程间控制流图,我想对其执行数据流分析。我将哈希表用于全局(level=0)、文件(level=1)和方法(level=2)等级别,并从level=0开始将它们推到堆栈上

只要程序中只有一个方法,它就可以正常工作。但是如果我有两个方法,并且假设来自method1(M1)的basicblock#2调用了methods(M2),那么我应该如何处理这个新的方法符号表呢?我应该存储以前的符号表并为新方法创建一个新的符号表吗

当调用另一个类的方法或进行嵌套函数调用时,我看到了更复杂的情况。有人能建议我该怎么处理吗

我在Java工作


另外,我知道有一些现有的工具,如WALA、SOOMT,可能可以实现这一点,但我正在尝试了解它是如何工作的。

对于程序中的每个可能范围(局部变量、类、参数列表等),都需要一个“符号空间”。最容易将符号空间与程序中首次引入该范围的点相关联。(这组符号空间构成了我所谓的“符号表”)。构造符号空间的方式与一个实体如何被另一个实体调用无关。您能否提供任何链接或引用,我可以在其中找到一些示例?如果您想要适用于Java的示例,请查看Jikes Java编译器或Eclipse JDT。这需要很多代码,因为Java符号表的构造很复杂(这是您真正的问题)。如果你想要理论,请查阅任何编译器文本,包括经典的Aho/Ullman/Sethi“编译器”一书。有用的指针。我调查过了。我调查过和Jikes()。我无法找到SymbolTable定义或其工作方式:s