我正在尝试确定在文本文件中列出函数的编译顺序。你为什么问?我们在工作中使用业务规则管理语言IDE,在远程VM上运行速度非常慢。我正在寻找一种从Java应用程序编译代码的方法。

我已经有一个Java应用程序,可以将所有函数和其他需要的文件(代码,函数名称等)读入内存。我希望能够在我的应用程序中包含一种确定需要编译功能的顺序的方法。

例如:

function B() {
 //Do Stuff
}

Integer globalVariable = 0;

function A() {
 globalVariable = 1337;
 B();
}


函数B必须在函数A之前声明。我希望能够浏览每个函数,并看到“函数A调用B”,因此必须在函数A之前声明B。全局变量的用法相同(是的,我们使用的语言具有Globals),因此必须在使用函数之前声明globalVariable。

谢谢!

最佳答案

解决此类问题的一种方法是将其表示为有向无环图,其中每个函数(或全局变量)是图的节点,图的边缘表示依存关系。因此,您的示例将具有节点“ A”,“ B”和“ globalVariable”,以及边“ A-> B”和“ A-> globalVariable”。

然后,可以通过在图形上执行Topological sort来计算所需的顺序。

10-06 13:08