Đang chuẩn bị liên kết để tải về tài liệu:
Tài liệu trình biên dịch C (ĐH Cần Thơ) part 13

Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ

BỘ SINH BỘ PHÂN TÍCH CÚ PHÁP Phần này trình bày cách dùng một bộ sinh bộ phân tích cú pháp (parser generator) hỗ trợ cho việc xây dựng kỳ đầu của một trình biện dịch. Một trong những bộ sinh bộ phân tích cú pháp là YACC (Yet Another Compiler - Compiler). Phiên bản đầu tiên của Yacc được S.C.Johnson tạo ra và hiện Yacc được cài đặt như một lệnh của hệ UNIX và đã được dùng để cài đặt cho hàng trăm trình biên dịch. 1. Bộ sinh thể phân tích cú pháp Yacc Đặc tả. | VIII. BỘ SINH BỘ PHÂN TÍCH CÚ PHÁP Phần này trình bày cách dùng một bộ sinh bộ phân tích cú pháp parser generator hỗ trợ cho việc xây dựng kỳ đầu của một trình biện dịch. Một trong những bộ sinh bộ phân tích cú pháp là YACC Yet Another Compiler - Compiler . Phiên bản đầu tiên của Yacc được S.C.Johnson tạo ra và hiện Yacc được cài đặt như một lệnh của hệ UNIX và đã được dùng để cài đặt cho hàng trăm trình biên dịch. 1. Bộ sinh thể phân tích cú pháp Yacc Đặc tả Yacc Translate.y Y.tab.c Input Y.tab.c a.out Output Hình 4.18 - Tạo một chương trình dịch input output với Yacc Một chương trình dịch có thể được xây dựng nhờ Yacc bằng phương thức được minh họa trong hình 4.18 trên. Trước tiên cần chuẩn bị một tập tin chẳng hạn là translate.y chứa một đặc tả Yacc của chương trình dịch. Lệnh yacc translate.y của hệ UNIX sẽ biến đổi tập tin translate.y thành một chương trình C có tên là y.tab.C bằng phương pháp LALR đã trình bày ở trên. Chương trình y.tab.C là một biểu diễn của bộ phân tích cú pháp LALR được viết bằng ngôn ngữ C cùng với các thủ tục C khác có thể do người sử dụng chuẩn bị. Bằng cách dịch y.tab.C cùng với thư viện ly chứa chương trình phân tích cú pháp LR nhờ lệnh cc y.tab.C - ly chúng ta thu được một chương trình đối tượng a.out thực hiện quá trình dịch được đặc tả bởi chương trình Yacc ban đầu. Nếu cần thêm các thủ tục khác chúng có thể được biên dịch hoặc được tải vào y.tab.C giống như mọi chương trình C khác. 107 2. Đặc tả YACC Một chương trình nguồn Yacc bao gồm 3 phần Phần khai báo Các luật dịch Các thủ tục Ví dụ 4.30 Để minh họa việc chuẩn bị một chương trình nguồn Yacc chúng ta hãy xây dựng một chương trình máy tính bỏ túi đơn giản đọc một biểu thức số học ước lượng rồi in ra giá trị số của nó. Chúng ta xây dựng bắt đầu từ văn phạm sau E E T T T T F F F E digit Token digit là một ký hiệu số từ 0 đến 9. Một chương trình Yacc dành cho văn phạm này như sau include ctype.h token DIGIT line expr n print d n 1 expr expr term term 1 3 term term factor factor 1