Giả sử trình thông dịch cho ngôn ngữ (Có thể là bất kỳ thứ gì từ PHP sang Ruby) được viết bằng C. Biến (hoặc nhiều cấu trúc dữ liệu phức tạp không chỉ có tên và giá trị), được xác định bởi tập lệnh hiện đang được thực hiện, lưu trữ và đọc?Làm thế nào để các ngôn ngữ kịch bản thiết lập/sửa đổi/đọc các biến?
Tôi, với kiến thức khá kém của tôi về C, sẽ kết thúc với kết luận rằng điều này chỉ có thể được thực hiện với một mảng.
// Variable type definition would go here
var* variables;
Loại var
sẽ chứa hai chuỗi name
và value
.
OK. Vì vậy, một tập lệnh xác định ví dụ: 30 biến. Bây giờ, nếu một trong các biến phải được đọc, hàm getVar
(hoặc một cái gì đó tương tự) sẽ phải đi qua tất cả 30 biến và so sánh name
s của chúng với tên của biến được yêu cầu. Hãy tưởng tượng rằng với vòng lặp yêu cầu
Tôi có hoàn toàn sai không? Nếu có, các ngôn ngữ kịch bản (hiện đại?) Xử lý các biến như thế nào? Chúng được lưu trữ và đọc như thế nào?
Trong ngôn ngữ mà các biến được định nghĩa rõ ràng theo cú pháp (PHP:
$myVar
), trình thông dịch có thể thay thế tất cả các biến theo giá trị số trong quá trình phân tích cú pháp. (Tôi có đúng không?) Đây có phải là trường hợp không?
@lamas - Chúc bạn may mắn với nó. Một số lần bạn sẽ muốn kéo tóc của bạn ra ... nhưng trình biên dịch và thông dịch viên là tuyệt vời. –