编译器构造 – 编译循环依赖关系如何工作?
发布时间:2020-12-14 00:47:52 所属栏目:百科 来源:网络整理
导读:我以 Java为例,但我认为(未经测试)它在其他(所有)语言中起作用. 你有2个文件.首先,M.java: public class MType { XType x; MType() {x = null;}} 二,另一个文件(在同一个目录下),XType.java: public class XType { MType m; public XType(MType m) {this.m
我以
Java为例,但我认为(未经测试)它在其他(所有)语言中起作用.
你有2个文件.首先,M.java: public class MType { XType x; MType() {x = null;} } 二,另一个文件(在同一个目录下),XType.java: public class XType { MType m; public XType(MType m) {this.m = m;} } 好,这是糟糕的编程,但如果您运行javac XType它编译:编译即使是MType,因为XType需要它.但是… MType需要XType …这是如何工作的?编译器如何知道发生了什么? 可能这是一个愚蠢的问题,但是我想知道如何编译器(javac或者你知道的任何其他编译器)来管理这种情况,而不是如何避免它. 我在问,因为我正在编写一个预编译器,我想管理这种情况.
您需要采取2通或
multi-pass的方法:
public class Example { public static void main(String [] args) { assert(x==0); x++; assert(x==1); } static int x=0; } 有各种方法,例如您可以执行以下操作: 第一遍可以查找所有变量声明,第二个方法声明等等,直到最后一次通过使用所有这些信息来编译最终代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |