𝗖𝗮́𝗰𝗵 𝗩𝗶𝗲̂𝘁 𝗠𝗼̣̂𝘁 𝗧𝗿𝗶̀𝗻𝗵 𝗧𝗵𝗼̂𝗻𝗴 𝗗𝗶̣𝗰𝗵 𝗟𝗶𝘀𝗽
Bạn sẽ có được kiến thức sâu sắc khi tìm hiểu cách các ngôn ngữ lập trình hoạt động. Xây dựng một trình thông dịch Lisp bằng Python là một cách kinh điển để thấy được điều này.
Peter Norvig đã viết một hướng dẫn nổi tiếng về chủ đề này vào năm 2010. Các nguyên tắc thiết kế trình thông dịch không hề thay đổi. Bạn sẽ học được cách mã nguồn chuyển hóa thành hành động.
Một trình thông dịch tuân theo ba giai đoạn chính:
- Phân tích từ vựng (Lexical Analysis): Bạn chia mã nguồn thô thành các token. Đây là những mảnh nhỏ như từ và ký hiệu.
- Phân tích cú pháp (Syntactic Analysis): Bạn chuyển đổi các token thành một cây. Cây này thể hiện cấu trúc của mã nguồn.
- Đánh giá (Evaluation): Bạn đi theo cây để thực hiện các phép toán và nhận kết quả.
Lisp làm cho điều này trở nên đơn giản. Nó sử dụng các S-expressions. Điều này có nghĩa là mọi thứ đều là một danh sách nằm trong dấu ngoặc đơn. Phần tử đầu tiên thường là hàm. Các phần còn lại là các đối số.
Để bắt đầu, bạn chuyển đổi mã như (+ 10 (* 2 5)) thành các token.
Các token của bạn sẽ trông như thế này: '(', '+', '10', '(', '*', '2', '5', ')', ')'
Việc nghiên cứu các cơ chế cốt lõi này sẽ thay đổi cách bạn sử dụng các công cụ của mình mỗi ngày.