3. Đường dẫn biên dịch
Mã thông báo, phân tích cú pháp, AST, bảng ký hiệu, trình biên dịch, đối tượng mã, hằng số và cục bộ, tạo mã byte và tối ưu hóa mã byte.
| Chương | Tiêu đề |
|---|---|
| 18 | Mã thông báo |
| 19 | Phân tích cú pháp |
| 20 | AST |
| 21 | Bảng ký hiệu |
| 22 | Trình biên dịch |
| 23 | Đối tượng mã |
| 24 | Hằng số, tên và địa phương |
| 25 | Tạo mã byte |
| 26 | Tối ưu hóa mã byte |
-
18. Mã thông báo
18. Token hóa Mã thông báo là giai đoạn cấu trúc đầu tiên trong quy trình biên dịch của CPython. Nó nhận văn bản nguồn Python và tạo ra một luồng mã thông báo. Trình phân tích cú pháp sử dụng luồng mã thông báo đó và xây dựng cấu trúc cú pháp từ nó. Ở giai đoạn này, CPython vẫn chưa biết liệu một chương trình có ý nghĩa…
-
19. Phân tích cú pháp
19. Phân tích cú pháp Phân tích cú pháp là giai đoạn biến luồng mã thông báo thành cấu trúc cú pháp. Trình mã thông báo nhận dạng các đơn vị từ vựng. Trình phân tích cú pháp nhận ra cấu trúc ngữ pháp. Nó quyết định xem một chuỗi mã thông báo có phải là chương trình Python hợp lệ hay không và khi nó hợp lệ sẽ xây…
-
20. AST
20. AST Cây cú pháp trừu tượng, thường được gọi là AST, là cách biểu diễn có cấu trúc của mã nguồn Python sau khi phân tích cú pháp. Trình mã thông báo tạo ra một dòng mã thông báo phẳng. Trình phân tích cú pháp nhận ra ngữ pháp. AST ghi lại kết quả dưới dạng cây câu lệnh và biểu thức. Đối với nguồn này: python x =…
-
21. Bảng ký hiệu
#21. Bảng ký hiệu Sau khi phân tích cú pháp tạo ra AST, CPython thực hiện phân tích phạm vi. Giai đoạn này xây dựng các bảng ký hiệu. Bảng ký hiệu ghi lại cách hoạt động của tên trong từng phạm vi. Nó xác định xem tên là cục bộ, toàn cầu, miễn phí, ô, tham số, được nhập, chú thích hay được tham chiếu từ phạm vi lồng…
-
22. Trình biên dịch
22. Trình biên dịch Trình biên dịch chuyển thông tin về bảng ký hiệu và AST thành đối tượng mã thực thi. Các giai đoạn trước trả lời các câu hỏi về cấu trúc.```text id="lfk0j9" tokenizer: What lexical units are in the source? parser: What syntax tree do these tokens form? symbol table: What scope does each name belong to? Trình biên dịch trả lời các câu hỏi thực thi.…
-
23. Đối tượng mã
23. Đối tượng mã Đối tượng mã là bản trình bày được biên dịch của CPython về mã Python thực thi. Nó chứa mã byte và siêu dữ liệu. Trình thông dịch có thể thực thi nó, nhưng bản thân đối tượng mã không mang trạng thái thời gian chạy như toàn cục, đối số mặc định, ô đóng hoặc phương thức bị ràng buộc. Đối với nguồn này: python…
-
24. Hằng số, tên và địa phương
24. Hằng, Tên và Địa phương Đối tượng mã không lưu trữ mã nguồn Python dưới dạng văn bản. Nó lưu trữ các bảng nhỏ gọn và các hướng dẫn mã byte tham chiếu đến các bảng đó theo chỉ mục. Ba trong số các bảng quan trọng nhất là:```text id="mx2a9w" co_consts co_names co_varnames Đố i v ớ i ch ứ c n ă ng n à y : ```…
-
25. Tạo mã byte
25. Tạo mã byte Tạo bytecode là giai đoạn CPython chuyển đổi cú pháp có cấu trúc thành các hướng dẫn máy ảo có thể thực thi được. Trình phân tích cú pháp xây dựng AST. Bảng ký hiệu xác định hành vi phạm vi. Sau đó, trình biên dịch sẽ đưa ra các hướng dẫn mã byte triển khai ngữ nghĩa Python. Đối với nguồn này: python id="bjlwm8" def…
-
26. Tối ưu hóa mã byte
26. Tối ưu hóa mã byte Tối ưu hóa mã byte là giai đoạn dọn dẹp và sàng lọc cuối cùng trước khi đối tượng mã sẵn sàng thực thi. Các giai đoạn biên dịch trước đó quyết định ý nghĩa của chương trình và đưa ra hướng dẫn. Tối ưu hóa cố gắng làm cho các hướng dẫn đó nhỏ hơn, đơn giản hơn hoặc nhanh hơn trong khi…