Cách Viết Thông Dịch Viên

Mục lục:

Cách Viết Thông Dịch Viên
Cách Viết Thông Dịch Viên

Video: Cách Viết Thông Dịch Viên

Video: Cách Viết Thông Dịch Viên
Video: Lộ trình trở thành phiên dịch viên chuyên nghiệp gồm bao nhiêu cấp độ? | Phien Dich Vien by AKT 2024, Tháng bảy
Anonim

Để tạo một trình thông dịch, bạn phải viết một trình phân tích cú pháp mã nguồn, một vòng lặp thực thi bytecode và một lượng lớn mã thư viện tiêu chuẩn. Không phải lúc nào cũng thú vị và dễ dàng nếu bạn không sử dụng các công cụ mà trình biên dịch và phân tích cú pháp sẽ tạo ra cho bạn. Với họ, việc viết thông dịch viên ngôn ngữ cho một người am hiểu sẽ dễ như bóc quả lê. Hãy xem ví dụ về việc viết một thông dịch viên với JIT trong PyPy.

Cách viết thông dịch viên
Cách viết thông dịch viên

Hướng dẫn

Bước 1

Chọn một ngôn ngữ để viết. Trong trường hợp này, thật là tệ hại. Nó rất đơn giản và bao gồm một băng các số nguyên, được khởi tạo bằng 0 và 1 con trỏ đến ô hiện tại trong băng. Chỉ có tám lệnh bằng ngôn ngữ: ">" - di chuyển con trỏ đến ô tiếp theo,"

Bước 2

Viết trình thông dịch bằng Python đơn giản. Bộ đếm lệnh sẽ lưu trữ các con trỏ đến lệnh hiện tại. Biểu thức đầu tiên sẽ truy xuất câu lệnh, sau đó một số câu lệnh xác định cách thực thi nó. Bỏ qua việc triển khai các toán tử "[" và "]", vì chúng phải thay đổi bộ đếm lệnh sang vị trí của cùng một dấu ngoặc đơn.

Bước 3

Triển khai một lớp Tape lưu trữ một con trỏ đến số hiện tại và một băng các số nguyên. Băng sẽ phát triển khi cần thiết. Phân tích cú pháp mã nguồn trước để nhiều nhận xét không được đọc từng byte một. Tạo một từ điển dấu ngoặc đơn, vì vậy bạn có thể tìm thấy các dấu ngoặc đơn phù hợp trong đó nếu cần.

Bước 4

Thực thi phân tích cú pháp def (chương trình). Hàm này chỉ trả về các chuỗi từ các lệnh và từ điển dấu ngoặc đơn.

Bước 5

Kết hợp mọi thứ lại với nhau và bạn có một phiên dịch viên hoạt động hiệu quả. Khởi động trình thông dịch Python và đảm bảo rằng nó hoạt động. Đây chỉ là một ví dụ duy nhất của việc viết thông dịch viên bằng ngôn ngữ đơn giản nhất. Nếu bạn muốn, bạn có thể viết bằng hầu hết mọi ngôn ngữ, sau khi bạn đã làm quen với các thuộc tính và mục đích của nó.

Đề xuất: