Cho một tập hợp các hàm đã khai báo (không nạp chồng — overload — mỗi tên hàm chỉ ứng với một chữ ký duy nhất), mỗi hàm có danh sách kiểu tham số theo đúng thứ tự. Khi kiểm tra một lời gọi hàm, trình biên dịch xác nhận lần lượt:
bool → bool/int/float; int → int/float; float → float; string → string (không còn phép ép kiểu nào khác).Lời gọi hợp lệ (OK) khi cả ba điều kiện trên đều thỏa; ngược lại là ERROR.
Ví dụ
Input:
2
add 2 int int
greet 1 string
2
add 2 int int
greet 1 int
Output:
OK
ERROR
<tên hàm> <số tham số p> <kiểu 1> ... <kiểu p> (nếu p=0 thì dòng chỉ có <tên hàm> 0).<tên hàm> <số đối số r> <kiểu đối số 1> ... <kiểu đối số r>.In ra q dòng, mỗi dòng OK hoặc ERROR tương ứng với từng lời gọi, theo đúng thứ tự.
Ví dụ:
Đầu vào:
1
add 2 int int
4
add 2 int int
add 2 bool bool
add 1 int
sub 2 int int
Đầu ra:
OK
OK
ERROR
ERROR
Đầu vào:
0
0
Đầu ra:
Đang tải editor...