Thiết kế trình biên dịch - Các giai đoạn của trình biên dịch
Quá trình biên dịch là một chuỗi các giai đoạn khác nhau. Mỗi giai đoạn lấy đầu vào từ giai đoạn trước của nó, có biểu diễn riêng của chương trình nguồn và cung cấp đầu ra của nó cho giai đoạn tiếp theo của trình biên dịch. Hãy để chúng tôi hiểu các giai đoạn của một trình biên dịch.
Phân tích từ vựng
Giai đoạn đầu của máy quét hoạt động như một máy quét văn bản. Giai đoạn này quét mã nguồn dưới dạng một luồng ký tự và chuyển đổi nó thành các từ vựng có nghĩa. Trình phân tích từ vựng biểu thị các từ vựng này ở dạng mã thông báo như:
<token-name, attribute-value>
Phân tích cú pháp
Giai đoạn tiếp theo được gọi là phân tích cú pháp hoặc parsing. Nó lấy mã thông báo được tạo ra bằng phân tích từ vựng làm đầu vào và tạo cây phân tích cú pháp (hoặc cây cú pháp). Trong giai đoạn này, các sắp xếp mã thông báo được kiểm tra dựa trên ngữ pháp mã nguồn, tức là trình phân tích cú pháp sẽ kiểm tra xem biểu thức tạo bởi các mã thông báo có đúng cú pháp hay không.
Phân tích ngữ nghĩa
Phân tích ngữ nghĩa kiểm tra xem cây phân tích cú pháp được xây dựng có tuân theo các quy tắc của ngôn ngữ hay không. Ví dụ: gán giá trị giữa các kiểu dữ liệu tương thích và thêm chuỗi vào một số nguyên. Ngoài ra, trình phân tích ngữ nghĩa theo dõi các định danh, các loại và biểu thức của chúng; liệu các định danh có được khai báo trước khi sử dụng hay không, v.v ... Bộ phân tích ngữ nghĩa tạo ra một cây cú pháp có chú thích làm đầu ra.
Tạo mã trung gian
Sau khi phân tích ngữ nghĩa, trình biên dịch tạo ra một mã trung gian của mã nguồn cho máy đích. Nó đại diện cho một chương trình cho một số máy trừu tượng. Nó nằm giữa ngôn ngữ cấp cao và ngôn ngữ máy. Mã trung gian này nên được tạo theo cách giúp nó dễ dàng được dịch sang mã máy đích hơn.
Tối ưu hóa mã
Giai đoạn tiếp theo thực hiện tối ưu hóa mã của mã trung gian. Tối ưu hóa có thể được coi là việc loại bỏ các dòng mã không cần thiết và sắp xếp chuỗi các câu lệnh để tăng tốc độ thực thi chương trình mà không lãng phí tài nguyên (CPU, bộ nhớ).
Tạo mã
Trong giai đoạn này, trình tạo mã lấy biểu diễn được tối ưu hóa của mã trung gian và ánh xạ nó sang ngôn ngữ máy đích. Bộ tạo mã dịch mã trung gian thành một chuỗi mã máy định vị lại (nói chung). Chuỗi lệnh của mã máy thực hiện tác vụ như mã trung gian sẽ làm.
Bảng ký hiệu
Nó là một cấu trúc dữ liệu được duy trì trong suốt tất cả các giai đoạn của một trình biên dịch. Tất cả tên của mã định danh cùng với loại của chúng được lưu trữ ở đây. Bảng ký hiệu giúp trình biên dịch dễ dàng tìm kiếm nhanh bản ghi định danh và truy xuất nó. Bảng ký hiệu cũng được sử dụng để quản lý phạm vi.