Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 104 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
104
Dung lượng
1,47 MB
Nội dung
Bài PHÂN TÍCH TỪ VỰNG Hồng Anh Việt Viện CNTT&TT - ĐHBKHN Kiểm tra trước • Bài tập 2.1: Cho văn phạm phi ngữ cảnh: S → S S + | S S * | a Xây dựng PTCP cho câu nhập: aa+a* • Bài 2.2 Đâu văn phạm mơ hồ: Mục đích • Sau học xong chương này, sinh viên nắm được: – Các kỹ thuật xác định cài đặt PTTV – Xây dựng lược đồ cho biểu thức quy mơ tả ngơn ngữ – DFA NFA Các automata hữu hạn xác định không xác định dùng để nhận dạng xác ngơn ngữ – Sử dụng cơng cụ có sẵn Lex để sinh PTTV Điều kiện • Kiến thức cần có: – Kiến thức NFA DFA – Cách chuyển đổi Automata Tài liệu tham khảo [1] Slide giảng [2] Compilers : Principles, Technique and Tools Alfred V.Aho, Jeffrey D.Ullman - Addison Wesley Publishing Company, 1986 [3] Automata and Formal Language, An Introduction- Dean Kelley- Prentice Hall, Englewood Cliffs, New Jersey 07632 [4] Compilers course, CS 143 summer 2010, Standford University Nội dung Vai trị phân tích từ vựng Lữu trữ tạm chương trình nguồn Đặc tả Token Nhận dạng Token Sơ đồ dịch Automat hữu hạn Từ biểu thức quy đến NFA Tổng kết trình PTTV Thiết kế sinh PTTV Nội dung Vai trò phân tích từ vựng Lữu trữ tạm chương trình nguồn Đặc tả Token Nhận dạng Token Sơ đồ dịch Automat hữu hạn Từ biểu thức quy đến NFA Tổng kết trình PTTV Thiết kế sinh PTTV Vai trị phân tích từ vựng 1.1 Ý nghĩa giai đoạn PTTV 1.2 Các khái niệm 1.3 Thuộc tính Token 1.4 Lỗi từ vựng Vai trị phân tích từ vựng 1.1 Ý nghĩa giai đoạn PTTV • Làm cho việc thiết kế đơn giản dễ hiểu • Hiệu trình biên dịch cải thiện nhờ số chương trình xử lý chun dụng • Tính đa tương tích trình biên dịch cải thiện 10 Từ biểu thức quy đến NFA • Định nghĩa hình thức cho BTCQ: – Cho Σ bảng chữ cái, đó: λ a Є Σ tất BTCQ nguyên thủy Nếu r1 r2 BTCQ r1+r2, r1.r2, r1* (r1) BTCQ Một chuỗi BTCQ dẫn xuất từ BTCQ nguyên thủy số lần hữu hạn áp dụng 90 Từ biểu thức quy đến NFA • Định lý: – Cho r BTCQ, tồn NFA chấp nhận L(r) • Bổ đề: – Với NFA có nhiều trạng thái kết thúc ln ln có NFA tương đương với trạng thái kết thúc 91 Từ biểu thức quy đến NFA • Thủ tục chuyển đổi từ RE sang NFA: – Input: Biểu thức quy r – Output: NFA M= (Q,Σ, δ , q0 ,F) Xây dựng NFA cho BTCQ nguyên thủy (a) NFA chấp nhận {λ} (b) NFA chấp nhận {a} 92 Từ biểu thức quy đến NFA • Thủ tục chuyển đổi từ RE sang NFA: Xây dựng NFA cho BTCQ phức tạp: • NFA cho BTCQ r1+ r2 (r1|r2): Giả sử N(r1) N(r2) NFA cho biểu thức quy r1 r2 93 Từ biểu thức quy đến NFA • Xây dựng NFA cho biểu thức phức tạp: – NFA cho BTCQ r1r2: – NFA cho BTCQ r*: 94 Từ biểu thức quy đến NFA • Ví dụ: Tìm NFA chấp nhận L(r), đó: r = (a + bb)* (ba* + λ) automat chấp nhận L((a + bb)* (ba* + λ) 95 Từ biểu thức quy đến NFA • Bài tập: – Xây dựng NFA cho BTCQ sau: 96 Nội dung Vai trị phân tích từ vựng Lữu trữ tạm chương trình nguồn Đặc tả Token Nhận dạng Token Sơ đồ dịch Automat hữu hạn Từ biểu thức quy đến NFA Thiết kế sinh PTTV 97 Thiết kế sinh PTTV • Đặc điểm PTTV: – Chương trình PTTV chuyển đổi mã nguồn thành dãy từ tố – RE mơ tả từ tố cách xác – RE thứ tự ưu tiên chuyển thành PTTV qua bước: Chuyển RE NFA Chuyển NFA DFA (nếu có thể, tối ưu hóa DFA) – Kết quả: Bộ PTTV ngắn gọn dễ bảo trì • Các chương trình sinh PTTV có sẵn miễn phí Ví dụ Lex 98 Thiết kế sinh PTTV • Đặc tả chương trình PTTV: – Là đầu vào cho chương trình sinh chương trình phân tích từ vựng • Danh sách REs theo thứ tự ưu tiên • Hành động gắn liền với RE chương trình PTTV nhận dạng từ tố RE – Đầu chương trình chương trình PTTV • Đọc chương trình nguồn tách thành từ tố cách nhận dạng REs • Thơng báo lỗi gặp phải kí tự khơng theo REs 99 Thiết kế sinh PTTV • Đặc tả LEX: Khai báo %% Quy tắc dịch %% Bao gồm khai báo biến, định nghĩa quy Có dạng pi {action i } pi biểu thức quy, action i đoạn chương trình mơ tả hành động phân tích từ vựng thực pi tương ứng phù hợp với trị từ vựng Các thủ tục phụ cài đặt hành động phần 100 Thiết kế sinh PTTV • Ví dụ đặc tả chương trình Lex %% digits = 0|[1-9][0-9]* letter = [A-Za-z] identifier = {letter}({letter}|[0-9_])* whitespace = [\ \t\n\r]+ %% {whitespace} {/* discard */} {digits} { return new IntegerConstant(Integer.parseInt(yytext()); “if” { return new IfToken(); } “while” { return new WhileToken(); } … {identifier} { return new IdentifierToken(yytext()); } } 101 Tổng kết Bài • Các kiến thức cần nhớ: – – – – – – Các khái niệm bản: Token, trị từ vựng,… Đặc tả nhận dạng Token Các khái niệm BTCQ, Sơ đồ dịch Automat Kỹ thuật chuyển đổi Automat BTCQ Quy trình PTTV Khái niệm sinh PTTV • Về nhà đọc thêm: – Cách tối ưu hóa DFA (sách Aho) – Sử dụng Lex Pascal Java – Cài đặt mã nguồn cho sơ đồ dịch C 102 Bài học phần sau Bài 4: Phân tích cú pháp 103 Thảo luận 104 ... Z a - z] [A - Z a - z – 9] * 36 Nội dung Vai trò phân tích từ vựng Lữu trữ tạm chương trình nguồn Đặc tả Token Nhận dạng Token Sơ đồ dịch Automat hữu hạn Từ biểu thức quy đến NFA Tổng kết trình. .. ri BTCQ • Ví dụ 3. 4: Tập hợp danh biểu Pascal 33 3. 5 Định nghĩa quy • Ví dụ 3. 5:Các số khơng dấu Pascal chuỗi 5280, 39 .37 , 6 .33 6E4 1.894E4 Ðịnh nghĩa quy sau đặc tả tập số : 34 3. 6 Ký hiệu viết... trình PTTV Thiết kế sinh PTTV Vai trò phân tích từ vựng 1.1 Ý nghĩa giai đoạn PTTV 1.2 Các khái niệm 1 .3 Thuộc tính Token 1.4 Lỗi từ vựng Vai trò phân tích từ vựng 1.1 Ý nghĩa giai đoạn PTTV • Làm