Target: MOV foobar, RL

Một phần của tài liệu Trình biên dịch nguuyên lý kỹ thuật và công cụ (Trang 28 - 29)

và xác định được giá trị của target; nĩ là địa chỉ của chỉ thị ở trên. Sau đĩ chúng ta “điển vào sau” bằng cách đi đọc xuống danh sách của target chứa tất cả mọi chỉ thị cĩ dùng đến địa chỉ, thay nĩ vào các khoảng trống trong trường dịa chỉ của những chỉ thị đĩ. Cách tiếp cận này rất dễ cài đặt nếu các chỉ thị được giữ trong bộ nhớ cho đến khi xác định được tất cả mọi địa chỉ.

Đây là một cách tiếp cận hợp lý cho một trình địch hợp ngữ với tất cả thành phẩm của nĩ đều được lưu trong bộ nhớ. Vì các dạng biểu diễn trung gian và dạng cuối cùng cho một trình dịch hợp ngữ nĩi một cách đơn giản là giống nhau, và chắc chắn rằng cĩ chiều dài gần bằng nhau, kỳ thuật điển vào sau trên tồn bộ chiều dài của chương trình dịch hợp ngữ khơng phải là khơng khả thi. Tuy nhiên trong một trình biên dịch, với mã trung gian cần dùng nhiều khơng gian, chúng ta cần phải cẩn thận về khoảng cách xảy ra tình trạng điển vào lại.

1.6 CƠNG CỤ XÂY DỰNG TRÌNH BIẾN DỊCH

Các nhà viết trình biên dịch, cũng giống như mọi lập trình viên khác, cĩ thể cần dùng đến các cơng cụ phần mềm như các bĩ gở rối (debugger), các chương trình quản lý

PHẦN 1.6 CƠNG CỤ XÂY DỰNG TRÌNH BIÊN DỊCH 25 phiên bản, vân vân. Trong Chương 11 (Tập 11) chúng ta sẽ xem xét một số cơng cụ cài đặt trình biên dịch. Ngồi những cơng cụ phát triển phần mềm này, một số cơng cụ chuyên dụng hơn cũng đã được phát triển giúp cài đặt nhiều giai đoạn khác nhau của trình biên dịch. Trong phần này chúng ta sẽ nĩi sơ lược về chúng và trong từng chương sẽ phân tích chỉ tiết hơn.

Khơng bao lâu sau khi các trình biên dịch đầu tiên vừa được viết xong, các hệ thống hỗ trợ cho cơng việc viết trình biên địch đã xuất hiện. Những hệ thống này thường được gọi là trình biên địch-trình biên dịch (compiler-compiler), bộ sinh trình biên dịch (compiler generator) hoặc hệ thống viết chương trình dịch. Nhìn chung, chúng chỉ tập trung vào một mơ hình cụ thể của ngơn ngữ, và chúng rất thích hợp cho việc tạo ra các trình biên dịch của các ngơn ngữ tương tự như mơ hình đĩ.

Thí dụ như người ta giả thiết rằng các thể phân từ vựng cho mọi ngơn ngữ đều như nhau, ngoại trừ các từ khĩa cự thể và các dấu hiệu cần được nhận diện. Nhiều loại trình biên địch-trình biên dịch thực sự sinh ra các thủ tục phân tích từ vựng cố định để dùng trong trình biên dịch được tạo ra. Những thủ tục này chỉ khác nhau ở danh sách từ khĩa cần phải nhận ra, và danh sách này là tất cả những gì cần thiết phải được cung cấp từ người sử dụng. Cách tiếp cận này rất cĩ giá trị, nhưng cĩ thế khơng hoạt động được nếu nĩ phải nhận diện các thẻ từ khơng tiêu chuẩn, chẳng hạn như các định danh cĩ chứa một số ký tự khác ngồi chữ cái và ký số.

Một số cơng cụ tổng quát khác đã được tạo ra để thiết kế tự động các thành phần của trình biên dịch cụ thể. Những cơng cụ này sử dụng các ngơn ngữ chuyên dụng để đặc tả và cài đặt các thành phần, và cĩ nhiều cơng cụ sử dụng các thuật tốn hết sức phức tạp. Những cơng cụ thành cơng nhất là những cơng cụ che dấu được các chỉ tiết thuật tốn phát sinh, tạo ra các thành phần cĩ thể dễ dàng được tích hợp với phản cịn lại của một trình biên dịch. Dưới đây là danh sách một số cơng cụ xây dựng trình biên dịch đáng chú ý:

1, Bộ sinh thể phân cú pháp (parser generator). Chúng tạo ra (hế phân củ pháp (parser), thường là dựa trên một căn phạm phí ngữ cảnh (context-free gvammar). Trong những trình biên địch đầu tiên, phân tích cú pháp tiêu tốn khơng những phần lớn thời gian chạy của trình biên dịch mà cịn tốn rất nhiều cơng sức viết trình biên dịch. Giai đoạn này đến nay được xem như một trong những giai đoạn đễ cài đặt nhất. Nhiều ngơn ngữ "nhỏ bé” được dùng để chế bản cho cuốn sách này, chẳng hạn như PIC (Kernighan [1982| và EQN, đã được cài đặt trong vài ngày bằng cách dùng bộ sinh thể phân cú pháp được mơ tả trong Phần 4.7. Nhiều bộ sinh thể phản cú pháp sử dụng các thuật tốn phân tích cú pháp rất mạnh và quá phức tạp nên khơng thể thực hiện được bằng thủ cơng.

Một phần của tài liệu Trình biên dịch nguuyên lý kỹ thuật và công cụ (Trang 28 - 29)