TAILIEUCHUNG - Tài liệu trình biên dịch C (ĐH Cần Thơ) part 13

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 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 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 Input Output Hình - 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 trên. Trước tiên cần chuẩn bị một tập tin chẳng hạn là chứa một đặc tả Yacc của chương trình dịch. Lệnh yacc của hệ UNIX sẽ biến đổi tập tin thành một chương trình C có tên là bằng phương pháp LALR đã trình bày ở trên. Chương trình 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 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 - ly chúng ta thu được một chương trình đối tượng 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 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ụ Để 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 token DIGIT line expr n print d n 1 expr expr term term 1 3 term term factor factor 1

Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.