有很多方法可以实现编译器。但是,基本方法是解析源并构建符号表。然后使用该符号表将源代码转换为目标代码。
单遍编译器只能使用它已经遇到的符号。
Pascal是旨在使用单遍编译器的语言示例。如果不是不可能的话,
java使用单遍编译器将很难实现。
但是
multipass,大多数语言都使用编译器,因为单遍编译器的优点不再重要,在这种情况下,使用尚未定义的符号变得微不足道,因为假设它们将在解析阶段的后期遇到。
因此,只要同时
java.lang编译整个包,就可以解决交叉依赖性。另一方面,如果您尝试单独编译每个类,则解析器将抱怨,因为它将到达解析过程的末尾并且具有未解析的符号。



