Tôi đã làm ví dụ trong Java nhưng tôi nghĩ (không được kiểm tra) rằng nó hoạt động trong các ngôn ngữ khác (tất cả?).Việc biên dịch phụ thuộc vòng tròn hoạt động như thế nào?
Bạn có 2 tệp. Thứ nhất, M.java
:
public class MType {
XType x;
MType() {x = null;}
}
Thứ hai, một tập tin (trong cùng thư mục), XType.java
:
public class XType {
MType m;
public XType(MType m) {this.m = m;}
}
Ok đó là lập trình xấu, nhưng nếu bạn chạy javac XType
nó biên dịch: biên dịch thậm chí MType
vì XType
nhu cầu nó. Nhưng ... MType
cần XType
... cách thức hoạt động? Trình biên dịch biết điều gì đang xảy ra?
Tôi muốn biết trình biên dịch (javac hoặc bất kỳ trình biên dịch nào khác mà bạn biết) quản lý tình huống đó, chứ không phải cách tránh nó.
Tôi hỏi vì tôi đang viết trình biên dịch trước và tôi muốn quản lý tình huống đó.
Vì vậy, khi biên dịch tệp thứ hai trình biên dịch đã biết đầu tiên là gì? –
@Fabio - Mỗi lần chuyển trình biên dịch xử lý tất cả các tệp thu thập thông tin cần thiết cho lần truyền tiếp theo. – ChrisF